İçindekiler:

BMA250 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım
BMA250 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım

Video: BMA250 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım

Video: BMA250 ve Arduino Nano Kullanarak İvme Ölçümü: 4 Adım
Video: Switch ON and OFF an LED with MPU6050 using Arduino NANO@ujjwaltipsandtrick8676 2024, Kasım
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 Arduino Nano 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. Arduino Nano

3. I2C Kablosu

4. Arduino Nano 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 arduino 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: İvme Ölçümü için Arduino Kodu:

İvme Ölçümü için Arduino Kodu
İvme Ölçümü için Arduino Kodu
İvme Ölçümü için Arduino Kodu
İvme Ölçümü için Arduino Kodu

Şimdi Arduino koduyla başlayalım.

Arduino ile sensör modülünü kullanırken Wire.h kütüphanesini dahil ediyoruz. "Wire" kütüphanesi, sensör ve Arduino kartı arasındaki i2c iletişimini kolaylaştıran fonksiyonları içerir.

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

#Dahil etmek

// BMA250 I2C adresi 0x18(24)

#define Addr 0x18

geçersiz kurulum()

{

// I2C iletişimini MASTER olarak başlat

Wire.begin();

// Seri İletiş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

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

eğer (xAccl > 511)

{

xAccl -= 1024;

}

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

eğer (yAccl > 511)

{

yAccl -= 1024;

}

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

eğer (zAccl > 511)

{

zAccl -= 1024;

}

// Seri monitöre veri çıkışı

Serial.print("X Ekseninde Hızlanma:");

Serial.println(xAccl);

Serial.print("Y Ekseninde Hızlanma:");

Seri.println(yAccl);

Serial.print("Z Ekseninde Hızlanma:");

Serial.println(zAccl);

}

Tel kitaplığında Wire.write() ve Wire.read() komutları yazmak ve sensör çıkışını okumak için kullanılır. Arduino IDE'nin seri monitöründe sensör çıkışını görüntülemek için Serial.print() ve Serial.println() kullanılır.

Sensör çıkışı yukarıdaki resimde gösterilmiştir.

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: