This project started as the result of a failed earlier project. I had attempted to build a motorcycle logger - i.e. a platform to record as many things as I could manage during a ride. I had rpm, gear, head temp (left and right), oil temp, oil pressure, speed, GPS location and ambient air temp. I was hoping to add the AFR. Although I got it all working, it would crash often. I tracked it down the way I was capturing rpm - by using the coil negative. I was getting some sort of noise, either RF from the spark plugs or maybe back EMF from the coil or something. I could figure it out and it made the project unstable.
Roll forward a few years. I ran across some info on this and found a reference to someone having a similar problem. They solved it by making sure the ground from the coil negative interface circuit went back to the battery, not the circuit board as the voltage spikes from the coil collapse and subsequent ringing would cause the processor to crash.
I wanted to play around with this, but I didn't want to do it on the bike. So I thought I would create test bed for running ignitions.
I came up with an Arduino that drives a DC motor. The motor is connected to a shaft that has a taper bored in one end to simulate the end of the cam. On the other end I mounted a magnet on a cross shaft. A hall effect sensor triggers when the magnet goes by and I use this to determine "TDC". I then cobbled together a couple of stock Lucas 17M6 coils, plugs, a motorcycle battery (as I need about 3W of 12V to drive the ignitions) and my trusty Tektronix TDS2024 scope.
I ended up using a circuit published by MegaSquirt for ignition pickup - basically using a 1N4001 and a 4N32 (optocoupler). It’s simple but seems to work pretty well. I used a simplified version of this circuit (no “John” Zener, no C31, C11 or C12. I may add the C11 and C12 in as I do get a bit of noise):
This circuit seems to work well. I think the key is making sure XG1goes back to the battery, not to the ground plane the uC uses (i.e. don't jumper to XG2).
The basic procedure is to mount an ignition, set it up so the spark happens before the magnet triggers the hall effect sensor and run a program I wrote on the Arduino. The program uses PWM to increase the motor speed by 1 (the Arduino allows 255 steps) and then determine the rpms and the amount of time between the spark event and the TDC event. This is converted to an angle and is the advance. By running from around 600 rpm to 6000 rpm and taking advance measurements, you can plot the curve.
I happen to have a small collection of ignitions I've collected over the years. A Boyer MicroMKII, an Old Britts PowerArc, an older and newer Trispark, and an ancient Lucas AB11. I have a decent AAU, but setting it up was a pain so I didn't test it.
A note about the reported values. The RPMs are crankshaft RPMs. The Advance angles are crank angles. You also must realize the advance angles are somewhat arbitrary as they are offset to the manufactures spec. In other words, when I run my setup I really don't know where TDC is in relation to the spark. (I didn't have an easy way to accurately determine this in the test rig.) I just set it up to be somewhere before TDC using my scope to verify. After the test run, I take the raw data and look for a "calibration" point - i.e. I know the ignition should be set to 28 degrees BTDC at 3500 rpm. So I simply find my closest 3500 rpm point, calculate how "off" my raw number is from the spec and then subtract that from my raw data. This seems to work pretty well.
HOWEVER - as DynoDave would probably point out, it's more meaningful probably to use cam shaft angles and absolute advance data. This effectively eliminates this attempt at aligning the advance with TDC.
Here's the data I used to set this up:
Lucas 31 degrees @ 5000 rpm
Boyer 31 degrees @ 5000 rpm
Trispark 28 degrees @ 3500 rpm
PowerArc 35 degrees @ 3600 rpm (taken off the Old Britts Web page).
So in order of evolution:
Lucas AB11 - this is an old analog ignition. What is interesting is the coil is on - i.e. energizing - almost the entire time. The only time this isn't true is when a spark happens and it's briefly grounded to get the field to collapse. I would guess this uses the most power due to this. In the following image the yellow trace is my hall effect sensor. When it goes low, that's TDC. As you can see about 2.7ms before that on the blue trace is the coil negative line. It goes low for 0.1-0.2 ms.
Next up is the Boyer MKIII. Another analog unit. It's coil on/off times are better, probably something like a 50% duty cycle (I forgot to take a picture).
What's very interesting to me is the Lucas and Boyer curves are almost identical.
I then tested two Trisparks. This is a digital ignition. I had an older one and a new one. (Apparently it was redesigned to better tolerate the heat in the timing cavity with more robust components.) They ended up with basically the same curve. You can clearly see the idle stabilization effects in the 1000 - 1500 rpm range. The Trispark seemed to manage the coil on times to minimize current load, but maintain a good spark. It seemed like they were trying to keep the on time to around 8ms.
Last up was the Old Britts PowerArc unit. It used a completely different pick up method - optical instead of magnetic. It also used a very different approach to managing the spark. This unit actually sparked three times for each cycle. In addition the coil on times were managed for each segment of the advance curve. In this picture you can clearly see the 3 pluses in the blue trace.
You can clearly see the digital nature of the ignition in the following graph. The increases in advance are very discrete. Since there 3 spark events per cycle, there are 3 advance curves. Four, if you count the coil on event.
Of course, being digital means you can have more than one mapping, so Old Britts supplies a "sport" curve meant to be a bit more aggressive.
It looks like the real difference is the 2nd and 3rd sparks are more advanced in the Sport version.
Here's an overlay of the two. Sorry about the jumbled legend ( I couldn't get Excel to sort it...)
I though it would be fun to overlay them all. I used the first spark event for the PowerArc curves, but as you can see - it looks a bit fishy. Perhaps someone with more experience can suggest a better way to compare apples to apples.
Well it's pretty clear to me which one is best. Although the analog units have been around for a long time and seem pretty reliable, they really don't offer the best curve. It's well known the Boyer has issues with low battery voltages (I even saw this during my tests when my test battery went low.). The Lucas is no longer being made so it's more of a curiosity I suppose. The PowerArc I found to be very fiddly getting it set up (i.e. getting it timed correctly and fooling around with the optical wheel). You have to set it's version of TDC to your bikes. However when you strobe it, there is no easy way to adjust this and it's very easy to be off a couple of degrees. I also found mounted on the bike, it was susceptible to kickback when starting - there is mention of a start procedure on the Old Britts site you'd better follow if you want your ankles. This leaves us with the Trispark. I think this is an awesome ignition. It's easy to install, easy to dial in, makes the bike run great, seems to have a nice curve and you get idle stabilization that literally transforms your bike.
Here's some links to information on curves I found around the net on this:
http://atlanticgreen.com/boyerexposed.htm (also has Lucas Rita!)