Joined
·
67 Posts
There are plenty of different electronic ignition systems in existence and I have no pretension of building anything better than what is already available. This was merely a personal challenge to see if the Arduino Nano can be used to build an ultra-low budget fully-programmable ignition system (I paid $2.63 for the nano including shipping).
The general architecture: the nano replaces both the mechanical centrifugal advance and the vacuum advance circuits. It uses the distributor points or an electronic points replacement, e.g.Pertronix, as a trigger. Since the points no longer switch the coil current, their lifetime and service interval are vastly improved. Using a distributor trigger eliminates the need for a Motronic-style timing wheel. However, this causes some implications for the switch-on delay of the coil current, which will be discussed later.
The points are set to trigger at a 45deg advance angle. The nano then adds a delay to fire the coil at the desired timing. There is an inherent 140us processing delay, which limits the maximum spark advance range to 0 - 40deg. The actual switching of the coil is done by the Bosch module 0 227 100 124 (e.g. Volvo 640).
If the nano doesn't receive a trigger, it switches off the coil after half a second to prevent overheating.
The manifold absolute pressure is measured with a MAP-sensor from a '98 Camry, which is then converted to a vacuum advance delay by the nano.
The nano is being programmed in C, which shouldn't cause any problems to anyone who has ever worked with programming languages. The engine speed is being calculated from the trigger to trigger period, and the centrifugal advance is taken from a look-up table, that contains values for 0-6500rpm in steps of 100rpm.
Adding a rev-limiter to the program is trivial. I am using a hard limit that cuts the ignition entirely, but if desired, it would be easy to program a soft limit that merely retards the timing.
Implementing multi-spark operation is possible, too, but with a slow TCI system there would probably only be a benefit at idle speeds. CDI is better suited for multi-spark.
Points and Pertronix systems have a constant dwell angle that causes very long coil current durations at low rpms. Therefore, these systems use an external resistor and slow-risetime coils, to avoid overheating. An electronic ignition leaves the current on only for as long as it is needed (~3ms) and can use lower resistance coils with a stronger spark.
With the distributor trigger, the nano has to predict when the next trigger will come and switch on the coil current 3ms before the expected firing time. However, when the engine is being revved-up, there is an element of surprise and the next trigger will arrive earlier than expected. The coil current needs to be switched on a bit earlier with a safety margin or the coil will not have stored enough energy by the time a surprise trigger arrives. The worst case is revving up the engine in neutral. My engine takes about 1 second to rev from idle to 6000rpm. The required safety margin for this is insignificant at the highest rpms, but requires coil current durations of up to 10ms at the lowest rpms.
Only after I had the system running did I find out, that I could have made the programming task easier by using a "smart" Bosch module. For instance, the 0 227 100 139 (Saab 900) controls the dwell angle internally and requires only a simple trigger, instead of controlling on and off times by the nano. Of course, once the program is done, it's a non-issue and then the 0 227 100 124 allows more control over what the coil is doing.
The nano was put in a box and shielded cables were used, but I didn't use any filtering or opto-isolators to protect it further. So far, so good. The box has an external toggle switch that disables centrifugal and vacuum advance and fires the coil at a fixed 45deg delay. This mode is exclusively used to set the distributor to the timing mark on the flywheel with a timing light. I find it convenient to be able to set timing at higher rpms for a brighter strobe light. Also, with mechanical advance, particularly for a recurved dizzy, I am never quite sure if the advance is truly off, which would make the setting less reliable.
As an added feature, I included a potentiometer that advances or retards timing by up to 20 degrees. It is therefore possible to change static timing on the fly from within the car. This should make it easier to find the optimum timing when building the lookup table.
I had an old distributor in poor condition, that I didn't mind sacrificing for the project. The weights and springs were removed and the cam part was welded to the shaft. The two plates that normally house the vacuum advance were also welded together. There is a caveat: because timing changes are no longer done by rotating the cam or points, but by an electronic delay, the position of the distributor rotor relative to the 4 posts in the dizzy cap changes for different delay timings. Before welding the plates together, it is therefore extremely important to put them at an angle where the rotor will face the post in the cap for the entire 0 to 40deg timing range.
I'll talk about some issues encountered when operating the system in a car in following posts.
Thomas
The general architecture: the nano replaces both the mechanical centrifugal advance and the vacuum advance circuits. It uses the distributor points or an electronic points replacement, e.g.Pertronix, as a trigger. Since the points no longer switch the coil current, their lifetime and service interval are vastly improved. Using a distributor trigger eliminates the need for a Motronic-style timing wheel. However, this causes some implications for the switch-on delay of the coil current, which will be discussed later.
The points are set to trigger at a 45deg advance angle. The nano then adds a delay to fire the coil at the desired timing. There is an inherent 140us processing delay, which limits the maximum spark advance range to 0 - 40deg. The actual switching of the coil is done by the Bosch module 0 227 100 124 (e.g. Volvo 640).
If the nano doesn't receive a trigger, it switches off the coil after half a second to prevent overheating.
The manifold absolute pressure is measured with a MAP-sensor from a '98 Camry, which is then converted to a vacuum advance delay by the nano.
The nano is being programmed in C, which shouldn't cause any problems to anyone who has ever worked with programming languages. The engine speed is being calculated from the trigger to trigger period, and the centrifugal advance is taken from a look-up table, that contains values for 0-6500rpm in steps of 100rpm.
Adding a rev-limiter to the program is trivial. I am using a hard limit that cuts the ignition entirely, but if desired, it would be easy to program a soft limit that merely retards the timing.
Implementing multi-spark operation is possible, too, but with a slow TCI system there would probably only be a benefit at idle speeds. CDI is better suited for multi-spark.
Points and Pertronix systems have a constant dwell angle that causes very long coil current durations at low rpms. Therefore, these systems use an external resistor and slow-risetime coils, to avoid overheating. An electronic ignition leaves the current on only for as long as it is needed (~3ms) and can use lower resistance coils with a stronger spark.
With the distributor trigger, the nano has to predict when the next trigger will come and switch on the coil current 3ms before the expected firing time. However, when the engine is being revved-up, there is an element of surprise and the next trigger will arrive earlier than expected. The coil current needs to be switched on a bit earlier with a safety margin or the coil will not have stored enough energy by the time a surprise trigger arrives. The worst case is revving up the engine in neutral. My engine takes about 1 second to rev from idle to 6000rpm. The required safety margin for this is insignificant at the highest rpms, but requires coil current durations of up to 10ms at the lowest rpms.
Only after I had the system running did I find out, that I could have made the programming task easier by using a "smart" Bosch module. For instance, the 0 227 100 139 (Saab 900) controls the dwell angle internally and requires only a simple trigger, instead of controlling on and off times by the nano. Of course, once the program is done, it's a non-issue and then the 0 227 100 124 allows more control over what the coil is doing.
The nano was put in a box and shielded cables were used, but I didn't use any filtering or opto-isolators to protect it further. So far, so good. The box has an external toggle switch that disables centrifugal and vacuum advance and fires the coil at a fixed 45deg delay. This mode is exclusively used to set the distributor to the timing mark on the flywheel with a timing light. I find it convenient to be able to set timing at higher rpms for a brighter strobe light. Also, with mechanical advance, particularly for a recurved dizzy, I am never quite sure if the advance is truly off, which would make the setting less reliable.
As an added feature, I included a potentiometer that advances or retards timing by up to 20 degrees. It is therefore possible to change static timing on the fly from within the car. This should make it easier to find the optimum timing when building the lookup table.
I had an old distributor in poor condition, that I didn't mind sacrificing for the project. The weights and springs were removed and the cam part was welded to the shaft. The two plates that normally house the vacuum advance were also welded together. There is a caveat: because timing changes are no longer done by rotating the cam or points, but by an electronic delay, the position of the distributor rotor relative to the 4 posts in the dizzy cap changes for different delay timings. Before welding the plates together, it is therefore extremely important to put them at an angle where the rotor will face the post in the cap for the entire 0 to 40deg timing range.
I'll talk about some issues encountered when operating the system in a car in following posts.
Thomas
Attachments
-
97.1 KB Views: 2,872
-
120.7 KB Views: 2,280
-
147.4 KB Views: 1,276