Electrical noise has been interfering with the Galil controllers. We need isolation between them and the attached motors and devices. Although we have Galil opto-isolation boxes, they don't isolate the +5 volt power supply. The +5 power supply of the Galil controller is critical; it runs the microprocessor in the controller. Noise in the +5 line will crash the controller, as we have observed repeatedly. So we need our own isolation box, with separate voltage regulators.
We also need to convert some tachometer signals to analog voltages. This board will also perform that function.
Each Galil controller needs its own isolation/conversion board, although we might package them two to a box.
Interface box overview
The interface board performs four functions:
The physical size of the interface box is limited. We need to put two under the hood, and one, maybe two, in the glove box along with the Galil controllers. We need to measure this.
Connectors are a hassle. We need to work out what connectors will give us the least grief in the other wiring. Anything we can do on the PC board should be done there, rather than with external wiring.
Only "gcthrottle" actually needs the LM2917N tachometer to voltage converter parts. For the others, we pass through the analog signals. Some noise filtering would be helpful there.
The 37-pin J3 connector has everything we need on the Galil side except the Hall encoder inputs for our one brushless motor. We need to decide whether we need to isolate those, or provide separate power for them. Maybe an optional cable, used only for "gctilt", to go between the isolator box and the J4 connector (see below) on the Galil unit.
Galil controller assignments
This is the list of the devices that attach to the Galil controllers.
This controller, and "gcbrake" are located under the hood.
The steering motor is the biggest motor in the system, and a relatively noisy one. It has an encoder, but no limit switches. On the steering shaft is a steering position sensor (this is an commercial automotive steering wheel sensor) with a four-turn pot, which allows us to detect when the steering shaft is approximately centered. The sensor also has an encoder, but we don't use it. Note that we have to home the steering to center at startup to calibrate the encoder.
The driver's steering wheel has an identical device. We have limit stops which limit it to one turn, and use its pot to get an initial value, after which we use only the encoder. So we can always initialize the steering wheel encoder properly at startup.
The steering motor encoder has non-differential outputs.
The brake actuator is an high speed linear actuator, so we can put the brakes on fast. It has an encoder, limit switches, and an analog brake pressure sensor. The rear limit switch is set to the brakes-fully-released position. The forward limit switch is present, but if it ever trips, it means we've lost all brake pressure. The motor should stall first.
Brake servoing is based mostly on brake pressure, and the Galil controller is given a desired pressure, which a small program in the Galil controller uses to control the brake position.
For some reason, when the rear limit switch closes, the controller tends to crash or become confused. This may be a noise problem, but we're not sure yet. The limit switches seem to be grounded to the motor frame, which is isolated from the motor windings.
The brake encoder has differential outputs.
This controller is located in the glove box. It has control over the engine, including engine start and run, and has many sensors attached.
The actual throttle actuator is a modified cruise control unit. We replaced its motor with a small servomotor. (Current to that motor must not exceed 0.7A. It's easy to burn out this small motor, and we've done so once.) There is a reverse limit switch (at throttle idle), and a forward limit switch (at full throttle). There's also a safety device, an electromagnet which must be energized for the throttle to move from idle. This is connected to the emergency stop unit, not the "gcthrottle" controller.
The "gcthrottle" controller has two inputs, engine RPM and ground speed from the speed radar, which are in the form of tachometer signals. Those need to be converted to voltages. That's what the LM2917N parts are for. (Note that we have to use the 14-pin form, because the 8-pin version assumes the input goes below ground. It's for inductive sensors only. With the 14-pin form, you get to provide a reference level for the comparator.) There's also an encoder on the driveshaft (a bidirectional one, so we can tell if we're slipping back on a hill), which goes to the auxiliary encoder input.
The throttle encoder has non-differential outputs.
We're not sure where this controller goes yet. The actuator it drives is a slow linear actuator next to the gas tank. This actuator has no encoder, just a linear pot. But that's something the Galil controllers can handle.
This is the brushless DC servomotor on the tilt head for the laser rangefinder. It sits on top of the roll cage, in a Fiberglas box with some solid state relays and other gear.
Galil controller interface
(Data from Galil DMC 1416 controller manual. rev 2.4)