Cam & Crank Signal Outputs 2010/03/17Posted by Michael in 2JZduino.
In a recent post I profiled the positive waveform of the cam and crank signals using Arduino (the negative waveform is presumed an approximate mirror of the positive).
Neither the IS300 ECU nor the Arduino Mega provide a negative DC source voltage, so generating a negative signal for the (assumed) Schmitt trigger posed a design challenge. After some thought, I arrived at the circuit design shown below for the Cam sensor. The Crank sensor circuit is identical.
On the output side 2JZduino drives the IS300 ECU Cam Input directly. The 47 mH inductor is used to generate a negative voltage spike at the Cam Input when the 2JZduino digital Out is turned OFF. At that instant the energized inductor carries the Cam Input low while it depletes its magnetic field. Note that the 82 ohm resistor is the real measured DC resistance of the inductor; Bourns RL622-473K.
Before selecting the 47 mH inductor and the 220 Ohm resistor I simulated the response using a first order approximation in MS Excel for the differential equation of an inductor: v(t) = L di(t)/dt. The graph below shows for the Crank Signal, the calculated ECU input voltage and the Inductor current for select engine RPM. Note that the Crank signal fires for every 10 degrees of rotation.
The inductance and resistance values were chosen as a balance of inductor decay time, peak inductor current, and component availability. With the components chosen the peak current through the inductor is 17 mA, and the negative waveform decay is reasonably long (ensuring the Schmitt trigger receives a sufficient negative signal). This circuit has so far proven successful during idle and engine rev testing to ~5000 RPM.