loading

Simple Animatronics with Servos and Arduino

Featured
Picture of Simple Animatronics with Servos and Arduino
casting.jpg
Servos are surprisingly easy to use. Even more so than simple DC motors and steppers when you have a microcontroller. In this instructable we'll use a 'duino to drive five servos which will control a doll's limbs and neck.

I bought the servos at HobbyPartz for a couple bucks apiece and found the doll at a swap meet for a dollar. The doll says 1967 Mattel on the back and I later learned she is a See 'n Say type doll. The hard plastic body was important for a successful installation.


 
Remove these adsRemove these ads by Signing Up

Step 1: Dismemberment

Picture of Dismemberment
guts.jpg

Pop off the arms and use a coping saw to split open one side. Then crack open the other side and remove the guts. Be careful along the way to ensure that everything can be put back together after. I also spent at least 20 minutes trying (and failing) to get the inner workings functional.

Step 2: Turning Heads

Picture of Turning Heads
neckwire.jpg
wig.jpg
neck.jpg
head.jpg
The Neck

First dry fit the server horn in the neck and trim it as needed. The servo needs a base to stand on so we'll use some Mighty Putty (aka Epoxy Putty) to fill in the neck.

This stopper will serve as a base for the servo which turns the head. It must stick to one half of the body but not the other to allow the torso to be opened and closed freely. Use a little petroleum jelly on one half of the torso and the servo horn to prevent them from sticking.

Fill the neck with putty while focusing on how the torso comes apart. Allow the putty to cure for a minute or two to eliminate some of the tackiness. Then press the servo horn into the neck to create a firm footing for the servo.

Finally remove the servo and top half of the torso. Allow the putty to cure further while testing the fit a few times before it cures completely. The putty can be filed and sanded after it's hard but it's much easier to adjust it prior.

The Head

Now it's time to mount the servo to the head. The first thing we want to do is remove the scalp. Follow just under the hairline with a razor and remove it completely.

Take a moment to orient the horn so that it has an even range of motion in either direction while it's oriented perpendicularly to the face. Place the horn in it's footing and run the wire down the side of the putty. Turn the servo in the direct opposite the wire and make sure it has enough slack to turn completely. Mark the wire and the putty when you're happy with the positioning.

Make a groove in the putty with a saw so the servo wire can run down the neck and into the body while it's closed. Next put the servo in the head and feed the wire down through the groove. Close the torso and put the head back on. You should now have head on the body with the motor in the head and the wire running down the neck into a closed torso.

Adjust the head and servo so that they're lined up. Make sure there's an even amount of spacing between the servo and either side of the head. Take a measurement of this space and cut a length of 3/8" dowel. Dry fit the piece of dowel on either side of the head and re-cut if necessary. Cut another piece of dowel the same length once you're happy with the fit.

Now wedge the pieces of dowel on either side of the servo. Drop a small amount of hot glue on each side where the dowel meets the servo and allow it to dry. Remove the servo with the dowels sticking to it. The dowels should hinge on the small drop of hot glue while maintaining an accurate placement. Take advantage of this hinging effect to apply more glue between the servo and dowels before clamping them together to create a secure, tight fit.

The dowels should now be attached to the servo but not the head. I initially tried gluing the dowels to the head but the glue didn't stick. Drill a small pilot hole through either side of the dowel. Place the servo back into the head with the horn planted firmly in its footing and use two screws to fasten the dowels to the head. Remove the head from the body and disassemble the torso.

Step 3: Rotator Cuffs and Hip Flexors

Picture of Rotator Cuffs and Hip Flexors
shouldersocket.jpg
shoulders.jpg
legs.jpg
supports.jpg

Now it's time for the limbs. First spend some time getting familiar with the rotation and stops of your servos. You want to find an orientation that's going to allow for a natural range of motion. The horn may need to be removed and readjusted so that it correctly lines up with the arm.

We'll be modding the torso so that it will support the remaining four servos. Start by cutting the arm sockets so that they allow the servo to protrude slightly. Next, take and arm and cut three slots in the flange. Cut a hole which goes down into the arm and another which goes back up into the shoulder.

Your servo should come with a horn that has four long arms or two long arms and two short arms. The one with two short arms is the one you want or you can cut the other in the same manner. Fit the horn into the arm, guiding horn down into the length of the arm and then back up into the shoulder so that it grabs firmly. Finish the other arm.

The body will likely need a bit of modification to allow the servos to mount well. Cut away as needed and use would or plastic build up scaffolding as needed. Remove any stickers applied to the servos and scuff up the housing with sandpaper or a file to allow a good hold for the glue. Apply ample hot glue and hold the servos in place while it dries.

Repeat the same steps for the legs. The servos for the legs just barely fit and may end up sticking out quite a bit. This baby has some wide hips!

Lastly, figure out where the top half of the torso will make contact with the servos and add some material if necessary to create a tight fit when the torso is closed. Run the limb wires so that they come out hips and the head wire so that it comes out the side.

Close 'er all up.

Step 4: The Illusion of Life

Picture of The Illusion of Life
money.jpg
code.jpg
The only thing left is to wire her up and apply a bit of code. The servos have three wires. Red is positive, black or brown is ground, and white, yellow, or orange is signal. The code uses the Arduino Servo library. Principia Labs also has some good info on how servos work.

Step 5: Analog Puppet Strings in a Digital World

Picture of Analog Puppet Strings in a Digital World
controllerpower.jpg
controllersignal.jpg
controllerback.jpg
connections.jpg
code.png
It's too limiting to move the servos purely with code. What we need is a controller. Some puppet strings so to speak. I decided to use four slider potentiometers for the limbs and a rotary trim pot for the head. The sliders were purchased from Futurlec (Mono Sliding Potentiometers - 30mm Travel) and the trimpot was laying around from the famous Electronic Goldmine surprise box . I also used a right angle IDC header for all the connections but any type of header will do.

The first step is to connect the sliders directly to the Arduino to get the correct orientation. The positive and negative terminals of the power out should connect to either end of the slider and the wiper pin should connect to an analog in on the Arduino. You can use a multimeter to determine the correct connection if it isn't immediately clear. You're looking for a voltage that varies between zero and five volts as you move the slider.

Use the debug flag in the provided code to get serial output which will help you determine the correct orientation of the pot. Basically you just want a limb to move up when the slider moves up. It's pretty easy to get the orientation wrong when soldering but don't worry if you do because it can be corrected through the software.

Solder everything to a perfboard once you're happy with the operation of each pot. I kept all positive connections to one side and all negative to the other. I took a reading from each wiper pin once this step was complete to verify that everything was soldered correctly. I then soldered each individual wiper to one of the pins one the IDC connector.

When everything is complete you should have two inputs for the power and five outputs for each of the pots. Write the sketch to the Arduino and connect everything up to verify that it works.


What's Next

- Connect a few LDRs or motion sensors to track movement for the head to follow.
- Add a few LEDs for the eyes.
- Make it talk.
- Stuff everything into the body and make it wireless.
- What else?
astein-13 months ago

the beauty of synchronicity never ceases to amaze me.

i have been planning to do exactly the same thing as a final for my Electronics as an Art Material class, except controlling the servos via twitter.

if you dont mind me asking, what type of servo did u use??

pacello3 months ago

I'm new to electronics, but I attempted to simulate your project with 123D Circuits here. Any idea why the servos move so painfully slow? Also, you can probably tell I've never breadboarded before.

gzip (author)  pacello3 months ago

Hey, that's pretty cool. I've never used 123D though so I'm not sure why the servos move so slow, but at least it's working. :)

seamus_mf2 years ago
Creepy......
tinker2343 years ago
wow thanks time to make a phys-co killer doll
jj.inc3 years ago
I wan't to put one of those in my carry-on next time I fly
graydog19424 years ago
COULD YOU POST PART NUMBERS OR MODEL NUMBERS AT HOBBY PARTZ OR OTHER SOURCES FOR THOSE OF US THAT ARE REALLY NEW AT THIS

THANKS
ROBERT GLENN
gzip (author)  graydog19424 years ago
I used a mix of servos that I had on hand. The first set are the smallest and cheapest but also perform well.

7g Sub-Micro Servos used in the arms:
http://www.hobbypartz.com/60p-dy-1002.html

T-Pro Mini Servo SG-90 9G Servos used in the legs:
http://www.hobbypartz.com/topromisesg9.html

Dynam 9g Servo used in the head:
http://www.hobbypartz.com/60p-dy-1007.html
WVvan4 years ago
http://www.youtube.com/watch?v=hSy8Ko1vSKQ

"My name is Talking Tina and I'm going to kill you."
rmarino3 WVvan4 years ago
LOL! too funny. And im going to bed..
This instructable represents my very worst nightmare.
JumpStart4 years ago
Very cool! I expect I'll find a way to use this with my middle school students!
Cadimus4 years ago
Now just replace the eyes with two PIR sensors and let it track people, slooowly, with it's head.
YES!
Darwinfish4 years ago
Now you just have to hot glue a small knife to one of its hands... and your shrink will officially retire.

MPaulHolmes4 years ago
Be careful when programming that robo-baby. DON'T make her self aware. She looks like she's sort of crazy. Nice work! My son loves robots, and wants us to make one. I had no idea where to start, so this is perfect.
crossfire4 years ago
Very good! But SOOOO CREEPY!!!!!
gzip (author)  crossfire4 years ago
Thanks. Creepiness is a secondary goal so it may get worse. ;)
it may get worse...i thought this was as creepy as it got, please dont tell me your turning this into a carrot top baby that moves.
seabee8904 years ago
I happen to have a 3 channel remote laying around in the garage. .Halloween is ging to ROCK!!! ( I am probably gonna get in trouble. LOL
Kiteman4 years ago
That shot in step 2 is just creepy...

Any plans to add servos to the hips as well?
gzip (author)  Kiteman4 years ago
It's way creepier in person. I had this thing lying on my desk with only a head and arms. It was running the simplest code where the head and limbs just go back and forth. It created this rocking motion that was so freaky I almost decided to stop the project o_O. I'll try to get a shot of that later. Btw, the hips are added in step 3 but I have yet to program them. Maybe I can get it crawling on all fours.
Kiteman gzip4 years ago
... saying momma!
Only that one? Not any of the other shots of a Franken-doll with buckshot-pattern holes in her chest?

This is pretty cool though...ahh, the ideas it gives for Halloween decorations!
martzsam4 years ago
Need to do this with a Chucky Doll. Epic project, kinda creepy...

If you want to listen to the phonograph disk inside, it might be playable on a variable speed record player.