W odcinku jedenastym przedstawiamy najnowszą serię niedrogich czujników środowiskowych firmy Bosch. Są to znakomite układy umożliwiające dokładny pomiar temperatury, ciśnienia i wilgotności. Komunikacja z układem sterującym, takim jak moduł Arduino lub Raspberry Pi, odbywa się za pośrednictwem interfejsu I²C.
Niedawno...
...stałem się dumnym właścicielem zabytkowej „stacji pogodowej” – barometru z wbudowanym termometrem i higrometrem. Chciałem sprawdzić, z jaką dokładnością mierzy on ciśnienie, temperaturę i wilgotność.
Rozwiązanie tego problemu okazało się bardzo proste i oczywiste. Wystarczyło znaleźć odpowiedni czujnik, podłączyć go do mikrokontrolera Arduino Uno i dodać niedrogi moduł LCD 20×4, na którym wyświetlane będą wyniki pomiarów. Całe zadanie, obejmujące opracowanie oprogramowania i testowanie, zajęło mi zaledwie kilka godzin.
Mój zabytkowy przyrząd zawiera słupek rtęci w szklanej rurce, której jeden koniec jest otwarty, a drugi zamknięty. Dolna, otwarta część rurki jest zanurzona w zbiorniku wypełnionym rtęcią, którego powierzchnia jest poddana działaniu ciśnienia atmosferycznego. Więcej informacji można znaleźć na stronie bit.ly/pe-jan23-hg.
Poziom rtęci w szklanej rurce opada pod własnym ciężarem, tworząc w jej górnej części próżnię. Ciężar rtęci w rurce jest równoważony przez ciśnienie atmosferyczne działające na zbiornik. W ten sposób wysokość słupka rtęci jest wskaźnikiem bieżącego ciśnienia atmosferycznego. Wzrost ciśnienia zapowiada dobrą pogodę, a w miesiącach zimowych może oznaczać niskie temperatury. Spadek ciśnienia zazwyczaj wskazuje na pogorszenie pogody, a także możliwość wystąpienia burz i silnego wiatru. Gwałtowny spadek ciśnienia zwykle oznacza, że w ciągu najbliższych godzin można spodziewać się burzy.
Barometry rtęciowe starego typu są na czas transportu zawsze pakowane w bezpieczny sposób, dlatego docierają na miejsce w stanie niezmontowanym. Wbudowany mechanizm zabezpieczający unieruchamia rurkę i inne elementy, chroniąc je przed uszkodzeniem podczas przewozu. Po rozpakowaniu barometr należy złożyć, ustawić, a następnie przygotować do pomiaru bieżącego ciśnienia atmosferycznego. Zwykle polega to na ustawieniu wskaźnika pomiarowego względem poziomu rtęci. Po tej operacji barometr jest gotowy do użycia.
Nowoczesne elektroniczne przyrządy barometryczne, wyposażone w niewielkie czujniki, mikrokontrolery i wyświetlacze cyfrowe, całkowicie eliminują tę procedurę.
Przedstawiamy czujnik BME280
BME280 firmy Bosch Sensortec to zespolony czujnik wilgotności, ciśnienia i temperatury, umieszczony w niewielkiej metalowej obudowie LGA. Niewielkie wymiary (obudowa ma zaledwie 2,5 × 2,5 × 0,93 mm) w połączeniu z minimalnym poborem energii sprawiają, że ten czujnik idealnie nadaje się do stosowania w różnego rodzaju urządzeniach przenośnych i ręcznych.
BME280 łączy w sobie czujniki wilgotności, ciśnienia i temperatury, przeznaczone do szerokiej gamy zastosowań, obejmujących między innymi kontrolę środowiska, pomiary, automatykę, logistykę i nawigację. Czujnik wilgotności charakteryzuje się bardzo krótkim czasem reakcji, dzięki czemu doskonale sprawdza się w zastosowaniach wymagających szybkiej reakcji na zmiany warunków otoczenia, a także zapewnia wysoką dokładność w szerokim zakresie temperatur. Czujnik ciśnienia jest czujnikiem bezwzględnego ciśnienia barometrycznego o bardzo wysokiej dokładności i rozdzielczości. W porównaniu ze swoim poprzednikiem, BMP180, generuje również znacznie mniej szumów. Zintegrowany czujnik temperatury zoptymalizowano pod kątem małego poziomu szumów i wysokiej rozdzielczości. Jego sygnał wyjściowy jest wykorzystywany do kompensacji temperaturowej czujników ciśnienia i wilgotności. Może on również służyć do szacowania temperatury otoczenia.
BME280 wyposażono w interfejsy SPI i I²C. Układ wymaga napięcia zasilania z zakresu od 1,71 V do 3,6 V dla części pomiarowej oraz od 1,2 V do 3,6 V dla interfejsu. Pomiary mogą być wyzwalane przez mikrokontroler sterujący lub wykonywane w ustalonych odstępach czasu. Gdy czujnik jest wyłączony, pobór prądu spada do zaledwie 0,1 µA. Podczas pomiaru wilgotności i temperatury pobór prądu wynosi około 350 µA, natomiast podczas pomiaru ciśnienia nieco ponad 700 µA. Pobór prądu w stanie czuwania (gdy układ jest aktywny, ale nie wykonuje pomiarów) jest mniejszy niż 0,5 µA.
Aby dostosować szybkość próbkowania, poziom szumów, czas reakcji i pobór prądu do wymagań konkretnej aplikacji, można wybrać różne tryby nadpróbkowania, filtrowania oraz szybkości transmisji danych. Wszystko to jest realizowane w ramach programowej konfiguracji czujnika.
Tryby pracy BME280
BME280 może pracować w jednym z trzech trybów:
- Tryb uśpienia – nie są wykonywane żadne pomiary, dostępne są wszystkie rejestry, a pobór prądu jest minimalny; jest to tryb aktywowany po włączeniu zasilania;
- Tryb wymuszony – wykonywany jest pojedynczy pomiar, wyniki są zapisywane, po czym czujnik powraca do trybu uśpienia;
- Tryb normalny – czujnik cyklicznie przełącza się pomiędzy okresem wykonywania pomiarów a okresem bezczynności.
Tryb uśpienia jest aktywny domyślnie po resecie wywołanym włączeniem zasilania. W trybie tym nie są wykonywane żadne pomiary, a pobór prądu pozostaje minimalny. Wszystkie rejestry wewnętrzne są dostępne i można odczytywać parametry wewnętrzne. Nie obowiązują żadne szczególne ograniczenia dotyczące czasów interfejsu.
W trybie wymuszonym wykonywany jest pojedynczy pomiar zgodnie z wybranymi opcjami pomiaru i filtrowania. Po zakończeniu pomiaru czujnik powraca do trybu uśpienia, a wyniki pomiaru można odczytać z rejestrów danych. Aby wykonać kolejny pomiar, należy ponownie wybrać tryb wymuszony. Tryb ten jest zalecany w zastosowaniach wymagających stosunkowo małej częstotliwości próbkowania lub synchronizacji realizowanej przez mikrokontroler sterujący.
Tryb normalny polega na ciągłym przełączaniu się między aktywnym okresem pomiarowym a nieaktywnym okresem czuwania. Pomiary są wykonywane zgodnie z wybranymi opcjami pomiaru i filtrowania. Czas czuwania można ustawić w zakresie od 0,5 ms do 1000 ms.
Aby ograniczyć wpływ krótkotrwałych zakłóceń (na przykład dmuchnięcia w czujnik), BME280 wykorzystuje filtr cyfrowy o nieskończonej odpowiedzi impulsowej (IIR). Sygnał wyjściowy filtru jest obliczany na podstawie bieżącej wartości wejściowej, poprzedniej wartości wejściowej oraz poprzedniej wartości wyjściowej. Należy pamiętać, że przy korzystaniu z filtru IIR zalecana jest praca w trybie normalnym.
Jako jednostkę ciśnienia można wybrać paskale (Pa), hektopaskale (hPa), cale słupa rtęci (inHg), atmosfery standardowe (atm), bary (jednostka ciśnienia równa 100 kPa), tory (1/760 atmosfery standardowej, czyli 133,32 Pa) lub funty na cal kwadratowy (PSI). Jednostką temperatury może być stopień Celsjusza (°C) lub Fahrenheita (°F). Tryb pracy BME280 można, zależnie od wymagań konkretnej aplikacji, ustawić na uśpiony, wymuszony lub normalny.
Czas czuwania można ustawić w zakresie od 0,5 ms do 1 s, wybierając jedną z ośmiu dostępnych wartości. Filtr IIR można skonfigurować dla czterech różnych współczynników filtrowania, również zależnie od zastosowania. Więcej informacji można znaleźć w pliku nagłówkowym BME280.h.