logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

BMP085 i BMP180 - Arduino i tanie czujniki ciśnienia atmosferycznego

farmerro 29 Gru 2015 14:52 6498 4
REKLAMA
  • BMP085 i BMP180 - Arduino i tanie czujniki ciśnienia atmosferycznego
    BMP085 i BMP180 - Arduino i tanie czujniki ciśnienia atmosferycznego
    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
    GY-68Arduino UNO
    Vin3.3V
    GNDGND
    SCLA5
    SDAA4

    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.
    BMP085 i BMP180 - Arduino i tanie czujniki ciśnienia atmosferycznego

    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.
    BMP085 i BMP180 - Arduino i tanie czujniki ciśnienia atmosferycznego


    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++
    Zaloguj się, aby zobaczyć kod

    Fajne? Ranking DIY
    O autorze
    farmerro
    Poziom 16  
    Offline 
    Specjalizuje się w: wszystkiego po trochu...
    farmerro napisał 343 postów o ocenie 187, pomógł 7 razy. Jest z nami od 2006 roku.
  • REKLAMA
  • #2 15280113
    Frog_Qmak
    Poziom 25  
    Fajny czujnik. Można również, znając wysokość, na jakiej się znajdujemy, wyznaczyć ciśnienie powietrza (w sumie to jego podstawowa funkcja). Same obliczenia też są dość ciekawe:
  • REKLAMA
  • #3 15283363
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #4 15285194
    dan50
    Poziom 12  
    Tak dla informacji - moduł GY-68 posiada stabilizator o oznaczeniu 662K (XC6206 Series) który umożliwia zasilenie płytki większym napięciem niż 3.6V. Należy jednak pamiętać, że linie SCL i SDA nie posiadają translacji poziomów, a maksymalne napięcie jakie może być podane na piny to 4,25V (wg noty katalogowej - tabela 2).
    Reasumując - jeżeli mamy urządzenie zasilane 5V to i tak musimy zastosować napięcie 3.3V do translacji napięcia na liniach I2C.
REKLAMA