BMP180 Basınç Sensörü Kullanımı
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.
Hocam merhabalar;
Scl ve Sda pinlerini kullanmayıp A0,1,2,3 pinleriyle bu veriler alınabilir mi? Çünkü projemde başka sensörler için scl sda pinlerini kullanıyorum.
hocam bunu nano ile yapmam için yardımcı olabilir misiniz acaba
Visitor Rating: 1 Stars
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ü?
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.
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.
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?
Farkın sabit olması bulunduğunuz ortamın basıncından kaynaklı olabilir
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?
bağlantı kablolarında sorun olabilir veya sensörde sıkıntı vardır.