BMP085 i BMP180 to cyfrowe czujniki ciśnienia atmosferycznego produkcji Bosch. Zakres ciśnienia mierzonego przez sensory zawiera się w przedziale od 300 do 1100hPa. Ponadto na podstawie zmierzonego ciśnienia możliwe jest określenie wysokości względem poziomu morza (od +9000 do -500 metrów). Czujniki oferują także pomiar temperatury od 0°C do 65°C. BMP085 można stosować zamiennie z nowszym BMP180, który oferuje większą dokładność pomiaru wynoszącą 0.02hPa w trybie wysokiej rozdzielczości.
Wymiana danych pomiędzy BMP085/BMP180, a systemem mikroprocesorowym odbywa się poprzez dwu-przewodową szeregową magistralę I2C. W przypadku korzystania z platformy Arduino, najwygodniej posłużyć się biblioteką Wire, która pozwala na łatwą realizację komunikacji z urządzeniami I2C/TWI.
Na rynku znajduje się wiele gotowych płytek i modułów z czujnikami BMP085/BMP180. Ceny zmontowanych układów zaczynają się już od $1 USD. Moduły mogą się różnić poziomem napięcia zasilania. W poniższych przykładach zastosowano tani chiński moduł GY-68 wyposażony w sensor BMP180 i zasilany maksymalnie napięciem 3.6V.
Komunikacja modułu czujnika z płytą Arduino wymaga połączenia wyprowadzeń zasilania oraz linii magistrali I2C. Wyprowadzenie oznaczone na module GY-68, jako VIN to wejście zasilające, do którego należy doprowadzić 3.3V z płyty Arduino. GND to standardowo masa. Komunikacja za pomocą interfejsu I2C wymaga połączenia linii SCL i SDA urządzeń pracujących na magistrali. Zgodnie ze standardem I2C linie SCL i SDA powinny być na stałe podciągnięte (pull-up) do źródła zasilania przez rezystory podciągające. Zadanie to realizuje płytka modułu GY-68, którą wyposażono w takie rezystory.
Połączenie GY-68 z Arduino UNO
Uwaga! Zwróć uwagę na prawidłowe podłączenie zasilania modułu czujnika. Napięcie wyższe niż 3.3V może trwale uszkodzić moduł GY-68.
Określenie wysokości na podstawie pomiaru ciśnienia atmosferycznego.
Jak już wspomniano czujniki BMP085 i BMP180 umożliwiają obliczenie wysokości, na jakiej się znajdują na podstawie zmierzonego ciśnienia oraz ciśnienia występującego w danej chwili na poziomie morza. Obliczenia dokonywane są za pomocą wzoru, zamieszczonego w datasheet czujnika. W celu dokładnego obliczenia wysokości, użytkownik musi znać ciśnienie p0 panujące na poziomie morza, np. 1013.25hPa.
W dokumentacji znaleźć można również charakterystykę zależności pomiędzy wysokością nad poziomem można, a ciśnieniem barometrycznym. Według wykresu zmiana ciśnienia Δp = 1hPa odpowiada zmianie wysokości Δh = 8.43 m.
Przykładowy program.
Dla czujników BMP085 oraz BMP180 istnieje gotowa biblioteka udostępniona przez Adafruit. Można ją pobrać ze strony GitHub. Instalacja biblioteki sprowadza się do skopiowania rozpakowanego folderu do katalogu libraries.
Przykładowy kod:
Wymiana danych pomiędzy BMP085/BMP180, a systemem mikroprocesorowym odbywa się poprzez dwu-przewodową szeregową magistralę I2C. W przypadku korzystania z platformy Arduino, najwygodniej posłużyć się biblioteką Wire, która pozwala na łatwą realizację komunikacji z urządzeniami I2C/TWI.
Na rynku znajduje się wiele gotowych płytek i modułów z czujnikami BMP085/BMP180. Ceny zmontowanych układów zaczynają się już od $1 USD. Moduły mogą się różnić poziomem napięcia zasilania. W poniższych przykładach zastosowano tani chiński moduł GY-68 wyposażony w sensor BMP180 i zasilany maksymalnie napięciem 3.6V.
Komunikacja modułu czujnika z płytą Arduino wymaga połączenia wyprowadzeń zasilania oraz linii magistrali I2C. Wyprowadzenie oznaczone na module GY-68, jako VIN to wejście zasilające, do którego należy doprowadzić 3.3V z płyty Arduino. GND to standardowo masa. Komunikacja za pomocą interfejsu I2C wymaga połączenia linii SCL i SDA urządzeń pracujących na magistrali. Zgodnie ze standardem I2C linie SCL i SDA powinny być na stałe podciągnięte (pull-up) do źródła zasilania przez rezystory podciągające. Zadanie to realizuje płytka modułu GY-68, którą wyposażono w takie rezystory.
Połączenie GY-68 z Arduino UNO
| GY-68 | Arduino UNO | Vin | 3.3V | GND | GND | SCL | A5 | SDA | A4 |
Uwaga! Zwróć uwagę na prawidłowe podłączenie zasilania modułu czujnika. Napięcie wyższe niż 3.3V może trwale uszkodzić moduł GY-68.
Określenie wysokości na podstawie pomiaru ciśnienia atmosferycznego.
Jak już wspomniano czujniki BMP085 i BMP180 umożliwiają obliczenie wysokości, na jakiej się znajdują na podstawie zmierzonego ciśnienia oraz ciśnienia występującego w danej chwili na poziomie morza. Obliczenia dokonywane są za pomocą wzoru, zamieszczonego w datasheet czujnika. W celu dokładnego obliczenia wysokości, użytkownik musi znać ciśnienie p0 panujące na poziomie morza, np. 1013.25hPa.
W dokumentacji znaleźć można również charakterystykę zależności pomiędzy wysokością nad poziomem można, a ciśnieniem barometrycznym. Według wykresu zmiana ciśnienia Δp = 1hPa odpowiada zmianie wysokości Δh = 8.43 m.
Przykładowy program.
Dla czujników BMP085 oraz BMP180 istnieje gotowa biblioteka udostępniona przez Adafruit. Można ją pobrać ze strony GitHub. Instalacja biblioteki sprowadza się do skopiowania rozpakowanego folderu do katalogu libraries.
Przykładowy kod:
Kod: C / C++
Fajne? Ranking DIY