For me, one of the great challenges in electronics is to see just how small a robot I can make. The beautiful thing about electronics is that the components just keep getting smaller and cheaper and more efficient at an incredibly fast pace. Imagine if automobile technology were like that. Unfortunately, mechanical systems at this time, are not advancing nearly as fast as electronics.
This leads to one of the main difficulties in building very small robots: trying to fit in a small space, the mechanical system that moves the robot. The mechanical system and batteries tend to take up most of the volume of a really small robot.
pic1 shows Mr. Cube R-16, a one cubic inch micro-sumo robot that is capable of reacting to its environment with music wire whiskers (bumper switch). It can move and explore the perimeter of a small box. It can be remote controlled using a universal TV infrared remote control that is set up for a Sony TV. It can also have its Picaxe microcontroller pre-programmed with reaction patterns. Details begin on step 1.
Step 1: Components of a One Cubic Inch Robot
Mr cube R-16, is the sixteenth robot that I have built. It is a one cubic inch robot that measures 1"x1"x1". It is capable of autonomous programmable behavior or it can be remote controlled. It is not meant to be anything that is very practical or particularly useful. It is merely a prototype and proof of concept. It is, however, useful in the sense that building a tiny robot allows you to hone your miniaturization skills for robots and other small circuits.
Building Small Robots and Circuits
Keep in mind that building as small as possible means that it may take twice as long as it would normally take to build the same circuit in a larger space. All kinds of clamps are needed to hold the small components and wires in place while soldering or gluing. A bright work light and a good magnifying headset or a fixed magnifying glass are a must.
It turns out that one of the biggest obstacles to making really tiny robots is the gear motor that is required. The control electronics (microcontrollers) just keep getting smaller. However, finding low rpm gear motors that are small enough is not so easy.
Mr. Cube uses tiny pager gear motors that are geared at a 25:1 ratio. At that gearing, the robot is faster than I would like and a little twitchy. To fit the space, the motors had to be offset with one wheel more forward than the other. Even with that, it moves forward, backward, and turns fine. The motors were wired on to the perfboard with 24 gauge wire that was soldered and then glued with contact cement. At the rear of the robot a 4-40 sized nylon bolt was screwed into a tapped hole underneath the bottom circuit board. This smooth plastic bolt head acts as a caster to balance the robot. You can see it in the lower right of pic 4. This gives a wheel clearance at the bottom of the robot of about 1/32".
To mount the wheels, the 3/16" plastic pulleys mounted on the motors were powered up and then, while spinning, were sanded to the right diameter. They were then inserted into a hole in a metal washer that fit inside of a nylon washer and everything was epoxied together. The wheel was then coated with two coats of Liquid Tape rubber to give it traction.
Another problem with the smallest robots is finding small batteries that will last. The gear motors used require fairly high currents (90-115ma) to operate. This results in a small robot that eats batteries for breakfast. The best I could find at the time, were 3-LM44 lithium button cell batteries. The battery life in very small robots of this type, is so short, (a few minutes) that they usually cannot do anything close to practical.
There was only room for three 1.5v batteries, so they ended up powering both the motors and the Picaxe controller. Because of electrical noise which small DC motors can create, one power supply for everything, is usually not a good idea. But so far it is working fine.
The space in this one inch robot was so tight that the thickness of the 28 gauge wire insulation (from ribbon cable) turned out to be a problem. I could barely put the two halves of the robot together. I estimate that about 85% of the volume of the robot is filled with components.
The robot was so small that even an on-off switch was problematic. Eventually, I might replace the crude whiskers with infrared sensors. I have literally run out of easy to use space, so fitting anything more, without resorting to surface mount technology, would be an interesting challenge.
I like to use clamshell construction for really small robots. See Pic 2. This consists of two halves that hook together with .1" strip headers and sockets. This gives easy access to all the components, making it easier to debug the circuits or make changes.
Pic 3 shows the location of some of the major components.
2 GM15 Gear Motors- 25:1 6mm Planetary Gear Pager Motor: http://www.solarbotics.com/motors_accessories/4/
18x Picaxe microcontroller available from: http://www.hvwtech.com/products_list.asp?CatID=90&SubCatID=249&SubSubCatID=250
L293 motor controller DIP IC: http://www.mouser.com
Panasonic PNA4602M infrared detector: http://www.mouser.com
30 AWG Beldsol heat strippable (solderable) magnet wire: http://www.mouser.com
3 LM44 1.5V. Lithium button cell batteries: http://www.mouser.com
Small blue on-off switch: http://www.jameco.com
Thin solder- .015" rosin core solder: http://www.mouser.com
Resistors and a 150 uf tantalum capacitor
.1" fiberglass copper traced perfboard from: http://www.allelectronics.com/cgi-bin/item/ECS-4/455/SOLDERABLE_PERF_BOARD,_LINE_PATTERN_.html
Performix (tm) liquid tape, black-Available at Wal-Mart or http://www.thetapeworks.com/liquid-tape.htm
Step 2: Circuit of a One Cubic Inch Robot
18x Picaxe Microcontoller
Picaxe microcontrollers are still my favorite controllers to use on experimental robots. While they have less memory and are not as fast as PicMicros, Arduino, Basic Stamp, or other microcontrollers, they are fast enough for most small experimental robots. Several of them can be easily connected together when more speed or memory is needed.
They are also very forgiving. I have directly soldered them, shorted them and overloaded their outputs and I have yet to burn one out. Because they can be programmed in the BASIC programming language, they are also easier to program than most microcontrollers. If you want to build really small, the 08M and 18x Picaxe controllers are available in surface mount form (SOIC-Small Outline Integrated Circuits).
To see some of the projects you can do with Picaxe microcontrollers you can take a look at:
L293 Motor Controller
The L293 motor controller is an excellent way to control two motors in any small robot. Four output pins from the microcontroller can control the power to two motors: forward, reverse, or off. The power to the motors can even be pulsed (PWM-pulse width modulation) to control their speed.
Dead Bug Style
There was not room on the perfboards to mount the L293 controller so it was installed using the dead bug technique. This simply means that the IC is turned upside down and thin wires soldered directly to the pins which have been bent or clipped short. It can then be glued onto a circuit board or fitted into any available space.
In this case, after the L293 was soldered and tested, I coated it with two coats of the ever handy Liquid Tape rubber to insure that nothing shorted out when it was crammed into the available space. Clear contact cement could also be used.
For a very good example of building circuits using the dead bug style, see here: http://www.bigmech.com/misc/smallcircuit/
Pic 5 shows a helping hands solder jig I have modified by adding small alligator clips to a perfboard to aid in soldering small wires to ICs in the dead bug style.
Pic 6 shows the schematic for the Mr. Cube robot.
You can see a video of Mr. Cube doing a short programmed sequence by clicking on the inch-robot-sm.wmv link below.
It shows the robot at about 30% of top speed which has been reduced using pulse width modulation on the motors.
Step 3: Robot Building Tips and Tricks
After building 18 robots, here are some of the things I have learned the hard way.
Separate Power Supplies
If you have the space, you will save yourself a lot of trouble if you use separate power supplies for the microcontroller and its circuits and the motors. The fluctuating voltage and electrical noise that the motors produce can wreak havoc with the microcontroller and sensor inputs to produce very inconsistent responses in your robot.
I find it best to first build the complete circuit of the robot on a breadboard. Components rarely fail or are defective. If your design is valid, and the circuit does not work, it is almost always a mistake in your wiring. For information on how to do fast circuit prototyping, see here: http://www.inklesspress.com/fast_circuits.htm
I then mount all the motors and sensors on the robot body and program the microcontroller to control them. Only after everything is working well, do I try and make a permanent soldered version of the circuit. I then test this while it is still separate from the robot body. If that works, I then mount it permanently onto the robot. If it stops working, it is often the fault of noise problems.
One of the biggest problems I have encountered is electrical noise that renders a circuit useless. This is often caused by the electrical or magnetic noise that can emanate from DC motors. This noise can overwhelm the sensor inputs and even the microcontroller. To solve this, you can make sure the motors and the wires to them, are not close to any input lines going to your microcontroller.
Pic 7 shows Sparky, R-12, a robot I made that uses a basic Stamp 2 as the microcontroller. I first tested it with the main circuit board away from the robot and after doing the basic programming, everything worked fine. When I mounted it right above the motors, it went crazy and was totally inconsistent. I tried adding a grounded copper clad board between the motors and circuit but that made no difference. I eventually had to physically raise the circuit 3/4" (see blue arrows) before the robot would work again.
Another common source of devastating noise in small robots can be pulsating signals. If you send PWM signals to servos or motors, the wires can act like antennas and send signals that can confuse your input lines. To avoid this, keep microcontroller input and output wires separated as much as possible. Also keep wires carrying power to motors away from input lines.
The problem of wire thickness in very small circuits can be solved by using 30-36 gauge magnet wire. I've used 36 gauge wire for some projects, but found it so wispy, it was hard to strip and use. A good compromise is 30 gauge magnet wire. Regular magnet wire can be used, but I prefer the heat strippable magnet wire. This wire has a coating that can be stripped by merely soldering it with enough heat to melt the insulation. It takes up to 10 seconds to strip the coating while soldering. For some delicate components such as soldering to LEDs or ICs, this can be a damaging heat.
The best compromise for me, is to use this heat strippable magnet wire, but strip it somewhat first. I first take a sharp knife and slide it across the magnet wire to peal off the coating and then rotate the wire around until it is stripped fairly well around its diameter. Then I solder the stripped wire end until it is well tinned. Then, you can solder it quickly to any delicate component with less chance of heat damage.
When components are very close together, it can be difficult to solder them without blobbing over and shorting nearby pads and wires. The best solution is to use a small tipped adjustable heat soldering iron (1/32") and the thinnest solder you can find. Standard solder is usually .032" in diameter which works fine for most things. Using thinner .015" diameter solder allows you to easily control the amount of solder on the joint. If you use the least amount of solder necessary, it not only takes up the smallest volume, but it also allows you to solder a joint as quickly as possible. This reduces the chance of overheating and damaging delicate components like ICs and surface mount LEDs.
Surface Mount Components
Surface mount components are the ultimate in miniaturization. To use SOIC sized ICs I usually use thin solder and magnet wire. To see a fairly easy way to make SOIC breakout boards or circuits see here: http://www.inklesspress.com/robot_surface_mount.htm
Gluing on Components Instead of Soldering
Some surface mount components can also be directly glued onto circuit boards. You can make your own conductive glue and use it to glue on LEDs and ICs. See: http://www.instructables.com/id/Make-Conductive-Glue-and-Glue-a-Circuit/
While this works, it can be somewhat difficult because capillary action tends to wick the conductive glue under the surface mount LEDs and other components and short them.
Gluing On Components Using Non-Conductive Glue
I have been recently experimenting with gluing on components onto copper circuits boards and conductive fabrics using glue that does not conduct.
See Pic 8 for a picture of a 12 volt light bar (unlit and lit) using surface mount LEDs that were glued on with non-conductive glue. I discovered that if you put a thin film of clear nail polish on the copper traces and then physically clamp on the LED and let it dry for 24 hours, you will be left with a good mechanical joint that is electrically conductive. The nail polish glue effectively shrinks and clamps the led contacts to the copper traces forming a good mechanical connection. It must be clamped for the full 24 hours. After that, you can test it for conductivity. If it lights up, you can then add the second layer of glue. For the second layer I use a clear contact cement such as Welders or Goop. This thicker glue surrounds the components and also shrinks as it dries to securely insure a good solid connection to the copper traces. Wait 24 hours for it to dry before testing again.
Being dubious about how long it would last, I left the blue LED light bar in Pic 8 on for seven days and nights. The resistance of the circuit actually decreased over time. Months later, the bar still fully lights with no evidence of increased resistance. Using this method, I have successfully glued very small surface mount LEDs--0805-- size and larger onto copper clad perfboard. This technique shows some promise in making really small circuits, LED displays and robots.
Step 4: Breaking The Rules
To make really tiny robots, you may have to break many of the rules mentioned above. To make Mr. Cube I broke the following rules:
1- I used a single power supply instead of one for the motors and one for the microcontroller.
2- I mounted the Picaxe microcontroller very close to a motor.
3- I used batteries that are rated for low current draw and ran them at much higher currents than they were designed for. This severely limits the life of the batteries.
4- I crammed all the wires together in a hodgepodge which can create crosstalk and electrical noise problems. I was simply lucky that it did not.
5- I hardwired the circuit onto the robot without breadboarding it first. This can make debugging the circuit very difficult.
You can download the Picaxe programming code for Mr. Cube at: http://www.inklesspress.com/mr-cube.txt
If you are interested in seeing some of the other robots I have built, you can go to: http://www.inklesspress.com/robots.htm
Pic 9 shows Mr. Cube and Mr. Cube two, R-18, a 1/3 cubic inch robot that I have started to build. Details on step 5.
Step 5: Mr. Cube Two: Making a 1/3 Cubic Inch Robot
After making a one cubic inch robot that worked, I had to try something smaller. I am aiming for a robot around 1/3 cubic inch. At this point, Mr. Cube Two is about .56"x .58" x.72". It has a 08 Picaxe microcontroller that will allow it to move autonomously. Pic 10 shows the robot on a ruler. Pic 11 shows the other side of the robot on a quarter. The two batteries are cr1220 3volt lithium batteries and it remains to be seen if they will have enough capacity to power the Picaxe and the motors. More batteries may be needed.
It is a work in progress. So far the two pager motors work fine to move and turn the robot on smooth surfaces. The Picaxe microcontroller is installed and has been programmed and tested. Still to be added are the SOIC L293 motor controller and the infrared reflector sensor.
When finished, this will be one of the smallest autonomous robots around with sensors and a microcontroller. While this is a tiny robot, are there smaller amateur robots that are programmable? Yes indeed. See:
1cc Robot: http://diwww.epfl.ch/lami/mirobots/smoovy.html
Pico Robot: http://poor-robot.com/pico/