25
Oca
2020

Arduino ile bmp180 barometrik sensör kullanımı

Bosch Gmbh tarafından geliştirilen bmp180 barometrik sensör, uygulanan kuvvete göre direnç değeri değişen yarı iletken silikon maddeden üretilmiştir. bmp180 ile yatay hız, hava basıncı ve rakım bilgilerini izlemek mümkündür.

Hava basıncını ölçmek için sıcaklık değeri de hesaplamaya dahil edilmelidir. Hava, kütlesi ve ağırlığı olan maddelerden oluşur. Havanın ağırlığı, sıcaklığı ile doğrudan ilişkilidir çünkü havanın sıcaklığı arttıkça yoğunluğu azalır, dolayısıyla ağırlığı azalır. Hava, yerçekimi kuvveti nedeniyle dünyanın merkezine doğru bir basınç oluşturur. Bu basınca barometrik veya atmosferik basınç denir. Yerden atmosferin yüzeyine kadar 1 inçkare genişliğinde bir sütun olduğu varsayılırsa, bu sütun içerisindeki havanın yeryüzüne yaptığı basınç miktarına 1 atmosfer basıncı denir. Bu sütundaki havanın ağırlığı 14.7 lbs (6667,8 gram) olarak ölçülmüştür. 1 atm = 14,7 psi (pounds per square inch / bir inç kare başına düşen pound) olarak çevrilir.

 

bmp180, basınç değerini hekto Pascal (hPa) cinsinden ölçer. 1 Pascal basınç, 1 metrekareye uygulanan 1 Newton kuvvete eşittir. 1hPa; 1Pa basıncın yüzde birine eş değerdir. bmp180′ in ölçüm aralığı 300-1100hPa aralığında ve ölçüm hassasiyeti yaklaşık 2hPa olarak belirtilmiştir. Bu ölçüm aralığı; ideal ortamda deniz seviyesinin 500m altı ile 9000 metre üstü arasındaki atmosferik basınç değerlerine denktir.

bmp180 i2c arayüzü ile haberleşir. bmp180 üzerinde 4 adet pin bulunur. Bunlar VIN (voltaj girişi), GND (toprak), SCL (saat) ve SDA (veri) pinleridir. Sensörün voltaj girişi 1,9V ile 3,6V aralığında olduğu için, VIN girişi Arduino kartının 3,3V çıkışına bağlanmalıdır. Aşağıdaki tablo, kullanılan Arduino kartının türüne göre i2c arayüzü bağlantı pinlerini göstermektedir.

Malzemeler

  • 1 adet Arduino
  • 1 adet bmp180 barometrik sensör

Bağlantı şeması

Bazı bmp180 modüllerinde şekildeki gibi 5 pin bulunur. 5 pinli modüllerin 4 pinli olanlardan tek farkı üzerinde çift voltaj girişi bulunmasıdır. Bu girişlerden biri 3,3V, diğeri ise 5V gerilim içindir ve bu girişlerin sadece 1 tanesine güç vermek yeterlidir.

Kaynak kod

SFE_BMP180 kütüphanesini indirmek için tıklayınız.

Wire.h kütüphanesini indirmek için tıklayınız.

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

SFE_BMP180 bmp180;  // bmp180 adında bir sensör nesnesi oluştur

void setup() {
  Serial.begin(9600);
  
  // bmp 180 ile haberleşme sağlandı mı kontrol et
  bool basarili = bmp180.begin();
  if (basarili) {
    Serial.println("BMP180 başlatıldı.");
  }
}

void loop() {

  char durum;  // Sensörden okunan durum
  double T, P;  // Sıcaklık ve basınç değişkenleri
  bool basarili = false;  // Sensör çalışıyor mu bilgisi değişkeni

  durum = bmp180.startTemperature();

  if (durum != 0) {
    delay(1000);
    durum = bmp180.getTemperature(T);

    if (durum != 0) {
      durum = bmp180.startPressure(3);

      if (durum != 0) {
        delay(durum);
        durum = bmp180.getPressure(P, T);

        if (durum != 0) {
          Serial.print("Basınç: ");
          Serial.print(P);
          Serial.println(" hPa");

          Serial.print("Sıcaklık: ");
          Serial.print(T);
          Serial.println(" C");
        }
      }
    }
  }
}

Kaynak kod Arduino’ ya yüklendiğinde seri port ekranından aşağıdaki gibi basınç ve sıcaklık değerleri izlenebilir.