3D Printed QDD Robotic Actuator (MIT Mini Cheetah Clone)
by nachumtwersky in Circuits > Robots
373 Views, 6 Favorites, 0 Comments
3D Printed QDD Robotic Actuator (MIT Mini Cheetah Clone)
Hi everyone, This is my prototype of a 3D printed MIT mini cheetah actuator. The goal for this project was to design an actuator that was lightweight, thin, and easy to make. An added bonus is that the actuator is incredibly low cost. In the end, I recorded a torque of 10Nm, but it can likely perform even better in a dynamic setting. The power, low cost, and ease of manufacture make this a useful robotics actuator for any robot from quadrupeds to robotic arms.
Supplies
Supplies Needed to Build Motor
1) 3D printed parts (files below)
2) 26 gauge enamled copper wire
9) 9x steel part from SendCutSend (DXF and instructions listed below)
10) brushless motor controller (discussed below)
11) heat set inserts
12) m2 screws (screws, not bolts)
13) Polycarbonate filament (or other engineering materials of your choice)
15) 3x 3mmx18mm steel dowel pins
16) 1x 6mmx3mm diametric magnet
17) JB Weld, or other super glue
Other Supplies needed (for assembly and testing)
1) Multimeter
2) Power Supply
3) screwdriver
4) Pliers
5) Hammer
6) scale
7) Soldering iron
8) heat shrink tubing
3D Printing Files
1) 3 x Planetary Gears
2) 1x Rotor
3) 1x Output
4) 1x Planet Holder
5) 1x Stator Lock
6) 1x Outer Housing and Ring Gear
7) 1x Bearing Retaining Ring
8) Backplate
SendCutSend Parts
1) 9x laser cut steel parts (Magnetic Holder Planetary)
ALL 3D PRINT FILES CAN BE FOUND AT MAKERWORLD!!
please read the 3d printing parts step before printing anything!!!!
Downloads
How Do Brushless Motors Work?
Before you begin your journey to winding your own motor, it's important to understand how they these motors work. Odds are you have played around with servos or other DC motors, but brushless motors a whole different ball game. They usually require much more complex control algorithms and more expensive boards to run them normally.
All motors run on the same principle, that when you coil copper into a loop, and put some current through them, it creates a magnetic field. This magnetic field can be used to push or pull magnets. One of my favorite experiments to perform as a kid was to make a "copper coil train" using a battery, a few magnets, and some copper wire. A video of this experiment is shown above. The more copper coils you have, the more powerful a force is created. Motors use this same principle but in a radial direction. When the copper is charged it will push away from its like pole, and be attracted to its opposite pole causing a rotation of the shaft. In order to keep constant rotation, you will constantly have to reverse the current to reverse the "poles" of the coils allowing it to be attracted and repelled by the different magnets continuously. The more classic DC motor has brushes that allow for this switching.
Brushless motors are a little different. The coils are fixed in place, and the rotor has the magnetic array. As the name implies, there aren't any brushes. In order to maintain the appropriate "current switching" that allows these motors to turn, you need a special motor controller that will handle switching currents. These controllers are known as ESC or a BLCD controllers. Generally brushless motors have 3 coils on the stator (as shown above) those are wound in certain clockwise and counter clockwise orientations (more about that later).
Brushless motors have a distinct advantage over regular DC motors. They're incredibly efficient and torque dense. They also allow for precise control using more complex encoders and control algorithms. For these reasons, brushless motors have become the go-to for robotics applications.
There is a great video by The Engineering Mindset on YouTube that discusses this in more detail, which I have linked above.
MIT Mini Cheetah Actuator
The MIT mini cheetah, designed by Ben Katz, uses brushless motors for its actuators. However there's a small catch. As seen before brushless motors usually have a large gap inside the stator, where the coils are wound. Katz came up with the idea to add a planetary gear reduction inside the stator. This seriously increases the torque output of the motor and saves up space. This makes it an incredible actuator for many robotics applications, as it's powerful, and lightweight. The only downside is that it's fairly expensive, and most hobbyists would not be able to pay for 12 of these to make a quadruped. That's where 3d printing comes in. If you want to learn more about gear reductions, I wrote an Instructable on using Fusion360 to make gear reductions. Take a look at that HERE
Design
I spent a decent amount of time designing this to the point where i was happy with it. It is slightly larger in diameter than the MIT Mini Cheeta, but it weighs the same. All parts can be easily sourced through Amazon and AliExpress. The rest are 3D printed. So buckle up, and I'll go through the steps required to build one (or 12) for yourself.
Winding the Coils
If you decide to order the same stator that I brought from AliExpress, you'll notice that it has notches. I'll be referring to those as slots. The 8110 stator has 36 slots. since we will be doing 3 windings, each one will be wound around 12 of these slots. I use THIS WEBSITE to determine the winding patterns. This specific actuator design has 36 slots, and 42 poles (42 magnets, but 21 of them north facing the coils, and 21 south facing the coils). The wires are WYE terminated to get more torque. The winding pattern for this stator is shown above. You'll have to be very careful and follow the correct clockwise and counter clockwise turns, or else your motor will not work.
Enameld Copper Wire
I went with 26 gauge copper wire for my motor, as it allows me to wrap multiple wires in parallel with each other to get a higher current rating. While also allowing me to fit more copper per slot. In order to make my life somewhat easier, I printed 6 small spools and wound them with some of the wire. I then placed those on a pole in a box and poked some holes to run the wires through. This allowed the wire to remain taught, and allow me to hold all six of the wires more easily. This definitely wasn't the best solution, but I'm working on a better one as I'm writing this Instructable. When I finish that I'll add the files here. Following the diagram in the step above, I carefully wrapped 6 strands, 6 times around each slot. When I finished with one of the 3 coils,I taped of the ends and marked them down so I wouldn't get them mixed up. This must be done carefully and will take a lot of time. For your motor to work efficiently you need the wiring to be neat. Not to mention that to fix six strands, six times per slot, you have to be very neat. I have also built one with six strands and five turns per slot. This allowed me to be not as careful. but resulted in a lower torque motor. This winding takes the most time out of anything in the motor, and it’s the hardest on your fingers, so please understand what you're getting into before you try this. Once you have all three coils wound, you can WYE terminate the ends as shown in the diagram. This will require a little patience and an extremely hot soldering iron to melt the enamel away. DO NOT breathe that stuff in. Make sure you have adequate ventilation.
NOTE:
Five turns per slot yielded a 150 KV motor.
Six turns per slot yielded a 115 KV motor (if you have the patience try for six turns, I feel it’s
Testing Your Coils
Once you have WYE terminated the coils you could check to see if you messed up anywhere. Taking your multimeter, measure the resistance between the leads. First test A-B, then A-C, the C-A. The resistance of all three should be equal (within reason) and below 1 Ohm. anything higher than1 Ohm and you won’t have a very efficient motor, and any discrepancies in the resistance between the coils means that something has gone wrong. If the resistances look ok, great! time to move on to the next step.
Building the Magnetic Array
As discussed above, every motor needs an array of alternating magnets. However, there is some debate as the best way to lay the magnets out and direct the magnetic flux towards the coils. The two most common are using a steel backing, and a Halbach array. Steel backing is just what it sounds like. The magnets sit up against a steel ring which helps direct flux inwards. This is a cheap and simple way to accomplish that task. The Halbach array is made by laying out magnets and alternating by 90 degrees each magnet. this directs the flux inwards by aligning like poles. better shown by the image above. The issue with this is that its slightly more expensive as you'll need double the magnets to have the same number of poles. To save space, I went with a steel backing. Now, to get the notches in the steel I ordered thin steel parts from SendCutSend. The steel is then stacked using the holes for alignment and the magnets are pressed into it. making sure to alternate the polarity of every other magnet. I used pliers to help squish the magnets into place. Because of the tight tolerances I didn't need to glue any magnet into the steel backing. When you're done you should have a solid steel ring with magnets that are firmly in place. Of course, you can aways add glue if you want.
NOTE: if you are worried about the magnets coming out, you can always use CA glue, or JB weld to glue them to the steel backing. For now, I haven't found that to be necessary.
3D Printing Your Parts
Since many of the parts are gears and will undergo a decent amount of force. Certain materials and printer settings are needed to make sure that the said forces can survive. All parts are printed from Polycarbonate, for its strength and heat resistance, but you can use any engineering material you wish. PLA has too low of a melting temperature to put near the coils and the gears are likely to melt if the coils heat up. PC has double the Vicat softening temperature of PLA and they've survived well in my tests so far.
NOTICE!!!!: Due to the shrinkage of PC I usually scale everything up by 100.8% in my slicer. but play around with it so you get a good fit of the bearings.
1) For the planetary gears, planet holder, stator lock and bearing retaining ring six walls, 100% infill with .22mm layer height
2) for rotor and outer housing and ring gear, four walls 35% infill at .22mm layer height.
3) the backplate can be printed with any setting really, it can even be printed with PLA
Feel free to adjust the settings as you see fit. These are just suggestions.
Assembly!
I will be breaking these steps up so you can get the pictures clearly.
Assembly Pt 1- Fitting the Bearings.
1) Push the 6709 Bearing onto the output
2) the 6707 bearing into the stator lock
3) the 6702 bearing into the planetary holder
Build the Planetary Holder
You'll need the planetary holder+bearing, the three planet gears, 3 steel dowels, and the output + bearing.
1)place three dowel pins into the three holes in the base of the planetary holder, a light hammer tap will be helpful here
2) place the planets onto each dowel
3) press the output on top of the three dowels making sure the holes line up. Everything should fit together on the planet gears should be able to spin freely.
4) Pres the entire planetary assembly into the outer housing/retaining ring. The entire planetary assembly should be able to spin freely, but you can always add silicone lubricant to make it better.
Add and Lock the Stator
Next, feed the stator wires through the smallest hole in the outer casing and press it down over the inside ring. It should look like the photo above once it’s all pressed down. Next, screw in the stator lock to press the stator down in place (this will require the hammer). Lastly, screw on the thin bearing retaining ring to secure the bearings in place.
Time to move onto the rotor!
Adding Magnets to Rotor
Pretty self-explanatory. The magnetic ring should fit snuggly into the rotor. Make sure to glue it with non-expanding glue (I.e., No standard gorilla glue). I usually use gorilla glue xl gel, or JB Weld.
Once dry, turn it over and glue/press fit the round diametric magnet into the back of the rotor. This is used for the absolute magnetic encoder on the motor controller. If you don't plan to use a magnetic encoder, and will be using something else, feel free to ignore this step.
Last Bearing Fitting
Press fit the MR117 bearing into the large hole of the output. This will help align the rotor when you press it into the planetary reduction.
Fitting the Rotor.
Before you add the rotor, I would recommend adding some silicon grease onto the gears while you still have access to them. Please use silicone and not petroleum-based grease as it has been shown to degrade the 3d prints over time.
Now, the stator is magnetic and will want to grab on to the magnets as you try to insert the rotor. Being very careful try to light the gear teeth beforehand so it will slide right in. I’ve found it helps to put the main piece face down as shown in the photo above. Place the gear through the hole in the center and push it down. the bearing you inserted into the planetary holder, and into the output should help everything align. Since the airgap is quite small (0.8mm!!) everything must light up perfectly. Once in, press down and you should hear a satisfying click as everything lines up perfectly. If done correctly you should be able to spin either the rotor, or the output and watch the other one spin smoothly. (SEE VIDEO)
Test With ESC
Before you add your motor controller, you want to make sure that everything goes well with the windings and assembly. I usually just plugged my motor into an ESC and had it run for a bit while varying the speeds. If your motor doesn't run or starts pulling a lot of current. you didn’t wind it correctly. turn off your power supply quickly.
Backplate and Motor Controller
Lastly the backplate. For now I've been using a cheap, knockoff Odrive from AliExpress. I modified the firmware to be able run a few tests and test the torque. However I plan on integrating the now open source Dagor 2.7 controller by David Gonzales that uses the SimpleFOC library and protocol. (Shown on the right). The board was ordered through JLCPCB using the files on David's GitHub. The Dagor controller is smaller, can communicate to other boards through Wi-Fi (No UART or CAN wires), and can handle more that enough amperage for my needs. Of course, you can always slap an Odrive S1 (if you can afford it, go for it! It's easily the best option out there!) or a Motus controller (haven't tested one of these out yet) on the back and have it running in no time with more than enough current capabilities in those controllers.
The backplate has eight holes on the side that correspond with the eight holes on the side of the outer shell. By gently lining up the motor wires, and the wire points on the controller, push the backplate in until its flush with the surface, and screw in the eight screws.
Heat Set Inserts
Using your soldering iron, add the heat-set inserts onto the holes in the output, so you'll have something to screw into. I chose the outer ring, but you can always mix it up.
AAAAAAAND You're Done!
Congratulations!. You've built your first brushless motor! and now have a powerful and low cost actuator to use for your robotics projects. In total, not including the motor controller, each actuator cost 40$ to build. Obviously buying your bearings or stators in bulk can drastically reduce the costs. All the STL's will be posted onto Makerworld shortly. If you have any questions, or comments please leave them below! I'm always happy to help if you have any issues!
Thank you for reading, and I hope you can embark on building your own and have as much fun as I did!
Nate