Reading Resistance / Voltage from Fuel Sender Unit (modern vehicle)

Hello,

I'm trying to put together a project whereby the Arduino reads the voltage / resistance from a fuel tank sender unit but i'm getting confused. :~

The vehicle in question is the 2008+ ford transit. I always assumed fuel tank sender units worked thus:

  • -> potentiometer (in the fuel tank) -> output -> fuel gauge -> gnd
    -> gnd

So I had it all working great on the bench using the output from a potentiometer to read the voltage into an analog pin on the Arduino.

However! When we have come to connect to the vehicle in real life, instead of 2 wires going to the sender unit with one output there are just 2 - no output. So i figure, ok, this is one of those variable resistors (rheostat?) - but i'm now stumped as to how to read the change in voltage.

I have tried reading from the wire heading into the sender unit and then connecting to vehicles ground but the voltage does not change in relation to the position of the float (about 0.03v from memory). So should I use a voltage divider to obtain a referential voltage reading? If so, how should that be connected? Or i have i got the wrong end of the stick here?

It also seems that the wires head into a microprocessor, then into another loom and then into the PCB connected to the dash. Could it be that the microprocessor is purely reading the resistance and using that value to control the gauge? If so, that would explain the very low voltage reading that would barely register on the Arduino anyway. So i am equally doomed :disappointed_relieved:

Any help / pointers in the right direction would be gratefully appreciated!

Bump :cold_sweat:

Sounds like an interesting project. I'm no expert but after some google-fu I've found a stat on an aftermarket fuel guage vendor that your sender is likely (presuming they are correct for Ford worldwide) a rheostat ranging from 16-158 Ohms (Ford senders, 1987 and later). According to this site Diagnose Fuel Gauge, in Ford senders "the sending unit increases resistance as the fuel level drops and decreases resistance as the fuel level goes up", so that gives you the direction of the change.

In other posts here I've only seen how to measure resistance where the unknown resistor is between ground and the point where the value for the Arduino analogue sensor joins the circuit. I don't know enough about this to guide you on when the unknown resistor is between you and your +ve (3V ?) source but the trick might be to measure current rather than voltage. Whether that's possible without risking messing up the information read by the car's internal logic board, and therefore the workings of your actual fuel gauge is another question though.

Is it possible perhaps to tap the value on the gauge side of the microprocessor you found, as it might be that's a nice linear voltage change?

Do you intend to keep the existing gauge/controller connected? If so, that rules out a lot of options and the only way I can see to read the level yourself without affecting the other gauge is to read the voltage passively i.e. without the Arduino applying or drawing any power from the sender. I'd expect the sender to be a simple variable resister but perhaps there are other types. To find out how it works, I suggest you disconnect it from the loom and measure the resistance at a range of fuel levels. Also see what voltage is present on the wires that would connect to it. If it looks like a resistive sensor then you 'just' need to find what voltage the old controller applies, which pin have the variable signal, and the voltage range of that signal.

Make sure you measure that when the original gauge is actually working. On some cars the gauge is isolated by the alarm system and you can be mislead if you try to measure it when it's not actually working.