Reading Automotive ECT Sensor

I have a simple 2wire Automotive Engine Coolant temp sensor, and need to read the resistance of the sensor with the arduino. What is the best way to go about reading resistance and outputing to serial monitor.

I haven't figured out all the different ranges yet but I don't need absolutely perfect readings (just close +/- 5degress F). I am just going to have a relay switch on or off when ECT reaches a certain resistances.

Preliminary Resistance Chart
Ambient Temperature °F (°C) - Ohms Between Test Pins
50 (10) 58,750
65 (18) 40,500
180 (82) 3600
220 (104) 1840

Below is a picture of the vehicle wiring diagram - I highlighted the circuit.
The Black/White Wire appears to just be Ground
and the computer just measures the resistance of the sensor to ground.

Thanks in advance for any help.

Upon further Research it appears the light green/yellow wire outputs approx 5v(variable voltage) and reads the resistance, followed by using lookup tables to convey the temp back to the ecm.
Also, Will I need to use the Vehicle Vref Signal to obtain somewhat accurate readings?

You can form a potential divider with a fixed resistance (the value of which should be similar to the value of the sensor's resistance at the temperature range of interest). Perhaps 10k would cover most of that range OK. With 5V at one end of the divider and 0V at the other you connect the mid node of the divider to an analog input.

Say the fixed resistor is R ohms and the sensor is S ohms (a function of temperature), connect 5V to fixed, then other end of fixed to analog input and sensor live, then sensor ground to 0V. The resultant value from the call to analogRead will be

val = 1024.0 * (S / (R+S))


S = R * (val / (1024.0 - val))

Then a table lookup (perhaps interpolated) for the sensor will give temperature

I think I may be going about this the wrong way. Instead of measuring the temp sensor's resistance, couldn't I just piggy back off the sensor . I believe the Engine Computer is using some sort of voltage divider already. It produces the below voltages at the corresponding temps.

Lookup Table Chart:

Temperature Resistance Voltage Drop
(K ?)
50° F (10° C) 58.75 ? 3.51 V DC
68° F (20° C) 37.30 ? 3.07 V DC
86° F (30° C) 24.27 ? 2.60 V DC
104° F (40° C) 16.15 ? 2.13 V DC
122° F (50° C) 10.97 ? 1.7 V DC
140° F (60° C) 7.70 ? 1.33 V DC
158° F (70° C) 5.37 ? 1.02 V DC
176° F (80° C) 3.84 ? 0.78 V DC
194° F (90° C) 2.80 ? 0.60 V DC
212° F (100° C) 2.07 ? 0.46 V DC

Here is a diagram of what I am implying:

Not sure if it works this way but essentialy I need to read the voltage of another circuit through the Analog Pins. (similar to the function of a multimeter) and output the number to an integer)
Is the Arduino capable of this without causing any damage. Maybe still need divider? I want to note that I cannot disconnect the sensor from the vehicle. The vehicle still requires this signal to run correctly.


You need to find if one side of the sensor is grounded or not. The polarity of the voltage across the sensor is important, so that you do not short the sensor with the Arduino.

You need to find if one side of the sensor is grounded or not. The polarity of the voltage across the sensor is important, so that you do not short the sensor with the Arduino.

The Black/White wire is ground: I tested the following conditions.
Key on connector disconnected from sensor - Has Ground
Key off connector disconnected from sensor - Has Ground
Key on Back-probing connector - Has Ground
Key off Back-probing connector - Has Ground

I am able to use a multimeter and back-probe the connector and read the correct voltages that correspond with the temperature chart above. I verified the actual Temperature using a infrared thermometer at the sensor.

So am I safe to assume the aurdino can accept (different source) input voltage up to 5v? Would an opamp be a good idea?

note: voltage measured at light green 5v wire from the engine computer was actually 4.6v with key on and sensor connector disconnected. with sensor connected it related to voltages on example lookup chart above.

As long as you are using a 5 volt Arduino rather than a 3 volt unit, this should be easy.

Arduino Ground to black/white ground wire
analog pin to (1k to 10k resistor) to sensor +volt output //the resistor will provide protection from mistakes.

Actually just using an atmega328p, I’m using the arduino
For testing because it is easier.

I think I will go go grab a 5v reg and simulate the condition of the vehicle and attempt
To get a reading. Thanks.

Did you manage to get it working ? I'm having the same setup but I'm getting wrong reading.

Would you put a Zener diode (5.1volt) across the two wires to prevent the Arduino from getting an over voltage(OV) condition into the A/D converter input? Or do we assume the ECT will prevent an OV condition from happening? Don't want to burn out an A/D channel or the whole board.