Barometryczny czujnik ciśnienia – co to jest? Poradnik Arduino

Share on facebook
Share on twitter
Share on linkedin
Czas czytania: 5 min.

Barometryczny czujnik ciśnienia (ang. Barometric Pressure Sensor) znany jako nowa forma barometru to nic innego jak kompatybilne z Arduino narzędzie do pomiarów ciśnienia atmosferycznego. Na tym właściwie moglibyśmy zakończyć artykuł, bo odpowiedzieliśmy na pytanie z tytułu. Ale chwila… jak on działa? Co się zmieniło względem dawnych lat? Wreszcie: jak podłączyć czujnik do Arduino? Przyjrzymy się też temu, które z nich mają dodatkowe funkcje.

Wraz ze zmianami na przestrzeni lat barometryczne czujniki przestrzeni ulegały miniaturyzacji, by można było używać ich w smartfonach i płytkach-mikrokontrolerach takich jak Arduino – najpopularniejszymi pozostają starszy BMP180 i młodsze BMP280 oraz BME280. W dzisiejszym przewodniku wchodzimy w temat głębiej i pomagamy stworzyć silne wiązanie pomiędzy Arduino a sensorem ciśnienia.

Jak to działa?

Znać funkcje i zastosowania czujników to ważna sprawa. Nie sposób jednak obyć się tutaj bez historii. W XVII wieku większość barometrów używała płynów. Najwcześniejszy barometr hydrostatyczny wypełniony nasyconą parą rtęci powstał za sprawą Evangelisty Torriceliego ponad 400 lat temu. Ten wiekowy wynalazek składa się z pionowej szklanej tuby z rtęcią przy podstawie. Pomiar otrzymywano poprzez balans (spadki i wzrosty) kolumienki z rtęcią i sprawdzanie jej wysokości.

Hydrostatyczny barometr
Zasada działania barometru hydrostatycznego.

Wzrost ciśnienia powoduje większą siłę u podstawy rezerwuaru, co z kolei powoduje wędrowanie słupka ku górze – analogicznie jest przy spadkach. Zasada jest zatem prosta – im wyższy słupek, tym wyższe ciśnienie. Wraz z rozwojem technologii pojawiły się barometry niewymagające płynów i dokładniejsze. Przykładem jest tutaj aneroid – czujnik ciśnieniomierza. Jego najważniejszą częścią jest puszka membranowa, w której panuje obniżone ciśnienie (puszka Vidiego). Odkształcenia puszki powodowane zmiennością ciśnienia atmosferycznego i są przenoszone na wskazówkę. 

 
Barometr aneroid
Barometr z aneroidem. Widoczna skala opisowa pogody - nieoceniona pomoc dla dawnych podróżników.

Czujnik barometryczny ciśnienia - MEMS

Nowoczesne barometry korzystają z technologii mikroukładów elektromechanicznych (z ang. MEMS microelectromechanical system). Dzięki niej mierzenie jest możliwe na małych i elastycznych strukturach. To te, które stosuje się m.in. we wspomnianych smartfonach i płytkach Arduino takich jak BME280 i BMP280 oraz w czujniku DPS310 widocznym na poniższej ilustracji.

Technologia użyta w MEMS oferuje nie tylko większą funkcjonalność, ale i pomiary w powietrzu zarówno stałym, jak i dynamicznym. Czyni je to chętnie stosowanymi w przenośnych stacjach meteorologicznych i projektach opartych na Arduino.

Jak działa czujnik MEMS?

Najpopularniejszymi czujnikami ciśnienia MEMS są konstrukcje piezorezystancyjne oraz pojemnościowe. W przypadku tych pierwszych pomiar ciśnienia bazuje (jak sama nazwa wskazuje) na efekcie piezoelektrycznym. Cienka, wytrawiona krzemowa membrana, na której umieszczone są piezorezystory połączone w układ mostku Wheatstone’a odkształca się pod wpływem zmian ciśnienia atmosferycznego. Odkształcenia podczas których powstają siły ściskające i rozciągające powodują zmian zmiany rezystancji piezorezystorów. W dużym skrócie zmiany tej rezystancji są końcowo przeliczane na zmiany ciśnienia. Czujniki pojemnościowe również bazują na konstrukcji membranowej, z tą różnicą, że membrana tworzy razem z cienkowarstwową, metalową elektrodą kondensator powietrzny. Zmiany ciśnienia powodują odkształcanie się membrany, co powoduje zmianę jej pojemności. Następnie zmiany te są przeliczane na zmiany ciśnienia. 

Dobór właściwego czujnika

Skoro rozumiemy już reguły działania omawianych urządzeń, to poniższe objaśnienie pomoże odpowiedzieć na pytanie jak wybrać odpowiedni czujnik. Na początek – co wziąć pod uwagę przy zakupie czujnika? Warto wiedzieć o co zapytać, czemu się przyjrzeć; słowem: nie kupować niczego w ciemno, prawda?

  • Precyzja pomiaru ciśnienia – sprawa niebagatelna. Im wyższa, tym dokładniejszy czujnik i bardziej stabilne odczyty.
  • Zakres pomiaru – większy zakres pomiaru zarówno ciśnienia, jak i temperatury przydaje się zwłaszcza tam, gdzie amplitudy mogą być ekstremalnie duże. 
  • Zużycie prądu – nikt nie potrzebuje czujnika, który pożera wielkie ilości prądu. Równie istotne jest tutaj upewnienie się, że sensor wpisuje się w wymogi mocy Twojego projektu. 
  • Rozmiar sensora – na szczęście większość barometrycznych czujników ciśnienia ma niewielkie wymiary kompatybilne z tymi dyktowanymi przez ograniczenia projektowe.
  • Cena – cóż, bez komentarza. Oprócz tego, że koniecznie należy wliczyć w to relację pomiędzy kosztem zakupu, kosztem eksploatacji (zużycie prądu) a wydajnością. 

Zalecane czujniki Seeeduino

Mając na uwadze wymienione wyżej czynniki przyglądamy się czujnikom marki Seeeduino. Oto trzy spośród nich. 

Grove - BMP280 - Czujnik ciśnienia oraz temperatury I2C/SPI

Oparty na Bosch BMP280 czujnik barometryczny od Grove to niskie koszty przy wysokiej precyzji pomiaru. Ten ulepszony względem BMP180 moduł dla precyzyjnego barometru cyfrowego może posłużyć do pomiarów temperatury i ciśnienia atmosferycznego. Jest całkowicie kompatybilny z Arduino i łączy się za pomocą magistrali I2C.

Czujnik BMP280 ma znacznie mniejszą powierzchnię, pobór prądu to zaledwie 0.6 mA, a pomiar jest o wiele dokładniejszy niż u poprzednika. Interfejs SPI pozwala na większą ilość trybów pomiaru. Moduł jest bardzo łatwy w podłączeniu i użytkowaniu, wystarczy połączyć za pomocą przewodu Grove czujnik z płytką Arduino. Niewątpliwym atutem są gotowe przykłady kodów podawane w bibliotece na GitHub. 

  • Przedział pomiaru ciśnienia: 300-1100 hPa
  • Przedział pomiaru temperatury: (-40)-85°C

Grove - BME280 - czujnik wilgotności, temperatury oraz ciśnienia 110kPa I2C 3-5V

Moduł Grove BME280 również oferuje pełną kompatybilność z Arduino. Jest zasilany napięciem od 3,3 do 5 V z interfejsem I2C oraz SPI. Sladem poprzednio opisywanego czujnika bazuje on na Bosch BME280. Jest wydajny i precyzyjny w trzech odczytach – oprócz ciśnienia zmierzymy z jego pomocą także temperaturę oraz wilgotność powietrza.  W zestawie znajduje się również przewód przystosowany do nakładki Seeedstudio Base Shield v2.0.

  • Przedział pomiaru ciśnienia: 300-1100 hPa
  • Przedział pomiaru temperatury: (-40)-85°C
 

Grove - cyfrowy barometr, czujnik ciśnienia/temperatury 120kPa I2C/SPI - DPS310

Czujnik ciśnienia i temperatury DPS310 posiada dołączone złącze Grove, które pomaga w podłączeniu nakładki BaseShield. Dokładność pomiaru ciśnienia wynosi 0,002 hPa. Komunikuje się poprzez interfejs SPI lub I2C. Zasilany napięciem 3,3 V lub 5 V. Tutaj także bez niespodzianek – otrzymujemy kompatybilność z Arduino, przygotowany przez producenta przewodnik i bibliotekę z przykładowym kodem.

  • Przedział pomiaru ciśnienia: 300-1100 hPa
  • Przedział pomiaru temperatury: (-40)-85°C

Krótki przewodnik

Czego potrzebujesz?

  • DPS310 to najbardziej przystępna cenowo i funkcjonalnie opcja, jednak w naszym  przewodniku będziemy używać Grove – BME280, czyli najpowszechniej kojarzonego czujnika barometrycznego.

Konfiguracja hardware

  • Krok 1 – podłącz sensor Grove BME280 do portu I2C Grove-Base Shield. Możesz także podłączyć BME280 bezpośrednio do Seeeduino.
  • Krok 2 – podłącz Grove-Base Shield do Seeeduino.
  • Krok 3 – podłącz Seeeduino do PC przewodem USB.

Po wykonaniu kroków powinieneś otrzymać efekt zbliżony do poglądowego zdjęcia:

Arduino

Konfiguracja software

  • Krok 1: Pobierz  Library and example code z Github
  • Krok 2 (opcjonalny): Sprawdź How to install library przy instalacji biblioteki Arduino
  • Krok 3: Stwórz szkic Arduino i wklej poniższe kody lub otwórz kod ze ścieżki:

 File> Example ->Barometer_Sensor->Barometer_Sensor

/*
 * bme280_example.ino
 * Example sketch for bme280
 *
 * Copyright (c) 2016 seeed technology inc.
 * Website    : www.seeedstudio.com
 * Author     : Lambor
 * Create Time:
 * Change Log :
 *
 * The MIT License (MIT)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
#include "Seeed_BME280.h"
#include <Wire.h>

BME280 bme280;

void setup()
{
  Serial.begin(9600);
  if(!bme280.init()){
    Serial.println("Device error!");
  }
}

void loop()
{
  float pressure;

  //get and print temperatures
  Serial.print("Temp: ");
  Serial.print(bme280.getTemperature());
  Serial.println("C");//The unit for  Celsius because original arduino don't support speical symbols

  //get and print atmospheric pressure data
  Serial.print("Pressure: ");
  Serial.print(pressure = bme280.getPressure());
  Serial.println("Pa");

  //get and print altitude data
  Serial.print("Altitude: ");
  Serial.print(bme280.calcAltitude(pressure));
  Serial.println("m");

  //get and print humidity data
  Serial.print("Humidity: ");
  Serial.print(bme280.getHumidity());
  Serial.println("%");

  delay(1000);
}
  • Krok 4: Uploaduj kod. W razie kłopotów – Seeed przygotowało poradnik
  • Krok 5: Gotowe, sensor odbiera dane! Czas na stworzenie stacji pogodowej i podzielenie się swoim projektem ze światem. Powodzenia!

Podziel się:

Share on facebook
Share on linkedin
Share on twitter
Oskar Pacelt

Oskar Pacelt

Wierzy, że udany tekst jest jak list wysłany w przyszłość. W życiu najbardziej interesuje go prawda, pozostałych zainteresowań zliczyć nie sposób. Kocha pływać. Zajmuje się korektą tekstów (czyt. uprzykrzaniem życia współpracownikom), tłumaczeniami i ciekawostkami ze świata technologii.
Oskar Pacelt

Oskar Pacelt

Wierzy, że udany tekst jest jak list wysłany w przyszłość. W życiu najbardziej interesuje go prawda, pozostałych zainteresowań zliczyć nie sposób. Kocha pływać. Zajmuje się korektą tekstów (czyt. uprzykrzaniem życia współpracownikom), tłumaczeniami i ciekawostkami ze świata technologii.

Zobacz więcej:

Dodaj komentarz