The hardware for this project was the bulk of the work. Because we were making a moving vehicle, we decided that it would be best not to have any of the circuitry on breadboards. Breadboards are also expensive, so we probably would have had to disassemble the car after its demonstration. We therefore chose to wire-wrap all of the circuitry. This required a fair amount of labor, but it was well worth it in the end.
The car we selected is fairly simple to operate. It has a rear wheel drive, complete with a differential, which is powered by a DC motor. The steering is not controlled by a servo, but rather by a solenoid. This results in an "all or nothing" control over the steering, but we did not find this to be overly constraining. We built two H-bridges using TIP-31, TIP3055, and TIP-42 BJTs to deliver power to the steering and the drive motor. Because of the current requirements (the drive motor and steering solenoid could draw several amps), we used 20-gauge wire for the high-current areas of the H-bridges rather than the 30-gauge wire used for the rest of the circuit. Schematics of the H-bridges and supporting CMOS logic appear below.
To detect the line, we use an array of five reflective photo-sensor pairs manufactured by Fairchild Semiconductor. We mounted them just ahead of the front wheels on a threaded rod to allow us to reposition them as necessary. The current through the photo-transistor depends on the intensity it detects, but what we really need is a logic level output. We therefore used an open-loop-gain amplifier made from an LMC7111 op-amp. A trim-pot allowed us to set a threshold level, and LEDs were used to aid in calibration. A schematic of the circuit used for the photo-sensors appears below.
Because of the high current draw from the motor and steering, we decided to use a separate power supply for the logic. The logic runs on 6V while the car's motors run on 12V. This initially resulted in some careless bugs, but we seem to have avoided problems with any inductive "kick" from the motor and solenoid.