I asked Jean of jbperf.com fame some time ago, if he could implement a VVT emulation function in the JimStim cpu. Specifically, I wanted to be able to change the phase between the cam and crank signals by using the spare pot on the stim. He said that it is not possible right now because the spare pot is not brought over to the cpu, but he would put it on his to-do list. Well, now that I have my MS2 running on the stock sensors rather than on the NA CAS back when I had the MS1, its time to do closed loop VVT control. Being a microcontroller guy, I like to do things because a) its fun and b) because I can.
Recently, my JimStim died on me, so I needed to build one from scratch. I took the liberty of building one with features not found on the JimStim:
1) proper CKP/CMP signals for my 2002 Miata w/VVT
2) VVT phasing
3) Coolant fan LED
4) A/C request w/LED
5) A/C relay and A/C fan LED
6) clutch & neutral switch emulation and LED
7) power steering switch emulation and LED
8) VREF check (red/green LED)
9) VSS emulation
10) CEL led
11) battery light LED
12) alternator field control LED
13) tachometer LED
14) system voltage potentiometer.
On the bench:
VVT phasing as seen on the scope:
Last edited by y8s; 08-24-2010 at 10:15 PM.
Reason: only the stuff after "=" goes in the youtube tags.
J_Man wrote a program that runs on a Windoze PC. (Just the cam and crank signals, with any pattern you like, and a means of changing the VVT phase). It outputs on the parallel port. I tried it, it works.
I had one in an ancient PC running under DOS (minus VVT), for the NB sensors.
I suggest also coding for a 12+1 crank trigger wheel (a la Honda K20 / RSX) for increased crank angle resolution / accuracy.
As long as all the sensors work and the crank/cam signals and phasing are exactly like the stock miata, I'll use that stim and get it working.
One thing that would be nice is if the stim had some way of telling me what cam angle it thinks its commanding WRT its base position so I can compare that to what my code thinks the angle is.
I can calculate that looking at the signals on the scope, but if your code is already calculating it, having some way of seeing it would be cool. If it takes too much coding to make that possible though then forget it.
This is going to be an ms3 1.1 feature which means we'll probably start doing alpha releases in the next month or so as we start working on the features that are going in that release.
There is absolutely no reason at all to go for a 12+1 crank trigger wheel when you can go for a 36-1 or a 60-2, if accuracy is what you want.
Actually I usually recommend using what is necessary. On an NA engine that doesn't accelerate very quick and doesn't have that much torque 12+1 is plenty. Going to 36-1 or 60-2 doesn't really help during steady state or during light acceleration or deceleration... Where it helps is under very heavy acceleration.
So for really fast accelerating turbo engines, 36-1 is good, 60-2 is great, but for an NA 1.6-2.0L engine, it's not really going to acclerate fast enough to cause major accuracy problems, so you can safely go with 12+1, and save some time on the ms2/ms3 CPU for doing other things.
12+1 at 8000 rpm is 1600 interrupts per second, 36-1 is 4800 interrupts per second, 60-2 is 8000 interrupts per second. Every time the CPU has to process an interrupt, it's not calculating a new pulse width or looking up a new ignition timing, etc... We can handle those numbers of teeth, but like I said, I'd go with only as much as you need.