Haberler

MPU-9250 ile Başlarken, Arduino Kılavuzu

MPU-9250, InvenSense®’ten gelen 9 eksenli bir MEMS sensördür. Arduino ile uyumlu olması, hareket izleme ölçümlerini basit hale getirir. Uyumun yanı sıra, önceki nesli MPU-9150 ile karşılaştırıldığında düşük güç tüketimi ve önemli ölçüde daha küçük bir form faktörüne sahip yüksek performanslı bir cihazdır.

Bugünkü blogda, MPU-9250 ile başlamanıza yardımcı olacağım ve bunu bir Arduino ile nasıl bağlayacağınızı göstereceğim.

MPU-9250 Tanıtımı

Ref

Bu bloga, önce MPU-9250’ye daha derinlemesine dalarak ve bu 9 eksenli MotionTracking cihazının neler yapabileceğini daha iyi anlamanızı sağlayarak başlayalım.

MPU-9250 Nasıl 9 Eksenli?

Diğer ayrı satılan MEMS sensörleri; ivmeölçer, jiroskop ve manyetometre ile karşılaştırıldığında, MPU-9250 hepsini bir araya getirir. İki die’yi tek bir QFN paketi içine entegre ederek, bir die üzerinde 3 Eksenli Jiroskop ve ivmeölçer, diğerinde ise AK8963 3 Eksenli manyetometre barındırır.

MPU-9250 Özellikleri

Her bir sensörün özelliklerini daha iyi anlamak için, bunları aşağıdaki tabloda derledim:

MPU-9250
Jiroskop Özellikleri İvmeölçer Özellikleri Manyetometre
Dijital çıkışlı X-, Y- ve Z-Eksen açısal hız sensörleri (jiroskoplar) ile
Kullanıcı tarafından programlanabilir tam ölçekli aralık ±250, ±500, ±1000 ve ±2000°/sn ve entegre 16-bit ADC’ler

Dijital olarak programlanabilir düşük geçiren filtre

Jiroskop çalışma akımı: 3.2mA

Uyku modu akımı: 8µA

Fabrika kalibreli hassasiyet ölçek faktörü

Kendini test etme

Dijital çıkışlı üç eksenli ivmeölçer ile programlanabilir tam ölçekli aralık ±2g, ±4g, ±8g ve
±16g ve entegre 16-bit ADC’ler

İvmeölçer normal çalışma akımı: 450µA

Düşük güç ivmeölçer modu akımı: 0.98Hz’de 8.4µA, 31.25Hz’de 19.8µA

Uyku modu akımı: 8µA

Kullanıcı tarafından programlanabilir kesintiler

Düşük güç uygulama işlemcisi için hareketle uyanma kesintisi

Kendini test etme

3 eksenli silikon monolitik hall-effect manyetik sensör ile manyetik konsantratör

Geniş dinamik ölçüm aralığı ve daha düşük akım tüketimi ile yüksek çözünürlük

Manyetometre normal çalışma akımı: 8Hz tekrar oranında 280µA

Çıkış veri çözünürlüğü 14 bit (0.6µT/LSB)

Tam ölçekli ölçüm aralığı ±4800µT

Son ürünlerde manyetik sensörün çalışmasını doğrulamak için dahili manyetik kaynak ile kendini test etme fonksiyonu

Yukarıda belirtilen MEMS jiroskop, ivmeölçer ve manyetometreden gelen özelliklerin yanı sıra, MPU-9250 başka ek özelliklere de sahiptir!

Ek Özellikler şunları içerir:

  • Taşınabilir cihazlar için en küçük ve en ince QFN paketi: 3x3x1mm
  • Dış sensörlerden veri okumak için yardımcı ana I2C veri yolu
  • İvmeölçer, jiroskop ve manyetometre eksenleri arasında minimal çapraz eksen hassasiyeti
  • 512 byte FIFO tampon, uygulama işlemcisinin verileri patlamalar halinde okumasını sağlar
  • Dijital çıkışlı sıcaklık sensörü
  • 10,000 g darbe toleransı
  • Tüm kayıtlarla iletişim kurmak için 400kHz Hızlı Mod I2C
  • Seri arayüzler:
    • Tüm kayıtlarla iletişim kurmak için 1MHz
    • Sensor ve kesinti kayıtlarını okumak için 200MHz

MPU-9250, ayrıca geniş bir uygulama yelpazesine de sahiptir, bunlar arasında:

  • tabletler
  • İnternete bağlı TV’ler ve set üstü kutular için 3D uzaktan kumandalar
  • Hareket tabanlı oyun kontrol cihazları ve 3D fareler
  • Hareket tabanlı taşınabilir oyunlar
  • Giyilebilir sensörler

MPU-9250 vs MPU-9150: Gelişmeler

Entegre modüle geçmeden önce, MPU-9250’nin önceki nesline göre nelerin daha iyi olduğunu inceleyelim!

Daha küçük ve daha az enerji tüketiyor

MPU-9150 ile karşılaştırıldığında, MPU-9250 güç tüketimini azaltmış ve form faktörünü %44 oranında küçültmüştür!

MPU-9250, daha iyi Jiroskop ve Pusula performansına sahiptir

MPU-9250 şunları içerir:

  • MPU-6500 ve AK8963 manyetometre

MPU-9150 şunları içerir:

  • MPU-6050 ve AK8975 manyetometre

Farklar ne anlama geliyor?

  • MPU-6500, MPU-6050’e göre daha yüksek güç, daha düşük gürültü ve daha büyük bir paket sunar
  • AK8963 manyetometresi, AK8975’e göre daha iyi bir tam ölçekli aralığa sahiptir

Genel olarak, InvenSense’in en son 9 eksenli cihazı olduğu için performansta artış beklenir.

MPU-9250 ile Başlarken

Grove – IMU 9DOF v2.0

MPU-9250 ile başlamanız için öncelikle buna dayalı bir modüle ihtiyacınız olacak. Piyasada birçok breakout kartı, modül vb. bulunmaktadır, ancak bugün Grove – IMU 9DOF v2.0’ı öneriyorum.

Öncelikle özelliklerine bir göz atalım:

MPU-9250 entegre modülü olduğu için benzerlikler göreceksiniz:

  • I2C/SPI arayüzü
  • Yardımcı I2C
  • Düşük Güç Tüketimi
  • Tüm kayıtlarla iletişim kurmak için 400kHz Hızlı Mod I2C
  • Kullanıcı tarafından programlanabilir tam ölçekli aralık ile dijital çıkışlı 3-Eksen açısal hız sensörleri (Jiroskoplar)
  • ±250, ±500, ±1000 ve ±2000°/sn
  • Kullanıcı tarafından programlanabilir tam ölçekli aralık ile dijital çıkışlı 3-Eksen ivmeölçer ±2g, ±4g, ±8g ve ±16g
  • Dijital çıkışlı 3-Eksen ivmeölçer ile tam ölçekli ölçüm aralığı ±4800μT
  • I2C Adresi: 0x68

Neden bu MPU-9250 modülünü diğerlerinden tercih etmelisiniz?

Seeed’in kendi Grove sistemi aracılığıyla MPU-9250’yi Arduino ile eşleştirme kolaylığı

Grove sistemi, kullanıcıların farklı modülleri kolayca kullanmalarına yardımcı olmak amacıyla Seeed’in kendi girişimidir ve tak-çalıştır sistemimiz aracılığıyla bunu sağlar!

Bu, karmaşık jumper kabloları, lehimleme, breadboard veya elektronik devreleri hata ayıklama kullanmak zorunda kalmayacağınız anlamına gelir!

Diğer MPU-9250 modüllerine kıyasla ne kadar basit ve daha az karmaşık olduğunu düşünüyor musunuz?

Tek ihtiyacınız olan bir Grove Base Shield ve Arduino’nuzdur, hepsi bu kadar! Bugün Grove kullanmaya geçin!

MPU-9250 (Grove – IMU 9DOF v2.0) Arduino Kılavuzu

Şimdi beklediğiniz sorunun yanıtına gelelim; MPU-9250’yi Arduino ile nasıl eşleştirirsiniz? İşte başlamanıza yardımcı olacak kılavuz!

Not: Bu modül diğer mikrodenetleyicilerle uyumludur ancak kullanıcıların kendi yazılım kütüphanelerini yazmaları gerekmektedir çünkü tüm platformlar için yazılım kütüphanesi/demo kodu sağlamak mümkün değildir.

Gereksinimler:

*Seeeduino, Seeed’in kendi Arduino’sudur ve standart Arduino kartlarına göre avantajlar sunar.

Eğer aşağıdaki Arduino modellerinden birine sahipseniz, Grove Base Shield ile de çalışacaktır:

  • Arduino Uno
  • Arduino Mega
  • Arduino Leonardo
  • Arduino 101
  • Arduino Due

Donanım yapılandırmaları:

  • Adım 1: Grove-IMU_9DOF_v2.0’ı Grove Base Shield’ın I2C portuna bağlayın
  • Adım 2: Grove Base Shield’ı Seeeduino’ya takın
  • Adım 3:Seeeduino’yu bir USB kablosu ile PC’ye bağlayın

Artık şöyle görünmelidir:

Yazılım yapılandırmaları:

  • Adım 1: Kütüphaneyi Github’dan indirin
  • Adım 2: Kütüphane nasıl yüklenir kısmına bakın ve Arduino için kütüphaneyi yükleyin
  • Adım 3: Yeni bir Arduino taslağı oluşturun ve aşağıdaki kodları yapıştırın veya doğrudan şu yoldan açın: Dosya -> Örnek -> IMU_9DOF_Demo_Compass_Calibrated -> IMU_9DOF_Demo_Compass_Calibrated.

İşte kodun ana kısmı:

void setup() {
  // I2C otobüsüne katıl (I2Cdev kütüphanesi bunu otomatik olarak yapmaz)
  Wire.begin();

  // seri iletişimi başlat
  // (38400, hem 8MHz'de hem de 16MHz'de çalıştığı için seçildi, ancak
  // bu tamamen projenize bağlı)
  Serial.begin(38400);

  // cihazı başlat
  Serial.println("I2C cihazları başlatılıyor...");
  accelgyro.initialize();

  // bağlantıyı doğrula
    Serial.println("Cihaz bağlantılarını test etme...");
    Serial.println(accelgyro.testConnection() ? "MPU9250 bağlantısı başarılı" : "MPU9250 bağlantısı başarısız");
    delay(1000);
    Serial.println("     ");

 //Mxyz_init_calibrated ();
}

void loop()
{   
    getAccel_Data();
    getGyro_Data();
    getCompassDate_calibrated(); // pusula verileri burada kalibre edildi
    getHeading();               // bu fonksiyonu kullanmadan önce 'getCompassDate_calibrated()' fonksiyonunu çalıştırmalıyız, böylece kalibre edilmiş verileri alabiliriz, ardından doğru açıyı elde edebiliriz.                    
    getTiltHeading();           

    Serial.println("kalibrasyon parametresi: ");
    Serial.print(mx_centre);
    Serial.print("         ");
    Serial.print(my_centre);
    Serial.print("         ");
    Serial.println(mz_centre);
    Serial.println("     ");

    Serial.println("X,Y,Z'nin ivmesi(g):");
    Serial.print(Axyz[0]);
    Serial.print(",");
    Serial.print(Axyz[1]);
    Serial.print(",");
    Serial.println(Axyz[2]);
    Serial.println("X,Y,Z'nin jiroskobu(derece/s):");
    Serial.print(Gxyz[0]);
    Serial.print(",");
    Serial.print(Gxyz[1]);
    Serial.print(",");
    Serial.println(Gxyz[2]);
    Serial.println("X,Y,Z'nin pusula değeri:");
    Serial.print(Mxyz[0]);
    Serial.print(",");
    Serial.print(Mxyz[1]);
    Serial.print(",");
    Serial.println(Mxyz[2]);
    Serial.println("Manyetik kuzey ile X-Ekseni arasındaki saat yönündeki açı:");
    Serial.print(heading);
    Serial.println(" ");
    Serial.println("Manyetik kuzey ile yatay düzlemde pozitif X-Ekseni projeksiyonu arasındaki saat yönündeki açı:");
    Serial.println(tiltheading);
    Serial.println("   ");
    Serial.println("   ");
    Serial.println("   ");
    delay(300);
}
  • Adım 4: Kodu yükleyin ve ardından şunu görebilirsiniz:

Statik durumda, z-Ekseni çıkış değeri yaklaşık 0.98g’dir, bu nedenle sensörünüzün normal çalışıp çalışmadığını görmek için yukarıdakilere bakabilirsiniz.

Kaynaklar ve İleriye Dönük

Özet

Genel olarak, MPU-9250 hareket algılama ihtiyaçlarınız için mükemmel bir seçimdir. Invensense desteği, sorunları incelerken iletişimde kalmada gerçekten iyidir, bu nedenle sorun giderme sırasında endişelenmenize gerek kalmaz.

Ancak, herhangi bir mikrodenetleyici ile eşleştirme için bu hareket işleme birimine dayalı bir modüle ihtiyacınız olacak.

Diğer MPU-9250 breakout kartlarıyla karşılaştırıldığında, Grove – IMU 9DOF v2.0‘ı eşleştirme kolaylığı nedeniyle şiddetle tavsiye ederim!

Leave a Reply

Your email address will not be published. Required fields are marked *