İçindekiler:

3 Eksenli Jiroskop Sensörü BMG160'ın Arduino Nano ile Arayüz Oluşturulması: 5 Adım
3 Eksenli Jiroskop Sensörü BMG160'ın Arduino Nano ile Arayüz Oluşturulması: 5 Adım

Video: 3 Eksenli Jiroskop Sensörü BMG160'ın Arduino Nano ile Arayüz Oluşturulması: 5 Adım

Video: 3 Eksenli Jiroskop Sensörü BMG160'ın Arduino Nano ile Arayüz Oluşturulması: 5 Adım
Video: Arduino Nano and GY-521 MPU6050 3-осевой гироскоп, 3-осевой акселерометр и DMP 2024, Kasım
Anonim
Image
Image

Günümüz dünyasında gençlerin ve çocukların yarısından fazlası oyun oynamayı seviyor ve oyun oynamanın teknik yönlerine hayran olan herkes bu alanda hareket algılamanın önemini biliyor. Biz de aynı şeye hayran kaldık ve sadece tahtalara getirmek için herhangi bir nesnenin açısal hızını ölçebilen bir jiroskop sensörü üzerinde çalışmayı düşündük. Yani, görevle başa çıkmak için aldığımız sensör BMG160. BMG160, açısal hızı üç dikey oda boyutunda ölçebilen 16 bit, dijital, üç eksenli bir jiroskop sensörüdür.

Bu derste, BMG160'ın Arduino Nano ile çalışmasını göstereceğiz.

Bu amaçla ihtiyaç duyacağınız donanımlar aşağıdaki gibidir:

1. BMG160

2. Arduino Nano

3. I2C Kablosu

4. Arduino Nano için I2C Kalkanı

Adım 1: BMG160'a Genel Bakış:

Neye ihtiyacın var..!!
Neye ihtiyacın var..!!

Öncelikle BMG160 sensör modülünün temel özelliklerini ve üzerinde çalıştığı iletişim protokolünü tanımak isteriz.

BMG160 temel olarak açısal hızları ölçebilen 16 bitlik, dijital, üç eksenli bir jiroskop sensörüdür. Üç dik oda boyutunda, x-, y- ve z ekseninde açısal oranları hesaplayabilir ve karşılık gelen çıkış sinyallerini sağlayabilir. I2C iletişim protokolünü kullanarak ahududu pi kartı ile iletişim kurabilir. Bu özel modül, tüketici uygulamalarının yanı sıra endüstriyel amaçlar için gereksinimleri karşılamak üzere tasarlanmıştır.

Sensörün üzerinde çalıştığı iletişim protokolü I2C'dir. I2C, inter-entegre devre anlamına gelir. Haberleşmenin SDA(seri data) ve SCL(seri saat) hatları üzerinden gerçekleştiği bir haberleşme protokolüdür. Aynı anda birden fazla cihazın bağlanmasına izin verir. En basit ve en verimli iletişim protokollerinden biridir.

Adım 2: İhtiyacınız Olan Şey..!

Neye ihtiyacın var..!!
Neye ihtiyacın var..!!
Neye ihtiyacın var..!!
Neye ihtiyacın var..!!
Neye ihtiyacın var..!!
Neye ihtiyacın var..!!

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

1. BMG160

2. Arduino Nano

3. I2C Kablosu

4. Arduino Nano için I2C Kalkanı

Adım 3: 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:

BMG160, 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 4: 3-Eksen Jiroskop Ölçümü Arduino Kodu:

3-Eksen Jiroskop Ölçümü Arduino Kodu
3-Eksen Jiroskop Ölçümü Arduino Kodu
3-Eksen Jiroskop Ölçümü Arduino Kodu
3-Eksen Jiroskop Ölçümü Arduino Kodu

Şimdi arduino koduyla başlayalım.

Sensör modülünü arduino ile 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.

Tüm arduino kodu, kullanıcının rahatlığı için aşağıda verilmiştir:

#include// BMG160 I2C adresi 0x68(104)

#define Addr 0x68

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 kaydını seç

Wire.write(0x0F);

// 2000 dps tam ölçek aralığını yapılandır

Wire.write(0x80);

// 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 ayarla = 200 Hz

Wire.write(0x04);

// I2C İletimini Durdur

Wire.endTransmission();

gecikme(300);

}

boşluk döngüsü()

{

imzasız int veri[6];

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Jirometre veri kaydını seç

Wire.write(0x02);

// I2C İletimini Durdur

Wire.endTransmission();

// 6 bayt veri iste

Wire.requestFrom(Adr, 6);

// 6 bayt veri oku

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro 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);

// Verileri dönüştür

int xGyro = ((veri[1] * 256) + veri[0]);

int yGyro = ((veri[3] * 256) + veri[2]);

int zGyro = ((veri[5] * 256) + veri[4]);

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

Serial.print("X Dönme Ekseni: ");

Serial.println(xGyro); Serial.print("Y-Ekseni Dönme: ");

Serial.println(yGyro); Serial.print("Z-Dönme Ekseni: ");

Serial.println(zGyro);

gecikme(500);

}

Adım 5: Uygulamalar:

Uygulamalar
Uygulamalar

BMG160, cep telefonları, insan makine arayüz cihazları gibi cihazlarda çok çeşitli uygulamalara sahiptir. Bu sensör modülü, görüntü sabitleme (DSC ve kameralı telefon), oyun ve işaretleme cihazları gibi tüketici uygulamalarının gereksinimlerini karşılamak üzere tasarlanmıştır. Ayrıca jest tanıma gerektiren sistemlerde ve iç mekan navigasyonunda kullanılan sistemlerde kullanılır.

Önerilen: