Dirt cheap electronic timing control by sberry

What is it?

Here is a concise explanation of how car ignition systems work.
Here is another good summary from a pontiac performance website.

The typical way to performance-tune the advance on your old volvo is to advance the distributor, drive under load and listen for pinging. Keep advancing until you hear some ping, then back off 2 or 3 degrees and lock down the distributor. This brings 'full advance' in earlier as you accelerate making the car snappier and adding a little more power. The pro's and con's of this method are debatable but it seems to be the common wisdom. Because it is so difficult to experiment with, few people outside of the racetrack have bothered to try modifying the advance curve through trial and error with different weights and springs. I tried using chevy distributor springs with unappealing results. I also found it difficult to run 45 degrees of advance without terrible starting behavior or pinging (9.5:1 compression).

Megasquirtnspark is a way to use a megasquirt fuel injection computer to control the timing advance of the engine in software. Using the same inputs as a distributor (RPM and vacuum) it can tell the coil when to spark. So instead of mucking with springs and the inherent limitations of the distributor's advance mechanism you can just lock the dizzy down and map the timing however you want using your laptop. It requires no hardware modifications to the megasquirt unit and adds 2 extra wires under the hood. It does take some surgery on the distributor to make it work but if you are able to get a MegaSquirt install up and running on a 30 year old tractor motor it is not rocket science.

Why do it?

Why not? If you have a working megasquirt it costs $5 and old distributor.

How does it work?

Instead of triggering the coil when the points open, that signal is instead sent to the megasquirt ECU at about 75 degrees before TDC (in my install). Megasquirt knows how fast the engine is turning and how much vacuum it is pulling. It uses those criteria to look up how much advance you want in a table similar to the one it uses to control fueling. That figure is calculated against the trigger and how fast the engine is turning to trigger the coil at the correct time. If you specified 10 degrees of advance at idle (1000 rpm and full vacuum) megasquirt will see the signal and count down 62 degrees (72 minus 10) before firing.

Distributor Modifications

Since megasquirt will be controlling the advance you will need to lock down the advance mechanism in your distributor. I did this by disassembling the distributor and removing the advance weights. Once the weights were removed I reinstalled the springs in their keepers and JB welded them closed for added protection. Without the weights tugging on the springs this should suffice. I have noticed no problems. This was on an earlier cast iron bosch distributor (009). If you have a later distributor with vacuum retard you will need to plug that up or disconnect it internally.

This distributor was designed to fire when the points open. The distributor cap's fixed orientation in relation to the points location reinforces that. Since the points gap open up to 72 crank degrees before the actual spark is going to happen a subtle problem surfaces. The rotor will no longer be pointing at (or near) a contact on the distributor cap when firing. My MSD box was chirping loudly across a 1/2" gap at idle inside of the cap. You could actually hear it inside the passenger compartment while driving. It was also making a mess inside of the distributor cap - long black tracks - after 400 miles of driving.

After thinking about it for a few days the eventual solution was actually pretty easy. I turned my motor to about 25 degrees before top dead center (average advance) and noted the position of the rotor tip in relation to the contact on the distributor. It was about 1/2" out. Reorienting the cap to the distributor body is the easiest solution. By figuring out where the contact should be I was able to take the distributor out, drill and tap new holes for the cap clamps, and reinstall. No more chirping. Your car will run without this step but a lot of spark energy will be wasted crossing this gap. The picture with the white and orange arrows to the right shows the original clamp orientation and the adjusted one.


My particular install uses a pertronix ignitor and MSD6A multispark box as part of the install. Points users and installs without an amplifier like the MSD will need to refer to the wisdom of the megasquirt forums and wire up a GM HEI module (common, cheap and durable). Note that I never figured out how to make the MSD tach output work with the stock tachometer and have switched to an aftermarket unit. The HEI install may pose the same problems but you should still be able to pull the tach signal from the negative side of the coil. Anyone with a bit more knowledge than myself could figure out a conditioner for this circuit - unfortunately I was not able to.

The pertronix does not directly produce a signal suitable for the megasquirt to digest. The solution is to hook up a 'pullup resistor' using an 800ohm resistor and a 12v source (ignition switched). I had a suitable resistor left over from building the megasquirt but should be able to find one at radioshack for $.50. This trigger signal is sent to the RPM input of megasquirt (pin 24 or the TACH hookup on the relay board).

The second half of the circuit is used to trigger your ignition amplifier. Megasquirtnspark is designed to hijack the output usually used to close a fast idle valve. The fast idle circuit uses one of the relays on the relay board. It is unnecessary to use the relay for megasquirtnspark, in fact it is a bad idea because the relay would be switching multiple times per second and would likely fail. I decided I did not want to chop up my relay harness so I used a multimeter to find the spade in the fast idle relay socket connected directly to the DB37 connector. I removed the relay and took the signal directly from there. Pretty easy - see the picture to the right.


Loading the code

Download the latest stable MSnS code from the yahoo website. Use Easytherm, follow the directions and don't forget to change your sensor values. Use the spark table from the next section (rough, but workable) and upload it to the controller using MegatuneSS software. Follow the initial startup directions. I ended up with a trigger angle of 75. If you are using an MSD box you will need to select 'inverted output'(!). Set the revlimiters wherever you feel comfortable. If you do everything correctly your car will run like a dream. I found a noticeable improvement even with this rough map. Might be in my head... If you have any troubles with these steps check out the megasquirtnspark forums or email me.

Timing Tuning

My spark map is below. I have very low values for cranking and I reach my maximum advance at light cruise. For now this is based on the default map that comes with MegatuneSS. After I get to the dyno I will experiment and try to return a good max power map. Note that every engine will have a different 'best map' and the idea of what constitutes a 'best map' is up for debate.

RPMRange = 1000 1500 2000 2500 3000 4000 5000 6000
MAPRange = 25 30 50 60 70 80 90 100
SparkTimeMAP0 = 14 10 15 18 20 25 27 28
SparkTimeMAP1 = 14 30 33 37 45 47 47 47
SparkTimeMAP2 = 14 31 36 40 43 46 46 46
SparkTimeMAP3 = 14 25 33 38 40 45 46 46
SparkTimeMAP4 = 3 24 30 34 35 41 42 43
SparkTimeMAP5 = 3 22 24 30 31 38 40 40
SparkTimeMAP6 = 3 20 22 26 28 35 37 37
SparkTimeMAP7 = 3 19 20 23 25 33 34 34
TriggAngle = 75
CrankAngle = 0
CrankTiming = Time
HoldCycles = 2
IgnitionOutput = Inverted

SoftRevLimRPM = 6300
SoftRevLimAngle = 5
SoftRevLimMaxTime = 5
SoftRevLimCoolTime = 1
HardRevLimRPM = 6500

Output1Source = -
Output2Source = -

Download this map (right-click to save)

This functionality is great for a normally aspirated engine. It is even better for a forced induction engine. Megasquirt is aware of precisely how much boost you are running. You can tune the spark table to pull advance in conjunction with high load/high boost situations. Experimental versions of the code have provisions for knock detection and even knock retard using inexpensive sensors. Having such a high degree of flexibility with spark timing and fueling should allow you to push your motor to the absolute limit. Good luck.