jump to navigation

Cam & Crank Signal Outputs 2010/03/17

Posted by Michael in 2JZduino.

Through trial, error, and some help over at the Arduino Forums I discovered that the IS300 ECU most likely uses a Schmitt trigger to sense the input from the cam/crank variable reluctance sensors.

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.

The input-signal circuit and firmware logic (to be detailed in a future post) processes the incoming sensor signal and decides what state to put the output in: ON or OFF, for the simulated signal.

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.



1. Steve - 2010/11/19

I had a similar challenge in adapting a Hall sensor to work on my VR ECU. My solution was to use a charge pump in conjunction with an op amp. Works great!

I’d like to talk to you about some other issues.

Michael - 2010/11/19

I too implemented a charge pump while I was troubleshooting, figuring that not having the -ive side of the waveform for the simulated VR signal was part of my problem (thinking that at low RPM the inductor settles out to zero and is susceptible to noise). I do believe this was a contributor to why the Cam sensor signal didn’t work reliably for me, but for the Crank the issue was noise on the input side that I ended up solving through filtering (see revised filtering code in the v0.2 code drop not yet blogged about), and so the charge pump wasn’t necessary.

In any case I’m amidst proving that intercepting the IGT signals on the ECU output is a better way to delay timing which makes my struggles with capturing and reproducing the VR sensor signals obsolete. I’m in testing stages now and should have some more information worth posting by the end of the weekend.

Maybe I’ll also make note of the charge pump circuit because it was an interesting and easy circuit using the Output Compare Modulator at Pin13 of the Arduino (pin B7 of the Atmega 1280).

2. pajodha@gmail.com - 2015/11/15

can I have the schematic so I can build this ?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: