Ntc thermistor to low frequency square wave

Hi!

I need some help for solving a problem i'm having, if it is even possible to solve this with an arduino.

I have a scooter dashboard with a temperature gauge which has one input pin that moves the gauge according to a low frequency square wave i send to it.

On the other side, the temperature probe in the engine is a ntc thermistor with a value of 2.25k ohms @ 20 degrees celsius and 108 ohms at 90 degrees. (These are the only values given in the manual)

After some fiddling with the gauge cluster and a function generator i've managed to figure out the frequencies that correspond to the gauge temperature readings:
20deg = 15Hz
40deg = 20Hz
60deg = 25Hz
80deg = 35Hz
90deg = 45Hz (eyeballed this one as 90deg is not marked on the cluster)
100deg = 60 Hz
120deg = 110Hz

Changing the amplitude or the duty cycle does nothing, But i found that the gauge works the smoothest at 50% duty cycle.

The lowest frequency the gauge registers is 14.65Hz, any lower it just maxes out the readout (the same happens if no signal is sent, i.e. sensor missing)

Using an online ntc calculator i got the approximate resistances for each temperature reading, as follows:
20deg = 2.25k ohm
40deg = 826 ohm
60deg = 342 ohm
80deg = 156 ohm
90deg = 108 ohm
100deg = 77 ohm
120deg = 41 ohm

I have also tried (and failed) making a board with a 555, but did not manage to get the required freq range for it to work properly.

My question now is, can the arduino do such low frequencies? As i've seen people use the tone library for generation, but the lowest that goes is around 30Hz.
Also would it be possible for the arduino to read the ntc's resistance and change the frequency accordingly?

I have some Pro micros and a few nano v3's on hand.
Also i cannot change the ntc as it is mounted in the cylinder head and seems to be manufacturer specific :frowning:

Any help, advice or guidance would be greatly appreciated!

What accuracy do You aim at?

Is it possible to take that ntc out and using any controlled varying heat source to ge more values?
NTCs are none linear.....

Those frequencies can be made using millis or microseconds timing provided a none blocking code.

Try the toneAC library.
Leo..

In regards to accuracy, i don't really need it to be spot on, forgot to write that the ntc tolerance is 15% in the manual. So a few degrees aren't an issue. I'd say if it was somewhere aroud 10 degrees accurate, that would be enough.

I'll take a look at millis and the toneAC library, tnx :slight_smile:

That sounds resonable and possible to handle.

Suppose loop() will read the NTC, use a look up table telling the frequency and then a toggled flip flop making the output frequency. Using microseconds I think You're good.

Could try multimap() for non-linear calibration.
analogRead to A/D value > multiMap to frequency > toneAC to square wave.

An 1k pull up resistor seems suitable for those thermistor values.
First try to make a table with temps and A/D values.
Leo..

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.