Jak mierzyć temperaturę z Arduino?

Pomiar temperatury - jedna z pierwszych interakcji Arduino ze światem zewnętrznym. Użyjemy prostego czujnika analogowego. Jedyne co trzeba zrobić - to zmierzyć napięcie.

Jak to się je?

MCP9700 to czujnik analogowy, nie potrzebujący żadnych dodatkowych elementów do działania. Czyli, krótko mówiąc podpinamy masę, zasilanie i już możemy mierzyć temperaturę. Wartość temperatury będzie reprezentowana przez wartość napięcia zwracana przez czujnik. Mając "w ręku" napięcie, nie możemy jednak od razu powiedzieć jaka to jest temperatura. Zależność między tym napięciem a wartością fizyczną znajdziemy w karcie katalogowej czujnika.

Następny krok jest przeznaczony dla tych, którzy chcą się czegoś dowiedzieć o tym jak szukać informacji w kartach katalogowych, jeżeli chcesz po prostu podłączyć czujnik MCP9700 do Arduino pomiń ten krok

Karta katalogowa

Producenci do swoich podzespołów elektronicznych przygotowywują karty katalogowe, w których opisane są paramtery produktów. Jak ją odnaleźć? Zwykle wyszukowanie frazy KOD CZĘŚCI datasheet zwróci nam właściwy wynik.

Czego szukać w środku? W zależności od elementu karty mogą mieć jedną stronę, aż do kilkuset stron (np karty katalogowe mikrokontrolerów). Znajdziemy tam informacje o tym jakie zasilanie jest dopuszczalne, które wyprowadzenia jaki sygnał mają podłączony. Kartę czujnika temperatury MCP9700 możecie ściągnąć z Akademii

Ważne – nóżki są opisane tak jak widać je patrząc od spodu czujnika. I tak: do 1 podłączamy napięcie zasilania (zarówno 3.3V lub 5V z Arduino będzie OK), do 3 podłączamy masę (GND) a 2 do pinu Analog 0 na Arduino. W tabelce w dokumentacji czujnika na stronie drugiej mamy pozycję Output Voltage, przy temperaturze 0°C – 500 mV. Z pierwszej strony PDFa wiemy że czułość wynosi 10 mV/ºC. I to wszystko co nam potrzeba aby napisać prosty program:

float temp;
void setup() {
  Serial.begin(57600);
};
void loop () {
  temp = analogRead(0)*5/1024.0;
  temp = temp - 0.5;
  temp = temp / 0.01;
  Serial.println(temp);
  delay(500);
};

Program odczytuję temperaturę i wysyła odczyt na Serial, z którego możemy go odczytać korzystając z monitora port szeregowego w Arduino IDE (Skrót klawiszowy CTRL + SHIFT + M). Jak liczona jest temperatura? Rozbiłem ten proces na trzy kroki tak, aby łatwiej było go prześledzić:

Odczyt wartości

temp = analogRead(0)*5/1024.0;

Odczytujemy wartość z wejścia analogowego i przeliczamy na napięcie. Maksymalne napięcie mierzone przez Arduino to 5V a dokładność przetwornika A/D to 10 bitów, czyli 1024 wartości. Dlatego wartość napięcia na wejściu Analog0 to wartość zwrócona przez analogRead pomnożona przez napięcie przypadające na jeden krok przetwornika A/D. Trzeba pamiętać, że dzielenie dwóch liczb 5 i 1024 będzie przez kompilator potraktowane jako operacja na liczbach całkowitych i wynik takiego dzielenia to w takim wypadku to też liczba całkowita – zero. Dlatego w zapisie pojawia się 1024.0 Dzięki temu kompilator dokona dzielenia o jakie nam chodzi i wynik będzie liczbą niecałkowitą.

temp = temp - 0.5;

Skalujemy do 0°C – różnica między napięciem odczytanym z czujnika a 500 mV jest liniowo zależna od temperatury.

temp = temp / 0.01; 

Tą różnicę dzielimy przez 10mV na stopień i mamy temperaturę

Jak widać czujnik MCP9700 jest bardzo łatwy w zastosowaniu i przyjazny dla początkujących. Teraz już każdy może zmierzyć temperaturę z Arduino.

Czego się nauczyliśmy