Steve Bolt's Photovore
From BEAM Robotics Wiki
Robots are scarce. You rarely see them in the street. Those that earn their daily bread work in large factories and laboratories. They are stupid machines. For everything they do, they need scripts describing every motion in precise detail. So they aren't real robots, because intuitively we reserve that term for a mechanism able to carry on by itself, without us determining every action.
Designing a real robot has proved to be very difficult. So far, none of the experimentals is able to safely cross a busy road or vacuum any house it enters. A robot clever enough to do such things may well remain out of reach for quite some time. The Canadian roboticist Mark Tilden thinks it's a good idea to start with building `wild' robots, machines that look after themselves and remain active for many years without needing their owner's helping hand.
- A robot must protect its existence at all costs;
- A robot must obtain and maintain access to a power source;
- A robot must continually search for better power sources.
The surest source of energy for an electronic robot is sunlight. An electronic photovore (light-eater) has an advantage over living nature, because solar cells convert light directly into electromechanical energy, whereas biological life needs a complex chemical interstage. And a robot has few natural enemies - it is not edible. This allows even very simple robots to remain active for a very long time, stubbornly searching for a better place under the sun.
A small robot, eating nothing but light. Would that be possible? It is easy enough if a rechargable battery stores the energy in chemical form. Rechargables and electric motors go well together. Unfortunately the robot would spend most of the day `sleeping'. In Dutch daylight - that is, under a heavy overcast - the little solar panel supplies about 2 mA at 3 V, say 5 mW. Using two 30 mAh NiCd cells that allows about half a charge per day, if the sun shines now and then a full charge is possible. But the most efficient motor I could find needed at least 15 mA to do anything, so it would use up an entire day's light within two hours.
Electric clocks use much less power. With a small modification you can accelerate their time considerably, and they are quite cheap. I bought a simple clock intended as a replacement part for about four dollars. The stepping motor was disconnected from the circuit inside the clock. Instead the oscillator shown was used to drive the stepper. Gradually increasing the frequency made the seconds hand ultimately do over 17 revolutions per minute. Faster running is possible, but then the stepper will just as easily turn in the wrong direction, which would rob the Photovore of its sense of purpose.
The HCMOS inverters, the 100N capacitor and the variable resistor together form a square-wave oscillator, which itself uses almost no power. The second capacitor converts the square wave into pulses for driving the stepping motor inside the clock. Its value depends mainly on the stepper specifications. An explanation of the abbreviations is here if your need it.
17 rpm for the seconds hand means that the hour hand goes round in 3.5 minutes. Take a wheel with a diameter of a little more than 2 inches, mount it on the shaft and the robot will have a speed of about 2 inches per minute. I know, it's a snail's pace, but you can definitely see it move. And oscillator and motor together use less than 1 mA at 2 volts!
Moreover, the large reduction (the stepping motor itself runs at 500 rpm) makes for perseverance. The Photovore below is equipped with two clocks and has no trouble with a 20 degree incline - running continuously, under a heavy overcast, with the sun as its only source of power. The robot weighs 104 grams.
On a table next to a window the robot runs continuously during the daytime, even in the shade. But when it has to work itself from the middle of the room to the window, the solar panel will sometimes not even supply that one milli-amp. It makes sense to save up some energy, then run a short distance, repeating the process until enough light is found to run continuously. A large capacitor can be used for storage. The circuit shown waits until the solar panel raises the voltage over the capacitor (4700uF) above some 2.7 V before switching on the oscillator. If the voltage drops below about 2.2 V, the transistors turn off and the capacitor is recharged. The run/charge ratio depends on the amount of light. It is close to sunset when the run time drops to zero.
The circuit turns the robot on when the solar panel has charged the capacitor (4700uF) to about 2.7 volts, and off if the voltage drops below some 2.2 volts. The diodes and the first BC559 also limit the voltage supplied to the robot to about 4 V. The LED lights up when the limiter is active. If the voltage (in direct sunlight) still rises nothing will be damaged, but the clock stops. The robot doesn't feel hungry any more...
Now let's look at the `brain' of the Photovore. The prototype searches vigorously for better sunlight, while neatly sidestepping most obstacles. Apart from two clocks with wheels attached, it has two photodiodes (its eyes) and two feelers. The clocks turn clockwise. The robot can only switch them on and off. Yet it moves towards the light and it recoils from obstacles. How does it work? A series of illustrations provides the answer.
 Circuit diagram
The Photovore's brain is built around two NAND-gates and six inverters, four elements each in two 74HC00 IC's. Two photodiodes (the `eyes') and two feelers provide input for a Schmitt-trigger, determining which of the two stepper motors (clocks m1 and m2) receives pulses from the oscillator. The feelers have priority over the eyes, and the feeler connected to zero has priority over the one connected to plus. So if both feelers touch obstacles, the robot will try to push itself out of trouble.
The frequency of the oscillator can be increased with the 5M variable resistor until the seconds hand makes about 17 revolutions per minute. Faster running is possible, but then the stepper will just as easily turn in the wrong direction, which would rob the Photovore of its sense of purpose.
The two 47uF capacitors convert the square wave from the oscillator into pulses for the stepper motors in the clocks. Their value depends on the steppers, so 47uF is correct only for the type of clock mentioned in the parts list. Other stepper-driven clocks (not those equipped with a synchronous motor) can be used if you match the capacitor to the load. Ohmic resistance of the stepper coil is a useful guide: At 300 ohms, 47uF was perfect, while a lady's watch having a resistance of 2K6 needed 4.7uF (Yes, a Photovore using lady's watches is possible :)
The circuit around the three transistors turns the robot on when the solar panel has charged the capacitor (4700uF) to about 2.7 volts, and off if the voltage drops below some 2.2 volts. Use the 250K variable resistor to adjust the switch-off level. You're OK if the clocks run well until they stop.
The diodes and the first BC559 also limit the voltage supplied to the robot to about 4 V. The LED lights up when the limiter is active. If the voltage (in direct sunlight) still rises nothing will be damaged, but the clocks stop. The robot doesn't feel hungry any more...
 Parts list
1 x BC549C 2 x BC559C 2 x 1N4148 1 x Green LED 3mm 2 x 74HC00 2 x BPW41 1 x 4700uF 16V radial 1 x 100uF 16V radial 2 x 47uF 16V radial 1 x 100N ceramic 1 x 5M variable resistor, small, horizontal 1 x 250K variable resistor, small, horizontal 1 x 10M 1 x 2M2 1 x 1M 2 x 470K 3 x 100K 1 x 150E 2.5 m tinned copper wire 0.4 qmm (0.7 mm thick, 21 AWG) 1 m thin isolated copper wire, several colours 5 cm heat-shrinkable tubing 1 x Set of 2 ultralight wheels, Robbe nr. 90330057 2 x Clock "Takehope" nr. 199010 1 x Solar Panel Panasonic BP-378234 1 x Print Pitronics Photovore
 Building the robot
 PC board assembly
Those who found the parts for the robot elsewhere, need to make their own printed circuit board. A scan of the film should make that fairly easy. If you bought the kit, you already have a print. You'll only need to saw off the excess material. Do sand the edges for a neat result.
The components are soldered onto the copper-side of the print, as if they were surface-mounted devices. That way the topside stays smooth, giving a better appearance and offering a good surface for mounting the solar panel. The circuit area will gather less dust and dirt, making the robot more reliable. But you do need to mount the components in a sensible order - otherwise the soldering iron will at some point damage previous components when you try to add the next one.
Prepare the components for surface-mounting by first cutting the leads to the right length. Bending the ends as shown makes for better joints.
The layout below shows where each component belongs. Click on the photo above for a close-up (59K) of the finished board. BTW: The fibre-enforced epoxy carrier is dark green, not red. It wasn't my scanner that introduced the wrong colour. The (chemical) photo shows it too. I have no idea what caused this. The other colours are fine...
I mounted the components in this sequence:
- The isolated wire below the 74HC00 in the middle.
- The two 74HC00's (careful: don't heat any of the pins longer than about a second)
- The BC549C
- The 5M variable resistor
- The 100N capacitor
- The three 100K resistors
- The two 470K resistors
- The two BC559C's
- The green LED
- The 150E resistor
- The 250K variable resistor
- The two diodes (1N4148)
- The two photodiodes (BPW 41)
- The two 47uF capacitors
- The 100uF capacitor
- The 1M resistor
- The 10M resistor
- The 2M2 resistor
- The 4700uF capacitor
 Modifying the clocks
A clock before treatment. Open the case using a screwdriver. Push it from the front between the snaplocks. The bending of the clear plastic outwards should be kept to a minimum; push the black plastic hook inwards instead.
Even before lifting the lid you can clearly see the construction. Open the clock in this attitude, because...
...The gear for setting the clock is secured, but once the lid is off, only gravity is keeping the other parts in position.
Remove the first gear and the gear/shaft of the seconds hand.
Take the stepping motor plus subframe and PCB out of the case; they form a single part. Cut the copper foil between the chip (black lump) and the right coil contact using a small dentist's drill or a sharp knife. Solder two thin isolated wires (about 5 inches long) onto the coil contacts. Be careful not to disconnect the coil wires. There is no need to use different colours: the coil has no plus or minus side, the direction in which the stepping motor rotates is mechanically determined. Next to the subframe you see the gear of the hour hand, in its original form and with its shaft shortened. Cut off 5 mm, using a sharp knife. Now when you put the clock back together, only the shaft of the minute hand will visibly protrude from the case, so you can securely attach the robot's wheels.
The case with the hour hand gear back in place. Next to it you see the minute hand gear, the wheel driving the hour hand, and the two battery contacts. All but the minute hand gear can be sent to the bits box. The robot doesn't need them.
Drill a 3 mm (0.12") hole in the clear plastic lid, for passing the wires. The hole should be near the coil. Put the clock back together. Check its mechanical operation, by temporarily attaching the seconds hand and turning it carefully. Saw off the battery compartment using a metal saw. The photo shows the final result. Only the minute hand shaft visibly protrudes from the case.
 Mechanical assembly and adjustment
A look at the underside of the Photovore. Both clocks have a sprung support attached. The material is the same as used for the feelers: tinned copper wire 0.4 qmm (0.7 mm thick, 21 AWG). First use clear contact adhesive to glue the supports into folded pieces of paper, then glue the paper onto the clocks.
Feeler S0 - here in view - should be bent in such a way that it doesn't touch the copper along the edge of the print.
- The PCB has mounting points for the feelers (marked S0 and S+ on the layout), their contacts (A) and the wires to the clocks (M1, 0, M1) and the solar panel (Z+ and Z0).
- Temporarily connect the clocks and the solar panel (make sure the panel's plus is connected to Z+, the minus going to Z0) and push the seconds hands onto their shafts. Adjust their rotation speed using the 5M variable resistor. Look for the highest rpm where the motors still run smoothly and positively turn clockwise. Make sure you are OK at both the high and the low voltage permitted by the power supply.
- Vary the voltage over the 4700uF capacitor by partly covering the solar panel (close to a window for good daylight). Adjust the switch-off level using the 250K variable resistor. The clocks should still be running well at that voltage. Just a little lower and the seconds hands will only wobble a bit. Check the rotation speed adjustment.
- Check the operation of eyes and feelers, by varying the light and connecting point A with S0 or S+.
- Does everything work really well? Then disconnect the solar panel and use a clear contact adhesive to glue the clocks onto the PCB as shown. Cut their wires to fit and solder them onto the points M1, M2 and the common 0 in between. Make sure M1 and M2 are connected to the right clocks.
- Take a piece of paper and draw a circle with a radius of 5 inches. Use a pencil or something like that as a former to wind the spring of a feeler. The material is tinned copper wire (0.4 qmm, 0.7 mm thick, 21 AWG). Bend the feeler itself to match a quarter of the circle. Make sure the shaft (at the other end of the spring) is bent in such a way as to put the spring near the corner of the PCB, when the shaft is soldered in place. side view
- When both feelers have the correct shape, you can solder them onto the print (points S0 and S+).
- Bend the contacts in shape and solder them onto the points A.
- Form the sprung supports to look like the one visible in the first picture. First use clear contact adhesive to glue the supports into folded pieces of paper, then glue the paper onto the clocks.
- Slide some tight-fitting heat-shrinkable tubing onto the minute hand shafts of the clocks (enough to cover them completely). Then push the wheels on the shafts.
- Solder two short lengths of isolated copper wire - different colours to mark plus and minus - onto the solar panel. The connection pads (underside) look pretty solid, but I applied the soldering iron for the shortest possible time! Use just a little solder and make sure it flows. One second is enough.
- Stick two small bits of double-sided tape (1" x 0.5" each) onto the PCB, then push the solar panel carefully in place. Make sure the wires end up near the points Z+ and Z0 on the other side of the board. The thickness of the tape will give the soldered joints enough room - assuming you didn't use too much solder.
- Now solder the wires from the solar panel onto points Z+ and Z0.
- Put the robot on its wheels, so it can start on its way to a better place under the sun.
The `eyes' seek light well enough without adjustment, but can be confused by spots of light on the table or floor. A bit of screening may improve performance - there is room for experiments here.
 Want a kit?
Head over to Steve Bolt's Site.