Hello everyone,
I have a project in mind and was looking for some guidance on circuit design and code outline. I'm an Arduino beginner but I think this project should be simple enough.
I've done an engine swap in my project car, and I'm interested in converting the coolant temperature data from the new engine into an output on the old dashboard thermometer. The new engine and ECU measure the coolant temp using a thermistor. The voltage across this thermistor is about 2 volts when cold, and 0.5 volts when at operating temperature, referenced to ground. The voltage drop is nonlinear, going quickly at first then slowing as the engine warms up.
On the coolant temperature gauge in the old dashboard, I believe it is just an analog gauge that's calibrated somehow for the temperature range. It receives battery +12 volts that flows through the ammeter and then through another thermistor to ground (the old thermistor is a different resistance and design than the new engine's thermistor, so it's not practical to hook it in directly). I did some quick measurements and got the following values from the old thermistor for resistance and current through the thermistor, compared to the temperature gauge indication:
Engine cold: 200 ohms, 42 mA
Engine at operating temp: 33 ohms, 127 mA
Engine overheating: 20 ohms, 160 mA
All measured when the battery voltage was 13.1 V
My current thought on circuit design is to use a Nano, powered through the on-board regulator by battery/alternator voltage. I'd use an analog input pin to measure the 2.0 V to 0.5 V thermistor voltage from the new engine. For the output, I'd use a PWM pin to drive a MOSFET that controls the current through the temperature gauge, essentially "pretending" to be the old thermistor. I do want this MOSFET to have a smooth continuous output, so I've read I'll either need a low pass filter or a DAC between the Arduino and the gate of the MOSFET.
For the code, I'll take some more measurements of the specific voltage across the new thermistor, and the resistance of the old thermistor at known temperatures (say every 10 degrees). Then I'd put this data into a couple of arrays, and have the Arduino correlate each sensed voltage to a temperature. This would then output a PWM signal to the MOSFET that would control the current through it, corresponding to the appropriate current that thermistor would pass at that temperature. For in-between temperatures, I'd use linear interpolation to approximate the expected voltage from the input.
I'm completely open to any thoughts, suggestions, improvements or redesigns. Let me know what you all think, any specific component suggestions, or if a similar problem has already been solved (my searching didn't find anything). I can't mess with the circuit on the new engine besides measuring the voltage, and I'm not willing to modify the dashboard, but all I want is a good enough display of temperature on the existing coolant temp gauge. Thanks for all the help and let me know if I can give any other info to help.


