Sayfalar

Menü

19 Ekim 2023 Perşembe

BMP180 veri bilgileri

 Bosch Sensortec bu I2C cihazını tasarladı ve BMP280 180'in yerini alacak olmasına rağmen hala

kolayca temin edilebilir ve bir devre kartına monte edilebilir. 2 sensör arasındaki fark sadece
kullanılabilir konfigürasyon verisi miktarı ve aynı zamanda birbirinin yerine geçen bir yedek parçadır. Dolayısıyla çok az
Yeni cihazın çalışmasını sağlamak için burada tartışılan sürücü dosyasında değişiklik yapılması gerekir.
Veri sayfasına bakarak aşağıdakileri öğrenebiliriz:
Ana Özellikler:
Basınç aralığı: 300 ... 1100hPa (deniz seviyesine göre +9000m ... -500m)

Besleme voltajı: 1,8 ... 3,6V (VDD)
1,62V ... 3,6V (VDDIO)
Paket: Metal kapaklı LGA paketi
Küçük kaplama alanı: 3,6 mm x 3,8 mm
Süper düz: 0,93 mm yükseklik
Düşük güç: 1 örnek/sn'de 5μA. standart modda
Düşük gürültü: Ultra düşük güç modunda 0,06hPa (0,5m)
0,02hPa (0,17m) gelişmiş çözünürlük modu

Sıcaklık ölçümü dahil
I2C arayüzü
Tamamen kalibre edilmiş
Kurşunsuz, halojensiz ve RoHS uyumlu
MSL1 Tipik uygulamalar:
GPS navigasyonunun geliştirilmesi (ölü hesaplama, eğim tespiti vb.)
İçeride ve dışarıda navigasyon
Eğlence ve spor
Hava tahmini
Dikey hız göstergesi (yükselme/alçalma hızı)

Genel açıklama:
Piezo dirençli bir sensör, bir analogdan dijitale dönüştürücü ve E2PROM'lu bir kontrol ünitesinden oluşur.
seri I2C arayüzü.
Basınç ve sıcaklık verilerinin, E2PROM'un kalibrasyon verileriyle telafi edilmesi gerekir.
cihaz.
I2C modül adresleri şunlardır: Okuma için 0xEF ve yazma için 0xEE. 
Normal I2C standartları kullanılır ve tamamlanır
datasheet'te bilgi mevcuttur. Veriyolunda yalnızca 1 cihaz bulunabilir!
BMP180, basınç (UP) ve sıcaklığın (UT) telafi edilmemiş değerini sunar. E2PROM'dur
Üretim sırasında 176 bit kalibrasyon verisi ile programlanmıştır.
Bu, sensörün ofsetini, sıcaklığa bağımlılığını ve diğer parametrelerini telafi etmek için kullanılır.
Dönüştürme moduna bağlı olarak UP, 16 ila 19 bitlik veridir. UT, 16 bit veriye dönüştürür.
Mod ayarı yalnızca çözünürlüğü değil aynı zamanda dönüşüm süresini ve ortalama gücü de belirler.
tüketim. Sürücüyü yalnızca oss=3 (aslında 8x yüksek hızda örnekleme) için geliştireceğim. Her durumda olan budur
Veri sayfasında tavsiye edilir! Bu, mevcut tüketimle ~26 mS'lik maksimum dönüşüm süresi sağlar
12ua'dan! Veri sayfasında buna 'ultra yüksek çözünürlük' adı veriliyor. Bunu farklı şekilde kullanabilirsiniz, ancak daha sonra
veri sayfasına bakın!
Küresel hafıza haritası:
Aşağıdaki hafıza haritası, BMP180'i çalıştırmak için gerekli olan, dışarıdan erişilebilen tüm veri kayıtlarını göstermektedir.
sensör. Bellek geçicidir, bu da her açılıştan sonra yeniden yazmanız gerektiği anlamına gelir.


ctrl_meas kaydı (0xF4):
mc(<4:0>): Hangi ölçümün alınması gerektiğini kontrol eder.
 Sıcaklığı ölçmek için değer 0x0E'dir.
 Basıncı ölçmek için değer 0x04'tür.
Gerçekte bu değerlerin aşağıda gösterildiği gibi sco ve oss ile birleştirilmesi gerekir.
sco (<5>): Dönüşümün başlangıcı.
Bu bit, dönüşüm sırasında 1 olarak kalır ve dönüşüm tamamlandıktan sonra 0'a sıfırlanır.
oss (<7:6>): Basınç ölçümünün aşırı örnekleme oranını kontrol eder.
00 – 1x
01 – 2x
10 – 4x
11 – 8x (Burada geliştirilen sürücü için varsayılan!)


Sıcaklık dönüşümünü başlatmak için (4.5 mS sürer) bu yazmacın 0x2E ile yazılması gerekir.
Yüksek çözünürlüklü bir basınç dönüşümünü başlatmak için (25,5 mS sürer) bu kayıt 0xF4 ile yazılacaktır. (HAYIR, bu bir hata değil!)
 
yazılım sıfırlaması (0xE0):
Sadece kayıt yazın. 0xB6 olarak ayarlanırsa, açılışta sıfırlama ile aynı sırayı gerçekleştirir.
kimlik (0xD0):
Bu değer 0x55 olarak sabitlenmiştir ve iletişimin çalışıp çalışmadığını kontrol etmek için kullanılabilir.
Dönüştürmeden sonra veri kayıtları herhangi bir sırayla okunabilir ve ardışık okumaların kullanılması gerekli değildir.
zorunlu. Bu bizi kalibrasyon verilerine veya Bosch'a göre katsayılara getiriyor!
Kalibrasyon katsayıları:
176 bitlik E2PROM, her biri 16 bitlik 11 kelimeye bölünmüştür. Bunlar 11 kalibrasyon katsayısı içerir. Her
sensör modülünün bireysel katsayıları vardır.
Sıcaklık ve basıncın ilk hesaplanmasından önce PIC®'in tüm kalibrasyon verilerini okuması ve
sakla. Adlandırma kuralına olduğu gibi devam edeceğim. Bunlar:


Coefficient name
(type)


Name		BMP180 reg. address  BMP180 reg. address
			MSB		LSB
AC1 (signed int16) 	0xAA 		0xAB
AC2 (signed int16) 	0xAC 		0xAD
AC3 (signed int16) 	0xAE 		0xAF
AC4 (unsigned int16) 	0xB0 		0xB1
AC5 (unsigned int16) 	0xB2 		0xB3
AC6 (unsigned int16) 	0xB4 		0xB5
B1 (signed int16) 	0xB6 		0xB7
B2 (signed int16) 	0xB8 		0xB9
MB (signed int16) 	0xBA 		0xBB
MC (signed int16) 	0xBC 		0xBD
MD (signed int16) 	0xBE 		0xBF


Veri iletişimi, kelimelerin hiçbirinin 0 veya 0xFFFF değerine sahip olup olmadığı kontrol edilerek kontrol edilebilir.
 
Gerçek basıncın 1Pa (= 0,01hPa = 0,01mbar) adımlarla ve gerçek sıcaklığın da adımlarla hesaplanması
Artık bu katsayılar kullanılarak 0,1°C gerçekleştirilebilir.
Basınç ve sıcaklık ölçümü:
Öncelikle PIC®’in hafızasındaki az önce anlatılan katsayıları almamız gerekiyor. Bu sabitler okunabilir
yazılımın başlatılması sırasında I2C arayüzü aracılığıyla BMP180 E2PROM'dan.
°C cinsinden sıcaklığı ve hPa cinsinden basıncı hesaplamak için kalibrasyon verilerinin kullanılması gerekir.
Yukarıdaki tabloda her parametrenin türüne dikkat edin. Karmaşık tip dökümünü ortadan kaldırmak için sanırım şunları yapmamız gerekiyor:
boyunca long long (int32) kullanın. Bununla birlikte, bunun için oldukça fazla RAM'e ihtiyacınız var!
PIC® daha sonra basınç veya sıcaklık ölçümünü başlatmak için bir başlatma dizisi gönderir.
Zaman dönüştürüldükten sonra sonuç değeri (sırasıyla UP veya UT) I2C arayüzü aracılığıyla okunabilir.
Şimdi gerçek sıcaklığı ve/veya gerçek basıncı hesaplamamız gerekiyor. Bunun için ek değişkenlere de ihtiyacımız var
hesaplama! Bu süreç aşağıdaki akış şemasında anlatılmaktadır. I2C veriyolunun başlatılması şu şekilde yapılacaktır:
ana program ve bu akış şeması çeşitli sürücü işlevleri olarak uygulanacaktır.


Asıl hesaplama kısmı başlı başına başka bir canavar! Tip dökümünün burada devreye girmesi gerekiyor. Ayrıca şunu da unutmayın
derleyici varsayılanının tüm değişkenlerin imzasız olmasıdır.
Akılda tutulması gereken bir diğer nokta da >> ve << (bitleri n kez sola veya sağa hareket ettirmek) kullanımının aşağıdakilerle sınırlı olmasıdır:
yalnızca imzasız değerler.
Hadi yapalım dedik…
Öncelikle kalibrasyon sabitlerini ve diğer değişkenleri tanımlamamız gerekiyor. Bazıları küresel olmalı, bazıları ise yalnızca
Uygulanabilir fonksiyonda ihtiyaç duyulan Bu, RAM'den tasarruf etmenizi sağlar ve bu iyi bir şeydir!
İhtiyacımız olacak diğer bazı küresel katsayılarla tanımlanan katsayı:








Hiç yorum yok:

Yorum Gönder

Her yorum bilgidir. Araştırmaya devam...