ignition reference
jac at wave.sheridan.wy.us
jac at wave.sheridan.wy.us
Wed Oct 9 02:27:41 GMT 1996
My experience is that one is more likely to build a robust, high
quality timing disk with six or eight accurately spaced notches or
vanes than one with 360 or 256 notches and I do have access to
numerically controlled equipment. It is far better to improve the
quality of the inputs than to depend on many more, less accurate
inputs. Quantity certainly does not imply quality in this instance.
The most precise measurement you have available in a typical
ignition system is the record of time in a 16 bit counter.
If you divorce you mind from thinking in terms of degrees advance
and instead consider ignition TIME before TDC or some other datum,
ignition calculation is much simplified. The time advance bears a
near inverse linear relationship to manifold pressure. It is the
different rotational speeds that make calculation if the ignition
position touchy.
I time the interval between say 120 and 60 degrees BTDC. The
complement of this number, less a calculated or lookup number based
solely on MAP will yield a timer load value that will interrupt
exactly when you need a spark. The processor dependent details of
the timer dictate whether the number is counted up or down, but the
principle remains the same.
If you have two timers and an edge sensitive timer and interrupt
available as in an 8051, this is really a snap to implement.
First clear a counter register and set it to count while a signal is
high. When the 120 BTDC vane hits it will begin to count cycles and
stop counting and interrupt when the vane passes at 60 BTDC. At the
interrupt indicating the vane has passed, start the second counter
that counts down to a spark. This register has been previously
loaded with a calculated value. While waiting for the timer to run
out and interrupt for a spark, use the contents of the first timer
to calculate the load value for the next cylinder.
It is necessary to pick a clock speed that allows sufficient counts
to register at the highest RPM so that there is reasonable time
resolution available at the top RPM. A 12 Mhz 8052 works fine up to
8,000 or so. The flip side of this consideration is that at low
speeds the time register may roll over.
The roll overs at low speed necessitate some accommodation but
fortunately there is lots of time available to figit around with the
extra interrupts.
I find that a 15:1 speed ratio can be easily accommodated and still
have good resolution at the top end. As the top speed of the engine
increases, the processor must be slowed. All of the calculations
and interrupts are easily handled with a minor fraction of the
8052's time at the highest RPM. There is lots of time to calculate
advance modifiers for everything from humidity to lunar phase and
fuel strategy, but a fail safe, fall back value is easily and
reliably produced from MAP.
The system is easily modeled with a spread sheet. All of the values
can be worked out and if you insist, a degrees advance curve can be
displayed as you work. The lookup table for the assembler program
or ROM can be produced directly from the spread sheet
I use the Phillips 87C550 variant of the 8052 because they are
available in all temperature ranges, have six or eight A/D channels,
a variety of packages and 8052 development tools work well with
them. The DIP package plugs in to a typical 8031 - 8052 socket.
The startup code is not trivial, but it is best to spark at or after
TDC while the engine is cranking anyway.
This sketch certainly does not solve all of the details, the intent
is to suggest that the timing calculation need not be tedious,
require excessive processor power or be a mystery.
Befor the rock throwing begins, let me point out that this scheme
works well and has accumulated thousands of hours of service.
-------------------------------------
john carroll
jac at wave.sheridan.wy.us
More information about the Diy_efi
mailing list