Silicon ChipProgrammable Ignition System For Cars; Pt.3 - May 2007 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: New 20W class-A module is a step closer to perfection
  4. Feature: Jaycar Sunswift III Solar Car Shatters Record by Leo Simpson
  5. Feature: Turntables – Give ’em A Spin by Barrie Smith
  6. Project: A 20W Class-A Amplifier Module by Leo Simpson & Peter Smith
  7. Project: Adjustable 1.3-22V Regulated Power Supply by John Clarke
  8. Project: VU/Peak Meter With LCD Bargraphs by John Clarke
  9. Project: Programmable Ignition System For Cars; Pt.3 by John Clarke
  10. Project: GPS-Based Frequency Reference: Circuit Modifications by Jim Rowe
  11. Vintage Radio: A look at the Kurrajong Radio Museum by Rodney Champness
  12. Project: Throttle Interface For The DC Motor Speed Controller by Leo Simpson & Brank Justic
  13. Advertising Index
  14. Book Store
  15. Outer Back Cover

This is only a preview of the May 2007 issue of Silicon Chip.

You can view 33 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.

Articles in this series:
  • Turntables – Give ’em A Spin (May 2007)
  • Turntables – Give ’em A Spin (May 2007)
  • Turntables – Give ’em A Spin; Pt.2 (June 2007)
  • Turntables – Give ’em A Spin; Pt.2 (June 2007)
Items relevant to "A 20W Class-A Amplifier Module":
  • Preamp & Remote Volume Control PCB for the Ultra-LD Mk3 [01111111] (AUD $30.00)
  • Speaker Protection and Muting Module PCB [01207071] (AUD $17.50)
  • 20W Class-A Amplifier Power Supply PCB [01105074] (AUD $20.00)
  • 20W Class-A Amplifier Module PCB, left channel [01105071] (AUD $15.00)
  • 20W Class-A Amplifier Module PCB, right channel [01105072] (AUD $15.00)
  • PIC16F88-I/P programmed for the Low Noise Stereo Preamplifier with Remote Volume Control (Programmed Microcontroller, AUD $15.00)
  • PIC16F88 firmware and source code for the Low Noise Preamplifier with Remote Volume Control (Software, Free)
  • Speaker Protector and Muting Module PCB pattern (PDF download) [01207071] (Free)
  • 20W Class A Low Noise Stereo Preamplifier/Remote Volume Control PCB pattern (PDF download) [01208071] (Free)
  • 20W Class A Amplifier Module PCB patterns (PDF download) [01105071/2] (Free)
  • 20W Class A Amplifier Power Supply PCB pattern (PDF download) [01105073] (Free)
Articles in this series:
  • A 20W Class-A Amplifier Module (May 2007)
  • A 20W Class-A Amplifier Module (May 2007)
  • 20W Class-A Amplifier Module; Pt.2 (June 2007)
  • 20W Class-A Amplifier Module; Pt.2 (June 2007)
  • 20W Class-A Amplifier Module; Pt.3 (July 2007)
  • 20W Class-A Amplifier Module; Pt.3 (July 2007)
  • 20W Class-A Amplifier Module; Pt.4 (August 2007)
  • 20W Class-A Amplifier Module; Pt.4 (August 2007)
  • Building The 20W Stereo Class-A Amplifier; Pt.5 (September 2007)
  • Building The 20W Stereo Class-A Amplifier; Pt.5 (September 2007)
Items relevant to "Adjustable 1.3-22V Regulated Power Supply":
  • Adjustable Regulated Power Supply PCB pattern (PDF download) [10105071] (Free)
Items relevant to "VU/Peak Meter With LCD Bargraphs":
  • VU/Peak Meter main PCB [01205071] (AUD $12.50)
  • VU/Peak Meter button PCB [01205072] (AUD $5.00)
  • PIC16F88-I/P programmed for the VU/Peak Meter (Programmed Microcontroller, AUD $15.00)
  • PIC16F88 firmware and source code for the VU/Peak Meter (Software, Free)
  • VU/Peak Meter PCB patterns (PDF download) [01205071/2] (Free)
  • VU/Peak Meter front panel artwork (PDF download) (Free)
Items relevant to "Programmable Ignition System For Cars; Pt.3":
  • Programmable Ignition System main PCB [05104071] (AUD $10.00)
  • Programmable Ignition System Trigger Module PCB [05104072] (AUD $5.00)
  • Programmable Ignition System Hand Controller PCB [05104073] (AUD $10.00)
  • PIC16F88-E/P programmed for the Programmable Ignition System [ignprgm.hex] (Programmed Microcontroller, AUD $15.00)
  • PIC16F88 firmware and source code for the Programmable Ignition System (Software, Free)
  • Sample timing maps for the Programmable Ignition System (Software, Free)
  • Programmable Ignition System PCB patterns (PDF download) [05104071/2/3] (Free)
  • Programmable Ignition System front panel artwork (PDF download) (Free)
Articles in this series:
  • Programmable Ignition System For Cars; Pt.1 (March 2007)
  • Programmable Ignition System For Cars; Pt.1 (March 2007)
  • Programmable Ignition System For Cars; Pt.2 (April 2007)
  • Programmable Ignition System For Cars; Pt.2 (April 2007)
  • Programmable Ignition System For Cars; Pt.3 (May 2007)
  • Programmable Ignition System For Cars; Pt.3 (May 2007)
  • A Knock Detector For The Programmable Ignition (June 2007)
  • A Knock Detector For The Programmable Ignition (June 2007)
Items relevant to "GPS-Based Frequency Reference: Circuit Modifications":
  • PIC16F628A-I/P programmed for the GPS Frequency Reference [GPSFrqRfv3.HEX or GPSFrqRfv4.HEX] (Programmed Microcontroller, AUD $10.00)
  • PIC16F628A firmware for the GPS-Based Frequency Reference (v3 & v4) (Software, Free)
  • Updated PCB pattern for the GPS-Based Frequency Reference (PDF download) [04103073] (Free)
  • Display PCB pattern for the GPS-Based Frequency Reference (PDF download) [04103072] (Free)
  • GPS-based Frequency Reference front and rear panel artwork (PDF download) (Free)
Articles in this series:
  • GPS-Based Frequency Reference; Pt.1 (March 2007)
  • GPS-Based Frequency Reference; Pt.1 (March 2007)
  • GPS-Based Frequency Reference; Pt.2 (April 2007)
  • GPS-Based Frequency Reference; Pt.2 (April 2007)
  • GPS-Based Frequency Reference: Circuit Modifications (May 2007)
  • GPS-Based Frequency Reference: Circuit Modifications (May 2007)
  • Improving The GPS-Based Frequency Reference (September 2011)
  • Improving The GPS-Based Frequency Reference (September 2011)

Purchase a printed copy of this issue for $10.00.

By JOHN CLARKE Programmable Ignition System For Cars; Pt.3 In Pt.2, we described how to build all the modules that comprise the Programmable Ignition System. This month, we describe the installation and setting up procedures and show you how to plot the ignition timing. A S MENTIONED in Pt.1, the Programmable Ignition System can either be used as a complete ignition system or as an interceptor. Whether it behaves as an interceptor or not depends on the input signal that’s applied to the unit. In most cars, the ignition system will already provide ignition advance with respect to RPM and engine load. This applies not only to cars that have full or partial engine management but also to older cars that simply have mechanical RPM and vacuum advance systems. When used as an interceptor, the Programmable Ignition simply modifies the existing ignition timing. By contrast, when it’s used as a complete ignition system, we dispense with any existing timing system that may exist and re-map the timing using the Programmable Ignition Timing Module. If you intend using the unit as an 74  Silicon Chip interceptor, then there’s no real need to know what the engine’s existing timing map is for RPM and engine load. That’s because we are simply using the unit to modify the existing timing values at various engine RPM and load sites. Why would you want to do this? Well, you may want to advance the timing at some sites to gain power and/or retard the timing to prevent detonation (ping) at certain trouble spots within the RPM and engine load map. Note that although the original timing curve does not have to be known for interception, you do need to know the RPM and engine load range. This is necessary to ensure that the full mapping range is utilised with the Programmable Ignition System (more on this later). Conversely, if the unit is used as a re- Warning! Programming an incorrect timing map into the Ignition Timing Module could result in serious engine damage. Do NOT modify your car by fitting this device unless you know exactly what you are doing. Also, be sure to install this ignition system in a manner that does not compromise safety. It must be ruggedly built and correctly installed to ensure that no leads or components can come adrift. Finally, make sure that the device does not compromise the operation of other systems controlled by an existing engine management unit – eg, ABS, traction control, stability control, air-bag control, etc. placement ignition, it will be easier to program in a timing map if the original engine timing is known. That way, the Programmable Ignition can initially duplicate the original timing which can then be adjusted as necessary in a similar manner to an interceptor – eg, to extract better performance and/or to prevent detonation. siliconchip.com.au In some cases, full timing information will be available from the car’s manufacturer or from a workshop manual. Usually, however, there will be no information available. The solution is to actually measure the timing advance against changes in RPM and engine load. This is easy to do in cars with a mechanical vacuum advance mechanism, as this operates independently of engine RPM. Plotting the timing values in cars that use engine mapping and a MAP sensor for vacuum measurement is only slightly more difficult. It’s done by externally altering the pressure sent to the MAP sensor or actuator. The exact procedure is described in the panel headed “Plotting The Original Ignition Timing Values”. Cars that utilise Mass Air Flow (MAF) sensing of engine load are much more difficult when it comes to mapping ignition advance. That’s because the engine will have to be run with varying degrees of load throughout the RPM range and this can only be achieved on a dynamometer. Interceptor or replacement? Note that the Programmable Ignition System should be used only as an interceptor on cars that already have an engine management system. That’s because the manufacturer’s timing map will have been carefully designed for your engine. Furthermore, the timing would have been mapped against air inlet temperature, engine temperature and the air-fuel ratio to provide the best performance in all conditions. By using the Programmable Ignition System only as an interceptor in such cars, the original timing variations according to fuel ratio, temperature, RPM and load will be retained. By contrast, we do advocate using the Programmable Ignition System as a complete replacement in older cars and Go-carts and on engines that do not currently include RPM or vacuum advance. Many old cars provide both RPM and vacuum advance by mechanical means. Because of their age, the RPM advance system is now likely to be worn and sticky in its operation, while the vacuum actuator will often be leaky or may have failed altogether. Most drivers do not notice if a vacuum actuator has failed because when it fails, it remains at the maximum ensiliconchip.com.au Timing Problems With Reluctor Triggers In some cars, when using the Programmable Ignition, you may find that the ignition trigger exhibits a type of stiction effect, with the timing initially failing to advance from about 0-5°. This effect is due to the coil firing just before the trigger signal (due to the advance setting) and the resulting high-tension signal within the distributor then interfering with the normal operation of the trigger sensor. Reluctor triggers are the most likely to be affected in this way. Hall Effect, optical, engine management and points triggers are unlikely to be affected. In some cases the effect may be dialled out by careful adjustment of VR1. Also, make sure the high-tension lead and the reluctor leads are spaced well apart and only intersect at right angles if they do need to cross. If this does not solve the problem then gine load position. As a result, power under load is retained. Our experience During our tests, we eliminated the original mechanical RPM and vacuum advance systems in a 1988 Ford Telstar and used the Programmable Ignition System to provide the timing advance instead. As a result, the engine became far more responsive to throttle changes and was more willing to rev than before. There are a couple of reasons for this improved performance. First, the flying weight system in the distributor you can avoid programming low values of advance into the Programmable Ignition. This can be done in one of two ways. First, the static timing can be set to say 10° of retard (eg, –10°) so that you need at least 10° of advance from the Programmable Ignition to get 0° timing. Of course, the entire timing map would have to be changed to include this extra 10° for all values. An alternative method is to set the static timing to greater than the maximum amount of advance in the timing map. This value would then be subtracted from required timing value for each map site in order to determine the retard setting required for each site in the Programmable Ignition. For example, if the static timing is +40° and the timing map value is 22°, the programmable ignition map setting would be -18° (22° - 40° = -18°). that provides RPM advance is fairly sluggish to respond to RPM changes. By contrast, the Programmable Ignition System provides “instantaneous” changes to the timing map. Similarly, the vacuum actuator that moves the distributor’s trigger firing point is slow to respond compared to using a pressure (or MAP) sensor with the Programmable Ignition System. Installation Typically, the Ignition Timing Module is best mounted inside the cabin of the car; eg, somewhere under the dashboard. This allows the Hand Con- An external MAP sensor can be mounted on the firewall. It will require power connections plus a vacuum hose connection to the inlet manifold. May 2007  75 Plotting The Original Ignition Timing Values I T’S QUITE EASY to plot the timing advance values for an existing ignition system by using a timing light. In fact, there are several ways to go about this. Typically, most cars only provide timing marks that show Top Dead Centre (TDC) and up to about 10° or 12° before TDC using a scale on the engine block. These marks are ideal for setting up the ignition timing at idle but are not sufficient to measure advance at higher RPM values. This is because the advance will go beyond the 10° or 12° timing mark. One way round this is to make up an extended timing scale to directly indicate the advance at higher RPM values. Another option is to use a timing light that includes advance adjustment. Yet another option is to use the Programmable Ignition System and a spare ignition coil and spark plug. This system can shift the timing light’s stroboscopic flashing so that it is delayed by as many degrees as the advance. That way, you can use the existing engine timing marks. Fig.23 shows how to set this system up. Note that the coil shown here is not the ignition coil used in the car but a separate one that independently fires the timing light. If you do not have a spare coil, they are readily available from automotive wreckers or you could temporarily borrow one from another car (just about any single output ignition coil can be used). The spark plug is necessary to provide a spark gap for the coil to discharge. This is important because if the coil’s high tension output is left open, there is the risk that the coil will internally breakdown and suffer permanent damage. The Ignition Timing Module takes its signal from the car’s trigger sensor or existing ECU output but note that this signal must include the timing advance (not always the case with trigger sensor information). If the trigger signal does not include the timing advance, then be sure to use the output from the ECU. Before actually plotting out the timing values, there are a number of adjustments that must first be made to the Ignition Timing Module, as follows: the cabin. Make sure it is well away from the exhaust manifold though, to prevent excessive heat exposure. It can be mounted using suitable brackets to the chassis. The big disadvantage of mounting the unit in the engine bay is that it is much harder to connect the Hand Controller for driving. In some cases, it may be possible to feed the connecting lead through a window and under the rear of the (closed) bonnet. Alternatively, it may be possible to temporarily feed the connecting lead through the firewall (not so easy) or through an air vent (easier). Note that the lid of the Ignition Timing Module must be left off when the Hand Controller is connected. This also allows jumper LK1 to be easily changed, to select either the settings or timing display modes. Note that Reluctor adjustment If your car uses a reluctor pick-up, then VR1 (on the Ignition Timing Module) must first be adjusted. Begin by setting VR1 fully clockwise and measure the voltage at pin 6 of IC1. If the voltage is close to 0V, wind VR1 anticlockwise several turns until the voltage at pin 6 of IC1 goes to +5V. When it does, wind VR1 anticlockwise about two turns more and leave it at this setting. If the voltage at pin 6 of IC1 is +5V when VR1 is wound fully clockwise, then rotate VR1 fully anticlockwise and wind it clockwise until the voltage goes to +5V. As before, wind VR1 on by an extra two turns (clockwise this time). Initial settings Now for the programmed settings. Fig.23: here’s how to set the system up with a timing light and a spare ignition coil to map the ignition timing. troller to be easily attached and used while someone else does the driving (this should be done on a racetrack or some other closed road). It is also best to mount the Ignition Timing Module in the cabin if the Sensym pressure sensor is used. This helps keep the sensor cool. Alternatively, the Ignition Timing Module can be mounted in the engine bay if you cannot find room for it in 76  Silicon Chip siliconchip.com.au Here’s the step-by-step procedure: (1) Install jumper LK1 in the settings position. (2) Set the number of cylinders for your car, the edge sense to HIGH and the diagnostic setting to “No Interpolation”. (3) Set the dwell to 0ms and set the oscillator to ON. (4) Increase the dwell value until the timing light fires reliably. Note that the dwell value does not change until the Up switch on the Hand Controller is released. (5) Move LK1 to the timing position and press the Reset switch on the Hand Controller so that all the timing values for the selected map return to 0. If you now start the engine and aim the timing light at the flywheel timing marks you should see the amount of advance. If this does not seem correct, then change the edge sense to low in the settings mode (ie, temporarily move LK1 back to the settings position). If the strobing is erratic, try selecting the 2ms debounce option (again found in the settings mode). Note that with this strobe set-up, the timing light will fire for every spark firing rather than just for cylinder 1. This will make the visible contrast of the timing mark a little less than it otherwise would be. You can compensate for this by dabbing some white paint on the flywheel marker. RPM Site Load Site Min load LOAD1 LOAD2 LOAD3 LOAD4 LOAD5 LOAD6 LOAD7 LOAD8 LOAD9 LOAD10 Max load LOAD11 RPM0 Min RPM RPM1 0 1000 6 6 RPM2 RPM3 RPM4 RPM5 RPM6 RPM7 RPM8 RPM9 RPM10 Max RPM RPM11 8.5 11.5 13 15.5 19 22 26 28 32.5 34 1400 1800 2200 2600 3000 3400 3800 4200 4600 5000 Table 1: this table shows the interpolated advance values vs RPM for the high load site (in this case, LOAD11). These values are measured with the vacuum advance line disconnected and plugged – see text. Having gone through all these initial adjustments, the next step is to disable any vacuum advance by removing and plugging the rubber hose that connects to the vacuum advance pressure sensor (or MAP sensor. The timing advance at idle should be set according to the manufacturer’s specifications. For the Ford Telstar, the initial timing is 6° BTC (before top centre) and this should be indicated by aiming the timing light at the timing marks. In this case, the Ignition Timing Module can now be programmed (using the Hand Controller) for a timing advance of -6.0° (retard). When this is done, the timing light should now show the timing to be at exactly TDC on the flywheel marks. Plotting the RPM advance values from here is straightforward. It’s just a matter of running the engine at specific RPM values and adjusting the “retard” value programmed into the Ignition Timing Module until the timing light shows TDC in each case. The programmed values then represent the timing advance (in degrees) for each selected RPM value. For example, let’s say that the programmed value necessary for the timing light to show TDC is -22° when the engine is doing 3400 RPM. This simply means that, in this particular case, the standard ignition has a timing advance of 22° at that engine speed. OK, so how do we actually do this? Simple – just select the timing display mode (using LK1) and then select DIAG so that the RPM is displayed. You can now plot out the advance versus RPM values by increasing the engine RPM in suitable steps (eg, 1000 RPM) all the way to the red line and adjusting the programmed retard value so that the timing is shown at TDC. Keep a record of these advance values as you proceed. This RPM versus timing advance is generally the high-load map because the vacuum advance line is disconnected and plugged. However, it is not the high load map for turbo-boosted engines (see below). The recorded timing information can now be plotted out on a graph and the interpolated values transferred to the individual RPM sites. This is done as follows: (1) Decide whether you want the two 11x11 maps or the single 15x15 map and select this in the settings mode. (2) Select either 1° or 0.5° resolution. (3) Set the Minimum RPM and Maximum RPM values to suit the range of the engine. The Minimum RPM value is simply the idle speed, while the Maximum RPM value is the engine red line. The idle speed can be measured by setting the display to DIAG, so that it shows RPM. When setting the Maximum RPM, adjust the RPM/SITE value so that the Maximum RPM is at or just over the value required. You can also adjust the Minimum RPM setting if necessary (see Pt.1). The Minimum RPM value becomes the RPM1 site. The RPM step value for each site is shown in the Maximum RPM settings display. If this is 400 RPM, for example, then the RPM2 site will be 400 RPM higher than the Minimum RPM setting. Similarly, the next RPM site will be 400 RPM higher again and so on up to the final RPM site which will be equal to (or slightly higher than) the Maximum RPM value. You should now have a timing table . . . continued next page LK1 should be placed in the settings position when the Hand Controller is subsequently disconnected. By contrast, the Ignition Coil Driver must be mounted in the engine bay. It can be secured to the chassis using suitable brackets and should be located close to the ignition coil. If you are using a separate MAP sensor, then this can be mounted on the firewall. Make sure that there is a good con- nection between the metal cases of both units and chassis. If necessary, you can run separate earth leads to ground (bolt them to the chassis via crimp eyelet connectors). Once you’ve made the connections, use your multimeter (set to its ohms range) to confirm that the metal cases are correctly grounded. You should get a reading of zero ohms between each metal case and ground. Fig.15 in Pt.2 last month shows the external wiring details. Note that all wiring between the Ignition Timing Module and the Ignition Coil Driver should be run using automotive wire and crimp automotive connectors. Similarly, use automotive wire and crimp connectors for the connections to the ignition coil, the +12V supply and to chassis. The +12V supply should be taken Checking the advance siliconchip.com.au May 2007  77 Plotting The Original Timing Values – Continued Fig.24: here’s how to check the LOAD values in a car with a mechanical vacuum actuator. The syringe is used to vary the pressure. that is similar to the one shown in Table 1. Note that we have included RPM0 on a different line because it is only there to show that the advance setting remains the same for RPM values below the Minimum RPM site (RPM1). Finally, you may wish to recheck the advance values assigned to each RPM site. For example, for the table shown, you would recheck the advance at 1000, 1400, 1800, 2200, 2600, 3000, 3400, 3800, 4200, 4600 and 5000 RPM. Having determined the RPM site advance values, you now need to plot the LOAD values. First, let’s assume that you have a car with a mechanical vacuum actuator. In this case, you will need a T-piece in order to connect this existing vacuum actuator (via a hose) to the MAP sensor used with the Programmable Ignition System. Note, however, that a T-piece is not required if your car is fitted with an existing MAP sensor. In this case, the same signal from the MAP sensor is used both for the existing ignition and for the Ignition Timing Module. In either case, it will be necessary to feed a MAP sensor signal to the Ignition Timing Module. If you are using the Sensym sensor, then a vacuum hose has to be connected to this. The T-piece does not have to be anything too complex. You can buy these at from the fusebox. Be sure to choose a connection point that delivers +12V only when the ignition on. In addition, make sure that this +12V rail DOES NOT drop to 0V when the ignition is switched to START, otherwise the engine will never start. In our case, we used twin-core shielded cable to connect between the Ignition Timing Module and an external MAP sensor mounted on the firewall (see photo. Alternatively, you can use automotive cable. Note that the MAP sensor must be wired with the correct polarity so double-check the wiring and voltages before making the final connection to the this sensor. If you are using an existing MAP sensor, then you won’t need to make the supply connections, since these will already be present (see panel on page 73 last month). Vacuum advance 78  Silicon Chip an automotive shop or make your own. As shown in Fig.24, a syringe is used to vary the pressure. However, be careful not introduce excessive pressure into the MAP sensor as it may be damaged. For 1-bar sensors, the syringe should be pressed all the way in before connecting it to the vacuum hose. That way, you can only “draw” a vacuum by pulling on the syringe plunger (and not increase the pressure). The maximum value is typically around 200 but could be as high as 230 and is equivalent to a 4-4.5V output from the sensor. If you are using a 2-bar sensor, first check the LOAD value at normal atmospheric air pressure. At 2-bar, this value will be about 100 greater. Do not increase pressure above this increased value (ie, the atmospheric plus 100 value). In this case (ie, for a 2-bar sensor), the syringe should be inserted into the hose with the plunger set half-way down. If you cannot get a sufficient pressure range with this, then you will have to do the pressure changes in two steps: (1) for vacuum, insert the syringe when the plunger is fully in and draw out the plunger for vacuum; and (2) for boost pressure measurements, insert the syringe nozzle into the hose with the plunger fully drawn and apply boost pressure by pressing on the plunger. During this process, be sure to always monitor the sensor output level by setting the Hand Controller to DIAG mode (the second line shows the pressure sensor LOAD value). If the value stops increasing as you apply more pressure, then stop immediately. This indicates that you have reached the maximum pressure that the sensor can detect and any further increases could damage it. Plotting vacuum advance Let’s assume that your car uses a vacuum actuator and you have made the necessary vacuum hose connections using the T-piece. The vacuum advance plot can A toggle switch will need to be mounted on the dashboard if you want to be able to select between two 11x11 maps. The wires for this are connected to the S1 terminals on the Ignition Timing Module PC board. If you just want one map (either an 11x11 or a 15x15), then switch S1 is unnecessary. Adjusting VR1 If you are using a reluctor pickup siliconchip.com.au to trigger the Ignition Timing Module, the first thing to do is to adjust trimpot VR1. That’s done as set out in the accompanying panel headed “Plotting The Original Ignition Timing Values” (see text immediately following “Reluctor adjustment”). If you have plotted the RPM advance curve (see panel), then most of the parameters within the Ignition Timing Module will have already been siliconchip.com.au Value 151 155 159 163 167 171 175 179 183 187 191 RPM Site Load Site LOAD1 LOAD2 LOAD3 LOAD4 LOAD5 LOAD6 LOAD7 LOAD8 LOAD9 LOAD10 LOAD11 RPM0 Min RPM RPM1 0 1000 6 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 RPM4 RPM5 RPM6 RPM7 RPM8 RPM9 RPM10 Max RPM RPM11 11.5 13 15.5 19 22 26 28 32.5 34 1800 2200 2600 3000 3400 3800 4200 4600 5000 Table 2: the LOAD site values are all made at a fixed RPM setting but do not use the RPM1 value. Choose the RPM2 or RPM3 rev value instead. 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 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 3: once you’ve completed Table 2, the rest of the table can be filled in by adding or subtracting the RPM advance steps to the RPM2 LOAD site values. 11 x 11 This is the result for a 1988 2-litre Ford Telstar. Ignition Timing Map 45 Programming RPM11 RPM9 RPM10 RPM8 RPM2 RPM1 LOAD11 If your car has an existing MAP sensor, then the load advance will have to be plotted for each RPM site. The table then Engine Load may not have a consistent change between LOAD sites but its value will be dependent on the ignition mapping. RPM3 MAP sensor RPM7 low if you know it should be this setting). The diagnostic setting should then be checked to ensure it is set for “interpolation on”. Next, decide whether you want the two 11x11 maps or the single 15x15 map and select this in the map setting. Follow this step by selecting either the 1° or 0.5° resolution and set the debounce to 0.4ms. Note that the latter may need to be Because the vacuum actuator advance system provides the same advance curve at all RPM values, it’s quite easy to complete the table. In our example, the advance increases by 1° for each decreasing LOAD site. Table 3 shows the result. RPM6 set. You will, however, need to set the dwell for the ignition coil. Conversely, if none of the parameters have been set, then you will have to start from scratch. The various settings were detailed in the first article in March 2007. The first step is to place jumper LK1 in the settings position. That done, set the number of cylinders for your car, then set the edge sense to high (or to Completing the table RPM5 The Ignition Timing Module can now be programmed with the timing map. This is done using the VIEW setting, to enable 40 Advance stepping through all the map sites. (Degrees) 35 Normally, the distributor would be ad40-45 justed so that the trigger sensor delivers 30 35-40 a firing signal at TDC and the timing map 30-35 25 25-30 entered on this basis. Alternatively, you can 20-25 20 set the distributor to deliver 15-20 a firing signal 15 10-15 at a preset advance or retard value. The 5-10 10 entered advance values would need to be 0-5 adjusted to account5 for this initial advance or retard setting of0 the distributor. Make sure that the distributor’s rotor is still within its range for firing with the values set in the programmable ignition. If you do not change the settings much RPM beyond the original ignition timing curve, then the rotor will remain within range to allow the spark to bridge the gap within the distributor cap to fire the spark plugs. Finally, don’t forget to set the interpolation back to “on” after plotting the ignition timing. RPM4 This is because the lowest value must be entered as the minimum load site. LOAD1 LOAD2 LOAD3 LOAD4 LOAD5 LOAD6 LOAD7 LOAD8 LOAD9 LOAD10 now be made at a fixed RPM setting that coincides with an RPM load site value. However, do not to choose the idle load point because the engine RPM will alter as vacuum advance is applied and you need to be able to adjust the throttle to maintain the fixed RPM setting. Choose the RPM2 site value instead (1400 RPM in our example). It’s now just a matter of plotting the RPM advance against the pressure sensor LOAD reading, as shown on the Hand Controller’s display. To vary the LOAD reading, just vary the position of the syringe plunger. Be sure to adjust the throttle to compensate for pressure changes, to maintain engine RPM at the RPM2 site value. In practice, the vacuum advance value will stop increasing beyond a certain min­ imum pressure value. This value should be recorded as the minimum load. Similarly, it will also cease changing at a certain maximum pressure value and this should be recorded as the maximum load value. Enter these two values into the Minimum LOAD and Maximum LOAD settings. Remember that the maximum load value can only be changed by increasing the LOADS/SITE value. In our example below, the LOADS/SITE value is 40 and it ranges from a minimum of 151 (which becomes LOAD1) through to a maximum of 191 (LOAD11). You can now insert the load timing values into a table as shown in Table 2. Note that the voltage output from electronic pressure sensors (including MAP sensors) usually decreases with increasing vacuum (lower pressure). This means that the minimum load (maximum vacuum) gives the lowest value on the DIAG display and so this becomes the minimum load site (LOAD1). If, for some reason, the pressure readings are reversed (ie, the value increases with decreasing vacuum), then the load site numbering will have to be reversed so that the maximum load becomes LOAD1. May 2007  79 Using An Existing Coil Driver Module I N SOME CASES, it may be possible for the output from the Ignition Timing Module to drive an existing ignition module (or coil driver) instead of using the SILICON CHIP Ignition Coil Driver. There are a few things to sort out before doing this, however. First, you must find out the voltage sense used for the trigger signal. This can easily be determined if the trigger signal is produced by the ECU. For other triggers, the sense may need to be determined by trial and error. Initially, you should set the Ignition Timing Module’s EDGE setting set to LOW. If it doesn’t work, try reducing the 470W output resistor in the Ignition Timing Module to 220W in order to drive the original coil driver module. If it still doesn’t work, try changing the EDGE setting to HIGH. In addition, the Ignition Timing Module output must be inverted for positive edge firing by taking the drive from transistor Q4 – see Fig.14 in last month’s article. ECU trigger signal What if you are using the trigger signal from an existing ECU (or engine management unit)? In this case, the output may normally be at +5V, with a low signal then applied to the ignition module to “charge” the coil and a high-going signal subsequently used to fire a plug. Alternatively, the signal sense could be completely reverse to this. Generally, it’s easy to determine the voltage sense by measuring the voltage from the ECU when the engine is idling, using a multimeter set to read DC. The meter will show the average voltage of the trigger signal and so a normally low output will give a voltage below 2.5V and a normally high output will give a voltage above 2.5V. If the measured voltage is less than +2.5V, then the plugs fire on the low-going signal edges (ie, the ECU’s output goes to +5V to “charge” the coil). In this case, the EDGE setting in the Ignition Timing Module should be set to LOW. Conversely, if the voltage is greater than +2.5V, it means that the coil charges when the ECU output goes to 0V and the plugs fire on the high-going signal edges. In this case, the EDGE setting in the Ignition Timing Module should be set to HIGH. In addition, the signal output from the Ignition Timing Module must be inverted (by taking the output from transistor Q4), as shown last month in Fig.14. set to 2ms if there are problems. This higher debounce period is usually required only for points triggers. internal oscillator will automatically be off when power is re-applied. Dwell setting If you intend using the unit as an interceptor (ie, to modify the timing output from an existing system), then you will need to know both the existing pressure (MAP) sensor and RPM ranges. This means that the Ignition Timing Module should be set up so that it initially makes no changes made to the timing. The range over which the existing MAP sensor works can be found by monitoring the LOAD value in the DIAG display mode. First, record the maximum load value by checking the LOAD reading with the ignition on but without the engine started. This should be done only for normally aspirated engines when the baro­meter shows 1013hPa of atmospheric pressure (ie, the standard pressure at sea level). If you are at a higher altitude, then add another 3% to the reading for Now for the dwell setting. First, attach an external spark plug to the HT lead from the coil and connect the plug’s metal thread to chassis (ground). You can use a heavy-duty lead with alligator clips at either end to make this connection. Now set the dwell to 0ms and set the internal oscillator in the Ignition Timing Module to on. That done, increase the dwell until the spark plug appears to give its best spark. Note that the dwell value will not change until the Up switch on the Hand Controller is released, so be sure to release the switch each time you make a change. Stop increasing the dwell when the spark appears to have reached its maximum intensity. Once you’ve finished, switch off the ignition and reconnect the HT lead correctly so that the car will run. The 80  Silicon Chip MAP sensor & RPM ranges Small Engine Use For some motorcycles, go-carts and other engines, the ignition can be operated without using a MAP sensor. In this case, the MAP sensor input on the PC board should be connected to the 0V (ground) supply pin provided for the external MAP sensor. This will set the programmable ignition at a single fixed load setting. In the settings, set the minimum load to about 20 and the maximum load to around 200. The ignition will then be programmed for RPM load sites only and at the fixed load setting. RPM mapping would be over 11 RPM sites (or 15 RPM sites if the single 15 x 15 map is selected). every 300m above sea level to compensate for the loss in air pressure. Alternatively, vary the reading by the percentage that your local air pressure differs from 1013hPa. Increase the reading for lower air pressure and decrease it for higher air pressure. For turbo engines, the maximum reading from the pressure sensor is found at maximum boost. The minimum load value can be found by driving the car downhill, with the engine being overrun (eg, by shifting to a lower gear than normal). Note, however, that some cars tap the vacuum line for the vacuum measurement before the butterfly valve that’s located within the air inlet throat. In this case, vacuum measurement is not available on a fully-closed throttle because the butterfly valve is also clos­ ed. What’s more, just slightly opening the throttle in this case will cause the vacuum to reappear. Once you’ve measured the minimum load value, enter it into the settings as the Minimum LOAD. That done, enter the Maximum LOAD by altering the loads/site value so that it is equal to or a little over the value previously measured. You now need to set the minimum and maximum RPM values to suit the range of the engine. Just set the Minimum RPM value to the idle speed and the Maximum RPM value to the engine red line. Note that the idle speed can be measured using the Programmable Ignition System, with the display set to DIAG to show the RPM. siliconchip.com.au Disabling Original Ignition Systems I F YOUR CAR already has a fully electronic ignition, it can be disabled quite easily. Just disconnect the trigger sensor from the existing ignition and connect it to the Ignition Timing Module instead. Note that with some ignition systems, you will not be able to find a suitable trigger signal that does not also include timing information. In this case, you can only use the Programmable Ignition System as an interceptor. To disable a mechanical advance system, you first need to remove and disassemble part of the distributor. Make sure you turn the engine to TDC for cylinder 1 before removing the distributor. The distributor must be stripped down to give access to the mechanical weights, so they can be locked in place. We used an aluminium plate to lock the weights to the minimum advance position. The vacuum actuator hose is disconnected (to set the advance to the maximum load setting) and the inlet to the actuator is plugged. The vacuum hose is then connected to the manifold pressure sensor that’s used with the Programmable Ignition System (eg, to an external MAP sensor or the on-board Sensym sensor). Be sure to reinstall the distributor with its rotor pointing towards the cylinder 1 high-tension terminal on the distributor cap.  The inlet to the vacuum actuator is disconnected and plugged.  Left: you can use a simple aluminium plate like this to lock the mechanical timing weights inside a distributor. It simply slides over the distributor cam and the timing weight posts, as shown in the photos. Inside a stripped-down distributor, showing the timing weight posts.  The aluminium plate prevents the posts attached to the weights from sliding in their slots as the RPM increases, thus locking them in position. siliconchip.com.au  The partially reassembled distributor with the advance plate back in position. Because the weights are locked, the advance plate is now also locked. May 2007  81 Programmable Ignition Software: How It Works T HE CIRCUIT DESCRIPTION in Pt.1 details many of the functions of microcontroller IC1 and explains its pin assignments. However, it doesn’t explain what goes on inside the microcontroller, so let’s take a closer look at this. As we’ve already seen, the trigger signal is applied to IC1’s RB0 input and the RB3 output subsequently switches off the ignition coil via the driver circuit to fire a spark plug. We’ll assume here that a positive signal edge at the RB0 input is the trigger point for turning off the ignition coil. Alternatively, this could be set for negative edge triggering instead by selecting the EDGE LOW setting via the LCD Hand Controller. If the Programmable Ignition is set for no advance or retard, the RB3 output will go low and turn off the ignition coil (to fire a plug) at the instant the RB0 input goes high. However, we also need to “charge” the coil so that there is sufficient energy stored in it at the point of “firing” so as to provide a spark. The duration required to fully charge the coil (to provide maximum spark energy) is called the “dwell” period. In order to provide this dwell period, we need to predict when the coil is going to “fire” the next plug. Based on this prediction, we can then determine when to start “charging” the coil (ie, the start of the dwell period). Fig.25 shows the waveforms associated with this. The top waveform is the trigger signal applied to RB0 and the positivegoing edges are the firing points. The RB3 output on the waveform below this initiates When setting the Maximum RPM, adjust the RPM/SITE value 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. Testing The Programmable Ignition System should now be ready for it first real test. If you are using it as an interceptor, make sure that all the initial timing map values are zero. You can ensure this by pressing the Reset button on the Hand Controller and waiting one second so that RESET is shown on the display. This will clear all the timing 82  Silicon Chip Fig.25: the top waveform in red represents the trigger signal applied to the RB0 input of the microcontroller in the Ignition Timing Module. The green waveforms show the three possible RB3 output signal conditions. the dwell period before firing occurs at the positive edge of RB0. To predict the next firing point, we use a timer (Timer2) that counts up by one for each 800ns between the positive edges of RB0. This count value then becomes the predicted count for Timer2 to indicate when the next firing will occur. This is true when the engine is running at a con- stant RPM. However, when the engine is increasing in speed, the firing point will occur somewhat earlier than the previous Timer2 count value. Conversely, the firing point will lag behind the previous Timer2 count value when the engine is slowing down. These changes are not significant since the engine RPM value cannot quickly change values to zero but only for the map selected. If you want to clear both the alpha and beta maps, then you will need to use switch S1 to select the alternative map and press the Reset button again. Of course, this only applies if the two 11x11 maps have been selected. The 15x15 map is fully reset to zero using just the Reset switch, regardless of switch S1’s position. Now try to start the engine. If it refuses to start, then the edge setting (for the input trigger signal) may need to be set to low rather than high. Assuming that it does start, check that it runs properly when the throttle is quickly pressed to increase the revs. If it falters, then the dwell period may need increasing a little. Additionally, the response to the low-speed RPM setting may need to be increased by a few hundred RPM above the idle speed for best “take-off” acceleration. Altering the timing a little from its standard setting can sometimes smooth out the idle speed if it tends to be rough. It needs to be tested by both advancing and retarding the existing value to find the optimum setting. This setting becomes the cranking advance as well. These two settings (for cranking and idle) may not be compatible because siliconchip.com.au to any extent between successive input trigger signals. The dwell period can be initiated before the next firing by doing some calculations using the Timer2 count value. If, for example, the required dwell for the coil is 4ms, we can calculate that this period is equal to a count of 5000. This is because 4ms requires counting 5000 of the 800ns count periods. We can then start the dwell at a count of 5000 before the next expected firing point. Initiating the dwell start and switching off the coil to fire a plug requires another counter. At every positive signal edge on RB0, this second counter (Timer0) is set at a value so that it will reach a count of zero at the next expected firing position. Before it reaches zero, the counter is checked every 204.8ms to see if it has reached the value to start the dwell period. If this value has been reached, RB3 goes high and remains high until the counter reaches zero, at which point RB3 goes low to fire the plug. In order to advance or retard the firing point, instead of setting Timer0 to fire at the next expected RB0 positive edge we either fire before this for advance or later than this for retard. The dwell is also shifted to start earlier as the timing advances or later as the timing retards. We need to make some calculations in order to set Timer0 to a value that will give the correct amount of advance or retard in degrees. As we know, the Timer2 value provides us with the count between firing pulses. Firing pulses occur twice per engine revolution for a 4-cylinder 4-stroke engine and three times per engine revolution for a 6-cylinder 4-stroke. So for a 4-cylinder 4-stroke engine, we divide the Timer2 count by 180 because plug firings are 180° apart, with two pulses per 360° engine revolution. This gives us the count per degree. For the 0.5° resolution setting, we divide by 360 instead of 180 to get the number of counts per 0.5°. Similarly, for a 6-cylinder engine, we divide by 120 for the 1° resolution setting because there are three firing pulses per 360° engine revolution. The number of degrees of advance or retard required is then multiplied by the count per degree value. This is then either added to the Timer2 value to retard the timing or subtracted from the Timer2 value to advance the timing. Timer0 is then set so that it reaches a count of zero at this altered Timer2 value. In this way, RB3 is controlled by Timer0 to set the dwell and fire a plug (when Timer0 is zero) at the required advance or retard setting. Well, that’s basically how the system works but in practice it’s a bit more complicated that that. In reality, there are two timers: Timer0 and Timer1. Timer0 is used to decide when to drive RB3 high (for the dwell) and low (to fire the plug) between each of the even-numbered positive edges from RB0. By contrast, Timer1 is used to drive RB3 high and low between each of the odd-numbered RB0 positive edges. The reason we need two timers is because one of them might still be in use, determining when to drive RB3, when the next positive edge from RB0 occurs. If only one timer was used, it could not be made ready for the next firing sequence, as this would affect the current firing position. The only alternative is to use two timers, as described. Note that the firing point is calculated from the previous RB0 positive edge and may not exactly match the current RB0 edge when there is no advance or retard adjustment. This can happen when the engine revs are changing. In this case, we fire the coil when the RB0 output goes high. In addition, when the timing is set to retard, the firing point is recalculated when the next RB0 positive edge occurs. If the timing is set to advance, the plug will also be fired at the positive RB0 edge if it has not already fired. Another calculation made within the microcontroller is for the engine RPM value. This calculation first divides the Timer2 count value by 16 and the result is then divided into 93,750/cylinder for a 4-stroke engine. The result is a value for the number of “100 RPM” increments. For example, lets assume that Timer2 has a count of 37,500 and we are running a 4-cylinder engine. The 37,500 is then divided by 16 to give a result of 2343. Dividing this value into 93,750/4 gives a value of 10. This is the number of “100 RPM” increments which in this case is equivalent to 1000 RPM. This calculation is correct because with a Timer2 count of 37,500, the period between pulses is 30ms because each count represents 800ns (800ns x 37,500 = 30ms). A 30ms period is 33.333Hz or 2000 pulses per minute. Since the engine is a 4-cylinder 4-stroke, there are two pulses per revolution and so the engine speed is 1000 RPM. Calculations are also required to convert the RPM and pressure sensor values to site values. These calculations are based on the size of the map selected (11x11 or 15x15) and the minimum and maximum RPM and load values. Further calculations perform the interpolations for the advance and retard values between both the RPM and load sites. the idle advance setting may make the engine hard to start. If necessary, the cranking timing can be made independent of the idle timing by lowering the minimum RPM setting to below idle but above the cranking speed. This will set the RPM1 sites for cranking only. Cranking RPM can be measured on the DIAG display during starting. Both the off-throttle and cruising settings can generally be advanced further to improve fuel economy. However, too much off-throttle and cruising advance can produce poor engine response if extra throttle is suddenly applied for acceleration. Any pinging (detonation) problems at high loads can be solved by reducing the advance. Note that with the 11x11 map, there are 121 individual adjustments that can be made at the various RPM and engine LOAD sites. You will probably not need to alter too many of these. Just adjust those sites that need to be changed to eliminate pinging (reduce the timing value) or to provide more power under load (increase the timing value). In practice, the vehicle can be driven with the Hand Controller connected if you wish to fine-tune the adjustments (get someone else to do the driving). However, it’s important to note that the Programmable Ignition will work best when the Hand Controller is in the settings mode, as selected using link LK1 on the Ignition Timing Module. The microcontroller then does not spend time updating the LCD module and this allows its program to be solely devoted to updating the timing. As a result, any responses to manifold pressure changes and RPM changes will not be hampered by display updates. The Hand Controller can be disconnected when all the settings have been entered. Note that it should only be connected or disconnected with the power to the Ignition Timing Module SC switched off. siliconchip.com.au May 2007  83