LAKI PINGVINI<>
092017<><>

Arduino: Termistori

Od zamrzivača do furune

Termistori su otpornici kod kojih se otpornost menja u odnosu na spoljnu temperaturu. Razlikujemo termistore sa negativnim (NTC) i pozitivnim (PTC) temperaturnim koeficijentom, a to zavisi od toga da li će se vrednosti sa povećanjem spoljne temperature povećavati ili smanjivati. NTC se uglavnom koriste za merenje ekstremno niskih i visokih temperatura (od -55°C do 200°C). PTC se upotrebljavaju kada se očekuju nagle promene temperature, unapred definisane i uglavnom u rasponu od 60°C do 120°C. Dolaze u raznim oblicima: radijalni (oblik diska), aksijalni (oblik valjka), ugrađeni u šraf ili u obliku sonde. Izrađuju se od raznih materijala, a oni koji nas interesuju kao spoljni omotač koriste staklo, silikon, ali to može biti i keramika i metal. S obzirom na to da su oni u suštini otpornici, prilikom prolaska struje kroz njih, dolazi do određenog zagrevanja samih rezistora koji mogu, u zavisnosti od upotrebe, da utiču na preciznost. Termistori se koriste svuda oko nas: mere temperature u kabini i motoru našeg četvorotočkaša, u klima uređajima, frižiderima i tako dalje. Termistori su zaduženi za očitavanje temperatura ključnih komponenti računara i možemo ih videti, recimo, ispod procesora ili na matičnoj ploči. Takođe se nalaze na obodu namotaja trafoa i prilikom većih opterećenja prvi stradaju. Tada je dovoljno malo zaseći papirni omotač na trafou do termistora i zameniti ga (autoru se takav peh desio na trafou Altekovih zvučnika). Tipova termistora ima mnogo, kao i njihovih namena, i kada bismo se dotakli svega, otišli bismo predaleko.

Mi smo za potrebe ovog teksta koristili NTC MF52 103 termistor. U pitanju je jedan od najčešćih koji se koriste u Arduino svetu i koji se mogu naći u online prodavnicama sa smešno niskom cenom (0,05 dolara). Da bi se dobila ispravna očitavanja, potrebno je znati određene parametre o datom termistoru. Prvi parametar je otpornost. Prema datasheetu (goo.gl/DR9TCL) za naš termistor vidimo da je na relativnoj sobnoj temperaturi (25°C) ta otpornost deset kilooma, sa dozvoljenom razlikom od oko deset procenata. Ovo ujedno znači i da nam treba jedan otpornik od deset kilooma, ali takođe znači da bi najispravnije bilo da se otpornost termistera izmeri unimerom na sobnoj temperaturi, s tim što su sada sobne temperature preko 30°C. Beta (B) konstanta predstavlja razliku između otpornosti i temperature u određenom temperaturnom opsegu (25/50°C > 10%) i u slučaju našeg termistora iznosi 3950. Preciznost našeg termistora je ±0.25°C.

Prvo treba da izvučemo ispravnu vrednost otpornosti termistora u odnosu na napon i otpornik koji ćemo upotrebiti. Arduino ne može da meri otpornost, već samo napon. Omov zakon glasi I=U/R, gde je jačina struje (I) u amperima jednaka odnosu napona struje (U) u voltima i električnog otpora u omima (O). Takođe znamo da analogno-digitalni konvertor Arduina ovaj napon konvertuje u vrednosti od 0 do 1023 (goo.gl/ynJTxo). Da bismo dobili konvertovano očitavanje iz analognog u digitalno, koristimo ovu jednačinu:

AnalogToDigital (ADC)=(U na analog pinu/5V)*1023

Ako je očitavanje na analognom pinu 0 volti, onda je i dobijena vrednost 0, ali ako je na pinu pet volti, onda je vrednost 1023, tako da ovaj broj koristimo za izračunavanje temperature od dobijenih vrednosti kao Vin u sledećoj jednačini naponskog razdelnika:

Gde je Vin=1023 (5V), Vout je dobijena analogno očitana vrednost termistora. R1=10000(10k?) i, na kraju, R2 je vrednost koja nama treba. Da bismo dobili R2, jednačinu postavljamo ovako:

Dobili smo digitalno očitanu vrednost termistora, a za dobijanje vrednosti u kelvinima (K) koristi se Štajnhart-Hartova jednačina (goo.gl/Bg1rQh) koja glasi:

Ovde su A (1,009249522e-03), B (2,378405444e-04) i C (2,019202697e-07) konstante. Znamo da apsolutna nula u kelvinima iznosi -273,15°C, pa je jednačina za konverziju u celzijuse: [°C]=[K]-273,15.

U slučaju Arduina, skeč ide ovako:

int tempPin = 0;

int Vout;

float R1 = 10000; //otpornost na sobnoj temperaturi 10K ili 10000 oma

float R2, Tk, Tc; //otpornost, temperatura u K, temperatura u C

float Ac = 1.009249522e-03, Bc = 2.378405444e-04, Cc = 2.019202697e-07; //konstante

void setup() {

Serial.begin(9600);

}

void loop() {

Vout = analogRead(tempPin);

R2 = R1 * (1023.0 / (float)Vout – 1.0); // konvertovanje iz analogne u digitalnu

Tk = (1.0 / (Ac + Bc*log(R2) + Cc*log(R2)*log(R2)*log(R2))); // temperatura u kelvinima (K)

Tc = Tk – 273.15; //temperatura u stepenima celzijusa

Serial.print(„Temperatura: „);

Serial.print(Tc);

Serial.println(„ °C”);

delay(2000);

}

Na ovaj način očitavanje temperature pratimo preko Serial Monitora, ali isto tako se vrednosti mogu prikazati na bilo kom ekranu koji se inače može povezati na Arduino.

Koliko su očitane vrednosti tačne? Nismo imali neophodne uređaje da ispitamo preciznost termistora, ali nam je pri ruci bio DHT22. Povezali smo uporedo sa termistorom i modul o kome smo već pisali i za koji znamo da je dosta precizan. Temperaturne vrednosti su se malo razlikovale, što možemo pripisati pomenutoj dozvoljenoj razlici od deset procenata. Razlika se može rešiti korigovanjem odnosa kelvin/celzijus u samom skeču.

Termistor možemo upotrebiti u bilo kom projektu gde nam je potrebna mala komponenta (0,5 sa 3,3 milimetra) koja će da odreaguje brzo, da traje dugo i da bude dosta precizna. Na kraju, kod stand alone projekata, gde je potrebno da se komponente zaleme, treba voditi računa da se lemljenje mora izvesti vrlo brzo i ne bliže od pet milimetara od samog termistora.

Dejan PETROVIĆ

 
Samba alati
Latte Dock 0.6.2
Stacer 1.0.7
Arduino: Termistori
Šta mislite o ovom tekstu?
Windows IoT Core
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2015. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 2.54
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera