Monday, June 4, 2007

Hmmm

More thinking ahead...could I somehow use a coil of wire around plug wire #1 to induce 5V so this can be used by folks without an MSD?

Ideas Emerge

After a little brainstorming, I figure I could use the tach output on the MSD 6AL ignition module to track RPMs. It outputs a 12V square wave with a 20% duty cycle. I should be able to monitor the pulses, perform a little math and compute the RPMs over the polling interval. Sub-second would be preferred.



Should I monitor over a serial port, parallel port or USB? After doing some research, I decided that the easiest method would be to use the ACK pin on a parallel port that has "IRQ enable on ACK" configured.



The basic idea is to have a process that sets the parallel port as mentioned above, with an interrupt handler that increments an integer value in a shared memory segment to a maximum of 200 (12000 rpms). I have a 6000 rpm rev-limiting chip in the MSD 6AL, so I really only need it to count to 100, but what the heck, perhaps somebody with an RX-7/8 would like to use this, too. Meanwhile, another process would poll the shared memory segment every 1/n second, record the value and reset it to 0 to start a new cycle. Thinking ahead, the 2nd process would probably be replaced by a forked thread that does the same thing.



Process 1 is currently a simulated tach, an infinite loop with a 0.1 second nanosleep between calls to the function that increments the value in the shared memory segment. Next step is to move the function call out of the for-loop and call it when the interrupt occurs. To do that, I need to drop the 12V signal to 5V and put it to pin 10 on the parallel port. I'm thinking about using the LM2596 (oddly, I have a few laying around from another project) thusly:








My only concern is the response speed of the circuit. Will it be able to handle a 100-200Hz signal? After getting a nice 5V signal at the output, just have wire it though to pin 10 on the parallel port, and modify the code to handle the IRQ on ACK.



Process 2 is doing its job just fine. Future work is to make it a forked thread rather than its own process.

Introduction

I bought a 1967 Mustang when I was in high school for $300. It wasn't much to look at back then, and still isn't today, but it's my baby. I used it as a daily driver to & from college and beyond, until one day it spun a bearing.

It sat and sat while I drove a 1991 Mustang LX 5.0L and tried to getup some cash to start a restoration effort. Finally I had some money and found a shop in Manasquan, NJ to do the work. After MANY months of the work not getting done, I located another shop in Edison, NJ and they did a 302/C4 buildup for me. In April of 2000 I took it for its maiden voyage down the 1/4 mile at Raceway Park in Englishtown, NJ. 4 passes that day yielded a best time of 14.6 sec @95mph. Not too bad, but traction was an issue on puny street radials.

A year later I had a beautiful wife. A year after that we had our first house. Two years later came our baby girl. Work on the Mustang halted until this year. How time flies when you're having fun. It was IMPOSSIBLE that 7 years had actually passed!

This spring my dad and I dust the car off and get it prepped for the track. Well, 7 years of being started now & again has affected its performance. My best run this year is 15.380 seconds at 90.99 mph with a set of 255/50R16 BF Goodrich drag radials. Something is most certainly off. But, the nice folks over at Crazy Horse Racing in South Amboy, NJ are going to be lending a hand in getting me back to the mid-low 14s (perhaps quicker). We had a dyno session a few weeks ago. The torque curve looks funky, but she's making 245 RWHP at 6000 rpm.

I'd really like to know a few things about the car during a run (in order of importance):
  1. Engine RPM
  2. Transmission shift points
  3. Air Fuel Ratio
  4. Exhaust gas temperature
I've been jealous of all the late-model cars with their ECU's and assortment of real-time tuning tools. I'd really like to be able to monitor and track these values, too, so I can make educated decisions about what components to tweak.

Enter this project. At the very least, I'd like to be able to keep an eye on RPMs. I do not have a tachometer in the car, and a tach by itself is no good for looking at a run after it's over. Sure, some have 30 second memory/replay capabilities, but they're relatively expensive, and I like looking at line graphs, not a sweeping hand on a dial face. Besides, I rather not mount a big tach on my cracked & warped dash pad. It's bad enough as it is.