Development of a generic GM 7x and 58x crank trigger system (Part 1)

November 29th, 2007

In my spare time I have been working on a system to adapt the GM 7x crank triggering system present on my 1.9L Saturn engine to an equivalent signal used by my SDS EM4-F with a hall effect pickup. In essence, I want to simply “T” off the factory 7x pickup, run that signal to my microcontroller based system, and have the micro send the SDS an equivalent pattern to what it would see if using the hall effect system it is designed for.What’s the point of this? Well it makes installing the SDS on 7x equipped cars a little easier and it also eliminates any problems caused by poor bracketing (on the users’s part) of their aftermarket trigger. I also believe that it can deliver more precise timing.

Additionaly, this system has the potential to be built in a user configurable fashion such that it could automatically figure out what triggering scheme is coming in, and generate any output signal pattern. For example, reading a 7x trigger and outputting 58x signals or vise versa. Note that 7x and 58x triggering combined account for probably 85% of General Motors vehicles sold globally from 1990 to present. Also, it’d be trivial to add additional triggering patterns from other manufacturers to the system (including cam trigger patterns). Anyway, I’ll have this prototype running my car soon and I’ll decide on future development at that time.

Basic 500 RPM operation

500 RPM screen capture

500 RPM 7x and SDS pulses

Here the basic operation is displayed for a few “crank rotations” from my 7x signal generator. We can see the period of one revolution at 500 RPM is 120 ms and the SDS pulses are obviously happening at the right times (100, 240, 280 crank degrees). What can’t be seen in this plot is the fact that the output pulses to the SDS are wider (up to 600 µs) at low rpm as there’s plenty of time for “wide” signals with no overlap.

Basic 10,000 RPM operation

10,000 RPM screen capture

10,000 RPM 7x and SDS pulses

Here we see a zoomed in capture at 10,000 RPM. The period is down to 6.0 ms as we would expect and the SDS output pulses are at their narrowest (150 µs).

10,000 RPM Trigger 1 event

10,000 RPM screen capture

Trigger 1 Pulse

Here I’ve measured the time delay from TDC to my “Trigger 1″ output pulse. Scope measurement shows 1.66 ms and the “correct” time delay for 100 deg ATDC @ 10,000 RPM is 1.667 ms so we’re right there. The actual error is much less than .007 ms as we will see in a little bit (when we zoom in further).

10,000 RPM Sync event

10,000 RPM screen capture

Sync Pulse

Here I’ve measured the time delay from TDC to my “Sync” output pulse. Scope measurement shows 4.00 ms and the “correct” time delay for 240 deg ATDC @ 10,000 RPM is 4.00 ms so this measurement is spot on. Note that this is the most difficult pulse to generate accurately in steady state as I have to swtich an output right as I’m receiving an input signal. If there’s no transient I can use timers to “schedule” the trigger pulses (which happen when there is no 7x input event) but I need tight code to record the 7x 240 degree event and switch the SDS Sync output with minimal skew.

10,000 RPM Trigger 2 event

10,000 RPM screen capture

Trigger 2 Pulse

Here I’ve measured the time delay from TDC to my “Trigger 2″ output pulse. Scope measurement shows 4.66 ms and the “correct” time delay for 280 deg ATDC @ 10,000 RPM is 4.667 ms so again it’s very close. Now we’ll zoom in and look at worst case skew.

Development of a generic GM 7x and 58x crank trigger system (Part 2)

November 26th, 2007

10,000 RPM Sync pulse skew measurement

10,000 RPM screen capture

Sync Pulse skew

If we zoom all the way in on the 240 degree event (which happens to be an input event from the 7x trigger and an output event to the SDS Sync input) we can see there’s approximately a 3 µs skew. This actually varies from about 2 µs to 3 µs (interrupt processing is a bit random) but I’ve captured the worst case here. 3 µs at 10,000 RPM is less than 0.2 crank degrees. This is more or less a fixed number (same 3 µs at 1000, 10,000, and 25,000 RPM) and I have a few ideas on how to reduce it. Either way, I don’t think the interrupt handling on the SDS EM4-F (Motorola HC11 powered) is precise enough to worry about this much anyway.

Basic 25,000 RPM operation

25,000 RPM screen capture

25,000 RPM 7x and SDS pulses

Just for kicks I cranked my 7x signal generator up to 25,000 RPM. This has the side benefit of allowing me to zoom in on my 100 and 280 degree output events and compare them to subsequently “close” 7x input pulses. Anyway, we can see that we’re spot on at a 2.40 ms period.

25,000 RPM Trigger 1 skew

25,000 RPM screen capture

25,000 Trigger 1 event

Here we can see the 100 deg ATDC Trigger 1 output being generated 201 µs after the 70 degree ATDC GM 7x pulse is seen. At 25,000 RPM this should happen 200 µs after 70 deg (100 – 70 = 30 deg = 200 µs). 0.000001 seconds isn’t bad tho. Less than 0.2 crank degrees. I can compensate for this timing error and eliminate it altogether, but no point worrying about that until I’ve trimmed down that 3 µs sync skew.

25,000 RPM Trigger 2 skew

25,000 RPM screen capture

25,000 Trigger 2 event

Here we can see the 280 deg ATDC Trigger 2 output being generated 132 µs before the 300 degree ATDC GM 7x pulse is seen. At 25,000 RPM this should happen 133 µs before 300 deg (300 – 280 = 20 deg = 133 µs). 0.000001 seconds of skew (late in ref to the 240 pulse, early in ref to the 300 pulse). 0.2 crank degrees. Again, I can compensate for this timing error and eliminate it altogether.

25,000 RPM Sync skew

25,000 RPM screen capture

25,000 Sync event

Here’s our 240 degree event when running at 25,000 RPM. That 3 µs error remains unchanged, but now that the engine speed has more than doubled (from when we were at 10,000 RPM) we have over 0.4 crank degrees of timing skew. This is “pretty bad” and I definitely wouldn’t sell a system like this and claim it would work well at 25,000 RPM (tho half a crank degree is probably nothing to worry about).

So those are the preliminary results. Note that all of those measurements were at steady state. My goal is to eliminate the skews at steady state (get all of them to less than 1 µs) then start working on a system to handle high transients (rapid engine acceleration) accurately. My stated goal is a maximum skew of 0.5 crank degrees during a rapid transient (such as a gear shift) in the 10,000 RPM operating range. At some point in its refinement however it will be good enough for the low speed engine in my car, and I’ll re-install the SDS with my prototype board and see how it works in a real test environment.

-David