This photovore is based on SunEater_II and uses 74HC logic to do all his "thinking." Two prototypes were built. The first one has motors which are very similar to those found in cheap servos. Number two is equipped with motors found in micro-cassette recorders. After adjusting the pots, they had almost exactly the same performance:
With the morning sun less than 30 degrees above the horizon, its horizontal BP243318 (24x33mm 5-cell panel) supplies enough power for one `step' of about 1cm per second. When the sun gets higher, both prototypes achieve well over 1cm/s, which seems pretty good given their weight (78 and 98 grams), and the small size of the solar panel.
Even in full sunlight, it keeps looking for something better while trying to avoid shadow patches. And SunEater_III truly backs away from obstacles (without reversing motors) like my clock-powered photovores do. This page explains how.
In low ambient light conditions, you still get the occasional step, as the thinking part uses only about 20uA or less. Very little current when compared with, for instance, the typical self discharge of a 0.047F `Super Cap', which is something like 70uA (larger Super Caps will usually discharge even faster, so it's rather fortunate that SunEater_III needs an ordinary 4700uF storage cap). Thanks to the `mechanical memory' - SunEater_III keeps a feeler in contact with an obstacle during evasive action - the motion remains deliberate, even if the voltage drops to zero between steps.
SunEater III Circuit
In the schematic above you see a SunEater_II pulse generator (built around NAND gates N3 and N4) and voltage monitor (N1/2). As long as the voltage over the storage cap (4700uF) is lower than the switch-on trigger level, the pulse generator runs, which means that the voltage monitor `samples' the voltage about 5 times a second, each time for about 1 millisecond. This prevents the rather high current consumption normally associated with having almost any trigger device hesitate between yes and no for a long time.
When the solar panel has charged the storage cap to the required level, N1's output becomes low (about 0V), forcing N3's output to remain high. This means that the schmitt-trigger is now continuously monitoring the stored voltage. It's output will therefore keep one of the motors running until the voltage drops below the switch-off trigger level. Without the feedback from N1 to N3, the motor would be running only for the duration of a sample pulse.
Which motor actually runs is determined by the schmitt-trigger built around the NOR gates N5 and N6. They take their input from the `eyes' (the two BPW41 photo diodes) and the feelers. Note that the bias current for the eyes is also switched by the pulse generator, which makes it possible to use a small bias resistor (2K7) for good performance in full sunlight, without suffering excessive current consumption.
NOTE: both types of motor have a preferred direction of rotation; their connections are marked + an -. But the servo-type motors ran clockwise, while the recorder motors were found to run counter-clockwise. Wiring your motors up correctly may take a bit of trial and error.
SunEater III PCB layout
Above you see the layout and where the components are supposed to be. Note that the 74HC00 and 74HC02 each contain four gates, but do not have the same pinout. They are facing away from each other, with pin 1 (marked in some way on the case) closest to the nearest motor. For the BPW41's, the distance between the case and the PCB should be more than 5mm, so you can make them face 45 degrees down; that makes SunEater_III avoid shadow patches as well as look for better light further away. The storage cap hangs below the PCB (as can be seen on the photos). Its connections are marked `elco+' and `elco-'.
Note that you may well need to make the cut-outs for the motors fit your particular size.
Below, the layout is shown in black without the components. Shift-click on the picture to download a version in Postscript, and print that on transparent paper using Ghostscript and a laser printer (or a laser printer with built-in Postscript interpreter). The result will be a correctly scaled layout in high resolution, ready for transfer on UV-light sensitive PCB material. Make sure that `Pitronics' comes out readable, otherwise you get the mirror image of what you need.
SunEater III PCB film
Compared to SunEater_II, a second 500K pot has appeared in the voltage trigger. This makes the circuit very easy to optimize for any reasonable type of motor (begin your experiments with both pots centered). The Switch-on level is adjusted using the pot connected to the 100K resistor. The other pot adjusts the hysteresis (distance in volts between switch-off and switch-on) of the schmitt-trigger built around N1/2. What values you need are determined to some extend by the mechanical nature of your motors. Recorder types have a fairly large diameter, which gives the rotor considerable inertia when compared to for instance a pager motor.
High inertia means a current pulse needs to be relatively long to get the motor going. On the other hand, a large diameter also tends to give good torque at low rpm. In practice, the recorder motors worked best with a slightly lower switch-on level and a larger difference between switch-on and switch-off, when compared with the servo type motors (which have a much smaller diameter). If necessary, you can short one of the three 1N4148 diodes in the chain to get a lower adjustment range.
In general, Switch-on should be set at a voltage where the motor accelerates well. A higher voltage wastes energy - the `step' will be shorter and the recharge time longer. Switch-off should occur when the motor is still just doing useful work. Such switching levels make the SunEater_III react properly when a feeler touches an obstacle, and give it sufficient push to handle terrain somewhat more difficult than a smooth tabletop. The prototypes handle a fairly steep incline and the rather substantial joints between my floor tiles.
The BPW41 `eyes' were balanced by covering part of the front of one of them with a bit of black tape.
The shafts of the motors rest on little rubber-tyred aircraft wheels. That provides the required ground clearance, while keeping torque and speed as in `direct drive'. The recorder motor shafts were made a bit thicker and longer with a piece of pvc isolation stripped from mains wiring. The very simple construction can be seen in the diagram below:
SunEater II Chassis
After careful shaping of the cut-outs, the motors of the prototypes were glued in place using epoxy. As to the weels and supports:
For the prototypes I used 1mm steel wire. The bits of brass tube had an outside diameter of 2mm and and measured 1.2mm inside. You can find such tube and wire in a modelling shop, or even in a hardware store. Cut the pipe by rolling it below a Stanley knife (thus emulating a pipe cutter). After bending the wire, the pipe should be clamped to the pcb in the correct position, and soldered with your iron set to about 400 degrees Celsius (normal temperature for soldering electronic components is about 360 degrees). If you don't have a miniature clamp, you might use a suitable pair of tongs with a rubber band around the handles to keep them closed.
Because the aircraft wheels had a rather wide plastic hole for the shaft, I drilled them to size and pushed in bits of brass pipe by way of barings. The wheels are held on their shafts with bits of pvc isolation stripped from wire.
When SunEater_III stands on its wheels, only one of the supports should (lightly) touch the ground; the other should have some 5mm of float.
The feelers were made of 0.3mm steel wire. You can shape the curve by drawing the wire across an edge. The springs were found in old recorder motors, where they served as brushes. Of course you can wind integral springs, but soldering a separate spring and feeler together is easier. The contact is plain, tinned wire.
The solar panel is held in place using a piece of black foam and double-sided tape.
I hope that the above information is sufficient for you to build your own Suneater_III. If not, you can ask me specific questions. Enjoy!