BMP180 Basınç Sensörü Kullanımı

7 2.997

BMP180 hava basıncını ölçerek dijital çıkış veren sensördür.Boyutunun çok küçük olması da daha kullanışlı kılıyor.Birçok arduino projelerinde çok basit şekilde kullanabiliceğiniz oldukça kullanışlı bir sensördür.BMP180 300-1100hPa arasındaki basınç değerini ölçmektedir.Ayrıca yüksekliği de hasaplayarak 500-9000 m arası yüksekliği hesaplamaktadır.

Sensör Pin Bağlantıları:

BMP180 I2C protokülünü desteklediğinden üzerindeki scl ve sda pinlerini arduino’nun kendi sabit scl ve sda pinlerine takıyoruz.Yani pinlerinin bağlandığı yerler belli yazılımda pin yerlerini yazmıyoruz.Kendi kütüphanesi ile de tek bir fonksiyonla basınç değerini ölçebiliyoruz.

Örnek Uygulama:

Arduino Uno scl ve sda pinleri sırayla A5 ve A4 pinleri olduğundan onlara takıyoruz.Diğer platformlarda bu pinler ayrıca gösterilmiş olabiliyor ve A5 ve A4 pini oluyor.

Yazılım Kısmı:

Sensörün kütüphanesini buradan indirelim >> BMP180 Library

#include <SFE_BMP180.h> // Basınç Sensör kütüphanesi
#include <Wire.h> // I2C kütüphanesi
 
SFE_BMP180 pressure; //sensör adı tanımlama
 
double baseline; // Basınç değeri
 
void setup()
{
Serial.begin(9600);
if (pressure.begin())
Serial.println("BMP180 Bağlanıldı");
else
{
Serial.println("BMP180 Bağlanılamadı\n\n");
while(1);
}
baseline = getPressure();
 
Serial.print("Basınç: ");
Serial.print(baseline);
Serial.println(" mb");
}
 
void loop()
{
double a,P;
 
P = getPressure();
a = pressure.altitude(P,baseline);
 
Serial.print("Yükseklik: ");
if (a >= 0.0) Serial.print(" "); // Pozitif sayılarda boşlu ekle
Serial.print(a,1);
Serial.print(" meters, ");
if (a >= 0.0) Serial.print(" "); // pozitif sayılarda boşluk ekle
Serial.print(a*3.28084,0);
Serial.println(" feet");
 
delay(500);
}
double getPressure()
{
char status;
double T,P,p0,a;
 
// Önce bir basınç okuma gerçekleştirmek için bir sıcaklık ölçümünü almak gerekir.
// Ölçüm birimi T saklanır
// Kullan 'T' işlevine T adresini sağlamak.
// Fonksiyon döner başarılı olursa 1, başarısızlık ise 0.
status = pressure.startTemperature();//Bir sıcaklık ölçümü başlatılır
if (status != 0) //
{
delay(status); // Ölçüm tamamlanması için bekle
status = pressure.getTemperature(T); // T değerini ölç
if (status != 0) //Sıfırdan faklı ise
{
status = pressure.startPressure(3);//Basınç ölçümünü başlat
if (status != 0)
{
// Parametre 0 ila 3 örnekleme ayarı, (en yüksek res, uzun bekleme) 'dir.
// Istek başarılı olursa beklemek ms sayısı döndürülür.
// Istek başarısız olursa 0 döndürülür.
 
delay(status);// Ölçümünü tamamlanmasını bekle
 
// 'P' adresi sağlamak için
// Not ayrıca işlev önceki sıcaklık ölçümü (T) gerektirir.
// (Sıcaklık kararlı ise, basınç ölçümleri bir dizi için tek ısı ölçümü yapabilirsiniz.)
// Fonksiyon döner başarılı olursa 1 , başarısızlık ise 0
 
status = pressure.getPressure(P,T); //Tamamlanan basınç ölçümü Al :
if (status != 0) //sıfıra eşit değilse
{
return(P); // Ölçüm birimi P saklanır
}
// P sıfıra eşitse
else Serial.println("Basınç ölçümünde hata alındı\n");
}
// P sıfıra eşitse
else Serial.println("Basınç Ölçümü başlatılamadı\n");
}
// T sıfıra eşitse
else Serial.println("Sıcaklık değeri alınamadı\n");
}
// T sıfıra eşitse
else Serial.println("Sıcaklık ölçümü başlatılamadı\n");
}

Yazılımda fonksiyonların açıklamalarına bakabilirsiniz.Böylece serial monitörden basınç değerlerini görebiliriz.

Bunlar da İlgini Çekebilir

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

  1. Fırat mekatronik

    hocam iyi çalışmalar. biz ardunio ile boru içindeki basınç ölçümü yapacağız. bu sensör işimizi görür mü?

  2. Mustafa

    sensore basildigi gibi cok basit bir devrede led yakabilirmiyiz . Arduino yada herhangibi baska pic olmadan sadece basildiginda elektrik gecisine izin vericek sekilde birsey mumkunmu.Degilse en minimum olcude nasil yapabilirin bir picmi mullanmaliyim. Gozlukteki bir ledi dokunmatik sensorle yakmak istiyorumda.

    Simdiden Tesekkurler.

    1. Sezgin GÜL

      Basınç sensörü ile mi yapmak istiyorsunuz ? Neyi referans alarak ledi yakmak istiyorsunuz? Dokunarak yakmak isterseniz en basiti ldr direnç kullanın.Elinizi üzerine koyduğunuzda direnç yükselir aydınlıkta ise direnç düşer. Yani ters orantıda çalışır. Ama bunu işlemci ile basit şekilde yöneterek parmağınızı bastığınızda ledi yakabilirsiniz.

  3. mehmet emin

    Merhaba,
    İnternetteki değişik kütüphaneleri kullanmama ve sensör sabit durmasına rağmen 1,5 m lik farkı engelleyemiyorum. Bunun sebebi ne olabilir?

    1. Sezgin GÜL

      Farkın sabit olması bulunduğunuz ortamın basıncından kaynaklı olabilir

      1. mehmet emin

        Kastetmek istediğim, yükseklik sürekli değişiyor. ben noise diye tahmin ediyorum. Bir bakmışsınız 80 cm yukarı gösteriyor bir bakıyorsunuz 50 cm aşağıda. Nasıl düzeltilebilir?

        1. Sezgin GÜL

          bağlantı kablolarında sorun olabilir veya sensörde sıkıntı vardır.