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