MPU-9250’i hiç duydunuz mu? Bu, 2 çipten oluşan çoklu çip modülüdür (MCM) ve 3 Eksenli jiroskop ile 3 Eksenli ivmeölçer barındırır! Nasıl çalıştığı konusunda hala emin değil misiniz? Devam edin ve öğrenin! Umarım bu makale, MPU9250’in uygulamalarını anlamanıza ve Arduino ile nasıl arayüz oluşturacağınıza yardımcı olur!
Bugünkü eğitimde, bir MPU9250 İvmeölçer ve Jiroskopu Arduino ile nasıl kullanacağımızı öğreneceğiz. Bu eğitim şunları kapsayacak:
- MPU9250 İvmeölçer ve Jiroskop nasıl çalışır?
- MPU9250 IMU (Atalet Ölçüm Birimi) hakkında
- MPU9250 İvmeölçer ve Jiroskopu Arduino ile nasıl kullanacağınız üzerine eğitim
- IMU’nun uygulamaları
MPU9250 İvmeölçer ve Jiroskop nasıl çalışır?
İvmeölçer ve jiroskop sensörleri, sırasıyla ivmeyi ve döngüsel değişiklikleri ölçmek için kullanılan kendi başlarına bulunmaktadır. Aşağıda gösterildiği gibi:
Ancak bu eğitimde, tek bir çip üzerinde entegre edilmiş hem 3 Eksenli ivmeölçer hem de 3 Eksenli jiroskop bulunan bir MPU9250 IMU kullanacağız. Ayrıca, yerçekimi ölçümü için bir manyetometre de entegre edilmiştir.

İvmeölçer Çalışma Prensibi
Bir İvmeölçer, bir nesnenin hızındaki değişim oranını zamanla ölçer; bu da ivme olarak bilinir. Bir ivmeölçer ile, sensörün yere göre hangi açıyla eğildiğini belirleyebilirsiniz.
Bir ivmeölçer, titreşimler meydana geldiğinde stres altına giren mikroskobik kristallere sahiptir. Bu stres sonucunda, herhangi bir ivme üzerinde bir okuma oluşturan bir voltaj üretilir. İvme ölçüm birimi, metre/saniye kare (m/s^2) cinsindendir. Ancak ivmeölçer sensörleri ölçümleri “g” cinsinden ifade ettiğinden, bir “g”, 9.8 metre/saniye kareye eşit olan yerçekimi kuvvetinin değeridir.

Örneğin, MPU9250 İvmeölçer sensörü gibi 3 eksenli bir ivmeölçer düz bir yüzeye yerleştirildiğinde ve Z ekseni yukarı bakacak şekilde konumlandırıldığında, sensörün Z ekseni çıktısı = 1 g veya 9.8m/s^2 olurken, X ve Y = 0’dır. Bu, yerçekimi kuvvetinin bu eksenlere dik olmasından kaynaklanmaktadır ve bu eksenleri etkilemez.
Bu verilerden, sensör basit trigonometrik matematik kullanarak sensörün açısını hesaplayabilir.
Jiroskop Çalışma Prensibi
Dönme hızı/ açısal pozisyondaki değişim oranını zamanla ölçen Jiroskop, Coriolis etkisi ve MEMS teknolojisi ile çalışır.

Bir kütle belirli bir yönde belirli bir hızla hareket ederken ve dışsal bir açısal hız uygulandığında, yeşil ok ile gösterildiği gibi bir kuvvet meydana gelir ve bu kuvvet sensör tarafından algılanır.
Yukarıda gösterildiği gibi, mavi ve kırmızı oklarla etiketlenmiş olan bu, kütlenin dikey yer değiştirmesine neden olacaktır. Yer değiştirme, ölçülen, işlenen ve belirli bir açısal hız ile ilişkilendirilen bir kapasitans değişikliğine neden olacaktır.
Jiroskopun çıktıları saniye başına derece cinsindendir, bu nedenle açısal pozisyonu elde etmek için sadece açısal hızı entegre etmemiz gerekir.
Bir Jiroskopun nasıl çalıştığına dair tam bir açıklama için Elprocus sayfasına buradan göz atabilirsiniz.
MPU9250 IMU (Atalet Ölçüm Birimi) Hakkında
Atalet Ölçüm Birimi (IMU), ivmeyi, hızı ve yerçekimi kuvvetlerini ölçen 9 eksenli bir sensör olarak tanımlanır; İvmeölçer, Jiroskop ve Manyetometreyi bir araya getirir. IMU’lar genellikle büyük paketlerde gelir, ancak MEMS teknolojisi gibi son gelişmelerle artık Arduino veya diğer mikrodenetleyicilerle kolay entegrasyon için tasarlanmış mini sensörler olarak daha yaygın olarak görülmektedir.
Bugünkü eğitimde, MPU-9250 tabanlı 9 eksenli hareket izleme modülünü kullanacağız.

MPU-9250, InvenSense®’den bir 9 eksenli MEMS sensörüdür. MPU-9250’in özellikleri:

MPU9250’in ek özellikleri şunlardır:
- 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 veriyolu
- İvmeölçer, jiroskop ve manyetometre eksenleri arasında minimal çapraz eksen hassasiyeti
- 512 byte FIFO tampon, uygulama işlemcisinin verileri patlama halinde okumasını sağlar
- Dijital çıkışlı sıcaklık sensörü
- 10,000 g darbe dayanıklılığı
- 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 kesme kayıtlarını okumak için 200MHz
MPU-9250 tabanlı bu IMU, sadece uygun fiyatlı olmakla kalmaz, aynı zamanda yüksek performans sunarken düşük güç tüketimi gerektirir.
Grove – IMU 9DOF v2.0 – MPU-9250 ayrıca ±250, ±500, ±1000 ve ±2000°/sn (DPS) kullanıcı programlanabilir jiroskop tam ölçekli aralığı, ±2g, ±4g, ±8g ve ±16g kullanıcı programlanabilir ivmeölçer tam ölçekli aralığı ve ±4800µT manyetometre tam ölçekli aralığına sahiptir.
Endüstriyel alanlarda, Grove – IMU 9DOF v2.0 – MPU-9250, programlanabilir dijital filtreler, -40°C ile 85°C arasında %1 kayma ile hassas bir saat, gömülü bir sıcaklık sensörü ve programlanabilir kesmeler içerir. Grove – IMU 9DOF v2.0 – MPU-9250, I2C, SPI seri ve tak-çalıştır Grove arayüzlerine sahiptir.
MPU9250 İvmeölçer ve Jiroskopu Arduino ile Kullanma Eğitimi
MPU9250 IMU sensörünü Arduino’ya nasıl bağlayacağımıza geçelim. Kullandığımız sensör modülü, Grove koleksiyonu‘nun bir parçası olduğundan, sensörü Arduino’ya bağlamak çok daha kolay ve hızlıdır.
Gerekli Olanlar:
- Arduino UNO / Seeeduino V4.2 (Seeed’in kendi Arduino’su)
- Grove – Base Shield (Bağlantıyı kolaylaştırmak için isteğe bağlı)
- Grove – IMU 9DOF v2.0
Adım Adım Talimatlar
Donanım
Adım 1 – Grove-IMU_9DOF_v2.0’ı Grove-Base Shield’in I2C portuna bağlayın.
Eğer bir Grove Base Shield’iniz yoksa, aşağıdaki tabloyu takip ederek IMU modülünü doğrudan Arduino’nuzla bağlayabilirsiniz:
| Arduino | Grove – IMU 9DOF v2.0 |
| 5V | VCC |
| GND | GND |
| SDA | SDA |
| SCL | SCL |
Adım 2 – Grove – Base Shield’i Seeeduino’ya takın.
Adım 4 – Seeeduino’yu bir USB kablosu ile PC’ye bağlayın. Bağlantınız aşağıdaki gibi görünmelidir:

Yazılım
Adım 1 – Github’dan IMU kütüphanesini indirin.
Arduino IDE’de kütüphane nasıl yüklenir bilmiyorsanız, Arduino için kütüphane yükleme kılavuzuna başvurabilirsiniz.
Adım 2 – Yeni bir Arduino taslağı oluşturun ve aşağıdaki kodları yapıştırın veya kodu doğrudan şu yoldan açın:
Dosya -> Örnek ->IMU_9DOF_Demo_Compass_Calibrated->IMU_9DOF_Demo_Compass_Calibrated.
İşte ana kod:
void setup() {
// I2C hattına katıl (I2Cdev kütüphanesi bunu otomatik olarak yapmaz)
Wire.begin();
// seri iletişimi başlat
// (38400 seçildi çünkü 8MHz'de olduğu kadar 16MHz'de de çalışır, ama
// 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 edilmiştir
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 jiroskopu(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 3 – Kodu yükledikten sonra sonuçların görünmesi gerekir. Aşağıdaki gibi görünmelidir:

Referanslar
Size yardımcı olmak için, burada hassasiyet eksenlerinin yönünü ve döngü polaritesini gösteren bir diyagram var.


MPU9250 İvmeölçer ve Jiroskop Uygulamaları
Artık MPU9250 IMU’nun nasıl çalıştığını bildiğinize göre, bununla yapabileceğiniz bazı projeler ve uygulamalar şunlardır:
- Tüketici elektroniği; Hareket algılama ve yönlendirme için akıllı telefonlar, tabletler, fitness takip cihazları
- GPS ve uydu konumlandırma sistemleri
- Spor teknolojisi ve eğitim uygulamaları
- Segway gibi kişisel ulaşım cihazları, aracın dengelemesi/istikrarı için
- Uçaklar, gemiler, denizaltılar ve diğer insansız hava araçlarını kontrol etmek için İvme Navigasyon Sistemleri
- Hareket algılaması gereken her yer
Özet
Bugünkü MPU9250 İvmeölçer ve Jiroskop ile Arduino kullanma kılavuzumuz bu kadar.
MPU9250 hakkında daha fazla bilgi için, veri sayfasını ve register haritasını kontrol edebilirsiniz.
Bu kılavuzla ilgili herhangi bir sorunuz varsa, lütfen aşağıda bir yorum bırakın!
Daha verimli bir IMU mu arıyorsunuz? Sizin için bir tane var! O da Grove – IMU 10DOF v2.0. Yeni piyasaya sürülen BMP280’e dayanan bu IMU sensör modülü, BMP180’den yalnızca %65 daha küçüktür, ancak çok daha az güç tüketir; sadece 2.7uA@1Hz!



