mister-grumbler / w1209-firmware

The functional eqivalent to the original firmware of "Digital Thermostat Module Model XH-W1209".
GNU General Public License v3.0
39 stars 23 forks source link

Thermistor 100 kOhm and temperature range 150-250 degrees #24

Open Creo2005 opened 1 year ago

Creo2005 commented 1 year ago

How can I configure these parameters in the firmware? Thanks.

rtek1000 commented 1 year ago

Hi,

I made modifications, added functions and improvements such as button debounce, I also explain how to modify the NTC reading table, code available at:

https://github.com/rtek1000/W1209-firmware-modified

jverban31 commented 1 year ago

How can I configure these parameters in the firmware? Thanks.

Hey, did you end up getting 150-250 on the W1209?

rtek1000 commented 1 year ago

Hi,

I haven't tested these special NTCs yet, the common NTCs usually have a reference table up to 125°C.

ntc_curve

I didn't find any datasheet of these special NTC to see their table. But we can infer some data from the NTC formula, which must be the same as a common NTC.

I only found ads for some NTC with this temperature range:

Thermistor temperature measurement is stable. The temperature measurement of the upgraded HT-NTC100K can be up to 350 degrees, can effectively replace the K-type thermocouple. It helps much to solve the issues of strict requirements of K-type thermocouple wiring, and the line is long which is susceptible to get external interference and result in temperature fluctuation that can affect the printing quality.

Using an NTC calculator in conjunction with a resistive divider calculator, we can obtain the voltage value that the analog input of the microcontroller should read.

The problem is that at high temperatures, NTC offers a smaller resistance differential for each degree of temperature increase.

For example using a 20k resistor for R1:

rd

245°C: 0.155V 246°C: 0.152V 247°C: 0.150V 248ºC: 0.148V 249°C: 0.146V 250°C: 0.144V

As the STM8 ADC is 10 bits, we have a reading of 0.004882813V for each bit.

245°C: 0.155V / 0.004882813V = 31.743996749 --> ADC = 31 246°C: 0.152V / 0.004882813V = 31.129596812 --> ADC = 31 247°C: 0.150V / 0.004882813V = 30.719996854 --> ADC = 30 248°C: 0.148V / 0.004882813V = 30.310396896 --> ADC = 30 249°C: 0.146V / 0.004882813V = 29.900796938 --> ADC = 29 250°C: 0.144V / 0.004882813V = 29.491196980 --> ADC = 29

Therefore, using the ADC of the STM8 (W1209), it may work with some oscillation for temperature readings as high as 250°C, and there is no longer enough resolution to get the reading of every degree.

Perhaps it would be more interesting to use a microcontroller with a 12-bit ADC (STM32).