Large Dancing Robot

Written by: admin@makezilla

Picture of Large Dancing Robot

Build a large dancing robot. This was supposed to be a walking robot, but it more kinda beebopped around. 

video on last step. 

Step 1: Build a Prototype

Picture of Build a Prototype

First, The _Prototype_:

Before you make a large, high power robot, it's good to make a smaller scale prototype. I made a simple walking robot using

= Brains: PIC16f877A, 
= Actuators: two small geared pager motors ( 
= Actuator Control: an L293 H-bridge, 
= Body: I used one of those thin metal things that cover your unused card slots at the back of your PC. 
= Fasteners: Everything was kept together by double sided tape and twist ties and some small screws from an old computer case.

Info on how to use the PIC and the L293 h bridge motor controller are covered in my previous instructables:

you can download the code I used (LWalker.bas).
The gears on the motors are important because they add torque (needed for a walking robot since it has lift its own weight).

Step 2: Hardware(1): Stuff You'll Need

Picture of Hardware(1): Stuff You'll Need

Now I started building the larger scale version. I used:

= two 24 volt wheelchair motors I had bought a while ago (to make a bot for the battlebots tv show, didn't happen) (from Ebay)
= two victor 883 24volt motor speed controllers (from ebay, originally sold by IFI robotics)
four 12v 5ah batteries (two in series for each motor) (from
= two planks of wood stolen from a contruction site
= two 10 foot pieces of EMT electrical conduit (from Lowes)
= a conduit bending tool (Lowes)
= bicycle inner tubes (go to a local bike shop and ask for popped tubes from the trash)
= u bolts, screws, locking nuts, locking washers, a ratchet wrench, hack saw, power drill
= friction feet thingees (you slide them onto table legs for friction) (from a local hardware store)

Step 3: Hardware(2): Bend the Legs

Picture of Hardware(2): Bend the Legs

(1) using the wood as a body screw on one motor so that the shaft is pointing upwards at approximately a 45 degree angle. Screw on the other motor so that the shaft is horizontal. 

(2) bend the legs using the conduit bending tool into whatever shape you think will work (I had to try a couple different angle bends before it wort of worked). 
One thing about shaping the legs, don't make them flare out too far foreward and back. If the legs flare out too much as the robot walks they will get further and further apart and the robot will sag in the middle. 
Also, don't flare the legs out to the left and right of the robot, this makes it more stable but also a LOT harder for the robot to move the legs up and down. Flaring them inwards towards the robots body axis made a huge beneficial difference on my robot. 

In my experience it is very hard to do double bends with steel conduit (see S shaped bend in diagram below). A big part of conduit bending is making sure you have enough weight distributed in the right places (to hold down different parts of the conduit, etc). So it's goo to have very heavy objects around, like a radiator, or big people. 

Step 4: Hardware(3): Leg Attachment

Picture of Hardware(3): Leg Attachment

(3) See the diagram below to reinforce the legs so they can be attached very securely to the motors. To make sure that they were attached well I used a right angled peice of steel to hold the conduit from two sides. Use locking nuts and locking washers here. 

try to make it so the legs can be somewhat easily detached from the motors so that you can modify the leg bends if needed after later testing (after you finish the electronics) 

Step 5: Electronics(1): PIC micro and the PAK VIII

Picture of Electronics(1): PIC micro and the PAK VIII

Refer to my previous instructables on using the PIC, or you can use another type of microcontroller, or you can just use switches to control power to the motors and skip the whole digital electronics part. 

I used a PIC microcontroller because my original intention was to put the batteries, controller, etc all on the robot to make it autonomous, but I had to rush to complete it because I was building it for an event (nyc idiotarod), so I just used long extension cords to supply power to the robot from an external power source.

To allow the PIC to control the motors while also doing other stuff (like listening for your commands, or whatever), you'll want to use a pulse width modulation (PWM) coprocessor such as the PAK VIII. This chip takes in a clocked in value from the PIC and takes care of sending the correct pulse width commands to the Victor 885 speed controller. Figuring out how to interface to it from the PIC via software was a bit of a pain, you can download the code I used (LBigWalk.bas). 

The circuit diagram for how to connect everything together is below.

Step 6: Electronics(2): Make the Control Switches

Picture of Electronics(2): Make the Control Switches

I hooked up four tiny pushbutton switched to manually send commands to the PIC. Two buttons for each motor (clockwise/counterclockwise rotation). These were connected to the PIC as seen in the diagram below. You can also see how they were connected on the circuit diagram on the previous page. 

Step 7: Electronics(3): Motor Speed Controller and Batteries

Picture of Electronics(3): Motor Speed Controller and Batteries

For the Victor 885 to know what speed to set the motors to, you have to send it +5v pulses with widths between 1ms (minimum power) and 2ms (max power). Sending it pulses with a width of 1.5ms puts the motor in neutral. The time between each pulse sent to the Victor 885 must be at least 27ms. Because you're sending it variable width pulses, this type of control is called "Pulse Width Modulation" or PWM for short. 

These pulses are sent to the two Victor 885s from the PAK VIII described previously. Datasheets and other information on using the Victor 885 is included below. I also attached a datasheet of the batteries I used. 

The Victor 885's LED will turn red when it's running the motors full reverse, green for full forward, and orange for neutral. The LED will blink if it's not receiving any pulse width modulation (PWM) commands.

Step 8: Run It

Picture of Run It

If it works or not, have fun