İçindekiler:

BMA250 ve Parçacık Fotonu Kullanarak Hızlanma Ölçümü: 4 Adım
BMA250 ve Parçacık Fotonu Kullanarak Hızlanma Ölçümü: 4 Adım

Video: BMA250 ve Parçacık Fotonu Kullanarak Hızlanma Ölçümü: 4 Adım

Video: BMA250 ve Parçacık Fotonu Kullanarak Hızlanma Ölçümü: 4 Adım
Video: BOŞ HESAPLARA 45.000 UC YÜKLENİRSE? ÇOK ŞANSLILAR! PUBG Mobile 2024, Temmuz
Anonim
Image
Image

BMA250, ±16 g'a kadar yüksek çözünürlüklü (13 bit) ölçüme sahip küçük, ince, ultra düşük güçlü, 3 eksenli bir ivmeölçerdir. Dijital çıkış verileri, 16 bitlik ikili tamamlayıcı olarak biçimlendirilir ve I2C dijital arabirimi aracılığıyla erişilebilir. Eğim algılama uygulamalarında yerçekiminin statik ivmesini ve ayrıca hareket veya şoktan kaynaklanan dinamik ivmeyi ölçer. Yüksek çözünürlüğü (3,9 mg/LSB), 1.0°'den daha düşük eğim değişikliklerinin ölçülmesini sağlar.

Bu derste, BMA250 ve Parçacık fotonu kullanarak üç dikey eksenin tümünde ivmeyi ölçeceğiz.

Adım 1: Donanım Gerekli:

Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım

Hedefimizi gerçekleştirmek için ihtiyaç duyduğumuz malzemeler aşağıdaki donanım bileşenlerini içerir:

1. BMA250

2. Parçacık Fotonu

3. I2C Kablosu

4. Parçacık Fotonu için I2C Kalkanı

Adım 2: Donanım Bağlantısı:

Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı

Donanım bağlantısı bölümü temel olarak sensör ve parçacık fotonu arasında gerekli olan kablo bağlantılarını açıklar. İstenilen çıktı için herhangi bir sistem üzerinde çalışırken doğru bağlantıların sağlanması temel zorunluluktur. Yani, gerekli bağlantılar aşağıdaki gibidir:

BMA250, I2C üzerinden çalışacaktır. Sensörün her bir arayüzünün nasıl bağlanacağını gösteren örnek kablo şeması buradadır.

Kutudan çıktığı gibi, kart bir I2C arayüzü için yapılandırılmıştır, bu nedenle, aksi takdirde agnostik iseniz bu bağlantıyı kullanmanızı öneririz. Tek ihtiyacınız olan dört tel!

Vcc, Gnd, SCL ve SDA pinlerinden sadece dört bağlantı gereklidir ve bunlar I2C kablosu yardımıyla bağlanır.

Bu bağlantılar yukarıdaki resimlerde gösterilmiştir.

Adım 3: İvmeyi Ölçmek için Kod:

İvmeyi Ölçmek İçin Kod
İvmeyi Ölçmek İçin Kod

Şimdi parçacık koduyla başlayalım.

Sensör modülünü arduino ile kullanırken application.h ve spark_wiring_i2c.h kütüphanesini dahil ediyoruz. "application.h" ve spark_wiring_i2c.h kitaplığı, sensör ve parçacık arasındaki i2c iletişimini kolaylaştıran işlevleri içerir.

Parçacık kodunun tamamı, kullanıcının rahatlığı için aşağıda verilmiştir:

#Dahil etmek

#Dahil etmek

// BMA250 I2C adresi 0x18(24)

#define Addr 0x18

int xAccl = 0, yAccl = 0, zAccl = 0;

geçersiz kurulum()

{

// Değişken ayarla

Particle.variable("i2ccihaz", "BMA250");

Particle.variable("xAccl", xAccl);

Particle.variable("yAccl",yAccl);

Particle.variable("zAccl",zAccl);

// I2C iletişimini MASTER olarak başlat

Wire.begin();

// Seri iletişimi başlat, baud hızını ayarla = 9600

Seri.başla(9600);

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Aralık seçim kaydı seç

Wire.write(0x0F);

// Aralığı ayarla +/- 2g

Wire.write(0x03);

// I2C İletimini Durdur

Wire.endTransmission();

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Bant genişliği kaydını seç

Wire.write(0x10);

// Bant genişliğini 7,81 Hz ayarla

Wire.write(0x08);

// I2C İletimini Durdur

Wire.endTransmission();

gecikme(300);}

boşluk döngüsü()

{

imzasız int veri[0];

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri Kayıtlarını Seç (0x02 − 0x07)

Wire.write(0x02);

// I2C İletimini Durdur

Wire.endTransmission();

// 6 bayt iste

Wire.requestFrom(Adr, 6);

// Altı baytı oku

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

if(Wire.available() == 6)

{

data[0] = Wire.read();

data[1] = Wire.read();

data[2] = Wire.read();

veri[3] = Wire.read();

veri[4] = Wire.read();

veri[5] = Wire.read();

}

gecikme(300);

// Veriyi 10 bite dönüştürün

xAccl = ((veri[1] * 256) + (veri[0] & 0xC0)) / 64;

eğer (xAccl > 511)

{

xAccl -= 1024;

}

yAccl = ((veri[3] * 256) + (veri[2] & 0xC0)) / 64;

eğer (yAccl > 511)

{

yAccl -= 1024;

}

zAccl = ((veri[5] * 256) + (veri[4] & 0xC0)) / 64;

eğer (zAccl > 511)

{

zAccl -= 1024;

}

// Gösterge tablosuna veri çıkışı

Particle.publish("X-Ekseninde İvme:", String(xAccl));

gecikme(1000);

Particle.publish("Y Ekseninde İvme:", String(yAccl));

gecikme(1000);

Particle.publish("Z Ekseninde İvme:", String(zAccl));

gecikme(1000);

}

Particle.variable() işlevi, sensörün çıktısını depolamak için değişkenleri oluşturur ve Particle.publish() işlevi, çıktıyı sitenin panosunda görüntüler.

Sensör çıkışı, referansınız için yukarıdaki resimde gösterilmektedir.

Adım 4: Uygulamalar:

Uygulamalar
Uygulamalar

BMA250 gibi ivmeölçerler, uygulamalarını çoğunlukla oyunlarda bulur ve profil değiştirmeyi görüntüler. Bu sensör modülü, mobil uygulamalar için gelişmiş güç yönetim sisteminde de kullanılır. BMA250, akıllı bir çip üzerinde hareket tetiklemeli kesinti kontrolörü ile birleştirilmiş üç eksenli bir dijital hızlanma sensörüdür.

Önerilen: