Hi-resolution Crank angle sensor
dn
dn at dlogtech.cuc.ab.ca
Thu Feb 29 04:46:45 GMT 1996
> >Not necessary. Add one sensor instead.
> >
> >
> > * x
> > _ _ _ _ _ _
> >_/ \_/ \_/ \_/ \_/ \_/ \_
Peter Wales wrote:
> This doesn't make sense. For every peak there will be a trough and each
> sensor will detect the same thing.
Ah, but the key is in the phase difference between the two sensors. This
will only work if the tooth is asymmetrical, ie the peak is much narrower
than the trough. Assuming that this is the case, sensor waveforms will
appear like this:
_ _ _ _
Sensor A _____| |_____| |_____| |_____| |_____
_ _ _ _ _
Sensor B _| |_____| |_____| |_____| |_____| |__
_ _ _ _ _ _ _ _ _
A + B _| |_| |_| |_| |_| |_| |_| |_| |_| |__ (logical OR of the two)
Voila, double the output frequency. This is very similar to the system used
in optical encoders, but in the encoder the two waveforms (A and B) must be
50 % duty cycle, and separated by a phase difference of 90 degrees. It is
then possible to discern rotational velocity, relative position, and
direction by determining whether A or B occurs first. Of course, you are
not interested in direction, if the engine starts turning backwards you've
got other problems :)
This brings up an interesting point... Hewlett Packard makes a chip
specifically for reading optical encoders, which may work great with this
type of system. Assuming you can get the 50% duty cycle waveforms as
mentioned above, (you could have some sort of sensitivity adjustment on
the sensors so it picks up the tooth halfway up and down each ramp) the
chip takes care of the quadrature decoding and has a built in 16 bit counter
which will totalize pulses until you read it. As an added bonus, it
multiplies the resolution of the system by 4 because it counts each rising
and falling edge from each sensor. Thus, on your 150 tooth ring gear,
you could get 600 pulses per revolution, and eliminate interrupting your
processor for each tooth and save a lot of software overhead. Just read
it on a fixed time basis, and the CPU could easily calculate rotational
velocity based on the number of pulses per unit time, and position based
on the number of counts.
You cannot, however, determine absolute position based on this approach,
so you would have to have a third sensor which would interrupt the processor
once per revolution to keep things synched up. It should be easy to predict
when the next spark event will occur by calculating the difference between
the latest count and the previous count.
The chip I am referring to is the HCTL2000 (newer version is the HCTL2016)
and is around 15$. I have used these in a position sensing application and
they are a piece of cake to interface to. You'd only have to read it once
per second and you'd be able to keep up with about 6500 RPM. Of course,
you'd want to read it a lot more often to keep up with things, but it
would take a big load off the processor in any case.
regards
dn
--
---------------------------------------------------------------------
Darrell A. Norquay Internet: dn at dlogtech.cuc.ab.ca
Datalog Technology Inc. Bang: calgary!debug!dlogtech!darrell
Calgary, Alberta, Canada Voice: +1 (403) 243-2220
Fax: +1 (403) 243-2872
@ +
<
__/ "Absolutum Obsoletum" - If it works, it's obsolete
--------------------------------------------------------------------
More information about the Diy_efi
mailing list