Lämpötilan ilmoittaminen jännitteen perusteella

Kertokaahan joku että miten pyöräytän tämän lämpötila-asteiksi?
tässä totuustaulukko:

lämpö *C Resistanssi Laskennallinen jännite Jännitteen nousu / aste 0 27,2186 3,127637837 V 0,007617436 5 22,0211 3,089550659 V 0,008874071 10 17,9255 3,045180304 V 0,010247301 15 14,6735 2,993943797 V 0,011687401 20 12,0805 2,935506793 V 0,013188315 25 10 2,869565217 V 0,014784203 30 8,3145 2,7956442 V 0,016317727 35 6,9479 2,714055564 V 0,017806204 40 5,8336 2,625024545 V 0,019285013 45 4,9169 2,528599479 V 0,020603748 50 4,1609 2,425580738 V 0,021739782 55 3,535 2,316881827 V 0,022679469 60 3,0143 2,203484483 V 0,022981716 65 2,5861 2,088575904 V 0,023308742 70 2,2275 1,972032193 V 0,023499737 75 1,9245 1,854533509 V 0,023357388 80 1,6685 1,737746568 V

tällähetkellä mennään tälläisellä muunnostaulukolla:

[code]perus_arvo = analogRead(A1);
perus_jannite = (perus_arvo * aref_voltage / 1024);

if (perus_jannite < 3.127637837 && perus_jannite > 3.089550659) {kerroin1 = 0.031973011; }
else if (perus_jannite < 3.089550659 && perus_jannite > 3.045180304) {kerroin1 = 1.618358316; }
else if (perus_jannite < 3.045180304 && perus_jannite > 2.993943797) {kerroin1 = 3.283877801; }
else if (perus_jannite < 2.993943797 && perus_jannite > 2.935506793) {kerroin1 = 5.010114089; }
else if (perus_jannite < 2.935506793 && perus_jannite > 2.869565217) {kerroin1 = 6.813133613; }
else if (perus_jannite < 2.869565217 && perus_jannite > 2.795644200) {kerroin1 = 8.712121212; }
else if (perus_jannite < 2.795644200 && perus_jannite > 2.714055564) {kerroin1 = 10.73097929; }
else if (perus_jannite < 2.714055564 && perus_jannite > 2.625024545) {kerroin1 = 12.89583031; }
else if (perus_jannite < 2.625024545 && perus_jannite > 2.528599479) {kerroin1 = 15.23795276; }
else if (perus_jannite < 2.528599479 && perus_jannite > 2.425580738) {kerroin1 = 17.79641274; }
else if (perus_jannite < 2.425580738 && perus_jannite > 2.316881827) {kerroin1 = 20.61362016; }
else if (perus_jannite < 2.316881827 && perus_jannite > 2.203484483) {kerroin1 = 23.73880245; }
else if (perus_jannite < 2.203484483 && perus_jannite > 2.088575904) {kerroin1 = 27.22959952; }
else if (perus_jannite < 2.088575904 && perus_jannite > 1.972032193) {kerroin1 = 31.12168434; }
else if (perus_jannite < 1.972032193 && perus_jannite > 1.854533509) {kerroin1 = 35.49637792; }
else if (perus_jannite < 1.854533509 && perus_jannite > 1.737746568) {kerroin1 = 40.44143697; }

peruslampoaste = (perus_jannite * kerroin1);[/code]

muuten toimii ihan mutta kun 5v välein hypähtää aina… pitäis saada melkeinpä jännitteen perusteella asteen tarkkuudella ainakin arvo pihalle…

EDIT: keskimääräinen kertoimen nousu per aste on 0,2872


http://www.ladyada.net/learn/sensors/thermistor.html

Sieltä se vastaus sitten löytykin… :slight_smile: