I_R_W15_M03 Przykładowe projekty
Czujnik temperatury
Do budowy termometru użyjemy czujnika TMP36, który nadaje się do pomiaru temperatur w zakresie od –40 do +150°C. Sam czujnik ma postać ściętego z jednej strony cylindra z trzema wyprowadzeniami; jest to obudowa typu THT TO92.

Opiszmy wyprowadzenia czujnika. Gdy patrzymy na jego płaską stronę, a nóżki są skierowane do dołu (tak jak na zdjęciu wyżej), pierwsze wyprowadzenie od lewej strony jest plusem zasilania. Napięcie zasilające nie może być wyższe niż 5,5 V – zaznaczyliśmy to od razu podając dane techniczne czujnika.
Jeżeli podłączymy element TMP36 bezpośrednio do 9‑woltowej baterii, to czujnik z pewnością zostanie uszkodzony. Podłączenie za pośrednictwem płytki Arduino jest z kolei całkowicie bezpieczne, ponieważ jej napięcie robocze (5 V) mieści się w przedziale akceptowanym przez czujnik.
Drugie wyprowadzenie to wyjście analogowe, z którego odczytujemy napięcie, przeliczane następnie na temperaturę. Wreszcie trzecie wyprowadzenie to minus zasilania, który należy połączyć z masą.
Budowa układu
Elementy podłączamy według przedstawionego niżej schematu.

Realizacja projektu
Wyginamy wyprowadzenia czujnika TMP36 tak, abyśmy mogli je wetknąć w trzy otwory na płytce stykowej. Wpinamy czujnik pionowo – poszczególne wyprowadzenia powinny znajdować się w tej samej kolumnie, lecz w różnych wierszach.
Podłączamy zasilanie czujnika do szyny dodatniej. Jeden styk powinien znaleźć się obok wyprowadzenia czujnika (ważne, aby był to ten sam wiersz, po tej samej stronie płytki stykowej); drugi natomiast można umieścić w dowolnym miejscu szyny zasilającej. Łączymy masę czujnika z masą płytki stykowej.
Środkowe wyprowadzenie (wyjście) podłączamy do złącza analogowego (pinu) A0.
Podłączamy zasilanie i przewód masy.

Układ jest dość prosty. Aby jednak działał, należy uzupełnić go o odpowiedni program. Uruchamiamy aplikację Arduino IDE. Wydajemy polecenie Plik | Nowy. Zapisujemy od razu szkic pod nazwą termometr.
Definiujemy stałą odpowiadającą pinowi, do którego podłączono czujnik (A0), a w ciele funkcji setup() wskazujemy port szeregowy (Serial) łączący płytkę Arduino z komputerem oraz ustalamy szybkość transmisji.
W ciele funkcji loop() umieszczamy kolejną funkcję, pozwalającą na odczytanie napięcia z czujnika. Jest ono proporcjonalne do temperatury otoczenia. Temperaturze 0°C odpowiada napięcie 500 mV. Dzięki takiemu ustaleniu punktu zerowego można zmierzyć także temperatury ujemne. Zmiana temperatury na wyższą o 1°C oznacza zwiększenie napięcia wyjściowego czujnika o 10 mV; zmniejszenie temperatury o tę samą wartość skutkuje zmniejszeniem napięcia o 10 mV.
Ponieważ temperatura się zmienia, wartość reprezentująca ją w szkicu Arduino powinna być przechowywana w postaci zmiennej. Należy rozumieć to następująco: odczytaną z czujnika temperatury wartość napięcia trzeba zapisać jako zmienną odczyt:
Wartość zwróconą przez funkcję analogRead() należy przekształcić na rzeczywiste napięcie, które uzyskujemy z czujnika. Obliczamy ją ze wzoru: (odczytana wartość ⋅ 5 V). Wartość 5 V wynika z napięcia dostarczanego z płytki Arduino.
Uzyskany wynik dzielimy przez 1024. Dlaczego dokonujemy dzielenia i dlaczego akurat przez 1024? Otóż wynika to z rozdzielczości, z jaką odczytywany jest sygnał napięciowy z wejść analogowych płytki Arduino: może on osiągnąć jeden z 1024 poziomów (ponumerowanych od 0 do 1023).
Definiujemy kolejną zmienną; tym razem jednak zastosujemy typ float. Ma ona nazwę napiecie.
Należy pamiętać, aby w nazwach zmiennych nie stosować polskich znaków. Korzystając z typu danych float nie wolno również zapominać, że wszystkie liczby zapisujemy wraz z częścią ułamkową (ze znakiem kropki i liczbą po kropce). Robimy tak nawet wtedy, gdy chodzi o zapisanie liczby całkowitej (liczbę 5 należy zapisać jako 5.0).
Przekształcamy wartość napięcia na temperaturę w skali Celsjusza. Skorzystamy ze wzoru: ((obliczone napięcie [V] – 0.5 V) ⋅ 100), gdzie 0.5 V (czyli 500 mV) oznacza wartość początkową, odpowiadającą temperaturze 0°C.
Po dokonaniu obliczeń musimy określić sposób prezentacji wyników na ekranie.
Następnie wysyłamy szkic do płytki i w prawym górnym rogu okna programu Arduino IDE klikamy przycisk monitora portu szeregowego. Otrzymujemy następujący ciąg liczb:

Wyniki pomiaru temperatury wprawdzie się pojawiły, lecz są odświeżane tak szybko, że nie da się ich odczytać. Poza tym nie wiadomo, gdzie kończy się jedna liczba, a gdzie zaczyna następna.
Zmodyfikujmy zatem szkic, nakazując wyświetlanie każdej liczby w nowej linii. Użyjemy również funkcji delay(), dzięki której pokazywana wartość pozostanie na ekranie przez określony czas; dopiero później pojawi się następna liczba. Ponownie przesyłamy szkic do płytki i wywołujemy Monitor portu szeregowego.

Aby termometr wyglądał bardziej profesjonalnie, uzupełnimy szkic o dodatkowe elementy. Przed liczbą oznaczającą temperaturę będzie się pojawiał tekst „Temperatura:”, a za wyświetloną wartością liczbową dodamy frazę „stopni C”. Skorzystamy z tej samej funkcji, której użyliśmy do wyświetlania temperatury, jednak tekst, który w niej umieścimy, powinien zostać ujęty w cudzysłów.
Raz jeszcze przesyłamy szkic do płytki i wywołujemy monitor portu szeregowego. Następnie chwytamy w dwa palce czujnik, żeby odrobinę go podgrzać; zmiana temperatury powinna nastąpić błyskawicznie, a wyniki zobaczymy na ekranie.
Cały kod programu wygląda następująco: