Intro: MT-20: Functional 3D Printed Robot
MT-20 is a 3D printed robot controlled by an Arduino board and actuated via 5 servos. The video above contains a few animation cycles, the 3D printing process, and the final assembly. This Instructable goes more in depth into the making of this project.
This robot prototype is designed to be hybrid, in the sense that that if you don't have an Arduino and 5 servos, you can still build it by printing the included fake servo five times!
Step 1: SketchUp
I used SketchUp to design all the parts of this robot. The limbs and head are designed around the Micro Servo 9g, which is the most common type/brand of micro servo. You can find a precise model of this servo on the SketchUp Warehouse.
The SketchUp plugin Solid Inspector² is really useful to find common 3D errors in your model that would make the slicing process difficult for printing.
Once the mesh is clear of bugs, I use this STL file Exporter plugin to export STL files to the slicing software.
Step 2: 3D Printing
I used the Dremel Idea Builder 3D Printer using PLA filament to print all the parts. The blue MT-20 requires printing 19 pieces, and the orange MT-20 requires printing 24 pieces. I've attached all the STL files here, they are ready for printing without the need of any supports, except the torso model which only requires a few.
This step will vary according to the printer and technology you are using. 3D Printing techniques I've picked up:
- Always level the build platform before printing, to make sure the first layer sticks to it.
- If it doesn't, try hair spray! Vaporize a small amount on the platform before printing, outside of the printer so the rods don't jam.
- Check periodically on the printer to make sure there's no entanglement on the spool.
- Be patient.
The settings I used for this project are typical for high resolution FDM printing:
- Layer Height: 0.15mm
- First Layer Height: 0.25
- Number of Shells: 3
- Infill: 35%
- Build Speed: 80mm/s
Step 3: 3D Printing 2 Colors
Forearms and legs contain 2 colors on each piece. To achieve this on a single extruder 3D Printer, simply pause printing (manually or through G-Code) at the last layer of the 1st color, then load the filament of the 2nd color and resume printing.
After printing, I use the Micro Rotary Tool to remove all the imperfections due to overhangs or droopings. This is great to burr through unwanted specks and strings of plastic on the model. It is cordless and has various rotation speeds. You can buy a separate set of Diamond Points of all shapes and length for precision work when polishing your model.
Step 4: Servo Assembly
For the 5 printed servos (orange), simply insert them in the limbs and head. They use the same pins as the ones for servos, they fit for insertion on the torso.
On the animated robot (blue), I use 5 Micro Servo 9g for the limbs and head. Simply pass their wire through the hole and insert them in the limbs and head. As shown in the video, you insert the actuator arm that comes with the servo on the axis, then you insert the printed pin, then you can screw the pin to the axis.
Step 5: Snap-Fit Ball Joints
Snap-fit ball joints are a great way to add degrees of freedom to any articulation. This robot's forearms, hands, legs, feet contain snap-fit ball joints derived from the original template I've modeled. It was made them from scratch in SketchUp, following this great YouTube Tutorial.
Step 6: Electronics
I use this Arduino Uno board to actuate the 5 servos on the MT-20. Use the USB cable connected to your laptop to power the Arduino Uno board.
Serial-connect 4 AA batteries to produce 6 Volts for each servo. Make sure to connect the negative pin of the battery pack to the Arduino GND so they share a common Ground.
Connect each servo signal wire to the digital output pin enumerated in the next step's Arduino code. Default pins are:
- Head Servo : pin 1
- Right Arm Servo : pin 2
- Left Arm Servo : pin 3
- Right Leg Servo : pin 4
- Left Leg Servo : pin 5
Step 7: Arduino
The Arduino code for the MT-20 is on my GitHub repos: https://github.com/jrbedard/MT20-Robot
I use the ServoEaser library to make the animations timer-dependent and customizable via easing functions (quadratic, elastic, bounce, etc). This make the robot's movements much smoother and realistic than linear animations where you would see "jerkiness" at the beginning and end of cycles. Furthermore, you can chain animations with configurable delay and speed.
Step 8: Mount
I included the rod STL model that conveniently support the animated robot.
Step 9: Usages
This robot prototype has many usages :)
Step 10: Conclusion
Feel free to contact me for comments, bugs, requests, etc.
All my contact info are on my website jrbedard.com