Kategorie: Obwody mikrokontrolera
Liczba wyświetleń: 9996
Komentarze do artykułu: 0
Pomiar temperatury i wilgotności w Arduino - wybór sposobów
Aby stworzyć domową stację pogodową lub termometr, musisz nauczyć się parować tablicę Arduino z urządzeniem do pomiaru temperatury i wilgotności. Pomiar temperatury można rozwiązać za pomocą termistora lub czujnika cyfrowego DS18B20, ale do pomiaru wilgotności używaj bardziej złożonych urządzeń - czujników DHT11 lub DHT22. W tym artykule pokażemy, jak mierzyć temperaturę i wilgotność za pomocą Arduino i tych czujników.

Pomiar termistora
Najłatwiejszym sposobem ustalenia temperatury jest użycie termistor. Jest to rodzaj rezystora, którego rezystancja zależy od temperatury otoczenia. Istnieją termistory o dodatnim i ujemnym współczynniku temperaturowym rezystancji - odpowiednio PTC (zwane również pozystorami) i termistory NTC.
Na poniższym wykresie widać zależność rezystancji od temperatury. Linia przerywana pokazuje zależność dla ujemnego termistora TCS (NTC), a linia ciągła dla dodatniego termistora TCS (PTC).

Co tu widzimy Pierwszą rzeczą, która rzuca się w oczy, jest to, że harmonogram termistora PTC jest zepsuty i trudno będzie zmierzyć kilka wartości temperatury, ale harmonogram termistora NTC jest mniej więcej jednolity, choć wyraźnie nieliniowy. Co to znaczy Użycie termistora NTC jest łatwiejsze do pomiaru temperatury, ponieważ łatwiej jest znaleźć funkcję, według której zmieniają się jego wartości.
Aby przekonwertować temperaturę na rezystancję, możesz ręcznie przyjąć wartości, ale jest to trudne do zrobienia w domu i potrzebujesz termometru, aby określić rzeczywiste wartości temperatury medium. W arkuszach danych niektórych komponentów taka tabela jest podana, na przykład, dla serii termistorów NTC firmy Vishay.

Następnie możesz zorganizować tłumaczenie za pośrednictwem gałęzi za pomocą funkcji if ... else lub switchcase. Jeśli jednak nie ma takich tabel w arkuszach danych, musisz obliczyć funkcję, zgodnie z którą rezystancja zmienia się wraz ze wzrostem temperatury.
Aby opisać tę zmianę, istnieje równanie Steinharta-Harta.

gdzie A, B i C są stałymi termistorami wyznaczonymi przez pomiar trzech temperatur z różnicą co najmniej 10 stopni Celsjusza. Jednocześnie różne źródła wskazują, że dla typowego termistora NTC 10 kΩ są one równe:


B - współczynnik beta, jest obliczany na podstawie pomiaru rezystancji dla dwóch różnych temperatur. Jest to wskazane w arkuszu danych (jak pokazano poniżej) lub obliczane niezależnie.

W takim przypadku B jest wskazane w postaci:

Oznacza to, że współczynnik został obliczony na podstawie danych uzyskanych podczas pomiaru rezystancji w temperaturach 25 i 100 stopni Celsjusza, i jest to najczęstsza opcja. Następnie oblicza się go według wzoru:
B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)
Typowy schemat połączeń termistora z mikrokontrolerem pokazano poniżej.

Tutaj R1 jest rezystorem stałym, termistor jest podłączony do źródła zasilania, a dane są pobierane z punktu środkowego między nimi, schemat warunkowo wskazuje, że sygnał jest dostarczany do pinu A0 - to wejście analogowe Arduino.

Aby obliczyć rezystancję termistora, możesz użyć następującego wzoru:
R termistora = R1⋅ ((Vcc / Voutput) −1)
Aby przetłumaczyć na język zrozumiały dla arduino, musisz pamiętać, że arduino ma 10-bitowy ADC, więc maksymalna cyfrowa wartość sygnału wejściowego (napięcie 5 V) wyniesie 1023. Następnie warunkowo:
-
Dmax = 1023;
-
D jest rzeczywistą wartością sygnału.
Następnie:
R termistora = R1⋅ ((Dmax / D) −1)
Teraz używamy tego do obliczenia rezystancji, a następnie do obliczenia temperatury termistora za pomocą równania beta w języku programowania dla Arduino. Szkic będzie taki:

DS18B20
Jeszcze bardziej popularny do pomiaru temperatury za pomocą.Arduino znalazł czujnik cyfrowy DS18B20. Komunikuje się z mikrokontrolerem poprzez interfejs 1-żyłowy, możesz podłączyć kilka czujników (do 127) do jednego przewodu, a aby uzyskać do nich dostęp, musisz znaleźć identyfikator każdego z czujników.
Uwaga: powinieneś znać identyfikator, nawet jeśli używasz tylko 1 czujnika.

Schemat podłączenia czujnika ds18b20 do Arduino wygląda następująco:


Istnieje również pasożytniczy tryb zasilania - jego schemat połączeń wygląda następująco (potrzebujesz dwóch przewodów zamiast trzech):

W tym trybie poprawne działanie nie jest gwarantowane podczas pomiaru temperatur powyżej 100 stopni Celsjusza.
Cyfrowy czujnik temperatury DS18B20 składa się z całego zestawu węzłów, jak każdy inny SIMS. Możesz obejrzeć jego urządzenie wewnętrzne poniżej:

Aby z tym pracować, musisz pobrać bibliotekę Onewire dla Arduino, a dla samego czujnika zaleca się użycie biblioteki DallasTemperature.

Ten przykład kodu pokazuje podstawy pracy z 1 czujnikiem temperatury, wynik w stopniach Celsjusza jest wysyłany przez port szeregowy po każdym odczycie.
DHT11 i DHT22 - czujniki wilgotności i temperatury

Te czujniki są popularne i często używane do pomiaru wilgotności i temperatury otoczenia. W poniższej tabeli wskazaliśmy ich główne różnice.

Schemat połączeń jest dość prosty:
-
1 wniosek - odżywianie;
-
2 wnioski - dane;
-
3 wniosek - nieużywany;
-
4 wnioski - ogólny drut.
Jeśli czujnik jest wykonany w postaci modułu, będzie miał trzy wyjścia, ale nie jest potrzebny rezystor - jest już przylutowany do płytki.

Do pracy potrzebujemy biblioteki dht.h, nie ma jej w standardowym zestawie, więc należy ją pobrać i zainstalować w folderze bibliotek w folderze z arduino IDE. Obsługuje wszystkie czujniki z tej rodziny:
-
DHT 11;
-
DHT 21 (AM2301);
-
DHT 22 (AM2302, AM2321).
Przykładowe użycie biblioteki:

Wniosek
W dzisiejszych czasach stworzenie własnej stacji do pomiaru temperatury i wilgotności jest bardzo proste dzięki platformie Arduino. Koszt takich projektów wynosi 3-4set rubli. Można użyć do żywotności baterii, a nie do wyjścia do komputera wyświetlanie znaków (opisaliśmy je w ostatnim artykule), następnie możesz zbudować urządzenie przenośne do użytku zarówno w domu, jak iw samochodzie. Napisz w komentarzach, czego jeszcze chciałbyś się dowiedzieć o prostych domowych wyrobach na arduino!
Zobacz także na ten temat:Popularne czujniki dla Arduino - połączenia, diagramy, szkice
Zobacz także na electro-pl.tomathouse.com
: