This is only a preview of the March 2007 issue of Silicon Chip. You can view 32 of the 104 pages in the full issue, including the advertisments. For full access, purchase the issue for $10.00 or subscribe for access to the latest issues. Items relevant to "Programmable Ignition System For Cars; Pt.1":
Items relevant to "Remote Volume Control & Preamplifier Module; Pt.2":
Items relevant to "GPS-Based Frequency Reference; Pt.1":
Purchase a printed copy of this issue for $10.00. |
By JOHN CLARKE
Programmable Ig
System For Cars;
Want to program the ignition timing on your
car? Now you can, with this completely new
design. It can be used in older cars which
presently do not have electronic ignition or
used as an “interceptor” for cars with engine
management systems.
O
UR PREVIOUS Programmable
Ignition was originally published
in March 1996 and proved to be a very
popular project with readers. This was
subsequently updated as the Programmable Ignition Timing (PIT) Module
in the June and July 1999 issues of
SILICON CHIP.
The updated PIT module included
16 Silicon Chip
a basic 2-step advance curve and a
1-step vacuum advance that changed
the timing according to engine load.
In operation, it was used to control the
High Energy Ignition design from the
June 1998 issue.
This latest Programmable Ignition
from SILICON CHIP is far more advanced
in features and its ability to produce
an accurate advance curve. It is also a
complete stand-alone ignition system
that is triggered by an engine position
sensor and then drives the ignition
coil. It can be triggered from one of
many sensors in a distributor, including points, reluctor, Hall effect, optical
trigger and the 5V signal from the car’s
Engine Control Unit (ECU).
In order to measure engine load,
the Programmable Ignition can use a
Sensym absolute pressure sensor. In
fact, provision has been made to mount
this sensor directly on the PC board,
the sensor then being connected to the
engine manifold via plastic tubing.
Alternatively, you can connect the
ignition circuit to an existing manifold
pressure sensor if present. This is
commonly called a Manifold Absolute
siliconchip.com.au
Fig.1: this diagram shows the
four main modules used in the
Programmable Ignition System.
The LCD Hand Controller is used
only during the initial set-up.
nition
Pt.1
Pressure (or MAP) sensor and is found
on many cars these days. You could
also use a secondhand MAP sensor
from an auto wrecker.
Changing the timing
A fully effective ignition system
needs to increase the timing advance
with increasing RPM and to alter the
timing according to engine load – all
with a fair degree of precision. Additionally, some means to detect detonation (knock) and retard the timing
would be an advantage. In this way, the
ignition can be advanced further than
would otherwise be possible without
knock sensing.
This latest SILICON CHIP Programmable Ignition incorporates all these
features. What’s more, there is an opsiliconchip.com.au
tion to select between two separate
ignition-timing curves using a switch.
This option is ideal if you are running
both petrol and gas, where a different
timing curve is required for each type
of fuel.
Fig.1 shows the complete system. It
comes in four modules: an LCD Hand
Controller, a Programmable Ignition
Timing (PIT) module, an Ignition
Coil Driver module and a Knock Sensor module. The first three modules
are mandatory, while the fourth, the
Knock Sensor module, is optional.
The heart of the system is the Programmable Ignition Timing module,
based on a PIC16F88-E/P micro. It is
programmed by the LCD Hand Controller and it delivers a signal to the
Ignition Coil Driver. The latter, as its
name suggests, then drives the ignition coil.
LCD Hand Controller
The LCD Hand Controller is similar to the one featured in our book
“Performance Electronics for Cars”.
It was originally designed for setting
up the Digital Pulse Adjuster, Digital
Fuel Adjuster and Independent Boost
Controller projects featured in that
book.
The Hand Controller is used during the initial setting-up procedure.
It plugs into the main unit and can be
used while the engine is either running or stopped. It is then normally
disconnected from the main unit after
all adjustments have been made.
Using the Hand Controller, you can
set all the initial parameters and also
program the ignition advance/retard
curve. Several pushbutton switches
on the Hand Controller enable these
changes to be made.
Knock sensor
The optional Knock Sensor module enables “pinging” to be sensed
and the ignition timing retarded for a
brief period. In brief, engine pinging
is monitored by the Knock Sensor and
the Programmable Ignition Timing
(PIT) module for the first 6ms after
each spark. However, at high RPM,
there is less than 6ms between each
firing and so knock signal monitoring
is done between each spark and the
start of the next coil dwell period.
When engine knock is detected,
the timing is retarded for the next 10
sparks. The amount of retardation
varies according to the severity of the
knock signal. More details on this are
given in the specifications.
Different uses
The Programmable Ignition can be
used either as an interceptor or for
fully mapped ignition timing. In the
interceptor role, it can vary the existing
ignition timing by advancing or retarding it from its current value – ie, it can
be used to alter the timing signals from
the car’s ECU.
Alternatively, when used to completely replace the existing ignition
timing, you will need to obtain the
advance/retard curve for your vehicle
so that the entire timing curve can
be produced by the Programmable
Ignition. For some vehicles, you may
March 2007 17
Main Features
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Advance and retard adjustment over a wide range
Plug-in LCD Hand Controller for adjustments
Hand Controller LCD shows values and settings for adjustment
Suitable for single-coil ignition systems with a distributor
Can be used as a timing interceptor or as a replacement ignition
Ignition timing mapped against RPM and engine load
Interpolated values used for RPM and load values between sites
Optional single map or dual timing maps
Single map has 15 RPM sites x 15 engine load sites
Dual maps each have 11 RPM sites x 11 engine load sites
1° or 0.5° adjustments
Dwell adjustment
Knock sensing indication with optional ignition retard
Suits 1 to 12-cylinder engines (4-stroke) and 1 to 6-cylinder 2-stroke
engines
Two debounce settings
High-level or low-level triggering
Points, reluctor, Hall effect, digital signal or optical triggering
Works with many pressure sensors (MAP sensors)
Minimum and maximum RPM adjustments
Minimum and maximum engine load adjustments
Diagnostic RPM and load readings
Add-on knock sensing unit (optional)
Requires evenly spaced firing between cylinders. For V-twins, you will
need two ignition systems and a separate trigger for each cylinder.
be able to obtain the curves from the
manufacturer. For other cars, you will
need to plot out the existing curve and
transfer the resulting timing map to the
Programmable Ignition.
Plotting out this timing curve is not
hard to do and can, in fact, be done using the Programmable Ignition system
itself and a timing light.
In practice, the ignition timing is
mapped out in an array of either two
RPM Site
Load Site
Min load LOAD1
LOAD2
LOAD3
LOAD4
LOAD5
LOAD6
LOAD7
LOAD8
LOAD9
LOAD10
Max load LOAD11
RPM0 Min RPM
RPM1
0
16
15
14
13
12
11
10
9
8
7
6
1000
16
15
14
13
12
11
10
9
8
7
6
RPM2
1400
18.5
17.5
16.5
15.5
14.5
13.5
12.5
11.5
10.5
9.5
8.5
RPM3
1800
21.5
20.5
19.5
18.5
17.5
16.5
15.5
14.5
13.5
12.5
11.5
RPM4
2200
23
22
21
20
19
18
17
16
15
14
13
11-RPM by 11-engine load site maps or
as a single 15-RPM by 15-engine load
site map. Timing arrays (or ignition
maps) are the most common method
that car manufacturers use to set the
ignition advance curve for both RPM
and engine load.
Mapping is a way of plotting the advance curve as a series of steps rather
than setting an ignition advance or
retard value at every possible engine
RPM5
2600
25.5
24.5
23.5
22.5
21.5
20.5
19.5
18.5
17.5
16.5
15.5
RPM6
3000
29
28
27
26
25
24
23
22
21
20
19
RPM7
3400
32
31
30
29
28
27
26
25
24
23
22
RPM8
3800
36
35
34
33
32
31
30
29
28
27
26
RPM9
4200
38
37
36
35
34
33
32
31
30
29
28
RPM10
4600
42.5
41.5
40.5
39.5
38.5
37.5
36.5
35.5
34.5
33.5
32.5
Max RPM
RPM11
5000
44
43
42
41
40
39
38
37
36
35
34
Table 1: these ignition advance values were measured for a 1988 2-litre Ford
Telstar using a timing light and the 11
Programmable
Ignition itself.
x 11
18 Silicon Chip
Ignition Timing Map
RPM and load value. Thus mapping
sets the ignition advance or retard
values at specified preset points for
both RPM and engine load.
For example, we can specify the
timing advance to be 25° at 3000
RPM and 28° at 3400 RPM. However,
we do not specify individual values
at 3100, 3200 or 3300 RPM. Instead,
the advance values at these RPMs are
interpolated (ie, calculated), based on
the values set for 3000 and 3400 RPM.
At 3200 RPM, the amount of advance is easily calculated because it
is exactly in the middle between the
3000 RPM and 3400 RPM sites. The
advance change between 3000 RPM
and 3400 RPM is 3° (ie, from 25° to 28°)
and half of this is 1.5°. So the advance
required at 3200 RPM is simply 25° +
1.5° = 26.5°.
Another calculation is required for
engine load values that are in-between
the specified load sites.
For our Programmable Ignition, if
you require two separate engine advance curves then you need to select
the 11x11 arrays. If only one advance
curve is required, you then have the
option of using a 15x15 array for
greater accuracy.
By the way, don’t confuse the ignition timing map with the MAP (manifold air pressure) sensor. They are two
completely different things.
Plotting the timing values
We used the Programmable Ignition,
the LCD Hand Controller and a timing
light to plot out the ignition timing
values for a 1988 2-litre Ford Telstar.
We’ll describe exactly how this is done
in some detail in a later article.
The resulting timing vs RPM values
were tabled (Table 1) and then plotted
using Microsoft Excel. These files will
be available on our website so that
you can use the tables and edit the
values (just by wiping over the values
and rewriting them) to suit your car’s
engine. It is not really necessary to
use Excel though and you can just as
easily use a pencil and piece of paper
to draw out the map instead.
Fig.2 shows the ignition timing
versus RPM and engine load from
1000-5000 RPM. Since we have 11
RPM sites, each RPM site covers a
span of 400 RPM.
RPM0 is an extra site and is shown
covering the range from 0-1000 RPM.
The RPM0 wording is shown on a different line because it is not an actual
siliconchip.com.au
45
40
Advance
(Degrees)
siliconchip.com.au
15.5
19
22
26
28
32.5
34
Advance
(Degrees)
35
40-45
30
35-40
30-35
25
25-30
20-25
20
15-20
15
RPM2
RPM3
RPM4
RPM5
RPM6
RPM7
RPM8
RPM9
RPM10
10
10-15
5-10 RPM12
RPM11
RPM11
RPM9
RPM10
RPM8
RPM7
RPM6
RPM5
RPM4
RPM3
RPM2
RPM1
1300 1600 1900 2200 2500 2800 3100 3400
3700
40000-5 4300
18
20
22
23
25
27
29.5
32
35 5
37
39
17
19
21
22
24
26
28.5
31
34
36
38
16
18
20
21
23
25
27.5
30
33 0
35
37
15.5
17.5
19.5
20.5
22.5
24.5
27
29.5
32.5
34.5
36.5
15
17
19
20
22
24
26.5
29
32
34
36
14
16
18
19
21
23
25.5
28
31
33
35
13
15
17
18
20
22
24.5
27
30
32
34
12.5
14.5
16.5
17.5
19.5
21.5
24
26.5
29.5
31.5
33.5
12 Engine
14 Load
16
17
19
21RPM23.5
26
29
31
33
11
13
15
16
18
20
22.5
25
28
30
32
31.5
10.5
12.5
14.5
15.5
17.5
19.5
22
24.5
27.5
29.5
Fig.2:
this
3-dimensional
graph
plots
ignition
advance
against
engine
10
12
14
15
17
19
21.5
24
27
29
31
RPM
as an 16
11x1118
array20.5
– ie, 11
sites and
9 and11engine
13 load14
23Load26
28 11 30
RPM
how13.5
the ignition
advance
with
8.5 sites.
10.5Note
12.5
15.5
17.5
20 increases
22.5
25.5 RPM
27.5and 29.5
decreases
higher13engine
graph here
was
for29a
8
10with 12
15 load.
17The 19.5
22
25 produced
27
1988 2-litre Ford Telstar.
RPM13
4600
42.5
41.5
40.5
40
39.5
38.5
37.5
37
36.5
35.5
35
34.5
33.5
33
32.5
15 x 15
15 xIgnition
15 Ignition
Timing Map
Timing Map
45
40
35
30
25
20
15
10
Advance
(Degrees)
40-45
35-40
30-35
25-30
20-25
15-20
10-15
5-10
0-5
5
RPM14
RPM12
RPM10
RPM8
RPM6
RPM4
RPM2
LOAD13
Engine Load
LOAD15
LOAD9
LOAD5
0
LOAD11
The Timing mode has four possible
display modes, selected by pressing
the Run/View pushbutton. It selects
one of four modes – called SITE, FULL,
DIAG and VIEW – in cyclic fashion.
Each display mode shows a slightly
different aspect of the mapping sites.
One feature in common is that they
all display the MAP and the current
advance or retard value on the top
line, although there is a difference in
the displayed value as we shall see.
When the 11x11 maps are selected
13
40
LOAD7
RUN modes
11.5
45
LOAD1
As mentioned above, the Hand
Controller is used to enter the settings
and to enter the ignition map. The
values are displayed on the 2-line
16-character LCD screen. There are
eight direction pushbuttons, a Run/
View pushbutton and a Reset.
The Reset switch is recessed to
prevent accidental activation. It is
used to return all mapped advance or
retard values to 0°. The eight direction
pushbuttons alter the values and can
configure the display to show the different settings or a different load site.
Finally, the Run/View pushbutton
only works in the Timing mode. This
mode is selected using a jumper link
on the Programmable Ignition Timing
Module.
8.5
11 x 11
11 Ignition
x 11 Ignition
Timing Map
Timing Map
LOAD3
Using the Hand Controller
6
LOAD11
RPM site and cannot be adjusted. It
has the same values as RPM1.
RPM0 is shown because it explains
what the advance curve is below the
minimum RPM1 site while the engine is being started. The same thing
happens for RPM above RPM11. In
this case, the advance remains at the
RPM11 values.
Engine load is shown with LOAD1
as the minimum engine load while
LOAD11 is the maximum engine load.
RPM0
LOAD1 is usually accessed when
the Min RPM
RPM SiteLOAD11 RPM1
engine is on overrun while
0
1000
Load Site
is usually accessed under
acceleration
Min load LOAD1
16
16
or when the car is climbing
The 15
LOAD2a hill. 15
load values were measured
LOAD3 using
14 a
14
LOAD4
13.5
13.5
second hand pressure
sensor from
LOAD5
13
13
an automotive wrecker.
These were
12
12
then converted to loadLOAD6
values
ranging
LOAD7
11
11
from 1-11.
LOAD8
10.5
10.5
The curve can be plotted
LOAD9 in three
10
10
LOAD10load and
9
9
dimensions showing RPM,
LOAD11
8.5
8.5
ignition advance. If you
use our Excel
LOAD12
8
8
file, then the curve will
be automatiLOAD13
7
7
cally replotted when LOAD14
ever a value
6.5 is
6.5
Max load LOAD15
altered.
6
6
6
LOAD1
LOAD2
LOAD3
LOAD4
LOAD5
LOAD6
LOAD7
LOAD8
LOAD9
LOAD10
Max load LOAD11
RPM
Fig.3: this 3-dimensional graph is also for a 1988 2.0-litre Ford Telstar
but this time the ignition advance is plotted against engine RPM and
engine load as a 15x15 map (300 RPM per site).
(from the settings mode), the display
will show either MAPa or MAPb,
depending on which map is selected.
If the 15x15 map is selected, then the
display will only show MAP, without
the alpha or beta symbols.
Following the MAP legend, the
display shows the advance or retard
value. The display format depends
on whether the setting is for 0.5° or
March 2007 19
RPM14
4900
43.5
42.5
41.5
41
40.5
39.5
38.5
38
37.5
36.5
36
35.5
34.5
34
33.5
The LCD Hand Controller connects to the Ignition Timing
Module via a standard DB25 RS-232 cable. It’s used to
program in the various settings and the ignition timing
map(s) and can display all programmed data on a 2-line
16-character LCD module.
1° resolution. In all cases, a “-” sign
indicates a retard value, while a “+”
sign indicates an advance value. When
there is no change in advance or retard,
the value simply shows 0.0 for the
0.5° resolution setting or 0 for the 1°
resolution setting.
The advance or retard value is
changed using the Up (), Down (),
Step Up (
) and Step Down (
) pushbuttons. The and pushbuttons
increase or decrease the setting by the
resolution value; ie, by either 0.5° or
1° for each switch press.
By contrast, the
and
push
buttons change the advance/retard
value by 2° on 0.5° resolution and by 4°
on 1° resolution. The resulting values
are stored in memory and remain there
even if power is turned off, unless they
are changed by the pushbuttons or by
the Reset switch.
At the end of the top line, the display
shows either SITE, FULL, DIAG or
VIEW, to indicate the selected mode.
Note that the SITE, FULL and DIAG
modes are called the “Run” modes
because they show what sites are accessed while the engine is running.
Site mode
The SITE mode is displayed each
time the Programmable Ignition is
powered up when the Run/View mode
is selected with the jumper link. In
this mode, the second line shows
20 Silicon Chip
the current RPM site and the current
LOAD site. These are from sites 1-11
when the 11x11 mapping is selected
or from 1-15 when the 15x15 mapping
is selected.
The advance or retard value is
shown as the value entered at that
load site. In practice, the LOAD and
RPM sites only change with changes
in engine RPM and engine load. In
other words, this is a real time display
that shows the current load and RPM
sites and the current advance or retard
value setting.
Full mode
Pressing the Run/View pushbutton
brings up the FULL mode. In this case,
the second line shows the RPM site as
before (eg, RPM1) but it also shows the
actual position between this site and
the next. For example, with the 11x11
ignition timing map (Fig.2), each site
is 400 RPM away from the next.
In practice, however, the RPM is
measured in 100 RPM steps. As a
result, the display shows the RPM 1
position as RPM 1;0, RPM 1;1, RPM
1;2 or RPM 1;3. These values correspond to 1000, 1100, 1200 and 1300
RPM respectively. There is no RPM
1;4 position as this becomes the RPM
2;0 site for 1400 RPM.
If you don’t understand this, it will
become clearer when we describe how
the Programmable Ignition is set up in
the forthcoming articles.
Similarly for the LOAD sites, the
position within the site is shown after
the semicolon (;). Note that the word
LOAD is abbreviated to just LD, so that
the values fit within the display line.
In the FULL display mode, the
advance or retard value is the interpolated value that is calculated for the
positions between each load site.
Let’s go back to our earlier example
and consider the RPM 6 (3000 RPM)
and RPM 7 (3400 RPM) sites. At these
sites, the advance is 25° and 28° respectively. This means that at RPM 6;0
the advance value will be displayed
as +25.0°, while at RPM 7;0 the value
will be shown as + 28.0°.
The interpolated value will be
shown for RPM values between these
two sites. For example, at 3200 RPM
(RPM 6;2), the advance value will be
+26.5°. Consequently, this is the value
that will be shown at site RPM6;2.
Note that this is a simplistic example because we are ignoring the fact
that the LOAD value could also be
in-between LOAD sites. In that case,
both the RPM and LOAD values are
interpolated to give the advance or
retard value.
Note also that if the advance or retard value is increased or decreased in
this mode, it will be the interpolated
value that is displayed rather that
the site value. The site that will be
siliconchip.com.au
changed is the next lowest RPM and
LOAD site.
Having said all that, interpolation
can be switched off within the settings
if required.
Knock sensing
When knock sensing is set, the display shows the modified timing value
after knock retard is taken into account.
This means that if the display is showing +26.0° and the knock sensing subsequently introduces a 6° timing retard,
the display will then immediately show
+20.0°. This is the actual advance value
used for ignition.
Note that engine knock detection is
indicated by an exclamation mark (!)
that is positioned between the RPM
site value and the LOAD on the second
line of the display. The (!) is shown
when knock is detected, regardless as
to whether the knock retard feature is
on or off. The knock symbol is shown
in the SITE, FULL and DIAG display
modes.
Diagnostic mode
Pressing the Run/View switch again
switches to the DIAG mode. This
is the diagnostic mode and is very
useful when it comes to determining
your engine’s RPM range, as well as
measuring the output range from the
MAP sensor.
In this mode, the second line shows
the actual RPM with 100 RPM resolution and the actual LOAD value from
0-255. The advance/retard value on
the top line normally shows the interpolated value in the same way as
the FULL mode.
As mentioned above, interpolation
can be switched off and this is useful
when measuring the manufacturer’s
advance curve (more on this in a later
article).
Pressing the Run/View pushbutton yet again switches to the VIEW
mode. This is not a real-time display
because the RPM and LOAD sites do
not change with the engine RPM or
load. Instead, you can step through
each site manually using the Right
(), Step Right (), Left () and Step
Left () pushbuttons.
The and pushbuttons increase
or decrease the LOAD site value. When
increasing the LOAD site value and it
reaches its maximum value (either 11
or 15), pressing the switch again causes
the RPM site to increase by 1 and the
LOAD site to return to 1. In this way,
siliconchip.com.au
Specifications
Timing adjustment resolution: 0.5° resolution advance and retard or 1°
resolution advance and retard.
Timing adjustment range: ±60° for 12-cylinder engines, ±90° for
8-cylinder engines, ±120° for 6-cylinder engines, ±127° for less than 6
cylinders. Using less than 75% of the limit is recommended to prevent
timing “drop-out” with sudden RPM changes.
Timing adjustment accuracy (above Low RPM setting): 0.2% for a
2-cylinder 4-stroke, 0.3% for a 6-cylinder 4-stroke, 0.4% for an 8-cylinder
4-stroke (note: 0.3% is equivalent to 0.12° at 40° advance or retard for a
6-cylinder engine).
Timing update: the update period is the time between successive firings.
Timing calculation period: 700ms maximum.
Timing jitter: ±5ms at 333Hz (5ms is equivalent to 0.3° for a 6-cylinder
engine at 10,000 RPM).
Minimum input frequency: 0.6Hz (corresponds to 36 RPM for a
2-cylinder 4-stroke engine, 18 RPM for a 4-cylinder 4-stroke engine, etc).
Maximum input frequency: 700Hz (corresponds to 14,000 RPM for a
6-cylinder 4-stroke, 7000 RPM for a 12-cylinder 4-stroke.
Cylinder settings: 1-12 cylinders for a 4-stroke engine and 1-6 cylinders
for a 2-stroke engine.
Minimum RPM setting: 0-25,500 RPM in 100 RPM steps
Maximum RPM setting: indirectly set by RPM/SITE – 0-25,500 RPM in
100 RPM steps.
Minimum load setting: 0-255 in steps of 1 (corresponds to 0-5V).
Maximum load setting: indirectly adjusted by changing loads per site
(0-255 in steps of 1).
Debounce adjustment: 0.4ms or 2ms.
Dwell adjustment: 0-25.3ms in 0.2048ms steps (multiplied with voltage
below 12V).
Dwell variation with supply: x1 for >12V, x2 for 9-12V, x3 for 7.2-9V, x 4
for <7.2V.
Firing edge selection: low or high.
Spark duration: 1ms.
Map settings: two 11x11 maps (MAPa and MAPb) or single 15x15 map.
Knock input range: 0-5V (0-1.25V = no retard; 1.25-5V = progressive
retard in 16 steps). 9° at 3.75V, 12° at 5V for 1° resolution; 4.5° and 6°
respectively for 0.5° resolution.
Knock monitoring (requires an additional knock circuit): monitored
for the first 6ms after firing. This period is reduced at higher RPM with
the start of dwell. Optional 4000 RPM or 6000 RPM sensing limit. Ignition
retard activation (when enabled) is set for a minimum of 10 sparks with
the onset of knocking.
Internal test oscillator: 4.88Hz.
Response to low RPM setting: 0-25,500 RPM in 100 RPM steps.
Typically set at around 1000 to 2000 RPM.
March 2007 21
The Best Laid Plans Of Mice & Men
When we presented our last very popular High Energy Electronic Ignition
System, in the December 2005 & January 2006 issues of SILICON CHIP, we
stated that “in a future issue we would present a development of the Electronic Ignition to allow ignition timing to be altered. That project will allow
the existing timing to be fully mapped on the basis of engine RPM and inlet
manifold pressure”.
In fact, provision was made on the PC board for the extra parts that would
be required to make the system fully programmable. A new program for the
microcontroller would complete the system . . . or at least, that was the plan.
It didn’t work out. Instead, we have had to effectively split the original PC
board into two parts and add a few more components into the bargain.
Now what was that about mice and men? It goes like this:
The best-laid plans o’ mice an’ men
Gang aft a-gley,
An’ lea’e us nought but grief an’ pain
For promised joy.
[“To a Mouse” by Scottish poet Robert Burns (1759-1796)].
you can step through the entire ignitiontiming map.
The same thing happens when decreasing the LOAD site value. After
reaching 1, the RPM site value is decreased by 1 on the next switch press
and the LOAD site goes to either 11 or
15 (depending on the MAP setting).
The and switches just alter
the RPM sites up or down without
altering the LOAD site. In this way
you can check the ignition advance
or retard settings for each RPM site at
a particular LOAD site.
Note that the , , and pushbuttons do not operate in the SITE,
FULL and DIAG modes. In these
modes, the sites are only changed
in response to engine RPM and load
inputs.
Settings
The Settings display is invoked
when jumper LK1 in the Programmable Ignition Timing Module is moved
to the settings position. This display
is used to set up the programmable
ignition to suit your engine.
The display will initially show
<SETTINGS>. The < and > brackets
indicate that each setting can be selected with either the left () or right
() pushbutton switch. The values
within the settings are then changed
using the and pushbuttons.
These values (except for the oscillator
setting) are stored in memory and do
not change unless altered using the Up
and Down pushbuttons.
22 Silicon Chip
Note that the oscillator setting is
always off when power is re-applied
to the Programmable Ignition.
Pressing the pushbutton brings
up the Cylinder setting. You can then
select cylinder values from 1-12 for
a 4-stroke engine and from 1-6 for
a 2-stroke engine. During this time,
the top line of the display will show
STROKE and then two numbers – ie,
4 and [2] for 4-stroke 2-stroke engines
respectively. Directly below these on
the second line is the word CYLINDER
and the selected cylinder numbers (the
bracketed number is the cylinder value
for a 2-stroke engine).
The cylinder value is changed using
the and pushbuttons. Note that
a dash is shown in the two 2-stroke
column when odd 4-stroke cylinder
numbers are selected, as this is not
a valid setting for a 2-stroke engine.
The next four settings are for adjusting the range of the RPM sites and
the LOAD sites. These are crucial in
insuring you get the full use of the
available sites. In other words, there
is not much point in having the RPM
sites cover a range from 0-25,000 RPM
when, for example, the engine does
not run above 5000 RPM. In this case,
you would only be using 20% of the
available RPM sites (ie, RPM 1, RPM
2 and part of RPM3 only) for mapping
the advance curve.
The first of these settings is the
Minimum RPM. This sets the RPM
for the RPM 1 LOAD site. The display
shows SET MIN RPM X00 RPM, where
the X represents a number from 0-255.
Typically, this is set at the idle speed
for the car but it may be set differently
depending on how you want the ignition curve to operate (more on this
in a later article). The settings can be
changed from 0 RPM through to 25,500
RPM in 100 RPM steps.
In practice, you would use the DIAG
(diagnostic) setting mentioned above
to determine the minimum and maximum engine RPM range. Alternatively,
you can use the idle and red-line
specifications for your engine.
The second setting is for the Maximum RPM. This value of RPM is indirectly set by the value of the RPM
per site (RPM/SITE) adjustment, as
shown on the top line of the display.
It can be set from 0-25,500 RPM in 100
RPM steps.
The second line shows the maximum RPM. This is calculated based
on the minimum RPM setting and
the RPM/site value. It is shown in the
second line of the display as MAX
RPM X00 RPM, where X is a number
from 0-255. An ERROR indication is
shown instead of the maximum RPM if
the setting would be over 25,500 RPM.
The reason why we adjust the RPM/
SITE value rather than the Maximum
RPM directly is because the Programmable Ignition requires a discrete
number of 100 RPM steps between
each RPM site.
In practice, the RPM/SITE value is
altered so that the maximum RPM is at
or just over the value required. You can
also adjust the minimum RPM setting
to achieve the best compromise for the
adjustment.
An example may help here using
the 11 x 11 map. If, say, the minimum
RPM is set at 1000 RPM, the RPM/SITE
value can be set to say 400 RPM for a
5000 RPM maximum or to 500 RPM
for a 6000 RPM maximum. Thus, if you
had a red line of say 5500 RPM, you
could set the RPM/site value to 500
for the 6000 RPM maximum. Alternatively, you could lower the minimum
RPM value to say 800 RPM, with the
RPM/site set to 500 for a 5800 RPM
maximum.
The third and fourth settings are for
the LOAD sites. Again, in practice,
you would use the DIAG (diagnostic)
mode to determine the minimum
and maximum values from the MAP
sensor. The maximum load values occur when the car is accelerating up a
hill, while minimum load values are
siliconchip.com.au
present under very light throttle conditions and when the engine is being
overrun in low gear downhill.
The Minimum Load adjustment can
be set from 0-255 in steps of 1. These
0-255 values correspond to the 0-5V
output from the MAP sensor. This
value is set to the reading obtained in
the DIAG (diagnostic) mode when the
engine is being overrun.
By contrast, the Maximum Load is
adjusted indirectly by changing the
loads per site (LOADS/SITE) setting.
This can be changed in steps of 1 from
0-255. The second display line shows
the calculated maximum load (MAX
LOAD) value based on the minimum
load and the LOADS/SITE setting.
An ERROR indication shows if the
calculated maximum LOAD value is
over 255.
In practice, the Minimum Load and
the LOADS/SITE settings are adjusted
so that they cover the range of the MAP
sensor output, although they may
slightly overlap the required minimum
and maximum values.
Other settings that follow these mapping values are:
(1). MAPS: here you can select either
the two 11x11 maps (mapa and mapb)
or the single 15x15 map. Note that
any ignition values mapped into an
11x11 map will no longer be correct
if the map is subsequently changed to
a 15x15 array and vice versa. Instead,
you have to re-enter the values.
(2). Resolution: this sets the resolution
of the advance/retard adjustments and
can be either 1° or 0.5°. Once ignition
values have been entered into the map
on one resolution setting, they will be
incorrect if the resolution is changed
to the alternative setting.
(3). Response To Low RPM setting: at
low RPM, the engine speed can
change quite quickly. Because the
calculation for RPM can only occur
between each detected firing pulse,
the response to RPM changes can
be too slow and can lag behind the
engine. This can noticeably retard
the ignition with increasing RPM.
The Response To Low RPM setting
is included to improve low RPM response, particularly at starting. The
downside of this setting is that there
is some slight ignition retardation but
this is less than 1° for typical low RPM
settings.
The RPM value can be set from
0-25,500 RPM in 100 RPM steps. The
Low RPM Response operates for RPM
siliconchip.com.au
Ignition Timing – A Quick Primer
A typical internal combustion engine has one or more pistons that travel
up and down inside cylinders to turn a crankshaft. As a piston rises inside
its cylinder during the compression stroke, a mixture of fuel and air is compressed. In petrol and gas engines, this fuel-air mixture is then ignited using
a spark to drive the piston as it starts its downward stroke.
This ignition must be timed accurately to ensure maximum power and efficiency. If the mixture is fired too late in the cycle, power will be lost because
the piston will have travelled too far down in the cylinder for the burning fuel
to have maximum effect. Conversely, if the mixture is ignited too early, it will
“push” against the piston in the wrong direction as it rises towards top dead
centre (TDC).
Ideally, each spark plug is fired so that there is just enough time for the
ignited fuel to apply maximum force to the piston as it starts its downward
power stroke. In practice, the fuel takes a certain amount of time to burn and
so the spark plug needs to be fired before the piston reaches the top of its
stroke or top dead centre.
At low engine RPM, the spark only needs to occur a few degrees before
top dead centre. However, as engine RPM rises, the ignition must be fired
progressively earlier in order to give the fuel the same time to fully ignite –
ie, the spark timing must be progressively advanced as engine RPM rises.
This timing requirement is called the “RPM ignition advance curve” and is
often around 6° before TDC at idle, rising to about 40° at the engine’s recommended maximum RPM (the redline).
As stated, if the spark ignites the fuel far too early, then the piston may be
pushed downwards before it reaches top dead centre. However, if the ignition is only early by a small amount, then the engine will exhibit a knocking
sound as the piston rattles within the cylinder. This effect is called “detonation”
(also called “pinging” or “knocking”) and can cause serious engine damage
in severe cases.
Engine load is also an important factor when it comes to ignition timing.
Under light loads, the advance timing can usually be at the maximum. However,
when the engine is heavily loaded, such as when accelerating or powering
uphill, the fuel takes less time to ignite because of higher fuel pressures and
temperature (and because the mixture is richer). As a consequence, as engine
load increases, the ignition timing must be retarded to prevent detonation.
below the set value (typically just
below idle speed). Above this setting,
the standard response to RPM occurs.
By contrast, the response at higher
RPM is satisfactory because there is
only a short period between plug firing and the engine speed will not vary
much during this time. Usually, the
setting is adjusted so that it operates at
engine cranking speed but stops when
the engine reaches idle speed. In other
cases, it may be necessary to raise this
RPM limit so that the engine can rev
correctly from idle.
(4). Debounce: the debounce setting
affects the trigger input and its resilience to a noisy signal, as can typically
occur with points bounce in older car
ignition systems. Unless corrected,
points bounce can upset the detection
of engine RPM and affect the timing.
Typically, you can use the 0.4ms debounce setting but the alternative 2ms
debounce setting can be selected if the
ignition appears to be erratic due to a
noisy input sensor signal.
(5). Dwell: dwell is the period during
which the ignition coil “charges” before each plug firing. It is alterable from
between 0-25.3ms in 0.2048ms steps.
We have provided an oscillator feature
(see below) that allows the ignition
coil to be driven by the Programmable Ignition and the spark produced
by the coil monitored. The dwell is
then progressively adjusted upwards
from 0ms until the spark reaches its
maximum voltage. The dwell is then
increased slightly above the set value
to ensure there is more than sufficient
spark when the engine runs.
In addition, the dwell is automatiMarch 2007 23
Fig.4: the Ignition Timing Module is based on a PIC16F88-E/P microcontroller. This processes the input trigger, MAP
sensor and optional knock sensor signals and provides outputs to drive the Ignition Coil Driver circuit (Fig.5) and a
tachometer. It also monitors the Hand Controller’s switches and drives the LCD.
cally increased when the battery voltage is low – ie, to x2 for battery voltages
between 9V and 12V; to x3 for voltages
between 7.2V and 9V; and to x4 for
voltages below 7.2V.
(6). Edge: this sets the ignition to trigger
from either a low-going input signal
edge or a high-going signal. In most
cases, a high-going signal edge must be
selected but some optical, Hall-Effect
and reluctor outputs will require the
low-going edge selection.
(7). Knock: this sets the KNOCK retard feature either ON or OFF and
sets the LIMIT at either 4000 or
6000 RPM (these settings are all
shown on the LCD). Pressing the
24 Silicon Chip
and pushbuttons cycle the
selections between these options.
The LIMIT setting sets the RPM value
at which knock sensing ceases. This is
usually set to 4000-6000 RPM because
at higher revs, the engine noise drowns
out any knocking and so would either
be undetectable or would cause false
readings.
Note that knocking will only be
detected if the separate knock sensing circuit (to be described) is added
and a knock sensor is installed on the
vehicle.
(8). Diagnostic: this sets the interpolation either ON or OFF. It is normally
set to ON and should only be set to
OFF when making ignition curve
measurements using the Programmable Ignition and a timing light.
(9). Oscillator: this sets the internal oscillator ON or OFF. It’s normally OFF
but can be set to ON to test the ignition
coil spark with varying dwell settings.
The oscillation rate is about five times
a second (5Hz).
Circuit details
OK, so much for all the fancy features built (or more accurately, programmed) into the unit. Let’s now take
a look at the circuit details.
The circuit for the Programmable
Ignition can be split into three secsiliconchip.com.au
tions. First, there is the Programmable
Ignition Timing circuit, as shown in
Fig.4. To this is added an input trigger
circuit, depending on the ignition trigger used – see Fig.6. This can be either
points, optical, Hall effect or reluctor,
or can be taken from the engine management unit (EMU).
Finally, a separate circuit, controlled by the Programmable Ignition
Timing circuit, drives the ignition
coil – see Fig.5.
The LCD Hand Controller, to be
described in Pt.2, is a completely
separate unit which connects to the
Programmable Ignition Timing module
via a DB25 cable. As stated, it’s used
only during the setting-up procedure,
after which it is no longer required unless you wish to reprogram the system
(eg, to alter the timing map).
The main circuit (Fig.4) is based on
IC1 which is a PIC16F88-E/P high-temperature microcontroller. This micro
processes the input trigger and MAP
sensor signals and provides an output
to drive the Ignition Coil Driver circuit.
It also drives the LCD module in the
Hand Controller and monitors the
Hand Controller’s switches.
Timing signals for IC1 are provided
by crystal X1. This sets the internal
oscillator to run at 20MHz, which
enables the software programmed into
IC1 to run as fast as possible.
In operation, IC1 accepts the ignition trigger signal at its RB0 input (pin
6) and drives its RB3 output to switch
the ignition coil (via the driver circuit)
accordingly. As shown, the RB0 input
is protected from excess voltages by a
series 2.2kW resistor, which prevents
excessive current flow in IC1’s internal
clamping diodes. Clamping occurs
when the voltage goes below 0V or if
it goes above the +5V supply (ie, the
input is clamped to -0.6V or +5.6V).
The 1nF capacitor at the RB0 input
shunts transient voltages and highfrequency signals, to filter false timing
signals.
Transistor Q4 is also driven from the
trigger input. The transistor is used to
provide a tachometer output at its collector. In operation, Q4’s collector is
normally held high via a 2.2kW pull-up
resistor but switches low each time the
transistor turns on (ie, when the trigger
input is high).
Q4’s collector output can be used
to drive most modern tachometers.
However, an impulse tachometer (now
very rare) requires a different consiliconchip.com.au
Fig.5: the Ignition Coil Driver is based on transistors Q1-Q3. Darlington
transistor Q1 switches the ignition coil, while the four series zener diodes
across Q1 protect it against voltage spikes when the transistor turns off.
nection and this type should operate
when connected to the ignition coil’s
negative terminal.
MAP sensor
The MAP sensor signal is applied
to the analog AN2 input of IC1 via a
1.8kW resistor. A 10nF capacitor filters
out unwanted high-frequency signals
to prevent false readings.
In operation, the AN2 input measures an input voltage ranging from
0-5V and converts this to a digital
value ranging from 0-255. This is the
value that’s read from the DIAG (diagnostic) display.
Note that +5V supply and ground
rails are provided for the sensor. When
the Sensym sensor is used, it can be
directly mounted on the PC board
used for the Programmable Ignition
Timing Module.
The optional knock sensor signal
is applied to IC1’s analog AN1 input
(pin 18). As before, this input accepts
signal voltages from 0-5V and converts
them to digital values.
Conversely, if the knock sensing
circuit is not used, this input must be
tied to ground using jumper link LK2
to disable the knock sensing function.
The third analog input at AN3 (pin
2) is used to monitor the +12V ignition
supply. As shown in Fig.4, this supply
voltage is divided down using 100kW
and 47kW resistors and filtered using
a 10mF capacitor before being applied
to the AN3 input. This divider effectively converts the supply voltage to
a 0-5V signal which is then used to
determine if the dwell period should
be increased to compensate for a low
supply voltage.
Note that the voltage across D1 is
accounted for in this measurement.
Link LK1 selects either the timing
map display or the settings display. In
the settings position, the RA5 input
is tied to ground via a 10kW resistor.
Conversely, when LK1 is in the timing position, RA5 is tied to 5V via the
10kW resistor.
Note that the RA5 input differs from
the other inputs in that it cannot be
directly tied to one of the supply rails
otherwise the micro could latch up.
The 10kW input resistor eliminates
this problem.
March 2007 25
Fig.6: the seven input trigger circuits: (a) points triggering; (b) ignition module (see text); (c) Hall effect & Lumenition
triggering; (d) triggering from an engine management module; (e) reluctor pickup; (f) Crane optical pickup; and (g)
Piranha optical pickup.
Switch S1 is used to select between
the two 11x11 timing maps. When
S1 is open, RA4 is pulled low via the
10kW resistors and mapa is selected.
Conversely, when S2 is closed, RA4 is
pulled to +5V and mapb is selected.
Note that this switch operates only
when the 11x11 maps are selected
using the LCD Hand Controller. It has
no effect if a 15x15 map is selected.
Driving the LCD
Pins 7, 8 & 10-13 of the microcontroller are used to drive the LCD module in the Hand Controller (via a DB25
connector). The 10W resistors in series
with these outputs act as stoppers to
keep RF signals out of IC1.
In addition, the RA0 input at pin
17 monitors the switches from the
Hand Controller. The associated 1kW
resistor pulls the input voltage to 0V
unless a switch is closed, at which
point the line is pulled high to +5V.
The 10nF and 1nF capacitors filter out
RF signals.
Power supply
Power for the circuit is derived via
the ignition switch. This supply is
then filtered using inductor L1 and
the 100nF capacitor. Diode D1 pro26 Silicon Chip
vides reverse polarity protection, after
which the supply is decoupled using
a 1000mF capacitor.
As a further precaution, the circuit
is protected from voltage spikes using
transient voltage suppressor TVS1.
This clamps any high voltages that
may otherwise damage following
components.
Following TVS1, the supply is regulated to +5V using regulator REG1.
This is a low-dropout device and is
used here to ensure that a regulated
+5V supply is maintained during starting when the battery voltage can drop
well below l2V.
A 100mF capacitor decouples the
regulator’s output, while a 100nF capacitor (located close to pin 14 of IC1)
shunts high frequencies to ground.
Ignition coil driver
Fig.5 shows the Ignition Coil Driver
circuit. It’s fairly straightforward and
is based on transistors Q1-Q3.
Q1 is a Darlington transistor specifically made for ignition systems.
It’s capable of handling currents in
excess of 10A and voltages exceeding 400V. As shown, four 75V zener
diodes (ZD1-ZD4) are connected in
series between its collector and emitter
terminals. These protect the transistor
from excess voltages by clamping its
collector at 300V, which is well within
its rating.
The circuit works like this: when
the input signal is low (or there is no
signal), transistor Q3 is off, Q2 is on
(due to base current through the 1.2kW
resistor) and Q1 is off. Conversely,
when the input subsequently switches
high, Q3 turns on and switches Q2
off by pulling its base to ground. As a
result, Q1 turns on and current flows
through the primary winding of the
ignition coil.
The ignition input signal now subsequently switches low again and so Q3
immediately turns off due to the 470W
resistor between its base terminal
and ground. And when that happens,
Q2 switches on and Q1 switches off,
interrupting the current through the
ignition coil.
As a result, the coil’s magnetic flux
rapidly collapses and this generates a
high voltage in the secondary to fire
one of the spark plugs. The 1nF capacitor on Q3’s base is there to suppress
any RF signals that may otherwise be
injected when the current through the
ignition coil is interrupted (ie, when
Q1 switches off).
siliconchip.com.au
Resistor R1 is included to make
the module more versatile. In our
application, R1 is not used and is
replaced with a wire link. For other
applications, where a separate ignition coil driver is required, R1 will
be required. Typically, a 470W resistor
would be used for a 5V drive signal,
while a 1.2kW resistor would be used
for a 12V drive signal.
Finally, the module can also be
configured to drive transistor Q1 when
the input signal switches low. In this
case, Q3 is left out of circuit and a link
installed between the pads on the PC
board for its base and collector leads.
The 1.2kW resistor pull-up is also removed from circuit.
Trigger inputs
The Programmable Electronic Ignition is configured for the appropriate
trigger input during construction.
The seven possible input circuits are
shown in Fig.6.
The points trigger is shown in
Fig.6(a) and includes a l00W 5W wirewound resistor connected to the 12V
supply. This resistor provides a “wetting” current for the points to ensure
there is a good contact between the two
mating faces when they are closed. The
wetting current is sufficient to keep
the contacts clean but not so high as
to damage them.
The ignition module version is
shown in Fig.6(b). This is essentially
the same as the points input except
that a transistor inside the ignition
module switches the input to ground
instead.
This type of input has been included
because some electronic ignition
systems do not provide access to the
actual trigger (usually a reluctor) and
the only output is the ignition coil
driver transistor. In this case the coil
is replaced with the 100W resistor to
provide the necessary pull-up to +12V
when the transistor is off.
Fig.6(c) shows the Hall Effect trigger.
It uses a 100W current-limiting resistor
to feed the Hall sensor, while the 1kW
resistor pulls the output voltage to
+5V when the internal open-collector
transistor is off. Conversely, the output
signal is pulled to 0V when the internal
transistor is on.
Note that the same circuit is used
for the Lumenition optical module.
The engine management input circuit is shown in Fig.6(d) and is quite
simple. Its 0-5V output signal connects
siliconchip.com.au
This inside view shows the assembled PC board for the Ignition Timing
Module but without the optional Sensym MAP sensor fitted. The full
assembly details will be in Pt.2 next month.
to the trigger section of the main circuit
in Fig.4.
Reluctor sensors are catered for
using the circuit in Fig.6(e). These
produce an AC signal and so require
a more complex input circuit.
In this case, transistor Q5 switches
on or off, depending on whether the
reluctor voltage is positive or negative.
It works as follows. Initially, with no
reluctor voltage, Q5 is switched on
via current through VR1 and a 47kW
resistor. The voltage applied to Q5’s
base depends on the 10kW resistor
across the reluctor coil and the internal
resistance of the reluctor.
Trimpot VR1 is included to provide
for a wide range of reluctor types.
In practice, VR1 is adjusted so that
Q5 is just switched on when there
is no signal from the reluctor. The
10kW resistor provides a load for the
reluctor, while the 470pF capacitor
filters any RF signals that may have
been induced.
The 2.2nF capacitor ensures that Q5
quickly switches off when the reluctor
signal goes negative.
Finally, Fig.6(f) & Fig.6(g) show
two different optical pickup circuits.
Fig.6(f) is for a module that has a common 0V supply connection (eg, Crane),
while Fig.6(g) is for a module that has a
common positive supply (eg, Piranha).
In each case, current for the LED is
supplied via a 120W resistor, while the
photodiode current is supplied via a
22kW resistor.
Software
The software for the Programmable
Ignition is the largest and most complex we have developed to date. In all,
the final assembler code totals some
6020 lines to perform all the necessary
functions, including monitoring the
ignition trigger and pressure sensor
signals and providing an output based
on the ignition timing map.
Basically, the software includes
several multiply and divide routines
(some 24-bit) to calculate the timing,
based on the RPM and load site. These
routines are also used to calculate
engine RPM and the interpolated
advance/retard values and must be
performed constantly to maintain the
correct timing as engine RPM and
load vary.
We managed to perform all the required calculations in under 1ms – fast
enough for high revving engines.
A significant part of the software has
also been devoted to the many functions accessible via the Hand Controller and to allow the Hand Controller to
be used while the engine is running.
In the end, we used all the data
memory space of the PIC16F88 to store
the ignition timing maps and the adjustable parameters, along with some
SC
97% of the program memory.
March 2007 27
|