[PROJEKT] KAmodLPS25HB – czujnik ciśnienia atmosferycznego wraz z KAmduino UNO
Moduł KAmodLPS25HB to czujnik ciśnienia atmosferycznego oparty o sensor MEMS LPS25HB firmy STMicroelectronics. Czujnik jest w stanie wykonywać pomiary bezwzględnego ciśnienia atmosferycznego w zakresie od 260 do 1260 hPa. Rozdzielczość przetwornika pomiarowego wynosi 24 bity, co przenosi się na rozdzielczość pomiarową wynoszącą 0,01 hPa RMS. Sensor LPS25HB pozwala na wprowadzenie konfiguracji częstotliwości wykonywanego pomiaru w zakresie od 1 do 25 Hz. Dostępne są dwa sposoby komunikacji z czujnikiem, poprzez magistralę I2C oraz SPI.
Moduł KAmodLPS25HB został wyposażony w stabilizator liniowy co pozwala na zasilanie go napięciem od 2,5 do 5,5 V lub można bezpośrednio zasilać układ MEMS napięciem 3,3 V. Oprócz stabilizatora, na płytce modułu znajduje się konwerter poziomów logicznych, co pozwala na podłączenie modułu do układów o różnych poziomach napięć magistrali komunikacyjnych.
Moduł KAmodLPS25HB posiada 8 padów lutowniczych, do których możemy przylutować dołączone złącza goldpin lub przewody. Złącze +3,3 V służy do bezpośredniego zasilania układu czujnika napięciem 3,3 V. Nie należy do tego pinu podawać większego napięcia niż 3,6 V ponieważ spowoduje to trwałe uszkodzenie układu. Złącze +VIN pozwala na zasilanie modułu napięciem z przedziału 2,5-5,5 V, GND to masa układu. Złącza oznaczone jako SDA, SCL, SDO, CS służą do komunikacji z sensorem MEMS. W zależności od wybranego sposobu komunikacji złącza te zmieniają swoje przeznaczenie, inne dla I2C, a inne dla SPI. Podczas komunikacji z czujnikiem poprzez magistralę I2C wejście oznaczone jako SDO pozwala na wybór jednego z dwóch adresów układu. Wyjście INT2 jest to wyjścia przerwania sensora LPS25HB.
W prezentowanym przykładzie została wykorzystana magistrala I2C oraz moduł KAmduino UNO. Podłączenie modułu do płytki z mikrokontrolerem ogranicza się do podłączenia zasilania oraz dwóch linii magistrali, SCL – wyjście zegarowe, oraz SDA – linia danych. Na płytce modułu znajdują się rezystory 4,7 kΩ podciągające linie SDA i SCL do zasilania układu, stąd nie ma potrzeby dodawania już kolejnych na płytce prototypowej. W przykładzie wykorzystano zasilanie 3,3 V, które można pobrać bezpośrednio z płytki KAmduino UNO (zdjęcie 2).
Zarówno czujnik LPS25HB jak i LPS331 korzystają z tej samej biblioteki Arduino, LPS.h. Listing przedstawia pętlę główną programu, gdzie wywoływane są metody obiektu ps i odczytywane są kolejno ciśnienie, wysokość nad poziomem morza oraz temperatura układu czujnika. Zwracają one dane typu float, które przechowywane są we wcześniej zdefiniowanych zmiennych. Odczytane dane z sensora wypisywane są w terminalu Arduino. Opóźnienie 100 ms pozwala na łatwiejsze odczytywanie wyników.
#include <Wire.h> #include <LPS.h> LPS ps; void setup() { Serial.begin(9600); Wire.begin(); if (!ps.init()) { Serial.println("Failed to autodetect pressure sensor!"); while (1); } ps.enableDefault(); } void loop() { float pressure = ps.readPressureMillibars(); float altitude = ps.pressureToAltitudeMeters(pressure); float temperature = ps.readTemperatureC(); Serial.print("p: "); Serial.print(pressure); Serial.print(" mbar\ta: "); Serial.print(altitude); Serial.print(" m\tt: "); Serial.print(temperature); Serial.println(" deg C"); delay(100); }