DIY digital speedometer corrector

OldBuzzard

nerd before it was cool
Original poster
Supporting Member
Ride of the Month Winner
Joined
Sep 19, 2021
Messages
1,966
Location
Colorado, USA
Speedometer Corrector #1

A couple of years ago, when I was getting ready for bigger tires and a gear change, I built a digital speedometer corrector. It's designed around an Arduino Pro Mini (a standard Arduino, same AVR processor as the Uno, but tiny and without the USB interface).

It's based on a design by Tom M'Guinness for his 1986 Porsche 944 Turbo.
I modified his hardware a little to work with the TJ. I tweaked his firmware just a tiny bit, but it's still 98% Tom's code. He used a pot to adjust the correction factor. That's really convenient, but I wanted exact repeatability and the ability to step to the next notch up or down, so I used an 8-bit DIP-switch instead. Less convenient, more exact. Frankly, I don't know which one I like better.

This was a first go at it, and I expected to have to alter it, so I did nothing to make it small. It's on a sea-of-holes breadboard in a 4.5" x 3.5" x 2" box. I wired the cable into a pair of OEM connecters and plugged it in between the vehicle wiring and the speed sensor. That makes it easy to remove, and no OEM wires were cut. I ran the cable through a hole in the tunnel under the console, to sit under the driver seat. I had planned to eventually shrink it, and move it under the dash or under the hood.

Speedo_01.jpg


Speedo_02.jpg


I installed it, calibrated it, and enjoyed it. I went from 31" to 33" tires, calibrated it again, and enjoyed it. Switched from 3.73 to 4.56 gears, calibrated again, and enjoyed it. It's very accurate, and has worked perfectly for over two years.

I eventually found that I didn't need a support chip, so I removed it and jumpered across pins in the socket. That's the only tweak I've done to it (and it's possible that some TJs would need that chip, it's a Schmitt Trigger to clean up the signal from the Vehicle Speed Sensor).

I recently placed the design on GitHub:
https://github.com/OldBuzz/Speedometer-Corrector-Arduino-based

I do not plan to develop this one any further, or shrink it.

But wait, there's more...
 
Speedometer Corrector #2

I used the Arduino-based speedometer corrector, above, for over two years, and it worked great. No problems, no glitches. But I wanted to make something smaller, so I designed a new one. This time it's based on a PIC microcontroller, which is available as an 18-pin through-hole part, or a tiny surface-mount part.

The circuit is pretty similar to the original one. After all, there isn't very much there, aside from the "brain". It's much smaller, but could be made far smaller yet. The firmware is all new and completely different. Instead of using a single 32-bit timer counting microseconds like the Arduino does, this one uses two 16-bit timers counting 16-microsecond "ticks", one for the incoming signal, and one for the generated signal. I put more work into ensuring the very low speed (and stopped) condition behaves well, although I never caught the Arduino one misbehaving at a crawl/stop. It can be set in about 1/2 MPH increments (more precise than the Arduino's ~1 MPH increments).

It's still sitting under the driver seat, but I may put it under the dash some day. It could go under the hood, but I've already got it cabled where it is now.

Speedo_03.jpg


Speedo_04.jpg


Cable_01.jpg


I recently placed the design on GitHub as Open Source and Open Hardware:
https://github.com/OldBuzz/Speedometer-Corrector-PIC-based

I do not sell these, nor do I plan to. But if you're an electronics type, everything is there to build your own.
 
Last edited:
This is amazing. From a wiring standpoint, you just intercepted the speedo sender signal? IIRC that wire is in the bundle that comes over the trans hump and into the engine bay on the passenger side. What did you do to get that wire under your seat?
 
Actually, I did it the easy way. See that last photo of the cable? Those are OEM-type 3-pin connectors to match the Vehicle Speed Sensor. I just unplugged the cable over the tranny at the VSS, and plugged it into my cable, and plugged my cable into the VSS. Then I ran my cable through a hole in the tub under the console. The Speedometer Corrector is currently sitting under the driver seat, but after a bit more testing, I'll probably move it under the dash, or at least under the front of the console.
 
  • USA Proud
  • Like
Reactions: MichaelGH and hear
It must be that Depression-era mentality I inherited from my parents. Save a buck, make it yourself. 👴👵

To a large extent, I'm with you - being a cheap bastard and all that. OTOH, my dad would spent $50 worth of time and/or material to save 5 cents. But hey - if you enjoyed the project, that's all that counts. If it ever screws up, you'll know why and how to fix it. (y)
 
The hardware is pretty similar between the two versions, no advantage either way. And either one can be pretty small.

I didn't tweak the original author's Arduino firmware very much. It worked perfectly for the two years I ran it. But the author says he has spent quite a bit of time tweaking the code for handling very-low-speed and stopped conditions. That's in his newer code, evidently not available to us, since he's selling it in a device for old Porsches. I never ran into any funny business going slow or stopped.

My code in the PIC version works in a very different way. And I noticed the possibility of slow/stopped quirkiness, and added some code to block that. The quirk would be a pulsing speedo, or a steady non-zero speed, when you're crawling or stopped. I wasn't able to ever catch it doing that, even when I tried to make it happen. I've only put on a hundred miles with the new version, so I can't claim it's absolutely glitch-free.

The licenses are different. The Arduino one is non-commercial (you can't sell them) per the author. The PIC one is Open Source, Open Hardware.
 
  • Like
Reactions: MichaelGH
My biggest reason for using #1 is that (if I understood your post correctly) pushing the code to the device in v1 is very simple, but requires special tooling for v2?
 
Yes, burning an Arduino just needs free software and a USB cable. The PIC requires a PIC burner of some sort.
 
  • USA Proud
Reactions: hear
my speedo is wrong as it is, and I'm about to re-gear, and also change tire sizes but not all in one single operation so this will allow me to correct it along the way.
 
  • Like
Reactions: OldBuzzard