To measure RPM on the DC motor, I have a mechanical ring with 2 set screws and an inductive sensor that outputs +5V pulses for every pulse, courtesy of RechargeCar.com.
So the task at hand is to create a digital circuit that can capture the incoming 2 pulses per revolution and convert that to 58 pulses per revolution on the 60 period time base, then use some op-amps to change the digital output to triangle waves. I did this using an Arduino for the digital stuff, and two OP07 op amps setup as integrators to create the triangle waves. To create a negative (-5V) power rail for the op-amps, I used a RS232 level shifter I had on hand. Here are some pictures of the completed contraption before stuffing in a project box.
Along the way I was able to do some spot tests with the DC motor spinning--it took a few days to debug the circuit, but it now properly displays the RPM in the dashboard console. Once I got this complete, I wanted to take the car for a drive, but it wouldn't start! After a bit of poking around, I found the Soliton1 was protecting the battery pack by not turning on because the pack voltage was too low. Apparently the driving I did on the batteries originally, plus the DC-DC converter drain while parked for a week was enough to bring the batteries down to a voltage too low to move the car. This means I had to get the charger working ASAP!