Spis treści:
Pomiary temperatury mają zastosowanie nie tylko w meteorologii, ale także w diagnostyce maszyn i urządzeń – do tego celu również można wykorzystać płytkę Arduino!
Pomiary temperatury za pomocą termistora i Arduino
W tym artykule przedstawiono budowę przykładowej aplikacji do pomiaru temperatury opartej na płytce Arduino UNO R3 i termistorze.
Czym jest i jak działa termistor?
Termistory są w istocie rezystorami, które zmieniają swoją rezystancję odpowiednio do temperatury w najbliższym fizycznym otoczeniu elementu. Typowo, termistory rozróżniamy na podstawie sposobu reakcji na zmianę temperatury, tj. termistory NTC (o ujemnym współczynniku temperaturowym) i termistory PTC (o dodatnim współczynniku temperaturowym). W przypadku termistorów NTC, wraz ze wzrostem temperatury rezystancja na zaciskach tego elementu maleje, a w termistorach PTC wraz ze wzrostem temperatury rezystancja wzrasta. Typowo w większości aplikacji przeważają jednak termistory NTC. Strukturę wewnętrzną takiego elementu stanowią substancje półprzewodnikowe, np. tlenki metali, które są wrażliwe na zmiany temperatury w odpowiednich zakresach i dzięki temu odpowiednio zmieniają swoją rezystancję. Materiał przewodzący zawiera nośniki ładunku, które umożliwiają przepływ przez niego prądu. Wskutek odpowiednio wysokich temperatur, materiał półprzewodnikowy uwalnia więcej nośników ładunku. W termistorach NTC wykonanych z tlenku żelaza nośnikami ładunku są elektrony. W termistorach NTC z tlenkiem niklu nośnikami ładunku są dziury elektronowe.
Jak podłączyć termistor do Arduino?
Teraz zbudujemy testowy układ oparty na płytce Arduino UNO R3 z termistorem NTC. Będzie to baza pod projekty urządzeń do pomiaru temperatury. Ponieważ konstrukcja termistora jest tak zaprojektowana, że jego rezystancja zmienia się pod wpływem zmian temperatury, należy w pierwszej kolejności zmierzyć jego rezystancję, która odpowiada konkretnej wartości temperatury. Z uwagi na to, że Arduino nie może wykonywać bezpośredniego pomiaru rezystancji, ale może mierzyć napięcie (za pomocą wbudowanego 10-bitowego przetwornika ADC), wystarczy zbudować prosty rezystancyjny dzielnik napięcia. Rezystancję dzielnika obliczamy ze wzoru (1.1):
VOUT = VIN*(R2,/(R1 + R2)) (1.1)
Gdzie:
VOUT – zmierzone napięcie pomiędzy termistorem a rezystorem [V]
VIN – wejściowe napięcie zasilania [V]
R1 – rezystancja rezystora [Ω]
R2 – rezystancja termistora [Ω]
Aby obliczyć rezystancję termistora dla zmierzonego przez Arduino napięcia wejściowego, wzór (1.1) wystarczy przekształcić do wzoru (1.2):
R2 = R1*((VIN/VOUT) – 1) (1.2)
W ten sposób, uzyskujemy wartość rezystancji termistora dla określonego napięcia, dzięki czemu możemy określić wartość temperatury.
Czujnik temperatury na Arduino – podłączenie układu
Teraz wystarczy podłączyć rezystor i termistor do Arduino. Aby łatwiej wykonać obliczenia, dobieramy rezystor o rezystancji zbliżonej do rezystancji termistora. W naszym przypadku, wybierzemy rezystor o rezystancji 100kΩ, więc również wybierzemy termistor o rezystancji 100kΩ. Aby sprawdzić, czy rezystancja termistora w temperaturze pokojowej jest w przybliżeniu równa rezystancji w temperaturze pokojowej, jaką deklaruje producent, sprawdź element za pomocą multimetru ustawionego w tryb omomierza na za zakresie pomiarowym nie mniejszym niż wartość rezystancji badanego termistora bez obciążenia. Jeśli rezystancja termistora w temperaturze pokojowej wynosi 34kΩ, wówczas jest to termistor 10kΩ, a jeśli termistor ma 10-krotnie wyższą rezystancję w temperaturze pokojowej, tj. 340kΩ, to jest to termistor 100kΩ. Wspólne Wyprowadzenie termistora i rezystora podłączamy do pinu “A1” w sekcji “ANALOG”. Natomiast drugie wyprowadzenie termistora podłączamy do pinu zasilania “5V”, a drugie wyprowadzenie rezystora – do masy, do pinu “GND”.
Czujnik temperatury na Arduino – odczyt temperatury z monitora porta szeregowego – kod programu
Poniższy kod programu w środowisku Arduino IDE, umożliwia odczyt temperatury z czujnika termistorowego w stopniach Fahrenheita i w stopniach Celsjusza:
//program odczytujacy temperature z termistora int Termistor = 1; //przypisanie pinu odczytywania napiecia z termistora int Vo; //odczyt napiecia dla termistora float R1 = 10000; //Rezystor staly 10kiloomow float logR2, R2, T, Tc, Tf; //deklaracja danych wejsciowych i wyjsciowych float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07; void setup() { Serial.begin(9600); //Uruchomienie transmisji szeregowej, predkosc 9600 baudow } void loop() { Vo = analogRead(Termistor); //odczyt napiecia z termistora R2 = R1 * (1023.0 / (float)Vo - 1.0); //obliczenie rezystancji termistora logR2 = log(R2); T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); Tc = T - 273.15; Tf = (Tc * 9.0)/ 5.0 + 32.0; Serial.print("Temperatura: "); //wyswietlanie wyniku temperatury Serial.print(Tf); //Temperatura w stopniach Farenheita Serial.print(" F; "); //Znak stopni Farenheita Serial.print(Tc); //Temperatura w stopniach Celsjusza Serial.println(" C"); //Znak Stopni Celsjusza delay(300); //Kolejny cykl pomiarowy za 300ms }
Aby zwiększyć walory praktyczne projektu, zalecamy umieszczenie układu w obudowie oraz wyprowadzenie czujnika termistorowego na zewnątrz na przewodach, których rezystancję należy dodać do rezystancji termistora pomiarowego.
Zobacz również
Jeśli dopiero zaczynasz swoją przygodę z Raspberry Pi, warto na początek zrealizować kilka prostych projektów dla początkujących. Sprawdź, czym kierować…
Pomiary temperatury mają zastosowanie nie tylko w meteorologii, ale także w diagnostyce maszyn i urządzeń - do tego celu również…
Jaki zasilacz do Raspberry Pi wybrać? Jakimi parametrami prądowymi powinien się charakteryzować? Poradnik dla początkujących. Jaki zasilacz do Raspberry Pi…