Go Down

Topic: How read signal from car oil temperature sensor? (Read 6008 times) previous topic - next topic


I am trying to read the temperatures coming out of my car's oil temperature sensors using my Arduino.

Does anyone know what I need to do?

All I know is that the oil temperature sensor is resistance based.

Any help is appreciated.



Did you want the car to be able to use the same sensor at the same time?  If so it probably already has a voltage across it.  One side is probably grounded and the other side is probably hooked to a power source.  You may be able to use a voltage divider to get the voltage drop across the sensor into the range 0 to 5V needed for the Arduino analog inputs.  Measure the voltage drop across the sensor on both a cold and hot engine and report back.
Send Bitcoin tips to: 1G2qoGwMRXx8az71DVP1E81jShxtbSh5Hp


More than likely the sensor is a thermistor. At room temperature the resistance will be around 2K ohms dropping to around 100 ohms as the temperature goes to 150 C. In a modern automobile one terminal probably goes to the ECM where it's connected through a resister to 5V. The other terminal is connected to ground. You will need to interface it to your Arduino through a high input impedance buffer so as not to affect the signal the ECM sees.


Get a service manual for your car and check the section for troubleshooting the oil temp sender (factory manuals are the best IMO) it should tell you which voltages are expected on which pins.  As long as the procedure doesn't require you to unplug the sensor to test it you can follow exactly the same procedure to interface with your arduino as long as you're using a high impedance circuit as EmilyJane said.


Remember that there willl be a lot of electrical noise present near a car engine so a low-pass RC filter is probably needed to reduce this before measuring the signal.


It Might take all the fun out of the project but you could extract that reading and a lot more directly from the ODB connector.


Aug 02, 2011, 08:43 pm Last Edit: Aug 03, 2011, 02:34 am by EmilyJane Reason: 1
I checked the Atmega328 data sheet after I posted. It looks like the input impedance to the ADC is 100 MOhms. That is high enough to prevent any loading of the input to your ECM.

Added thought:

There would be at least one advantage from buffering the signal. For example, use a single supply instrumentation amplifier with a separate reference pin like an AD623 or an AMP04 set for a gain of 1. The advantage would be that your signal would come into the IA differentially which, if you use a twisted pair for hookup, would give you lots of noise rejection. The reference pin would be grounded near your circuit which would also help with noise rejection. Finally, the low impedance output of the IA would help reject noise pickup at the input to the Arduino.


Thanks for all the replies.

The temperature sensor is from 0-150 degree centigrade range.

Imagine there no noise etc. How would my voltage divider look like?



Can you first measure the voltage across your transducer with a DMM and tell us what the value is at cold and hot?


I did not want to hijack your thread but I'm working on the exact same thing. I plotted the resistance of my 150c oil temp sender. You can see the plot in this thread: http://arduino.cc/forum/index.php/topic,69501.0.html.



Assuming you have done this and the value doesn't go above 5V, you can feed it directly into an analog input on your Arduino. Your question assumed there was no noise. If this is the case, you are good to go. If it turns out that your signal:noise ratio is unacceptable then you will need to do something else. Conditioning the signal with one of the instrumentation amplifiers I mentioned earlier is one of the things you can do.


Which pole do I feed into the Arduino?

Negative or positive?

So if I have understood this correctly, the oil temperature sensor in the car is already in a voltage divider circuit?



Aug 16, 2011, 06:49 pm Last Edit: Aug 16, 2011, 06:53 pm by retrolefty Reason: 1
Measuring just across the sensors terminals won't tell us if it's a ground based measurement or not, which the arduino needs as it's a single ended analog input measuring Vs the arduino ground reference. I would want reading both from across the sensor terminals and also each terminal Vs auto's ground. No?

I.E., one of the sensor's terminals must be at vehicles ground potential to be useful for wiring the other sensor terminal to a arduino analog input.



Correct, lefty. Almost all of this type sensor are ground referenced but a quick test will ensure that that is the case.

Once that is determined for sure, I would check to see that the sensor voltage doesn't exceed 5V. If it is a thermister, the highest reading will be when it is cold.

Then, obviously, the terminal that is positive with respect to ground goes into the Arduino. OP has already successfully wired up an exhaust gas temperature circuit so much of this he may already know.

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.

Thank you for subscribing!

via Egeo 16
Torino, 10131