Thanks Wally! Still haven't made it out to AZ, but sometime. Freaking google, you'd think owning youtube they'd be able to make a video work from picasa and not make me have to go setup another stupid account.
VSS - got it figured out. The 5/8-18 variable reluctance sensor wasn't screwed in far enough. A little tweaking and I got it. Now that I know VSS and RPM, the first "aha!" is that the trans is slipping. Most likely a line pressure cal issue, will sort it out later.
I need to get this VSS signal into the ECM, because the intent is to be able to pass smog with this eventually. To pass smog, the ECM has to publish vehicle speed over OBDII. I'm not going to try sending anything OBDII directly, because if I were a smog inspector I'd just think that fishy as hell and reject anything to do with it. So I need to let the EDC15 do it, which means I have to figure out the VW VSS.
I spun a VSS in a my drill while hooked up to a spare cluster and measured frequency; 96Hz = 63 mph. The VSS signal goes into the cluster, displays on the speedo, then goes out again to the ECM. Like this:
So I took another Arduino and programmed it to flip a digital pin 96 times a second. The cluster took it, and moved the needle to 63 mph. Then I made it sweep the signal, to give me something that was continuously changing. Again, the cluster displayed comfortably. But when I hooked up the Arduino signal generator to the ECM at T121/20, I got noise and fault codes.
18062 - Please check DTC Memory of Instrument Cluster
. P1654 - 35-00 -
17948 - Vehicle Speed Signal
. P1540 - 35-10 - Signal too High - Intermittent
My takeaway is that the cluster performs some conditioning and signal conversion. The cluster sends the ECU a different frequency signal than it recieves. When I connected the cluster output to T121/20, it all works fine. VCDS shows the road speed increasing, which means speed is going out over CAN... somewhere.
Go back to my CAN arduino.. I log all the data while the other arduino sweeps the speedo. 5 minutes of filtering, and I see that CAN ID 904 is responding with a sweep.
Byte 0 and Byte 2 are slightly different. I wonder if one is "calibrated" and the other raw. Either way, now I can get VSS off CAN.
Here's the other bit - the MegaShift GPIO has an option for a PWM signal proportional to speed. I need to build that circuit into the MegaShift, but should be possible. In the end, it will look like this: