MPU6050 Gyro Jiroskop Modül Arduino Uyumlu GY-521
MPU6050 Gyro Jiroskop Modül, tek bir pakette 3 eksenli jiroskop ve 3 eksenli ivmeölçer barındıran, Arduino uyumlu, hassas bir hareket algılama modülüdür. I2C bağlantı protokolüyle kolay entegrasyon sağlar ve sadece 4 pin kullanılarak bağlanabilir.
GY-521 kartına entegre edilmiş MPU6050 çip seti, mobil cihazlar, giyilebilir teknolojiler ve robotik projeler için tasarlanmıştır. 16-bit analog-dijital dönüştürücü, gelişmiş hareket algılama ve yönelim hesaplamaları için yüksek hassasiyet sunar.
MPU6050 Gyro Jiroskop Modül, drone kontrol sistemleri, robot denge projeleri ve hareket tabanlı kontrol cihazları için idealdir. Arduino ve diğer mikrodenetleyicilerle uyumlu çalışan bu modül, Modüller kategorisinin en çok tercih edilen hareket sensörlerinden biridir.
Teknik Özellikler
MPU6050 Gyro Jiroskop Modülünün detaylı teknik özellikleri aşağıda listelenmiştir.
- Çip Seti: InvenSense MPU6050 sensörü
- Sensör Tipleri: 3 eksenli jiroskop ve 3 eksenli ivmeölçer
- Jiroskop Aralığı: ±250, ±500, ±1000, ±2000°/sn seçilebilir
- İvmeölçer Aralığı: ±2g, ±4g, ±8g, ±16g seçilebilir
- Dijital Çıkış Çözünürlüğü: 16-bit (ADC)
- Haberleşme Protokolü: I2C (400kHz)
- I2C Adresi: 0x68 (varsayılan), 0x69 (AD0 pini HIGH iken)
- Dahili Sıcaklık Sensörü: -40°C ~ +85°C, ±1°C hassasiyet
- Dahili DMP (Digital Motion Processor): Var
- Çalışma Voltajı: 3.3V ~ 5V DC
- Güç Tüketimi: 3.9mA (tüm sensörler aktif)
- Uyku Modu Tüketimi: 5μA
- Bağlantı Pinleri:
- VCC - Güç (3.3V-5V)
- GND - Toprak
- SCL - I2C Clock pini
- SDA - I2C Data pini
- XDA - Aux I2C Data
- XCL - Aux I2C Clock
- AD0 - I2C Adres Seçimi
- INT - Kesme pini
- Ölçüler: 20mm x 16mm x 1.5mm
- Montaj Delikleri: 2 adet, 2mm çapında
- Jiroskop Sıfır-Hız Çıkışı: ±20°/sn
- İvmeölçer Sıfır-g Çıkışı: ±50mg
- Çalışma Sıcaklığı: -40°C ~ +85°C
Bağlantı ve Kullanım
MPU6050 Gyro Jiroskop Modülünün Arduino ve diğer mikrodenetleyicilere bağlantı şeması ve kullanım talimatları.
İpucu: Hassas ölçümler için modülü sert bir zemine sabitleyin ve vibrasyon kaynaklarından uzak tutun.
MPU6050 modülünü Arduino'ya bağlamak için aşağıdaki bağlantı şemasını kullanabilirsiniz:
- VCC → Arduino 3.3V veya 5V
- GND → Arduino GND
- SCL → Arduino A5 (UNO, Nano) veya SCL pini (Mega, Leonardo)
- SDA → Arduino A4 (UNO, Nano) veya SDA pini (Mega, Leonardo)
- INT → Arduino Digital Pin 2 (opsiyonel, kesme kullanımı için)
MPU6050 modülünü kullanmak için Jeff Rowberg'in MPU6050 kütüphanesini kullanabilirsiniz. Arduino IDE'de "Taslak > Library Ekle > Library Yönet" menüsünden "MPU6050" araması yaparak yükleyebilirsiniz.
Temel MPU6050 ölçüm kodu:
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("MPU6050 başlatılıyor...");
mpu.initialize();
// Bağlantı kontrolü
Serial.println(mpu.testConnection() ? "MPU6050 bağlantı başarılı" : "MPU6050 bağlantı hatası");
}
void loop() {
// İvmeölçer ve jiroskop değerlerini oku
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
// Değerleri seri monitöre yazdır
Serial.print("İvmeölçer: ");
Serial.print(ax); Serial.print(" ");
Serial.print(ay); Serial.print(" ");
Serial.print(az); Serial.print(" ");
Serial.print("Jiroskop: ");
Serial.print(gx); Serial.print(" ");
Serial.print(gy); Serial.print(" ");
Serial.println(gz);
delay(100);
}
Açı değerlerini hesaplamak için aşağıdaki kodu kullanabilirsiniz:
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"
MPU6050 mpu;
// MPU kontrol/durum değişkenleri
bool dmpReady = false; // DMP başlatıldı mı?
uint8_t mpuIntStatus; // kesme durum biti
uint8_t devStatus; // başlatma sonrası durum (0 = başarılı)
uint16_t packetSize; // DMP paket boyutu
uint16_t fifoCount; // FIFO'daki bayt sayısı
uint8_t fifoBuffer[64]; // FIFO depolama tamponu
// Yönelim/hareket değişkenleri
Quaternion q; // [w, x, y, z] kuaterniyon konteyner
VectorFloat gravity; // [x, y, z] yer çekimi vektörü
float ypr[3]; // [yaw, pitch, roll] konteyner
// Kesme algılama rutini
volatile bool mpuInterrupt = false;
void dmpDataReady() {
mpuInterrupt = true;
}
void setup() {
Wire.begin();
Serial.begin(115200);
// MPU6050 başlat
Serial.println(F("MPU6050 başlatılıyor..."));
mpu.initialize();
// DMP (Digital Motion Processor) başlat
devStatus = mpu.dmpInitialize();
// Sensör ofsetleri ayarla (kalibrasyon)
mpu.setXGyroOffset(220);
mpu.setYGyroOffset(76);
mpu.setZGyroOffset(-85);
mpu.setZAccelOffset(1788);
// DMP başlatma başarılı mı?
if (devStatus == 0) {
mpu.setDMPEnabled(true);
// Arduino kesme algılama aktif
attachInterrupt(0, dmpDataReady, RISING);
mpuIntStatus = mpu.getIntStatus();
dmpReady = true;
packetSize = mpu.dmpGetFIFOPacketSize();
} else {
// DMP başlatma hatası
Serial.print(F("DMP Başlatma hatası (kod "));
Serial.print(devStatus);
Serial.println(F(")"));
}
}
void loop() {
// DMP hazır değilse çık
if (!dmpReady) return;
// Kesme veya ekstra paket bekleniyor
while (!mpuInterrupt && fifoCount < packetSize) {
// Diğer program kodları buraya...
}
// Kesme bayrağını sıfırla
mpuInterrupt = false;
mpuIntStatus = mpu.getIntStatus();
// FIFO sayısını al
fifoCount = mpu.getFIFOCount();
// FIFO taşması kontrolü
if ((mpuIntStatus & 0x10) || fifoCount == 1024) {
mpu.resetFIFO();
Serial.println(F("FIFO taşması!"));
// DMP verileri hazır kontrolü
} else if (mpuIntStatus & 0x02) {
// Doğru veri paketi boyutunu bekle
while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();
// Paket oku
mpu.getFIFOBytes(fifoBuffer, packetSize);
fifoCount -= packetSize;
// Açıları hesapla ve derece olarak görüntüle
mpu.dmpGetQuaternion(&q, fifoBuffer);
mpu.dmpGetGravity(&gravity, &q);
mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
Serial.print("ypr ");
Serial.print(ypr[0] * 180/M_PI); // Yaw (derece)
Serial.print(" ");
Serial.print(ypr[1] * 180/M_PI); // Pitch (derece)
Serial.print(" ");
Serial.println(ypr[2] * 180/M_PI); // Roll (derece)
}
}
Sensör kalibrasyonu için ölçüm sonuçlarında sapma tespit ederseniz, offset değerlerini ayarlamak gerekir. Bu değerler, sabit durumdayken sensörün sıfır okuması gereken eksenler için sapma miktarını dengelemek amacıyla kullanılır. Doğru kalibrasyon, sensör hassasiyetini önemli ölçüde artırır.
Uygulama Alanları
MPU6050 Gyro Jiroskop Modülünün kullanılabileceği çeşitli projeler ve uygulama alanları.
Robotik ve Denge Projeleri
- Self-dengeleyici robotlar
- İki tekerlekli denge robotları
- Quadcopter ve drone stabilizasyonu
- Robot kol pozisyon kontrolü
- Segway tarzı taşıtlar
- Robotik platformlar için yön kontrolü
Hareket Tabanlı Uygulamalar
- Hareket kontrollü oyun kumandaları
- Jestlerle çalışan arayüzler
- Hareket algılama alarmları
- Spor aktivite takibi
- Sanal gerçeklik uygulamaları
- El titremesi ölçümü ve analizi
Navigasyon ve Yönelim
- IMU (Inertial Measurement Unit) sistemleri
- GPS destekli navigasyon
- Kamera stabilizasyon sistemleri
- Otonom araç yönlendirmesi
- Elektronik pusula uygulamaları
- Pozisyon izleme sistemleri
Proje Örnekleri
MPU6050 Gyro Jiroskop Modülü kullanılarak yapılabilecek detaylı proje örnekleri.
Self-Balancing Robot
MPU6050 sensörünü kullanarak, iki tekerlekli kendini dengeleyen bir robot oluşturabilirsiniz. Bu proje Segway benzeri bir mekanizma kullanarak, sürekli ayarlamalarla dikey konumda kalabilen bir robot tasarımı içerir. Arduino Uno, MPU6050 sensörünün sunduğu pitch (yuvarlanma) açısını sürekli ölçerek robotun dengesini korur.
Hareket Kontrollü Drone
MPU6050 sensörünü kullanarak el hareketleriyle kontrol edilebilen bir drone kontrol sistemi geliştirebilirsiniz. Bu projede, bir eldiven üzerine monte edilen MPU6050 sensörü, kullanıcının el hareketlerini algılar ve bu hareketleri drone'un uçuş komutlarına dönüştürür. Arduino Nano, sensörden gelen verileri işler ve NRF24L01 kablosuz modülü aracılığıyla drone'a iletir.
Akıllı Fitness Takip Cihazı
MPU6050 sensörü kullanarak, fiziksel aktiviteleri takip eden giyilebilir bir fitness cihazı oluşturabilirsiniz. Bu proje, adım sayma, kalori yakımı hesaplama ve aktivite türü tanıma özelliklerine sahip kompakt bir bileklik şeklinde tasarlanabilir. Arduino Nano veya daha küçük bir ESP8266 mikrodenetleyici, MPU6050'den gelen ivme ve jiroskop verilerini analiz ederek kullanıcının hareketlerini algılar.
İlgili Ürün Kategorilerimiz
Arduino geliştirme kartları ile MPU6050 sensörünüzü kolayca kontrol edebilirsiniz. Arduino Uno, Nano ve Mega gibi kartlar, sensör verilerini işlemek için ideal platformlardır.
Ürünleri İncele →
Çeşitli sensör modülleri ve genişletme kartları ile projelerinizi geliştirin. Bluetooth modülleri, ekranlar ve diğer sensörlerle MPU6050'yi entegre ederek kapsamlı projeler oluşturabilirsiniz.
Ürünleri İncele →
Neden Voltaj.Net'ten Almalısınız?
Voltaj.Net, elektronik komponent ve geliştirme platformları konusunda Türkiye'nin güvenilir tedarikçisi olarak kaliteli ürünleri uygun fiyatlarla sunmaktadır.
- Kalite Güvencesi: Test edilmiş ve onaylanmış, orijinal MPU6050 sensör modülleri
- Teknik Destek: Ürün kullanımı ve projeleriniz konusunda uzman desteği
- Hızlı Teslimat: Stoktan hızlı gönderim ve takip edilebilir kargo
- Tamamlayıcı Ürünler: Projeleriniz için gerekli tüm elektronik bileşenler
- Uygun Fiyatlar: Kaliteden ödün vermeden rekabetçi fiyatlandırma
- Güvenilir Alışveriş: Kolay sipariş ve iade süreci, güvenli ödeme seçenekleri
Ürün Hakkında Sıkça Sorulan Sorular
MPU6050 sensörü nasıl kalibre edilir?
Sensörü düz bir yüzeye yerleştirin, ham verileri okuyun ve sapmaları hesaplayın. Elde edilen offset değerlerini kodunuza ekleyin. Kalibrasyon sketch'leri kullanmak işlemi kolaylaştırır.
Jiroskop ve ivmeölçer arasındaki fark nedir?
Jiroskop açısal hızı ölçer, dönüş hareketlerini algılar. İvmeölçer ise doğrusal ivmeyi ölçer, yer çekimini ve hareket ivmesini algılar. Birlikte daha kesin yönelim bilgisi sağlarlar.
MPU6050 Arduino Nano ile kullanılabilir mi?
Evet, Arduino Nano ile mükemmel çalışır. A4 (SDA) ve A5 (SCL) pinlerine bağlayın. Nano'nun küçük boyutu, taşınabilir hareket algılama projeleri için idealdir.
Jiroskop sürüklemesi (drift) nasıl önlenir?
Complementary veya Kalman filtresi gibi sensör füzyon algoritmaları kullanın. İvmeölçer verilerini jiroskop verileriyle birleştirerek uzun vadeli stabilite sağlayın. Düzenli kalibrasyon da önemlidir.
Bu sensör quadcopter stabilizasyonu için uygun mu?
Evet, başlangıç ve orta seviye drone projeleri için idealdir. DMP özelliği, uçuş kontrolörünün yükünü azaltır. Profesyonel uygulamalar için daha hassas sensörler tercih edilebilir.
DMP nedir ve ne işe yarar?
Digital Motion Processor, karmaşık hareket hesaplamalarını sensör üzerinde yapar. CPU yükünü azaltır, daha hassas yönelim verileri sağlar ve Quaternion değerlerini doğrudan hesaplar.
I2C adresini değiştirebilir miyim?
Evet, AD0 pinini HIGH (3.3V/5V) çekerek adresi 0x68'den 0x69'a değiştirebilirsiniz. Bu, aynı I2C hattında iki MPU6050 kullanmak istediğinizde faydalıdır.
Elde edilen açı değerleri ne kadar doğrudur?
İyi kalibre edilmiş sensör ve doğru filtreleme ile statik durumlarda ±1° doğruluk elde edilebilir. Dinamik hareketlerde ve uzun kullanımlarda doğruluk azalabilir.