Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

basınç sensörü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
basınç sensörü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Haziran 2021 Salı

BMP180 Barometrik Basınç ve Sıcaklık Sensörü Arduino ile

 

BMP180 Barometrik Basınç ve Sıcaklık Sensörü Arduino ile

BMP180 ile Arduino projenize etrafındaki dünyayı algılama yeteneği verin.

Atmosferik basıncı ölçmek için özel olarak tasarlanmış temel bir sensördür ve iki şey için gerçekten yararlıdır.

  • Deniz seviyesinden bir dağ zirvesine giderken hava basıncı düşüyor. Bu, basıncı ölçerek rakımı belirleyebileceğimiz anlamına gelir. Yani bu sensörü Altimetre olarak kullanabiliriz .
  • Atmosferik basınç hava ile değiştiği için, onu hava durumundaki değişiklikleri izlemek için kullanabiliriz .

Bu sensörlerin kullanımı oldukça basittir, önceden kalibre edilmiştir ve fazladan bileşen gerektirmez, böylece barometrik basıncı, yüksekliği ve sıcaklığı hemen ölçmeye başlayabilirsiniz.


Donanıma Genel Bakış

Modülün merkezinde, Bosch tarafından üretilen yeni nesil dijital basınç ve sıcaklık sensörü - BMP180 bulunmaktadır.

BMP180 Çip

BMP180, barometrik basıncı 300 ila 1100 hPa (deniz seviyesinden 9000m ila -500m yukarıda) ve -40 ° C ila 85 ° C sıcaklıkları ± 1.0 ° C hassasiyetle ölçebilir.

modüldeki bmp180 yongası

Basınç ölçümleri o kadar hassastır (0,25 m'lik düşük irtifa gürültüsü), ± 1 metre hassasiyetle altimetre olarak bile kullanabilirsiniz.

bmp180 sensör özellikleri

Güç Gereksinimi

Modül, yerleşik bir LM6206 3.3V regülatör ile birlikte gelir, böylece onu Arduino gibi bir 5V mantık mikrodenetleyici ile endişelenmeden kullanabilirsiniz.

bmp180 modülü 3v3 regülatörü

BMP180, ölçümler sırasında 1mA'dan daha az ve boşta iken yalnızca 5μA tüketir. Bu düşük güç tüketimi, pille çalışan cihazlarda uygulamaya izin verir.

I2C Arayüzü

Modül, seçtiğiniz herhangi bir mikro denetleyiciyle kolayca arabirim oluşturabilen basit bir iki kablolu I2C arabirimine sahiptir.

Bu modülün donanım bağlantılı bir I2C adresi vardır ve 0x77 HEX olarak ayarlanmıştır .

BMP180 modülü, kendisini dış dünyaya arayüzleyen yalnızca 4 pime sahiptir. Bağlantılar aşağıdaki gibidir:

bmp180 modülü pin çıkışı

VCC modül için 3.3V ila 5V arasında herhangi bir yerde olabilen güç kaynağıdır.

GND Arduino'nun zeminine bağlanmalıdır.

SCL I2C arayüzü için bir seri saat pinidir.

SDA I2C arayüzü için bir seri veri pinidir.

BMP180 Modülünü Arduino ya Kablolama

BMP180 modülünü Arduino'ya bağlayalım.

Bağlantılar oldukça basit. VIN pinini Arduino'daki 5V çıkışına bağlayarak başlayın ve GND'yi toprağa bağlayın.

Şimdi I2C iletişimi için kullanılan pinlerde kaldık. Her Arduino Board'un uygun şekilde bağlanması gereken farklı I2C pinlerine sahip olduğunu unutmayın. R3 düzenine sahip Arduino kartlarında, SDA (veri hattı) ve SCL (saat hattı), AREF pinine yakın pin başlıkları üzerindedir. A5 (SCL) ve A4 (SDA) olarak da bilinirler.

Bir Mega'nız varsa, iğneler farklıdır! Dijital 21 (SCL) ve 20 (SDA) kullanmak isteyeceksiniz. Hızlı anlamak için aşağıdaki tabloya bakın.

SCLSDA
Arduino UnoA5A4
Arduino NanoA5A4
Arduino Mega2120
Leonardo / Mikro32

Aşağıdaki şema, her şeyi nasıl bağlayacağınızı gösterir.

arduino ile kablolama bmp180 modülü

Gerekli kitaplıkları yükleme

BMP180 modülü ile irtifa ve barometrik basıncı hesaplamak çok matematik gerektirir. Neyse ki, Adafruit BMP180 Kütüphanesi, sıcaklık, barometrik basınç ve yükseklik verilerini okumak için basit komutlar verebilmemiz için tüm karmaşıklıkları gizlemek için yazılmıştır.

Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin… Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.

kitaplıkları yönet

Aramanızı 'bmp180' yazarak filtreleyin. Birkaç giriş olmalı. Adafruit tarafından hazırlanan Adafruit BMP085 Kitaplığını arayın. Bu girişe tıklayın ve ardından Yükle'yi seçin.

bmp180 arduino kütüphanesi kurulumu

Arduino Kodu - Sıcaklık ve Barometrik Basınç Okuma

Aşağıdaki taslak, BMP180 modülünden sıcaklık ve barometrik basıncın nasıl okunacağı konusunda size tam bir anlayış verecektir ve daha pratik deneyler ve projeler için temel oluşturabilir.

#include <Wire.h>
#include <Adafruit_BMP085.h>
#define seaLevelPressure_hPa 1013.25

Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
	Serial.println("Could not find a valid BMP085 sensor, check wiring!");
	while (1) {}
  }
}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");

    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" meters");

    Serial.print("Pressure at sealevel (calculated) = ");
    Serial.print(bmp.readSealevelPressure());
    Serial.println(" Pa");

    Serial.print("Real altitude = ");
    Serial.print(bmp.readAltitude(seaLevelPressure_hPa * 100));
    Serial.println(" meters");
    
    Serial.println();
    delay(500);
}

Seri monitörde çıkışın nasıl göründüğü aşağıda açıklanmıştır.

bmp180 sıcaklık basınç irtifa çıkışı

Deniz seviyesi basıncında her 1hPa kesinti, rakım hesaplamalarında yaklaşık 8,5 m hatayla sonuçlanır. Yani, aldığımız irtifa yeterince yakın ama doğru değil.

Hava durumuna göre değişecek mevcut deniz seviyesi basıncını biliyorsanız, daha doğru bir rakım ölçümü elde edebilirsiniz.

Bu kod, mevcut deniz seviyesi basıncının 101325 Pascal'a eşit olan 1013,25 milibar olduğunu varsayar. Bu nedenle seaLevelPressure_hPadeğişken 1013.25 olarak ayarlanmıştır.

Kod Açıklaması:

Taslak, dört kitaplık dahil olmak üzere başlar. Wire.h ve Adafruit_BMP085.h.

#include <Wire.h>
#include <Adafruit_BMP085.h>

Ardından, seaLevelPressure_hPayüksekliği hesaplamak için gereken değişkeni tanımlıyoruz Bulunduğunuz yerdeki mevcut deniz seviyesi basıncına değiştirin.

Bununla bmpilgili işlevlere erişebilmemiz için bir nesne de yaratıyoruz .

#define seaLevelPressure_hPa 1013.25

Adafruit_BMP085 bmp;

Kodun kurulum işlevinde, PC ile seri iletişimi başlatır ve begin()işlevi çağırırız .

begin()Çip İD doğru olup olmadığını fonksiyon I2C arayüzü ve kontroller başlatır. Ardından, yumuşak sıfırlama kullanarak çipi sıfırlar ve uyandıktan sonra kalibrasyon için sensör için bekler.

Serial.begin(9600);

if (!bmp.begin()) {
    Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    while (1) {}
}

Döngü işlevinde, sıcaklık barometrik basıncı ve yüksekliği BMP180 modülünden okumak için aşağıdaki işlevleri kullanırız.

  • readTemperature() işlevi, sıcaklığı sensörden döndürür.
  • readPressure() işlevi sensörden barometrik basıncı döndürür.
  • readAltitude(seaLevelPressure_hPa * 100) işlevi, rakımı (metre cinsinden) belirtilen atmosferik basınçtan (hPa cinsinden) hesaplar.
  • readSealevelPressure() fonksiyonu deniz seviyesindeki basıncı hesaplar (hPa cinsinden).
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");

Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");

Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");

Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");

Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(seaLevelPressure_hPa * 100));
Serial.println(" meters");

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.