MPU6050 Nedir? Nasıl Çalışır? Arduino ile İvme ve Gyro Sensörü Kullanımı
MPU6050, 3 eksenli ivmeölçer ve 3 eksenli jiroskop yapısını tek modül üzerinde birleştiren, I2C haberleşmeli 6 eksenli bir IMU sensörüdür. Arduino, ESP32, Raspberry Pi ve benzeri geliştirme kartlarıyla robot denge sistemleri, hareket algılama, eğim ölçme, titreşim takibi ve yönelim hesaplama projelerinde kullanılabilir.
Arduino projelerinde bir nesnenin hareketini, eğimini veya açısal hızını takip etmek istediğinizde MPU6050 oldukça pratik bir çözümdür. Sensör; X, Y ve Z eksenlerinde ivme değerlerini, yine X, Y ve Z eksenlerinde açısal hız değerlerini ölçebilir. Bu yazıda MPU6050 sensörünün ne olduğunu, nasıl çalıştığını, pin yapısını, Arduino bağlantısını ve örnek kod kullanımını adım adım inceleyeceğiz.
MPU6050 Nedir ve Nasıl Çalışır?
MPU6050, içerisinde 3 eksenli ivmeölçer ve 3 eksenli jiroskop bulunan bir hareket algılama sensörüdür. İvmeölçer, sensörün X, Y ve Z eksenlerindeki doğrusal ivmesini ölçer. Jiroskop ise sensörün bu eksenler etrafındaki açısal hızını ölçer.
Bu iki ölçüm birlikte kullanıldığında sensörün hareketi, eğimi ve yönelim değişimi hakkında bilgi elde edilebilir. Örneğin bir robotun öne/arkaya yatması, bir kolun hareket etmesi, bir aracın titreşimi veya bir drone gövdesinin açısal değişimleri MPU6050 ile takip edilebilir.
MPU6050 Ne Ölçer?
MPU6050 sensörü doğrudan konum ölçmez. Bunun yerine ivme ve açısal hız değerlerini ölçer. Bu veriler yazılım tarafında işlenerek eğim, hareket yönü, titreşim veya yaklaşık açı bilgisi elde edilebilir.
| Ölçüm | Açıklama | Kullanım Alanı |
|---|---|---|
| İvme | X, Y ve Z eksenlerinde doğrusal ivme ölçer. | Eğim algılama, titreşim takibi, hareket algılama |
| Gyro | X, Y ve Z eksenlerinde açısal hız ölçer. | Denge robotu, yönelim takibi, dönüş algılama |
| Sıcaklık | Sensör iç sıcaklığına yakın değer okuyabilir. | Sensör kontrolü ve yardımcı ölçüm |
Proje Uygulama Videosu
MPU6050 sensörünün Arduino ile bağlantısını, seri monitörde ivme/gyro değerlerinin okunmasını ve örnek hareket algılama uygulamasını aşağıdaki video alanına ekleyebilirsiniz:
MPU6050 Pin Yapısı
MPU6050 GY-521 modülü I2C haberleşme ile çalıştığı için bağlantısı oldukça basittir. Modül üzerinde genellikle VCC, GND, SCL, SDA, XDA, XCL, AD0 ve INT pinleri bulunur. Temel Arduino kullanımında çoğunlukla VCC, GND, SDA ve SCL pinleri yeterlidir.
| Modül Pini | Görevi | Arduino UNO Bağlantısı |
|---|---|---|
| VCC | Besleme girişi | 5V veya 3.3V, modül yapısına göre kontrol edilmelidir |
| GND | Toprak bağlantısı | GND |
| SCL | I2C saat hattı | A5 |
| SDA | I2C veri hattı | A4 |
| INT | Kesme pini, opsiyoneldir | D2, isteğe bağlı |
| AD0 | I2C adres seçimi | Boş bırakılırsa genellikle 0x68, HIGH yapılırsa 0x69 |
Arduino ile MPU6050 Kullanımı İçin Gerekli Malzemeler
| Gerekli Malzeme | Ürün Linki |
|---|---|
| Arduino Uno | Arduino Uno R3 Klon + USB Kablo |
| MPU6050 GY-521 Sensör | MPU6050 GY-521 6 Eksen IMU Sensör |
| Breadboard | Büyük Breadboard 830 Pin |
| Jumper Kablo | 40 Adet Erkek-Dişi Jumper Kablo |
Arduino MPU6050 Kod Örneği
MPU6050 sensörünü Arduino ile kullanmak için Arduino IDE kütüphane yöneticisinden Adafruit MPU6050, Adafruit Unified Sensor ve Adafruit BusIO kütüphanelerini kurabilirsiniz. Aşağıdaki kod ivme, gyro ve sıcaklık değerlerini Seri Monitör ekranına yazdırır.
#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
Adafruit_MPU6050 mpu;
void setup() {
Serial.begin(115200);
if (!mpu.begin()) {
Serial.println("MPU6050 bulunamadi! Baglantilari kontrol edin.");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 bulundu.");
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
}
void loop() {
sensors_event_t accel, gyro, temp;
mpu.getEvent(&accel, &gyro, &temp);
Serial.print("Ivme X: ");
Serial.print(accel.acceleration.x);
Serial.print(" Y: ");
Serial.print(accel.acceleration.y);
Serial.print(" Z: ");
Serial.println(accel.acceleration.z);
Serial.print("Gyro X: ");
Serial.print(gyro.gyro.x);
Serial.print(" Y: ");
Serial.print(gyro.gyro.y);
Serial.print(" Z: ");
Serial.println(gyro.gyro.z);
Serial.print("Sicaklik: ");
Serial.print(temp.temperature);
Serial.println(" C");
Serial.println("----------------------");
delay(500);
}
MPU6050 İvme ve Gyro Proje Kodları
MPU6050 sensörü için temel okuma, açı hesaplama, I2C tarama ve servo denge demo kodlarına Robomer GitHub sensör rehberinden ulaşabilirsiniz.
MPU6050 Kullanırken Sık Yapılan Hatalar ve Çözümleri
- Sensör bulunamadı hatası: SDA/SCL bağlantılarını, VCC/GND hattını ve I2C adresini kontrol edin. MPU6050 adresi genellikle 0x68’dir.
- Değerlerin çok gürültülü olması: Sensör titreşimli yüzeye monte edilmiş olabilir. Kabloları kısaltın, sensörü sabitleyin ve filtre kullanın.
- Açı değerinin zamanla kayması: Jiroskop drift üretir. Kalibrasyon, tamamlayıcı filtre veya Kalman filtresi gibi yöntemler kullanılabilir.
- Servo veya motor kullanırken reset atması: Servo/motor Arduino 5V hattından fazla akım çekiyor olabilir. Harici güç kaynağı kullanın ve GND hattını ortaklayın.
Robomer’de Bulabileceğiniz Hareket ve IMU Sensörü
MPU6050 GY-521 6 Eksen IMU Sensörü
Arduino ve ESP projelerinde ivme, gyro, eğim, titreşim ve hareket algılama uygulamaları için kullanılabilen 6 eksenli IMU sensör modülü.
Ürünü İnceleSonuç
MPU6050 Sensörü, Arduino projelerinde hareket algılama, denge kontrolü, eğim ölçümü ve titreşim takibi yapmak için oldukça kullanışlı bir IMU modülüdür. İvmeölçer ve jiroskop verilerini bir arada sunması sayesinde robotik, mekatronik ve eğitim projelerinde çok yönlü şekilde kullanılabilir.
Hareket Algılama ve Robotik Projelerinizi Kurun
MPU6050 GY-521 sensörü, Arduino kartları, breadboard ve jumper kablolarla kendi hareket algılama ve denge projelerinizi geliştirebilirsiniz.
MPU6050 Sensörünü İncele