- zawiera czujniki podstawowych czynników środowiskowych: temperatury, wilgotności, ciśnienia oraz natężenia oświetlenia,
- jest wyposażony w interfejs I2C,
- zawiera stabilizator dostarczający napięcia 1,8 V do zasilania czujników,
- może współpracować z systemami o napięciach zasilania w zakresie 2,7…5,5 V.
Oprócz czujników moduł zawiera stabilizator, dostarczający napięcia 1,8 V do ich zasilania oraz konwerter poziomów magistrali I2C typu PCA9603. Dzięki wbudowaniu stabilizatora i konwertera moduł może być stosowany przy współpracy z płytkami Arduino, Raspberry Pi itp. o napięciach zasilania w zakresie 2,7...5,5 V.
Budowa i działanie
Schemat ideowy modułu został pokazany na rysunku 1. Zastosowano w nim scalony czujnik Bosch BME280 służący do pomiaru temperatury, wilgotności i ciśnienia atmosferycznego oraz nowe opracowanie firmy Vishay – czujnik VEML6035 mierzący natężenie oświetlenia otoczenia.
Sensor BME280 jest zamknięty w niewielkiej metalowej obudowie LGA (2,5×2,5 mm). Dzięki wstępnej obróbce sygnału pomiary charakteryzują się dużą dokładnością, powtarzalnością, szybkością i niskim poziomem zakłóceń przy zachowaniu niewielkiego poboru mocy. Pomiar temperatury obarczony jest błędem ±1°C, dla pomiaru wilgotności błąd wynosi ±3% RH, a dla ciśnienia ±1 hPa, w zakresie temperatur 0...60°C. Takie parametry należy uznać za przynajmniej dobre do większości typowych zastosowań. Maksymalne zakresy pomiarowe przetwornika to –40...+85°C, 0...100% RH, 300...1100 hPa. Układ ma konfigurowany interfejs komunikacyjny SPI lub I2C i pracuje poprawnie przy zasilaniu z zakresu 1,71...3,6 V. Budowę wewnętrzną czujnika BME280 pokazuje schemat blokowy na rysunku 2.
Sensor VEML6035 jest przetwornikiem natężenia oświetlenia otoczenia o wysokiej czułości. Maksymalny zakres pomiarowy wynosi 0...6710 lx, a maksymalna osiągana rozdzielczość to 0,0004 lx. W zależności od konfiguracji części przetwarzającej można programowo dopasować zakres i dokładność pomiaru do warunków otoczenia. Czujnik umożliwia pomiar natężenia oświetlenia otoczenia (ALS) zbliżony czułością do charakterystyki ludzkiego oka oraz pomiar natężenia światła białego (WHITE). Budowę czujnika VEML6035 pokazuje schemat blokowy na rysunku 3.
Charakterystyki przetwarzania zostały zamieszczone na rysunku 4. Oba pomiary skompensowane są temperaturowo. Komunikacja z układem odbywa się poprzez magistralę I2C, napięcie zasilania powinno zawierać się w zakresie 1,7...3,6 V. VEML6035 nie wymaga stosowania zewnętrznych układów optycznych lub filtrów oraz zapewnia odporność na migotanie oświetlenia o częstotliwości 100/120 Hz.
Bardzo ważną funkcję pełni rezystor R1, obciąża on wstępnie stabilizator U1, nie dopuszczając do podniesienia napięcia zasilania przez prądy polaryzacji PCA9306. Zjawisko opisane w nocie układu (TI SCPS113M 8.1.7) jest specyficzną cechą układu i niestety nie zostanie usunięte w następnych wersjach struktury. Cecha ta dotyczy także układów 9306 innych producentów. Warto o tym pamiętać przy projektowaniu własnych modułów. Rezystor RP1 polaryzuje magistralę I2C. Miniaturowe złącze w standardzie JST 1 mm wyprowadza zasilanie i magistralę modułu.
Montaż i uruchomienie
Układ zmontowany jest na niewielkiej płytce drukowanej. Rozmieszczenie elementów zostało pokazane na rysunku 5. Pewnej uwagi wymaga montaż przetworników – należy je odpowiednio zabezpieczyć przed przegrzaniem i podczas lutowania oraz mycia należy zakleić kawałkiem taśmy kaptonowej okienka pomiarowe układów.
Czujnik BME280 ma niewielką czułość na oświetlenie zewnętrzne. Wystawienie go na bezpośrednie oświetlenie słoneczne może wpływać na dokładność pomiaru. W praktyce efekt ten nie jest specjalnie uciążliwy, ale gdy zależy nam na maksymalnej dokładności, warto przesłonić go nieprzepuszczalnym dla światła kawałkiem tworzywa, tak aby nie ograniczać cyrkulacji powietrza.
Moduł nie wymaga uruchamiania. Do sprawdzenia działania można użyć Raspberry Pi. Po podłączeniu do magistrali I2C powinny być widoczne oba układy – pod adresem 0x29 VEML6035, a pod 0x76 BME280. W sieci dostępnych jest sporo przykładów dla BME280, ja polecam napisany przez Matta Hawkinsa bme280.py, który jest dostępny do pobrania z https://bit.ly/3xOUUMk lub bezpośrednio, poprzez polecenie:
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bme280.py
Dla VEML6035 przygotowałem krótki skrypt veml6035.py. Oba dostępne są w materiałach dodatkowych do projektu. Poprawną detekcję układów oraz wyniki działania skryptów pokazano na rysunku 6.
Adam Tatuś
adam.tatus@ep.com.pl
- R1: 10 kΩ SMD0603
- R2: 200 kΩ SMD0603
- RP1: drabinka rezystorowa 10 kΩ SMD
- C1, C2: 4,7 µF/10 V SMD0603
- C3, C4: 0,1 µF/10 V SMD0603
- C5, C6: 1 µF/10 V SMD0603
- U1: MCP1812AT-018 (SOT-23-5)
- U2: PCA9306DCT (SSOP8_065)
- U3: VEML6035
- U4: BME280
- 2C: złącze JST 1 mm