Introduction: DIY Compact 3D Printed Animatronic Eye Mechanism

About: The name "Ikkalebob" was invented by my cat when she ran across the keyboard. I attempt all manner of projects, from home engineering to prop replicas. Follow me on Instructables and my YouTube chann…

My previous instructable was an attempt to make an eye mechanism that was as accessible as possible to as many people as possible, but in this project I wanted to design something that was more of a middle-ground between accessibility and quality. This design features some more speciality parts such as servo ball-links and pushrods but it's still quite easy to build. It uses a mechanism design which is commonly used in professional eye mechanisms, but it circumvents any machining by using parts that are designed for 3D printing. Compared to my previous design, it is much more compact, robust, and a little lighter.

Another feature of this design is that it's designed to use snap-in eyes which can be replaced, and used with other 3d printed components to cast a highly realistic dome over the painted eye. This process is quite involved so I have another instructable on how to make the eyes, but if you'd prefer to use simple 3d printed eyes you can do that too.

The requirements aren't too high, but I'd recommend that you be fairly comfortable with 3D printing before attempting this project - you will need a printer that can reliably print at 0.15mm - 0.2mm layer height, and it'll need to be calibrated well enough to print small parts to be quite strong, which also entails using decent-quality filament. If you're using something like an ultimaker or makerbot you should have no trouble at all, but for folks like me using cheaper 3D printers you may need to go through a bit of trial and error to get your print settings perfect. If you're looking for something easier, have a look at my previous instructable.

Also, making the eyes was a tricky process and not necessarily needed to make this project, so check my other instructable for how to make the eyes.


  • Screws: (this kit should cover you)
    • Around 40*M2 x 6mm screws
    • 6* 10mm M2 screws
    • 6* MG90s servo screws (these come with the servos:

Also, a pin vice hand drill might be useful for adjusting hole sizes:

Step 1: Printing

Most parts print fine without needing supports, and 0.2mm layer height or less is ideal. Lower is likely to be better depending on how good your printer is, there will be an ideal layer height for maximum strength – mine is 0.2mm but it's not a bad idea to experiment with yours to find where it is.

It might also be a good idea to tweak your extrusion width to try and get a nice solid infill, this is particularly important on the eyelids as there is a point where the print transfers from being primarily vertical to horizontal and this can result in poor extrusion. My settings for the eyelids using Slic3r Prusa Edition were:

  • Extrustion multiplier: 1.1x (in filament settings)
  • Default extrustion width: 160%
  • Height: 0.18mm
  • Perimeters: 3

100% infill was not necessary for any components but many will end up fully infilled due to the small size. I do recommend using several perimeters/shells to ensure that parts with holes have enough strength - this can sometimes result in warping though so don't go to high with it. My tip is to get a nice fat cooling fan!

I used PLA for everything other than the eyes, but I think ABS would have been a better choice due to the low friction it tends to have, and the flexibility that would have lended itself well to the snap-fit parts. PLA has the advantage of holding screws very securely though (not to mention that it's way easier to print), so maybe don't get too hung up on material choice.

Step 2: Post-Processing

Many parts may need adjustments to run smoothly, the eyelids in particular are likely to need quite a bit of sanding because the tolerance between the eyes and the lids are fairly tight (which makes it look more realistic). the tolerances I've used in this design for stationary parts is around 0.2mm, and for moving parts it's up to 0.6mm, obviously different printers will have different abilities so unfortunately there may be a little post processing required.

I'd recommend sanding anything that's obviously out of shape as soon as its printed, but some problems may only become apparent once you start putting the model together. Just keep a small file or craft knife handy to adjust bits as you go. Its also best to drill out holes that act as pivots to ensure they're the perfect size, so refer to the graphics to figure out what to drill.

If you encounter any big problems with mis-alignment you can always use a heat gun to make the PLA more malleable and re-adjust it, but I can't imagine you'd need to.

Step 3: Assembly

With everything printed, you can begin putting the model together. It may be useful to refer to the video for this stage. Also there's all the reference pics in one folder in my download, including an .stl of the complete model you can look at.

  1. Start by attaching the pushrods to the eye links. Screw in very carefully to avoid de-laminating the links, if this happens you may need to drill the hole to be larger or make your 3D print stronger (increase temperature, decrease layer height etc). Attach a ball-link to the other end of the pushrod, and try to ensure all four pushrods are the same length. Attach servo horns to the ball-links - two of which should attach at the fourth hole from the centre, and the other two which attach to the second hole from the centre - in both cases the bolt head should be on the side that has the raised section on the eye links, and the servo horn should be underneath the ball-link.
  2. Using the M2 x 6mm screws, assemble the inner eye mechanism. Its critical to get everything in the right orientation, so check the graphics and/or the video to make sure you have it right. First attach one pushrod to the large pivot with the bolt head on the side of the eye connector with the raised section, along with the eye centre holder. Then attach a pushrod to the small pivot with the bolt head on the flat of the eye connector.
  3. Flex the eye adaptor to accept the large and small pivots. Ensure everything is able to move smoothly, and sand/cut anything that isn't. Check everything is oriented correctly, then repeat step 2 to make the other eye mechanism - but keep in mind this will be a mirror image of the first.
  4. Plug in the servos to the left and right bases using M2 x 6mm screws - the wires should come out towards the back of the mechanism - i.e., the opposite side to where the raised part is. Then use an M2 x 10mm screw to attach the eye mechanism to each base - check above to ensure they go on the right way. It's a good idea to use some glue between the eye holder and the left/right base too to ensure it doesn't rotate.
  5. Attach the four eyelid holders with 3 M2 x 6mm screws each. Note that the sloped part should face the outside (but both should face the same direction each side of the overall mechanism, check above to be clear on this point). Also screw in an M2 x 10mm screw to each eyelid holder such that they face inwards towards each other. These don't go in all the way - it may be helpful to wait untill the eyelids are in place to work out exactly how far in they should go.
  6. Load the sub-base with two MG90s servos facing each other, held in with M2 x 6mm screws. Link the two bases by attaching this sub-base to the left and right bases using four M2 x 6mm screws, and also attach the front strip which uses six M2 x 6mm screws.
  7. Work out which eyelid is which with reference to above and link the two pairs with the eyelid actuator arms. Attach a servo horn to each of the eyelid arms on the second hole from the centre using an M2 x 10mm screw.
  8. Plug in the eyes first, then slide in the bottom eyelid assembly, flexing the eyelid holders to get the lids into the pivots. Then attach the top eyelid assembly. Don't worry about linking up any of the servo horns yet.

Step 4: Electronics and Final Assembly

By referring to the graphic, upload the code to the arduino and wire everything up. Check the Adafruit guide if you need help setting up the servo driver board. All servos should now be powered and in their neutral position, so use this opportunity to link up all the servo arms to the servos with the eyes facing straight forward in a neutral position. You can just plug them in, then disconnect the power to screw them in properly. I'd recommend testing the motion with your joystick at this stage to make sure there are no issues. If the eyes are facing slightly different directions, you can unscrew the ball-links and tighten/loosen them on the pushrods to adjust the direction of the eyes.

For the eyelids, its best if you set the servos to be in the blinking position so you can line them all up in the centre. Do this by either holding down the blink switch or creating a short over it. The eyelid servo horns are in an awkward position to accept a screw, but it should be possible to flex the assembly enough to get a screwdriver in.

Your model should be complete! If you want to see how to make the realistic eyes, check my previous instructable. I'm also planning on releasing an instructable soon to show you how to make a controller, so check back if you're interested!

If you're interested in following my progress on the various robotics and animatronics projects I have on the go, consider checking out my Patreon page to get a look behind the scenes.