Ta programska podpora omogoča Bascom AVR uporabnikom merjenje temperature z NTC termistorjem na zelo enostaven način. Narejena je programska knjižnica „NTC.inc“ s katero se izračunava trenutna temperatura uporabljenega NTC termistorja v °C, seveda odvisno od Beta vrednosti ali B-konstant termistorja in vrednosti AD konverzije napetosti, ki se menja s spremembo temperature NTC termistorja.
Avtor: Mladen Čempuh
Kaj je termistor?
Termistor je upor, kateremu se upornost v funkciji temperature znatno menja. V kolikor mu z rastjo temperature upornost raste, ima pozitiven temperaturni koeficient upornosti in to se imenuje PTC termistor. Če se mu z rastjo temperature upornost zmanjšuje, je to NTC termistor in ima negativen temperaturni koeficient upornosti. PTC termistorji imajo svojevrstno prelomno točko, kar lahko močno vpliva na upornost na nekaterih temperaturah in tako je uporaba PTC termistorja za merjenje temperature nekaj bolj zahtevna v nasprotju z uporabo NTC termistorja. V našem primeru bomo uporabili izključno NTC termistorje, katerih uporaba je zelo pogosta in te termistorji spadajo v poceni senzorje za elektronsko merjenje temperature. NTC termistorji so izdelani v kombinaciji kovinskih oksidov, ki so šli preko procesa sintranja, kar jim daje negativno električno upornost glede na temperaturo. Zato veliko negativnega nagiba in mala sprememba temperature povzročita veliko spremembo električne upornosti. Odvisnost upornosti termistorja od temperature je nelinearna, pa kljub takšni nelinearni karakteristiki se lahko zelo točno izračuna upornost termistorja v funkciji temperature in obratno. Razpon delovne temperature termistorja je odvisen od vrste materiala iz katerega je izdelan in najpogostejši obseg merjenja znaša od -55°C do 125°C.
Ta vsebina je samo za naročnike
Kako meriti temperaturo z NTC termistorjem s pomočjo mikrokontrolerja?
Obstaja več načinov kako to narediti.
Če merimo temperaturo v samo nekaj temperaturnih vrednostih (točkah), med VCC in GND serijsko vežemo NTC termistor in upor Rs približno iste vrednosti, kot je nazivna upornost NTC termistorja. Termistor in upor Rs tvorita delilnik napetosti. Naj bo npr. NTC termistor z enim koncem vezan na VCC, upor Rs pa z enim koncem vezan na GND. Merimo napetost na uporu Rs in določimo vrednosti AD konverzije, ko je NTC termistor na izbranih temperaturah. Te vrednosti AD konverzije vpišemo v naš program npr. znotraj If … Then ali Select … Case programskih segmentov ali na neki drugi način in programsko napišemo postopek, ki se mora izvršiti, kadar AD pretvorb doseže določeno vrednost. Za takšno merjenje moramo razpolagati s čim bolj točnim termometrom, ki ga uporabimo kot etalon. Poleg tega je potrebno imeti tudi opremo, s katero lahko termistor segrejemo in vzdržujemo na želeni temperaturi t.i. termo blok.
Takšna oprema, odvisno od točnosti vzdrževanja temperature, lahko ima znatno ceno. Odvisno od števila merilnih temperaturnih točk bi lahko bilo programiranje več ali manj komplicirano. To je nekontinuirano merjenje temperature. V nekaterih enostavnih primerih kadar npr. moramo vključiti nek grelnik pri eni fiksni temperaturi, in ga izključiti pri drugi fiksni temperaturi, je ta način je ustrezen.
Naslednji način je da nelinearno karakteristiko NTC termistorja pokušamo za ožje temperaturno merilno področje čim bolj linearizirati. To se naredi z vezavo upora paralelno z NTC termistorjem. Izračun vrednosti tega paralelnega upora za določeno temperaturno merilno področje, s katerim se linearizira karakteristika NTC termistorja, nie enostavna. Taj način se bolj pogosto uporablja pri analognih merilnih vezjih, ki so narejena z operacijskimi ojačevalniki ali pri mikrokontrolerjih, ki ne vsebujejo aritmetike s plavajočo vejico.
Za nelinearne elemente kot je NTC termistor obstaja t.i. Steinhart-Hartova enačba, ki povezuje temperaturo in upornost termistorja. To je enačba s 3 neznankami (konstante) A, B in C, ki jih moramo računsko določiti, ker jih proizvajalec NTC termistorja v glavnem ne navaja.
Steinhart-Hartove enačba je takšna, glej enačbo 1.
T je temperatura v K (Kelvinih), R je upornost termistorja pri temperaturi T.
Da bi matematično določili vrednosti neznank A, B in C, je potrebno napraviti tri meritve upornosti termistorja pri treh različnih temperaturah.
Pretvorba temperature iz Celzijeve skale v Kelvine se izvede po formuli:
T = t (°C) +273,15 K
Tako dobimo naslednje 3 enačbe, ki jih moramo rešiti, glej enačbo 2.
Po izračunu neznank A, B in C iz gornje enačbe lahko s pomočjo Steinhart-Hartove enačbe določimo absolutno temperaturo NTC termistorja (v Kelvinih) v odvisnosti od njegove upornosti. Ta način s točno izračunanimi vrednostmi za A , B in C daje najboljšo točnost, vendar zaradi večjega števila meritev in računanja ta način ni optimalen za programiranje merjenja temperature v AVR mikrokontrolerjih, čeprav ga je mogoče uporabiti.
Za merjenja temperature NTC termistorja s pomočjo AVR mikrokontrolerja je precej bolj ugodna t.i. Beta enačba, ki je manj točna od Steinhart-Hartove enačbe. To je poenostavljena verzija Steinhart-Hartove enačbe in ima samo eno konstanto t.i.. Beta vrednost (B-konstanto). Vsi proizvajalci NTC termistorjev v glavnem navajajo Beta vrednost v K (Kelvinih), če pa za neki NTC termistor nimamo tega podatka, ga lahko sami izračunamo z merjenjem upornosti termistorja pri sobni temperaturi npr. 20°C in pri neki višji temperaturi npr. 70°C .
Izračun Beta vrednosti, glej enačbo 3.
T1 je temperatura v K za sobno temperaturo npr. 20°C, T2 je višja temperatura v K za npr. 70°C, RT1 je upornost NTC termistorja pri temperaturi T1, RT2 je upornost NTC termistorja pri temperaturi T2. Za predhodno navedene temperature bo izračunana Beta vrednost imela oznako B20/70.
Za izračunano Beta vrednost B20/70 se temperatura NTC termistorja računa z uporabo Beta enačbe, glej enačbo 4.
V tej formuli B20/70 je izračunana Beta vrednost, Rth je upornost NTC termistorja na absolutni temperaturi T v Kelvinih, ki jo želimo določiti, Rth20C je upornost NTC termistorja na temperaturi 20°C.
Proizvajalci najbolj pogosto navajajo Beta vrednost B25/50 določeno z merjenjem upornosti NTC termistorja na temperaturah 25°C in 50°C ali pa B25/85 določene z merjenjem upornosti NTC termistorja na 25°C in 85°C.
Za Beta vrednosti proizvajalca se absolutna temperatura izračuna po Beta enačbi, glej enačbo 5.
V tej formuli B je Beta vrednost, ko jo je določil proizvajalec, Rth je upornost NTC termistorja pri absolutni temperaturi T, ki jo želimo izračunati, Rth25C je upornost NTC termistorja pri temperaturi 25°C.
Končna temperatura t(°C) se izračuna iz absolutne temperature T po formuli:
t(°C) = T – 273,15
Nazivna upornost NTC termistorja se daje za temperaturo 25°C. Vendar pa lahko imajo NTC termistorji pri temperaturi 25°C odstopanje nazivne upornosti od ±1% do ±5% pa tudi več, odvisno od razreda točnosti termistorja, ki jo navede proizvajalec. Prav tako ima Beta vrednost, ki jo daje proizvajalec, določen pogrešek. Predlagam, da za točnejše meritve uporabite termistor z odstopanji nazivne upornosti ne večjimi od ±1% in odstopanji Beta vrednosti do ±1%.
Za zmanjšanje pogreška meritve temperature NTC termistorja je važno čim bolj točno poznati njegovo upornost Rth25C (upornost pri 25°C). Ta upornost preverimo z Ohm-metrom, ko je termistor segret na 25°C. V kolikor je zaradi nekih razlogov problem zagotoviti ogretost termistorja na 25°C, se takrat s poznavanjem Beta vrednost, sobno temperaturo T v Kelvinih, na kateri se termistor nahaja in njegovo izmerjeno upornost pri tej sobni temperaturi Rth, lahko izračuna njegovo upornost Rth25C za temperaturo 25°C po formuli, glej enačbo 6.
T je sobna temperatura v Kelvinih, Rth je upornost termistorja v kΩ pri tej sobni temperaturi. T25C je temperatura 298,15 K, kar ustreza temperaturi 25°C, Rth25C je upornost termistorja v kΩ pri 25°C, e je baza naravnega logaritma, B je Beta vrednost termistorja.
Merjenje temperature NTC termistorja z AVR mikrokontrolerjem z Bascom AVR programsko podporo
Za merjenje temperature NTC termistorja z AVR mikrokontrolerjem ja bila napisana programska knjižnica “NTC.inc” za Bascom AVR.
Ta programska knjižnica podpira ukaz:
Ntc Beta , x
V tem ukazu je Beta številčna vrednost Beta tega NTC termistorja, x pa je neka splošna Single spremenljivka, v kateri se nahaja podatek o izračunani srednji vrednosti večjega števila zaporednih AD pretvorb napetosti na uporu Rs, ki je serijsko vezan z NTC termistorjem (glej shemo). Da bi se odstranile eventualne motnje na ADC vhodu in dobila čim bolj natančna ADC vrednost, ki je proporcionalna z napetostjo na Rs uporu, se naredi večje število AD pretvorb in iz njih se izračuna srednja vrednost v splošni Single spremenljivki x, v priloženem primeru je to v Single spremenljivki Adc_mean. V Bascom AVR programu “NTC temperatura.bas” za merjenje temperature z NTC termistorjem, sem za izračun srednje vrednosti izabral 100 zaporednih AD pretvorb, da bi si zagotovil kvalitetno filtriranje eventualnih motenj na ADC vhodu in da se decimalni del vrednosti temperature ne bi prehitro menjal. V tem primeru je izbran analogni vhod ADC0. Če obstaja potreba po hitrejšem izvrševanju Do-Loop zanke, se število branj za izračun srednje vrednosti AD konverzije lahko zmanjša na npr. 10 ali manj. Prav tako se lahko zmanjša pavza v ukazu Waitms na koncu Do-Loop zanke ali se ta pavza celo lahko odstrani.
Ukaz Ntc Beta, x iz ADC vrednosti v Single spremenljivki x najprej izračuna vrednost upornosti Rth za NTC termistor pri temperaturi, ki jo z njim merimo. Iz te upornosti z uporabo Beta enačbe izračuna se absolutna temperatura NTC termistorja v Kelvinih, z odštevanjem vrednosti 273,15 dobimo temperaturo NTC termistorja v °C, katero ukaz shrani v Single spremenljivko Ntc_temperature. Ta spremenljivka, kot tudi ostale potrebne spremenljivke, so dimenzionirane znotraj programske knjižnice “NTC.inc”. Znotraj navedene knjižnice je dimenzionirana tudi bit spremenljivka Ntc_err. Če je vrednost izračunane srednje vrednosti AD pretvorbe v Single spremenljivki x, ki je argument Ntc ukaza, manjša od 2, takrat je temperatura manjša od -70°C, to pa je izven merilnega področja termistorja ali pa je NTC termistor uničen ali pa je prekinjena žica. Če je x večji od 1021, takrat je temperatura večja od 280°C pri Beta vrednosti 3950 K, kar je prav tako izven merilnega področja večine termistorjev, ali pa je termistor uničen oziroma so njegove žice v kratkem stiku. V obeh the primerih ukaz Ntc Beta, x postavi bit spremenljivko Ntc_err. V kolikor je x v področju od 2 do 1021 to pomeni, da je NTC termistor dober in Ntc_err je 0. Mejne vrednosti za x lahko uporabnik po potrebi zamenja v knjižnici “NTC.inc”. Z uporabo stanja te bit spremenljivke lahko v uporabniškem programu izpišemo sporočilo o uničenem termistorju ali izpišemo izmerjeno temperaturo. Zaradi večje točnosti merjenja je v program potrebno vpisati izmerjeno vrednost upornosti Rs na kateri koli poprečni sobni temperaturi in točno vrednost upornosti Rth25c ki predstavlja upornost NTC termistorja na 25°C. Če je termistor na sobni temperaturi točno 25°C, potem izmerimo upornost NTC termistorja in to upornost vpišemo v program kot Rth25c Alias … . Če pa je sobna temperatura drugačna, potem jo izmerimo in izmerimo upornost NTC termistorja pri tej sobni temperaturi, ter z uporabo prej navedene formule za izračun upornosti Rth25C izračunamo upornost NTC termistorja za temperaturo 25°C in vpišemo to izračunano upornost v program.
Uporabljal sam NTC termistor MF52 od 10kΩ ±1%, Beta 3950 K ±1%, malih dimenzij, prevlečen z epoksi smolo, ki je primeren za merjenje temperature zraka, ter NTC termistorje W1209 z upornostjo 10kΩ ±1%, Beta 3950K ±1%, vodoodporne, v izvedbi s kablom in bakrenim prstanom za montažo z M4 vijakom in v paličasti izvedbi s kablom.
Shema vezja
Vezje se napaja s 5VDC. S trimer potenciometrom P1 se nastavi kontrast na LCD 1602. Dušilka L1 in kondenzator C4 tvorita filter za napajanje AD pretvornika v mikrokontrolerju preko pina AVCC. AD pretvornik se konfigurira tako, da je Reference = Avcc in pretvarja napetosti v obsegu od 0 do 5VDC. Mikrokontroler Atmega 8/8A/328P se programira preko ISP konektorja. Gate NMOSFET tranzistorja BS170 je vezan na izhod PB3, s katerim se vključuje ali izključuje osvetlitev ozadja LCD-ja. Če vgradimo kratkostičnik J1, je osvetlitev ozadja LCD-ja stalno vključena. NTC termistor upornosti 10kΩ se veže serijsko z uporom Rs vrednosti 10kΩ. Meri se napetost na uporu Rs preko ADC0 vhoda mikrokontrolerja. Opcijsko se paralelno uporu Rs lahko doda tudi keramični kondenzator C8 za dodatno filtriranje motenj, čeprav tudi sam program filtrira motnje na vhodu ADC0 (C8 ni obvezen). Mikrokontroler lahko dela na taktu internega RC oscilatorja (npr. 8MHz) ali na taktu določenim z zunanjim kvarčnim kristalom npr. 16MHz (v shemi označeno kot možnost). Namesto zgornjega vezja lahko uporabite Arduino Nano ali Arduino Uno.
Upam, da vam bodo ta članek in programska knjižnica “NTC.inc” ter priloženi primer Bascom AVR programa koristni in olajšati izdelavo raznih vaših vezij za merjenje temperature s pomočjo NTC termistorja.
Mladen_Cempus_NTC_temperatura