When I started to take a break from microscopic flying vehicles in 2010 and migrate towards some larger, easier to work with, models (5-20g) I realized that magnetic actuators just weren't going to cut it for control (rudder, elevator, ailerons). Magnetic actuators are heavy and draw power continuously when deflected away from neutral. I needed servos. Servos would provide lots of pulling force for their weight but at the cost of mechanical complexity. Since servos at the weight I needed didn't exist or were out of my price range I decided to further over complicate the situation and build my own.
I started by designing a simple linear servo (lead screw design). The picture above is of my 400mg variant which has a throw of about 0.2", resolution of 0.0015", and can pull about a 25g load. The motor is a brushed 3.2mm diameter coreless design by Shicoh. The gears used are module 0.15 and can be gotten from http://www.kkpmo.com/. The threaded rod is 0000-160, which means it has 160 threads per inch (TPI). Threaded rods in this size (and 120, 90, etc TPI) can be purchased in 1ft lengths from http://www.jimorrisco.com/.
All the control software is done on a PIC microprocessor and the feedback is done magnetically with a hall effect sensor. Here is a video of my first version which is a little heavier and has a bit longer throw; 450mg and 3/8" respectively.
Naturally, once I had this servo design done and working I had to see if I could make a smaller and lighter one. After some thought I figured that if I took apart the 3.2mm motor, threw away the case, and rebuild it as a stepper motor I could cut the servo weight almost in half. I also compacted the design to further reduce the weight. Here you can see all the parts for the servo nicely arranged on a penny.
This servo functions very similarly to the large one described above. The only difference is that I wired the brushed motor as a stepper motor by soldering directly to the 5 contacts on the motor's commutator. This allowed me to get rid of the steel case and use the commutator as the main structural component (backbone) of the servo.
This servo weighs just 190mg, has a throw of 1/8", and a resolution of 0.003". It can pull with a force of about 4g. Overall length is about 3/8". Here is a video of it in action:
These two servos can run at voltages between 3-5v and are controlled with a 1-2ms pulse as is standard for all hobby r/c servos.
I started by designing a simple linear servo (lead screw design). The picture above is of my 400mg variant which has a throw of about 0.2", resolution of 0.0015", and can pull about a 25g load. The motor is a brushed 3.2mm diameter coreless design by Shicoh. The gears used are module 0.15 and can be gotten from http://www.kkpmo.com/. The threaded rod is 0000-160, which means it has 160 threads per inch (TPI). Threaded rods in this size (and 120, 90, etc TPI) can be purchased in 1ft lengths from http://www.jimorrisco.com/.
All the control software is done on a PIC microprocessor and the feedback is done magnetically with a hall effect sensor. Here is a video of my first version which is a little heavier and has a bit longer throw; 450mg and 3/8" respectively.
Naturally, once I had this servo design done and working I had to see if I could make a smaller and lighter one. After some thought I figured that if I took apart the 3.2mm motor, threw away the case, and rebuild it as a stepper motor I could cut the servo weight almost in half. I also compacted the design to further reduce the weight. Here you can see all the parts for the servo nicely arranged on a penny.
This servo functions very similarly to the large one described above. The only difference is that I wired the brushed motor as a stepper motor by soldering directly to the 5 contacts on the motor's commutator. This allowed me to get rid of the steel case and use the commutator as the main structural component (backbone) of the servo.
This servo weighs just 190mg, has a throw of 1/8", and a resolution of 0.003". It can pull with a force of about 4g. Overall length is about 3/8". Here is a video of it in action:
These two servos can run at voltages between 3-5v and are controlled with a 1-2ms pulse as is standard for all hobby r/c servos.
Impressive!
ReplyDeleteI didn't know that there were companies that made micro servos. I usually use servos for my remote control cars. I've bought the cheap kind, so my servos usually die really quickly. It's nice that it's usually pretty easy for me to find the servos that I need for my remote control cars. I can imagine that it would be difficult for me to find micro servos in my area if I ever needed them.
ReplyDeletehttp://www.hobbyease.com/servos-for-sale-online-k5
Hello can you provide me more details about stepper mode in your 3.2mm motor? Thanks
ReplyDeleteIt is a custom built motor from the guts of a 3.2mm diameter coreless Shicoh DC motor. I removed the commutator and soldered wires directly to the contacts to drive them digitally. It wasn't a very good stepper motor but it was very light.
DeleteHi, i am curious about how you do the software feedback with rotatings magnets to the hall sensor, i know that the pic comparator find itself when the values are the same (feedback ), but what you do to compensate the rotation from the magnets. I have a piece of software based in pic12f683 wich works preaty good but with potentiometer, Can You share your software?
ReplyDeleteRegards
Vinci
The larger servo just counted 1/2 rotations of the lead screw. I believe the hall effect sensor was latching so it just flipped the output high/low when the magnets came around and held that state. That made polling the sensor very easy. So, very easy simple feedback.
DeleteThe smaller servo used an analog sensor which was harder to sample but I may have summarized the output into 1/4 turns of the shaft. Again, nothing complicated - just counting turns off the lead screw.
In both cases, I didn't know the direction of rotation. I counted on the friction of the system to keep everything stationary when I wasn't driving the motor. This way I could assume directionality.
Hi, thanks for your reply. So you only rely on the servo mechanism's resistance to hold the position if there is an opposite pull? It is? I didn't understand, I'm studying but I couldn't do it without a reactive action at the exit, could you show me this part of your code?
ReplyDeleteRegards
Vinci