Senzor barometrického tlaku BMP180 (označení modulu GY-68) od firmy Bosch je Arduino modul, který je levnější a méně přesnou variantou senzoru BMP085. Kromě přesnosti se ale jedná o téměř totožné senzory, takže i BMP180 umožňuje kromě měření tlaku taktéž měření teploty. S pomocí hodnot naměřených z obou senzorů pak lze získat také informace o aktuální nadmořské výšce. Modul BMP180 je tedy opět vhodný do různých zapojení, kdy je třeba měřit okolní barometrický tlak a současně s tím můžeme také měřit teplotu a ušetřit tak jeden modul. Podle informací výrobce je možné měřit tlak v rozsahu 300 až 1100 hPa (hekto Pascalů), což odpovídá po přepočtu nadmořské výšce +9000m až -500m. Typická přesnost je pak -4 až +2 hPa. Okolní teplotu je možné pomocí senzoru BMP180 měřit v rozsahu 0 až +65 stupňů Celsia s přesností ±2 °C.

Měření tlaku BMP180

Pro úspěšné propojení senzoru BMP180 s Arduino deskou je nutné propojit 4 vodiče. Propojíme SDA na pin A4, SCL na pin A5 (tyto piny platí pro I2C rozhraní Uno desky), GND na zem Arduina a VIN na pin +3V3. Oproti BMP085 je tedy nutné využít pouze napájení 3V3, jinak dojde ke zničení modulu.

Schéma zapojení měření tlaku BMP180

Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu BMP085, která funguje také pro náš modul BMP180, návod jak na importování je uveden zde. Ukázkový kód obsahuje na začátku připojení potřebných knihoven a jako další krok inicializaci senzoru BMP180 z knihovny BMP085. Následně si vytvoříme konstantu korekce, která bude vysvětlena později. V podprogramu setup si pouze nastavíme rychlost komunikace po sériové lince a zapneme komunikaci se senzorem BMP180. V nekonečné smyčce loop pak postupně vytiskneme po sériové lince informace z připojeného senzoru. Jako první je vytištěna teplota ve stupních Celsia a následně je vypsán barometrický tlak. Do výpisu hodnoty jsem pak přímo započítal korekci, kdy toto číslo nejprve přičteme v milibarech (vynásobené 100) a celkový tlak pak vydělíme 100 pro získání tlaku v hekto Pascalech. Jako poslední je vypsána nadmořská výška, která se vypočte z naměřeného tlaku opět s připočtenou korekcí. Na konci programu se nachází už jen pauza pro přehlednější výpis.

// Senzor barometrického tlaku Bosch BMP180

// připojení knihoven Wire a BMP085
#include <Wire.h>
#include <Adafruit_BMP085.h>

// inicializace senzoru BMP180 z knihovny BMP085
Adafruit_BMP085 bmp180;

// konstanta s korekcí měření v hPa
int korekce = 32;

void setup() {
  // komunikace přes sériovou linku rychlostí 9600 baud
  Serial.begin(9600);
  // zapnutí komunikace se senzorem BMP180
  bmp180.begin();
}

void loop() {
  // výpis teploty ve stupních Celsia
  Serial.print("Teplota: ");
  Serial.print(bmp180.readTemperature());
  Serial.println(" stupnu Celsia");

  // výpis barometrického tlaku v hekto Pascalech
  Serial.print("Barometricky tlak: ");
  Serial.print((bmp180.readPressure() + korekce*100)/100.00);
  Serial.println(" hPa");

  // výpis nadmořské výšky při započítání
  // běžné hodnoty tlaku 1013,25 hekto Pascalů
  Serial.print("Nadmorska vyska prepoctena: ");
  Serial.print(bmp180.readAltitude(bmp180.readPressure() + korekce*100));
  Serial.println(" metru ");
  Serial.println("------------------------------");

  // pauza pro přehlednější výpis
  delay(2000);
}

Po nahrání programu do Arduino desky s připojeným senzorem BMP180 dostaneme například tento výpis:

------------------------------
Teplota: 25.90 stupnu Celsia
Barometricky tlak: 1026.18 hPa
Nadmorska vyska prepoctena: 266.45 metru 
------------------------------
Teplota: 25.90 stupnu Celsia
Barometricky tlak: 1026.19 hPa
Nadmorska vyska prepoctena: 266.70 metru 
------------------------------
Teplota: 25.90 stupnu Celsia
Barometricky tlak: 1026.17 hPa
Nadmorska vyska prepoctena: 266.28 metru 
------------------------------

Senzor barometrického tlaku a teploty BMP180 je v porovnání s dražší variantou BMP085 stále dobře použitelný, kdy bych doporučoval ho používat pouze jako senzor tlaku, protože přítomné teplotní čidlo nevyniká příliš velkou přesností. V porovnání s měřením teploty senzorem DHT22 se totiž výsledek liší i v několika stupních Celsia. A vzhledem k tomu, že pro výpočet nadmořské výšky je třeba jak tlaku, tak teploty, je výsledek zatížen poměrně velkou chybou. Jako poznámku bych rád uvedl svoji zkušenost, kdy po delším používání jsem při porovnání s hodnotami naměřeného tlaku meteorologickou stanicí v okolí zjistil konstantní rozdíl mezi mnou a stanicí naměřenou hodnotou tlaku. Tento konstantní rozdíl činil v mém případě 32 hPa, stačilo tedy tuto hodnotu vždy přičíst k mé naměřené a výsledkem byly hodnoty odpovídající udávaným meteorologickou stanicí. A pro ověření naměřené nadmořské výšky lze použít tuto mapu.

 

Seznam použitých komponent:

http://arduino-shop.cz/arduino-vstupni-periferie/838-arduino-mereni-tlaku.html

http://arduino-shop.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://arduino-shop.cz/arduino/1227-7-ks-mini-nepajive-pole-25-kontaktu-1458405292.html

http://arduino-shop.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html

FB gp tw

Další podobné články