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ı
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
- [Eagle&PDF] Grove – IMU 9DOF v2.0 Eagle Dosyası
- [Kütüphane] Grove – IMU 9DOF v2.0 kütüphanesi
- [PDF] MPU-9250 veri sayfası
- [PDF] MPU-9250 Kayıt Haritası
Ö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!






