I am trying to use an Arduino to intercept and send out modified wheel speed readings on a 2014 Subaru Forester. The problem I am running into is the wheel speed signal.

From what I can tell the sensor is a Hall effect sensor. There are two wires going to it (12v and signal) All 4 wheel speed sensors plug into the chassis harness and end in the Vehicle Dynamics Control (VDC) unit. There are no teeth on the wheel the sensor is reading from so I am assuming it must be a magnetic encoder wheel.

With everything plugged in and the vehicle either running or just in the on position, I hooked my oscilloscope to the signal wire for the front right wheel and spun the wheel by hand. I was able to see a square wave with a period that varied based on the speed of the wheel. The issue is, the max and min voltages on the square wave only differ by ~160mV.

This is too low for the Arduino to read and seems strangely low for an automobile application. The only thing that I can think is that the comparator that is normally housed in the sensor its self is housed in the VDC unit.

I then disconnected the wheel speed sensor from the chassis harness to try and weed out electrical interference issues caused by the car running. With the sensor still installed in the wheel hub, I used my Power Probe III to provide 12 volts to the sensor and hooked the o-scope to the signal wire. The reading I got was just straight 12v with no fluctuation when I spun the wheel.

Basically I am a bit confused and lost. Do I just assume the 160mV square wave is correct and build a conditioning circuit with a comparator? or is there something else I am doing wrong?

Here is a link to the wiring diagrams I am working with in case that helps.

Any help will be much appreciated.

******Update******* I got the MAX9921 chips and holy cow those are small. Luckily I was able to find some surface mount breakout boards for the form factor.

Using a bread board I made this circuit: schematic

My only problem is when ordering parts I didnt notice that the capacitors on the input wires were .01uF caps and instead just ordered .1uf caps. I hooked it up with the .1uF caps and was able to get the output to trigger by touching the input to ground but when it is hooked to the wheel speed sensor and the wheel is spinning it wont trigger. I am guessing that the over sized cap is messing with the signal. Can anyone confirm what will happen to the square wave if a cap is added to it? I am going to pick up the correct cap and try it out.

  • \$\begingroup\$ Look at the Megasquirt website (Megamanual - schematics for V3 PCB), there's tried & tested circuits for hall/VR sensor input there. Worth noting if the sensor is VR rather than hall, the 160mV signal may get VERY big when the wheel is doing 70mph, amplitudes in the hundreds of volts are possible from VR sensors at high speeds despite only managing millivolts at low speeds. I think Maxim do a VR sensor conditioning & zero-crossing detect IC these days, might save you a lot of time. \$\endgroup\$ – John U Mar 16 '15 at 17:11
  • \$\begingroup\$ The signal that I am getting is a straight square wave and the sensor has 12v going to it. As far as I know that would be a hall effect sensor. I will check out the MS stuff. I don't know why I didn't think of that sooner. I MS'd my last car and there are tons of resources there. \$\endgroup\$ – bvallerand Mar 16 '15 at 17:36
  • \$\begingroup\$ I guess my big question right now is: Is it unusual to have a hall effect sensor that puts out such a small square wave? And what is the best way to verify my findings? I tired to verify my findings by testing the sensor with a static 12v supply but it no longer produced any sort of a wave. \$\endgroup\$ – bvallerand Mar 16 '15 at 19:14
  • \$\begingroup\$ @JohnU I just ordered some maxim MAX9921 chips which I believe should allow me to properly interpret the signal. \$\endgroup\$ – bvallerand Mar 16 '15 at 21:12
  • \$\begingroup\$ I got the MAX9921 chips and holy cow those are small. Luckily I was able to find some surface mount breakout boards for the form factor. \$\endgroup\$ – bvallerand Mar 27 '15 at 19:29

Most of the ABS speed sensors that I have seen are CURRENT-MODE devices. That is: they modulate the current passing though them rather than the voltage.

This has several significant benefits for the automotive manufacturer. The main benefit is the elimination of ground-induced noise in the sensor.

The easy way to verify this is to install a 100 Ohm resistor in series with one of the sensor leads. Then measure the voltage across that resistor.

I've made simple adapter boards for local auto enthusiasts. I had them identify the most positive lead going to each wheel sensor and interrupt that. I then used some Zetex ZXCT1008 hi-side current sensors to give me a proportional current output that was then converted to a voltage at the add-on board that they were using. The Zetex part is connected across an 18.2 Ohm resistor in series with the +12V lead feeding the sensor.

Again, keeping the sampled signal as a current eliminates ground-related problems for the add-on system.

  • \$\begingroup\$ Dwayne Reid and @Kevin White, your answers make perfect sense and I can't believe I forgot something so basic. That would allow me to read the pulses but I still need to be able to trick the VDC into not seeing wheel slip. If I disconnect the signal wire the VDC immediately cuts the power going to the wheel speed sensor. I checked the resistance across the sensor and it read 40k ohms. So I hooked a 40k resistor up but the ecu wouldnt give power which means it is not just looking at resistance or load. What else would it be looking at? \$\endgroup\$ – bvallerand Mar 28 '15 at 23:00

The sensor is probably using a communication interface called PSI-5. (PSI5.ORG)

The sensor actually modulates the supply current to send out the readings at 125kbits/sec. The ECU modulates the supply voltage to synchronize operation or transfer data to the sensor.

To sense the current you will need to have a resistor in series with the supply.


  • \$\begingroup\$ After looking into PSI-5 I don't think that is what they are using for this sensor. There is a very defined up/down corresponding to triggers on the trigger ring as opposed to multiple ticks corresponding to bits in a data packet. \$\endgroup\$ – bvallerand Mar 30 '15 at 14:13

The comment posted by @John-u ended up being the solution to my problem. The MAX9921 chips allowed me to read the signals from the wheel speed sensors. Of the two wires on the wheel speed sensor, one went to the input of the MAX9921 chip and the other went to ground. Following that, each trigger on the wheel caused a 5v pulse from the MAX9921 chip.


Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.