Mündəricat:

3 Eksenli BMG160 hissəcikli giroskop sensoru ilə əlaqə: 5 addım
3 Eksenli BMG160 hissəcikli giroskop sensoru ilə əlaqə: 5 addım

Video: 3 Eksenli BMG160 hissəcikli giroskop sensoru ilə əlaqə: 5 addım

Video: 3 Eksenli BMG160 hissəcikli giroskop sensoru ilə əlaqə: 5 addım
Video: 3 Axis Gimbal With Arduino Nano and MPU6050 Gyro Sensor 2024, Noyabr
Anonim
Image
Image

Müasir dünyada, gənclərin və uşaqların yarıdan çoxu oyuna həvəs göstərir və oyunun texniki cəhətlərinə heyran olanların hamısı bu sahədə hərəkət algılamanın əhəmiyyətini bilir. Eyni şey bizi heyrətləndirdi və lövhələrə qoymaq üçün hər hansı bir cismin bucaq sürətini ölçə bilən bir giroskop sensoru üzərində işləməyi düşündük. Beləliklə, vəzifəni həll etmək üçün götürdüyümüz sensor BMG160 -dır. BMG160, 16 bitlik, rəqəmsal, üç eksenli, giroskoplu bir sensordur ki, bucaq dərəcəsini üç perpendikulyar otaq ölçülərində ölçə bilər.

Bu təlimatda BMG160 -ın Particle Photon ilə işini nümayiş etdirəcəyik.

Bu məqsədlə ehtiyac duyacağınız avadanlıq aşağıdakılardır:

1. BMG160

2. Parçacıq fotonu

3. I2C Kabeli

4. Partikül Fotonu üçün I2C Qalxanı

Addım 1: BMG160 Baxış:

Nə Lazımdır.. !!
Nə Lazımdır.. !!

Əvvəlcə BMG160 sensor modulunun əsas xüsusiyyətləri və işlədiyi ünsiyyət protokolu ilə tanış olmaq istərdik.

BMG160, əsasən açısal dərəcələri ölçə bilən 16 bitlik, rəqəmsal, üç eksenli, giroskop sensordur. Üç dik otaq ölçülərində, x-, y- və z-oxunda bucaq dərəcələrini hesablaya və müvafiq çıxış siqnallarını təmin edə bilir. I2C rabitə protokolundan istifadə edərək moruq pi lövhəsi ilə əlaqə qura bilər. Bu xüsusi modul, istehlakçı tətbiqləri və sənaye məqsədləri üçün tələblərə cavab vermək üçün hazırlanmışdır.

Sensorun işlədiyi rabitə protokolu I2C -dir. I2C, inteqrasiya edilmiş dövrəni ifadə edir. SDA (serial məlumat) və SCL (serial saat) xətləri vasitəsi ilə ünsiyyətin qurulduğu bir ünsiyyət protokoludur. Eyni anda birdən çox cihazı birləşdirməyə imkan verir. Ən sadə və ən təsirli ünsiyyət protokollarından biridir.

Addım 2: Nə Lazımdır..

Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!

Məqsədimizə çatmaq üçün ehtiyacımız olan materiallar aşağıdakı aparat komponentlərindən ibarətdir:

1. BMG160

2. Foton hissəcikləri

3. I2C Kabeli

4. Partikül Foton üçün I2C Qalxanı

Addım 3: Hardware Bağlantısı:

Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama

Avadanlıq bağlama bölməsi əsasən sensor və hissəcik arasında lazım olan tel əlaqələrini izah edir. İstənilən çıxış üçün hər hansı bir sistem üzərində işləyərkən düzgün əlaqələrin təmin edilməsi əsas zərurətdir. Beləliklə, zəruri əlaqələr aşağıdakılardır:

BMG160 I2C üzərində işləyəcək. Sensorun hər bir interfeysini necə bağlayacağınızı göstərən nümunə naqillər diaqramı.

Qutudan kənarda, lövhə I2C interfeysi üçün konfiqurasiya olunmuşdur, buna görə də başqa cür agnostiksinizsə bu əlaqəni istifadə etməyi məsləhət görürük.

Lazım olan tək şey dörd teldir! Vcc, Gnd, SCL və SDA pinləri üçün yalnız dörd əlaqə lazımdır və bunlar I2C kabelinin köməyi ilə bağlanır.

Bu əlaqələr yuxarıdakı şəkillərdə göstərilmişdir.

Addım 4: 3 Eksenli Giroskop Ölçmə Partikül Kodu:

3 Eksenli Jiroskop Ölçmə Partikül Kodu
3 Eksenli Jiroskop Ölçmə Partikül Kodu
3 Eksenli Jiroskop Ölçmə Partikül Kodu
3 Eksenli Jiroskop Ölçmə Partikül Kodu

İndi hissəcik kodundan başlayaq.

Sensor modulunu arduino ilə işləyərkən application.h və spark_wiring_i2c.h kitabxanasını daxil edirik. "application.h" və spark_wiring_i2c.h kitabxanası, sensor və hissəcik arasındakı i2c əlaqəsini asanlaşdıran funksiyaları ehtiva edir.

İstifadəçinin rahatlığı üçün bütün hissəcik kodu aşağıda verilmişdir:

#daxil edin

#daxil edin

// BMG160 I2C ünvanı 0x68 (104)

#define Addr 0x68

int xGyro = 0, yGyro = 0, zGyro = 0;

boş quraşdırma ()

{

// Dəyişən təyin edin

Particle.variable ("i2cdevice", "BMG160");

Particle.variable ("xGyro", xGyro);

Particle.variable ("yGyro", yGyro);

Particle.variable ("zGyro", zGyro);

// I2C ünsiyyətini MASTER olaraq başladın

Wire.begin ();

// Serial Ünsiyyətə Başlayın

Serial.begin (9600);

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Aralıq qeydini seçin

Wire.write (0x0F);

// Tam miqyaslı 2000 dps konfiqurasiya edin

Wire.write (0x80);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Bant genişliyi qeydini seçin

Wire.write (0x10);

// Bant genişliyi = 200 Hz seçin

Wire.write (0x04);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

gecikmə (300);

}

boşluq döngəsi ()

{

imzasız int məlumatları [6];

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Məlumat qeydini seçin

Wire.write (0x02);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// 6 bayt məlumat tələb edin

Wire.requestFrom (Addr, 6);

// 6 bayt məlumat oxuyun

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

əgər (Tel.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

gecikmə (300);

// Məlumatları çevirin

xGyro = ((məlumat [1] * 256) + məlumat [0]);

əgər (xGyro> 32767)

{

xGyro -= 65536;

}

yGyro = ((məlumat [3] * 256) + məlumat [2]);

əgər (yGyro> 32767)

{

yGyro -= 65536;

}

zGyro = ((məlumat [5] * 256) + məlumat [4]);

əgər (zGyro> 32767)

{

zGyro -= 65536;

}

// Göstərişlər panelinə məlumat çıxarın

Particle.publish ("Dönmə X Ekseni:", String (xGyro));

Particle.publish ("Fırlanma Y Ekseni:", String (yGyro));

Particle.publish ("Z-Fırlanma Ekseni:", String (zGyro));

gecikmə (1000);

}

Addım 5: Tətbiqlər:

Tətbiqlər
Tətbiqlər

BMG160, cib telefonları, insan maşın interfeysi cihazları kimi cihazlarda çox sayda tətbiqə malikdir. Bu sensor modulu, görüntü sabitləşdirmə (DSC və kamera-telefon), oyun və işarə cihazları kimi istehlakçı tətbiqləri üçün tələbləri ödəmək üçün hazırlanmışdır. Jest tanıma tələb edən sistemlərdə və daxili naviqasiyada istifadə olunan sistemlərdə də istifadə olunur.

Tövsiyə: