Senzor barometrického tlaku BMP085 od firmy Bosch je oblíbený Arduino modul, který kromě senzoru tlaku obsahuje taktéž senzor teploty. S pomocí hodnot naměřených z obou senzorů pak lze získat také informace o aktuální nadmořské výšce. Tento modul BMP085 je tedy velmi 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 ±1 hPa. Okolní teplotu je možné pomocí senzoru BMP085 měřit v rozsahu 0 až +65 stupňů Celsia s přesností ±1 °C.

Senzor tlaku BMP085

Pro úspěšné propojení senzoru BMP085 s Arduino deskou je potřeba propojit celkem 4 vodiče. Pro zapojení napájení lze využít +3V3 nebo +5V napájecí pin, kdy je třeba propojit jeden ze zmíněných pinů s odpovídajícím napájecím pinem na Arduino desce. Dále propojíme GND se zemí, SDA na A4 a SCL na A5. Piny SDA a SCL jsou připojeny na I2C sběrnici a zmíněné piny A4 a A5 platí pro použitou desku Arduino Uno.

Schéma zapojení senzoru tlaku BMP085

Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu BMP085, návod jak na to je uveden zde. Ukázkový kód obsahuje na začátku připojení potřebných knihoven a jako další krok inicializaci senzoru BMP085 z knihovny BMP085. V podprogramu setup je nastavena jako první komunikace po sériové lince a následně zapnuta komunikace se senzorem BMP085. V nekonečné smyčce loop je pak uvedena ukázka výpisu všech měřitelných informací ze senzoru, tedy teploty, barometrického tlaku a nadmořské výšky. Pokud budeme chtít tyto hodnoty ukládat do proměnných a dále je používat, je vhodné použít proměnné typu float, tedy čísla s desetinnou čárkou. Na konci programu je pak už jen pauza pro přehlednější výpis.

 

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

// Senzor barometrického tlaku Bosch BMP085

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

// inicializace senzoru BMP085 z knihovny BMP085
Adafruit_BMP085 bmp085;

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

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

  // výpis barometrického tlaku v hekto Pascalech
  Serial.print("Barometricky tlak: ");
  Serial.print(bmp085.readPressure()/100);
  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: ");
  Serial.print(bmp085.readAltitude());
  Serial.println(" metru");
  Serial.println("------------------------------");

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

Senzor barometrického tlaku a teploty BMP085 je vhodné používat z mnoha důvodů, mezi které patří například jeho dobrý poměr cena/přesnost, kombinace měření tlaku a teploty či zabrání pouze 2 datových pinů díky komunikaci přes I2C sběrnici. 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í. Pokud byste rádi postavili vlastní domácí meteorologickou stanici, tento senzor je vhodným kandidátem.

Teplota: 27.20 stupnu Celsia
Barometricky tlak: 980 hPa
Nadmorska vyska: 276.05 metru
------------------------------
Teplota: 27.10 stupnu Celsia
Barometricky tlak: 980 hPa
Nadmorska vyska: 276.39 metru
------------------------------
Teplota: 27.10 stupnu Celsia
Barometricky tlak: 980 hPa
Nadmorska vyska: 276.39 metru
------------------------------

Seznam použitých komponent:

http://dratek.cz/arduino/1265-digitalni-senzor-barometrickeho-tlaku-7pin-bosch-bmp085-1459974951.html

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

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

http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1214-arduino-vodice-samice-samice-40-kusu-1457705007.html

 

FB tw

Další podobné články