Site icon Tranzystor.pl – Vortal Elektroniczny

BMP180 czujnik barometryczny – Arduino

BMP180 czyli czujnik barometryczny mówiąc wprost czujnik mieczy ciśnienie i temperaturę. Ma będzie wykorzystać również do innych podobnych czujników barometrycznych. PMP180 posiada zakres pomiarowy od 300 do 1100 hPa z dokładnością do 0,02 hPa, może również mierzyć wysokość jak i temperaturę. Czujnik komunikuje się ze światem za pomocą interfejsu I2C. Oznacza to, że do komunikacji z Arduino wykorzystamy zaledwie 2 piny.

Potrzebne komponenty:

Połączenie

BMP180 Arduino
Vin 5V
GND GND
SCL A5
SDA A4

Kod programu:

#include <SFE_BMP180.h>
#include <Wire.h>

SFE_BMP180 pressure;

#define ALTITUDE 130.0 // wysokość siedziby Tranzystor.pl

void setup()
{
Serial.begin(9600);
Serial.println("REBOOT");

//Zainicjacja czujnika (ważne jest, aby uzyskać wartości kalibracji zapisane w urządzeniu).

if (pressure.begin())
Serial.println("BMP180 uchomenie ok ");
else
{
// Ups, coś poszło nie tak, zwykle jest to problem z połączeniem,

Serial.println("BMP180 error\n\n");
while(1);
}
}

void loop()
{
char status;
double T,P,p0,a;

Serial.println();
Serial.print("Podana wysokość: ");
Serial.print(ALTITUDE,0);
Serial.print(" metry, ");
Serial.print(ALTITUDE*3.28084,0);
Serial.println(" stopy");

status = pressure.startTemperature();
if (status != 0)
{
// Wait for the measurement to complete:
delay(status);

// Retrieve the completed temperature measurement:
// Note that the measurement is stored in the variable T.
// Function returns 1 if successful, 0 if failure.

status = pressure.getTemperature(T);
if (status != 0)
{
// Print out the measurement:
Serial.print("temperatura: ");
Serial.print(T,2);
Serial.print(" stopni C, ");
Serial.print((9.0/5.0)*T+32.0,2);
Serial.println(" stopni F");

status = pressure.startPressure(3);
if (status != 0)
{
// Wait for the measurement to complete:
delay(status);

status = pressure.getPressure(P,T);
if (status != 0)
{
// Print out the measurement:
Serial.print("ciśnienie bezwzględne: ");
Serial.print(P,2);
Serial.print(" mb, ");
Serial.print(P*0.0295333727,2);
Serial.println(" inHg");

// Czujnik ciśnienia zwraca całkowite ciśnienie, które zmienia się wraz z wysokością.
// Aby usunąć wpływ wysokości, użyj funkcji sealevel i aktualnej wysokości.
// Ta liczba jest powszechnie używana w prognozach pogody.
// Parametry: P = ciśnienie bezwzględne w mb, ALTITUDE = aktualna wysokość wm.
// Wynik: p0 = skompensowane ciśnienie na poziomie morza w mb

p0 = pressure.sealevel(P,ALTITUDE); // jestem na wysokości 130 m Szczecin
Serial.print("ciśnienie względne (na poziomie morza): ");
Serial.print(p0,2);
Serial.print(" mb, ");
Serial.print(p0*0.0295333727,2);
Serial.println(" inHg");

// Z drugiej strony, jeśli chcesz określić swoją wysokość na podstawie odczytu ciśnienia,
// użyj funkcji wysokości wraz z ciśnieniem bazowym (na poziomie morza lub innym).
// Parametry: P = ciśnienie bezwzględne w mb, p0 = ciśnienie bazowe w mb.
// Wynik: a = wysokość wm.

a = pressure.altitude(P,p0);
Serial.print("obliczona wysokość: ");
Serial.print(a,0);
Serial.print(" meterow, ");
Serial.print(a*3.28084,0);
Serial.println(" stopy");
}
else Serial.println("błąd pobierania pomiaru ciśnienia\n");
}
else Serial.println("błąd pomiaru ciśnienia początkowego\n");
}
else Serial.println("błąd pobierania pomiaru temperatury\n");
}
else Serial.println("błąd pomiaru temperatury przy uruchomieniu\n");

delay(5000); // restart po 5s.
}

Plik można pobrać również tu

Powyższy kod jest zmodyfikowaną wersją którą możecie znaleźć w bibliotece, ode mnie macie przetłumaczoną jeszcze na PL.

Po wgraniu włącz odczyt portu szeregowego i powinieneś zobaczyć dane jak niżej.

 

5/5 - (2 ocena/y)
Exit mobile version