Cable driven --> DC motor driven speedometer. Via Hall Effect sensor

Note: I have checked with the local authorities here in Denmark and it is legal to do this modification as long as the speedometer either shows correct or a higher speed than that which I travel, but illegal to render the speedometer inoperative.

So the project begins:

I have an elderly Mercedes W124 E300D that I am modifying with a newer electronic transmission out of a W210 E320CDI. I have a Powertraincontrolsolutions controller for the transmission, this will control the transmission itself, so that’s covered.

Which leads me to my predicament. I cannot use the speedometer from the w210 model, as I have no clue whatsoever as to how to control CAN Bus or even feed it the correct signals.
I would like to retain the original speedometer/odometer, which was cable driven from the beginning. This cable snaked it’s way from the original gearbox worm drive mounted on the output shaft. That output shaft is missing on the newer gearbox.

So I am in need to control a small DC motor based on the input of a hall effect sensor sitting in the rear differential, IE vary the rpm of the DC motor according to the frequency received from the sensor.
As to my knowledge, the Hall Effect sensor outputs a square tooth voltage from 0-5 volts with varying frequency according to the speed of the input shaft.
This would be fed via an input on the Arduino board, interpreted by it and then sending a PWM voltage to the DC motor either attached to the cable or directly to the instrument cluster itself. Depending on the noise I get from that motor I would opt for using the cable or shortening it somewhat and hiding the motor behind the dash encased in soundproofing or in the engine compartment in a waterproof box.

The reason I chose the Arduino is that I can counter driving with 18" or bigger wheels in the summer and going back to 15" in the winter, correcting as I go instead of having a speedometer that changes display
If possible and this is further down the road I would like for a small 20x2 LCD to sit in the speedometer housing and display some stuff, mainly oil temp, outside temp, boost,

I would even pay for the code, as I know sh*t about coding, and prefer to do the electrics and the mechanical part.

I’ll get a quick and dirty diagram up over the mechanical parts and the electrical connections, so someone with a better mind can point me in the right direction.

Thank You in advance. * Spaceraver


Sounds doable and interesting.

To get accuracy of the DC motor you will also need an encoder or at least a hall/optical sensor on it also.

Just use a GPS to calibrate it.

I have an old GMC Yukon with dead speedometer and I mount the GPS on the dash and it has been acceptable for inspection.

You can also use the non-volatile memory in the Arduino to accumulate odometer miles. But I'd write it down periodically in case you make a major change.

Look at: and other Arduino-Vehicle stuff...

Keep your eyes on the road... :cold_sweat:

In searching for information on stepper motors I have come across the use of steppers in gauges. Could that application be useful to yours? - Scotty

Terryking228, I have thought about using a brushless DC motor or stepper motor to drive the speedometer and that in turn drives the odometer. or going with a very small dc motor to turn the odometer. But I really wanted to retain the original look and feel of the car. The rpm of the DC motor could be controlled by the Arduino on the fly by tapping into the hall sensor in the brushless motor. Calibrating it would be done by calculating the wheel circumference divided by the differential gearing. This would yield the most precise result.

I know the standard circumference of the wheel is 1993mm the wheel speed at 100 km/h is 836.1 RPM and differential gearing is 3.07 which gives me 2566,827 rpm in the input shaft to the differential. So the Arduino has to interpret the 2566.827 rpm which i will record off the rear ABS sensor. This has 31 teeth for every revolution, so multiplied by 2566,827 rpm that gives me 79751 pulses at 100 km/h. I do not know how fast an input the Arduino can take, I need to do some reading on the PWM input.

Scottyjr, I have looked at stepper motors but found them too noisy and bulky or lacking the power I need.


Don't forget that your 79751 figure is pulses/min. That's only ~1300Hz - no problem for a 16MHz processor to keep up with - an interrupt should do the job for you.

Hi Spaceraver. Per from Denmark here, too ;-)

I would use an Stepper motor to drive the speedometer cable, then you do not need to have any feedback from the motor.

Another option is to pull out a good DC motor with built in tachometer, usually these sit in older photo copiers etc.

If you have a simple DC motor, and need a tacho output, take apart an old ball-mouse - inside it you have two quadrature encoders, and you can cut out a portion of the PCB with the components on, and drill the small opto interrupter wheel and put on your motor axle. Try to get a DC motor with the axle sticking out either end of the case, so you can attach the tacho to one end, and the cable to the other end.

// Per.

Wildbill. So that gives me 79751/60=1326 pulses per second at 100 km/h. This is beginning to look easier than first expected.

Zapro. I have a few steppers here, mostly 24 volts and a few DC motors I have pulled out of a cordless drill, the drill motor is fast enough.. And noisy as hell. Plus I don't like the fact is get pretty warm even running for 5 minutes. So will probably go with a brushless hobby motor as they tend to run cooler or find a 12 volt or less stepper motor for cheap. With the right gearing and an ESC from the R/C world it would be doable.. I know the parts account for more than the sum of what I want to achieve.

Does anybody know how much torque a speedometer needs to function? I'm browsing this as i type:

But I will scrounge through my parts bin the size of my barn to find a suitable stepper or get one from a friend.

I would recommend a 12V stepper and a suitable driver.

It's too bad you are in the wrong end of Denmark, as I am situated in the Copenhagen area. I come in a hackerspace called Labitat and we would very much like to help you out :)

A fellow member of the club makes parts for RepRap's (DIY 3D printer)

A suitable Stepper driver:

I can find a suitable motor in my stash during the week and it's yours for the postage. Send me a PM if you need this.

The speedo needs almost nothing regarding torque, so it's no problem driving it - You can try turning the cable by hand to see how little force is required.

// Per.

What ever happened with this project? Did you finish it?