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...