After I got comfortable programming and building with an Arduino, I used my newly acquire microcontroller skills to build a robot. Using a microcontroller, four high-torque DC gear motors, spiked legs, a linear actuator, rotation sensors, and 3 L298 H-bridge circuits, this robot can climb up trees of varying diameter. The very long build log follows.
I started out by creating a basic design in Sketchup. The robot was to consist of two segments, joined by a spine which could be extended or retracted. Each segment would have four legs with very sharp points as feet. To climb, the legs on the top segment would pinch together and the sharp feet would dig into the bark, securing the robot. Then the spine would be retracted, pulling up the bottom segment. The legs on the bottom segment would then grip the tree, and the top segment would release. Finally, the spine would extend, pushing the top segment upwards, and the process would repeat. The climbing sequence is similar to the way an inchworm climbs.
In my original design (show in the images above), all four legs in each segment were controlled by one highly geared down motor. I decided to ditch this idea for a few reasons. Firstly, I could not find the type of spur gear needed to mesh the legs together. Also, with all the legs linked together, the robot would have a hard time gripping uneven surfaces. Finally, I decided that the robot would be much easier to build if the motors drove the legs directly.
The other significant change I made from my original design was the way the spine worked. In my model, I used a rack and pinion type gearing system to extend and contract the spine. However, I could not find the necessary parts to build such a system, so I ended up using a threaded rod coupled to a motor to actuate the spine.
Tools and Materials:
- Arduino Uno (any will work)
- 9V Battery (to power the Arduino)
- Approximately 12V LiPo or Li-ion battery (I modified a laptop battery, so I did not even need to buy a charger)
- 5V regulator (To regulate power to the motor controller logic circutry)
- 9V Battery clip
- Barrel connector (Must fit the Arduino power connector)
- 4X 7 RPM Gear Motor (These power two legs each)
- 4X Thin linear trim pots (Rotation sensors for the legs)
- DPDT Toggle switch (Power switch)
- SPDT Slide switch (User input)
- 2X Mini Snap Action Switch (Limit switch)
- 3 10K resistors (Pull down)
- Signal Wire (Old IDE cables work really well, and let you organize your wires easily)
- Heat Shrink Tubing
- 12′ 3/4″ x 1/8″ Aluminum Bar (These come in 6′ lengths at my local hardware store)
- 6″ x 3″ acrylic sheet (Electronics are mounted to this)
- 6x Standoffs with screws
- 1′ Threaded rod and corresponding 1/2″ nut
- 2X 1′ x 3/16″ steel rod
- 1′ x 3/16″ I.D. Brass Tubing
- 4X 5mm Aluminum Universal Mounting Hub
- Pack of large T Pins
- 4X 3/32 screws (to mount the motors)
- An assortment of 4/40 screws and nuts
- Assorted hex screws and nuts
- 4X Bic pens (I used the plastic shafts to fix the pots on the legs in place)
- 4X Locknuts
- 5 Minute epoxy
- Sheet metal scraps (For spacing and mounting things. Bits of Meccano work well)
- Stick on Velcro (For holding on the batteries)
- Hard Drive reading head bearing
- 3/4″ Plastic angle
- Electrical Tape
- Zip Ties
- Electric Drill / Drill press (As well as a lot of bits)
- Soldering Iron
- Allen wrench
- Assorted screwdrivers
- Wire Strippers
- C Clamp (These can be used to make nice 90 degree bends in the aluminum)
- Bench PSU
The motor controller I built for this robot is based off the L298HN Dual Full Bridge chip. To use the chip, I followed the guide here. To start out, I placed all the components on a piece of perf board, to figure out the layout. With this chip, each motor requires three inputs to work: an enable signal and two input signals. The enable signal is used to control the motor speed with PWM, but since I did not need to control PWM, I just wired all the enable pins in parallel to a 5V line when I hooked the controller up to the Arduino. Once I figured out the layout, I soldered all the components in place, and made connections with 22AWG solid core wire. Finally, I spread some thermal paste on the back of the L298’s, and screwed on the heatsinks. The particular heatsinks I used were made by cutting in half a northbridge heatsink from a computer motherboard, and drilling and tapping a hole for the screw. They are probably much larger than needed, but there is no harm in having over sized heatsinks. A higher resolution image of the labeled board can be found here.
When finished, this motor controller should be able to bidirectionally control 4 DC motors at up to 2A each (probably 2A continuously, because of the size of the heatsinks). As you may notice, this leaves me one motor short. My original design used a servo to actuate the spine, but I had to change my design to using a DC motor. To power it, I wired my third L298 chip to a molex connector (so I can disconnect the motor) and soldered on wires for all the connections. It does not look as pretty as my controller on a circuit board, but it works.
Read more: Tree Climbing Robot using Arduino