Use active automotive water temp thermistor for arduino

I am working on a fan control system for my vehicle using the arduino, and need to sense cooling water temperature. The existing sensor connected to the vehicle's ECM is a thermistor and I have its resistance curve. The ECM provides uses an internal 5V source through a 10K resistor which connects to the sensor and its internal A/D converter per the attached diagram.

I would like to intercept the wire going to the sensor, pick off the voltage, and send it to an analog pin on the arduino so that both the ECM and arduino can report the temperature. I will ground the arduino to the vehicle's battery ground.

I am assuming, perhaps mistakenly, that if I can read that voltage with a voltmeter and not affect the ECM's operation then connecting the ardunio's analog pin should work the same (i.e., have input impedance similar to the voltmeter).

Since the voltage would be proportional to the resistance, I can then use the Beta or SH method in the android to determine the temperature for use in the controller.

Comments, suggestions on this approach?

As long as the measured signa is <= Vcc of the controller, it ought to work.

Railroader:
As long as the measured signa is <= Vcc of the controller, it ought to work.

LOL. I first read that as 'sigma' and couldn't find out what that meant, then realized it was 'signal', and now can't figure that one out!

I interpret that to mean that the voltage of the ECM (controller) ahead of the 10K resistor must be higher than the voltage across the thermistor. I would guess it would have to be, since it drops through a 10K resistance on its way to the sensor. I believe the Vcc of the ECM is 5V since I know that other sensors connected to the ECM that need a voltage to operate expect 5V.

I printed out the diagram You attached. Now I wonder where do I find the temperature sensor?
Oh, You have a good reason to belive that sensors are powered by 5 volt and not 12 volt.
You can always use a multimeter between GND and the point where You want to tap the signal. That way You can be sure You will not fry the controller.

Railroader:
I printed out the diagram You attached. Now I wonder where do I find the temperature sensor?

Sorry, that is just the ECM internal part. I think the sensor is the 'BLK CTS' connection, 'CTS 1,3' is the ECM Vcc, and the unlabeled lead is the ADC. 10K would make sense for the voltage divider.

That is the part down and in the middle?
It does not look like a usual voltage divider. However voltages are divided in some way. The 10 kOhm might be an pullup to awoid noice.
As I said, measure the voltage at the sensor connecting point using ground, GND as reference. Do this when the temperature is low and when it is at its maximum- Then You will know what signal level and what swing You need to handle.

Railroader:
That is the part down and in the middle?
It does not look like a usual voltage divider. However voltages are divided in some way. The 10 kOhm might be an pullup to awoid noice.
As I said, measure the voltage at the sensor connecting point using ground, GND as reference. Do this when the temperature is low and when it is at its maximum- Then You will know what signal level and what swing You need to handle.

I'll do the measurements... the vehicle is not available right now, but when I retrieve it I'll put a voltmeter on it and record voltages as the cooling water heats up to operating temperature.

I looked at the schematics again and was able to figure out what the numbers on the leads mean...

  • BLK_CTS goes to the thermistor
  • CTS (1,3) goes to the A/D
  • The resistance in the vertical lead is 1K, and presumably goes to the 5V supply. So if I understand how thi works, the 5V supply is divided between that 1K and the thermistor resistance. That translates to a voltage range of from around 5V down to about 4V, which seems wrong.

Thanks for your help.. I'll post here once I we can to brave the wide, wide world.

Okey. Do that checking, measuring.
Can You confirm that the other end of thermistor connects to GND, I'm with You.

Railroader:
Okey. Do that checking, measuring.
Can You confirm that the other end of thermistor connects to GND, I'm with You.

Here is the harness diagram (partial) that shows the cooling temp sensor that I want to use. I see that ground is connected to the ECM 'sensor ground'. That diagram also shows that a 'system ground' pin is connected to the engine battery ground. I'll have to see if the internal schematic gives me a clue about how the grounds are connected.

Capture1.JPG

That's fine. Just to be sure, measure the voltage across the temperature sensor at a low engine temp and at "high" temp to make sure it doesn't exceed 5 volts. Cars mostly have 12 volt systems and distributing a regulated 5 volt "all around the car" sounds surpricing to me.

Be prepaired for none linearity of the sensor. I worked with such stuff measuring temps i heavy fork lift trucks. The charateristic curve was divided in 3 parts, each part treated as being linear.

If You can find out more about the sensor it would be good.

Yes, I will measure the voltage at several operating temperatures to verify that the voltages properly reflect the changing resistance of the thermistor. It's rather hard to measure the 'high' temperature without finding a mountain pass to climb on a hot day but easy to measure from ambient to engine working temp on startup.

The sensor is a typical one for GM vehicles in the 80's and 90's and is used as the cooling temperature input to the ECM that controls fuel and spark. Several of the sensors use the 5V supply from the ECM as their reference source. I installed a modified version of that ECM that is provided by a third party which allows me to load custom tuning scenarios (BIN files) on the fly and record the operating parameters. It also provides eight ADC points for additional sensors and for which I've added an external 5V supply. The (customized) harness carries 5V to various points on the engine. I suspect most vehicle ECMs use a low voltage for I/O.

The thermistor cooling temperature sensor is a Delphi TS10075. I have the data sheet with the (non-linear) degC/resistance table for which I've derived the Beta value using an online calculator. I'm not happy with the error when using that method, nor the S-H method using the A, B, and C values from that same calculator so I have a little more work to do - or just make a lookup table and interpolate between the published degC/resistance values.

With the dash gauge temp sensor and this one that I've installed for the carb-to-EFI conversion (this is on a '76 GMC Motorhome), I've run out of places to install a third sensor -hence this question. Thanks for all of your help with this, and with my first attempt at arduino (or any microprocessor) real time control.

For a little more (TMI?) about this project, I plan to install an electro-viscous fan clutch in place of the stock mechanical viscous clutch using a kit that was developed by another GMC MH enthusiast. (Aftermarket mechanical clutches these days are unreliable.) His kit is supplied with a 'bang-bang' controller and has been used successfully by others. My project is to replace that controller with a PID version. The electro-viscous clutch uses PWM for speed control (there is a small solenoid inside the clutch that allows more or less viscous fluid to pass into the coupling chamber - kind of like a torque converter). Motive power for the clutch is provided by the crankshaft - the more fluid that passes, the more the engine drags the fan around. The ECM provides a fan control on-off signal (12V) which I will use as a backup to my controller. The stock fans roar when they engage, but this one can maintain temperatures at about 50% duty cycle where they are much quieter.

Checking temp value at ambient and "normal", after driving around the block, having reached a stable temp is surely enough.
I made a try to get the characteristics of the sensor but didn't find it.

I once made a fan controll for heavy forklift trucks running in freezers, from -30 Celsius and up above ambient.
Dividing the temp interval, when cooling was needed, into 4 parts the fan ran at 0%, 25%, 50%, 75% or 100%. It worked very well and was a lot more easy then PID.
Let's say that You define some voltage readings corresponding to the temeperature levels You choose and You switch fan activity at those levels.

I'm not an automotive guy so I can't evaluate all of Your information.

Here is a link to the sensor (it is a crossover to the Delphi, according to Phoenix Sensors)

And here is the data sheet.

PTS40-Temperature-Probe-v2.1.pdf (439 KB)

Pic the resistance at the temperature points where You want the best measurements. As I said, don't overstate the goals for precision. I believe quite simple strategies can do wel.
And... You can divide the none linear characteristics into linear intervals.

Just a followup. With the ECM powered up and the connector to the temp sensor opened, I measured 5.06 volts from the ECM, which i believe confirms that the ECM V+ voltage is (nominally) 5V.

I like the idea of dividing up the temp range; it certainly simplifies things. So make a table that says 'if the temperature of the coolant is between 195 and 200, run fan at 20%; if it's between 200 and 205, run fan at 40%', etc.

A long time since last time... Some none linear sensor advice a certain resistor and a certain factor, sometimes a fraction value, between certain points. I've worked with a 3 interval approximation being accurate within 3 degreees C.

I'd be going the digital route with a DS18B20 and leave the engine management system alone.

bluejets:
I'd be going the digital route with a DS18B20 and leave the engine management system alone.

https://core-electronics.com.au/waterproof-ds18b20-digital-temperature-sensor.html

Or epoxy your own thermistor to the radiator housing top and measure completely separate from the car's system.
Paul