MPU6050 3 Eksen Eğim Ölçümü Alma - Z Ekseni İle Kumpas Ölçümü Dahil



Öncelikle yaptığımız işlem MPU6050 sensörü ile X,Y,Z eksenlerinin ölçümünü sağlamak. Sensör ile Gyro ve Açı ölçümü yapmak mümkündür. 

Pin bağlantısı şu şekilde;
  • VCC -> Arduino üzerinde 5V'a bağlıyoruz,
  • GND -> Arduino üzerinde GND pinine bağlıyoruz,
  • SCL -> Arduino üzerinde SCL veya A4 pinine bağlıyoruz,
  • SDA -> Arduino üzerinde SDA veya A5 pinine bağlıyoruz.
A4 ve A5 pinlerine arduino nano, uno benzeri kartlarda pin yeri kalmaması durumunda kullanılıyor. Mega'da orjinallerde 2 adet klonlarda 3 adet olmak üzere SCL ve SDA bulunmaktadır.

Daha sonra kütüphane ekleme kısmına geliyoruz;
MPU6050 Kütüphane dosyamızı buradan indirelim. İndirdiğimiz dosyayı açın ve içindeki klasörü Bilgisayarım->Belgelerim->Arduino->Libraries klasörüne çıkartın.

Kullanım şekli;
#include "Wire.h"
 #include <MPU6050_light.h>
 
 MPU6050 mpu(Wire);
 
 void setup() {
   Serial.begin(9600);
   Wire.begin();
   byte status = mpu.begin();
   Serial.print(F("MPU6050 durumu: "));
   Serial.println(status);
   while (status != 0) { } // stop everything if could not connect to MPU6050
   Serial.println(F("Kalibrasyon yapılıyor. Lütfen cihazı hareket ettirmeyiniz!"));
   delay(1000);
   mpu.calcOffsets(); // gyro ve açı sensörünün offsetlerini tanımlayalım.
   Serial.println("Kalibrasyon tamamlandı!\n");
 }
 void loop() {
   mpu.update();
   Serial.print("");
   Serial.print(mpu.getAngleX());
   Serial.print(" ");
   Serial.print(mpu.getAngleY());
   Serial.print(" ");
   Serial.println(mpu.getAngleZ());
 }

Burada kullanım şeklinde mpu.getAngleX();mpu.getAngleY()mpu.getAngleZ()
değerleri eksenleri temsil etmektedir. Z Ekseni kumpasta üzerine eklene eklene devam etmektedir. Yani 360 dereceyi geçince 0 derece yerine 361, 362 derece diye devam etmektedir. Bu kısmı aşmak için aşşağıdaki hazırladığım yazılıma göz atabilirsiniz;

#include "Wire.h"
 #include <MPU6050_light.h>
 
 MPU6050 mpu(Wire);
 
 void setup() {
   Serial.begin(9600);
   Wire.begin();
   byte status = mpu.begin();
   Serial.print(F("MPU6050 durumu: "));
   Serial.println(status);
   while (status != 0) { } // stop everything if could not connect to MPU6050
   Serial.println(F("Kalibrasyon yapılıyor. Lütfen cihazı hareket ettirmeyiniz!"));
   delay(1000);
   mpu.calcOffsets(); // gyro ve açı sensörünün offsetlerini tanımlayalım.
   Serial.println("Kalibrasyon tamamlandı!\n");
 }
 void loop() {
   mpu.update();
  
  int bolum = (mpu.getAngleZ() / 360);
  
  if(bolum-bolum_birikim == 1 && (bolum_birikim > 0 || bolum_birikim == 0)) bolum_birikim = bolum;
  if(bolum-bolum_birikim == -1 && (bolum_birikim < 0 || bolum_birikim == 0)) bolum_birikim = bolum;
  if(bolum_birikim-bolum == 2) bolum_birikim = bolum_birikim-1;
  if(bolum_birikim-bolum == -2) bolum_birikim = bolum_birikim+1;
  if(bolum_birikim == -1 && mpu.getAngleZ() > 0) bolum_birikim = 0;
  if(bolum_birikim == 1 && mpu.getAngleZ() < 0) bolum_birikim = 0;
  mpu.getAngleZ() = mpu.getAngleZ() - (bolum_birikim * 360);
   
   Serial.print(mpu.getAngleX());
   Serial.print(" ");
   Serial.print(mpu.getAngleY());
   Serial.print(" ");
   Serial.println(mpu.getAngleZ());
 }
şeklinde kullanım sağlayabiliriz. Burada bölüm birikim ile 360 dereceyi her gectiğinde 360 derece çıkartarak 1,2,3 derece olarak devam etmesini sağlıyoruz. Bunu da bir katsayıya bağlıyoruz yani 360 dereyi geçtiğinde katsayı 1 olarak 360*1 çıkartıyor, 720 dereceyi geçtiğinde 360*2 çıkartarak ilerliyor 720'den tekrar 360'a düştüğünde katsayıyı tekrar düşüyoruz.
### NOT: Bu ölçüm paraziti en aza indirilmiş gyroscope değeri de göz önüne alınarak hesaplanan net eğim değerlerini vermektedir.

Burada kullandığımız 
mpu.getAngleZ()değişkende "getAngleZ()" kütüphaneden alınan eksen fonksiyonudur. Buna benzer kullanabileceğiniz fonksiyonlar;
getGyroXoffset()
getGyroYoffset()
getGyroZoffset()

getAccXoffset()
getAccYoffset()
getAccZoffset()

getFilterGyroCoef()
getFilterAccCoef()

getTemp()

getAccX()
getAccY()
getAccZ()

getGyroX()
getGyroY()
getGyroZ()

getAccAngleX()
getAccAngleY()


Ziyaretçi, yorum yapılsın mı?
İsim:*
E-Mail:


[not-allow-comm]
[/not-allow-comm]

Dikkat!

Aşağıdaki bağlantıdaki makaleye göz atın.

Site Kuralları ve Engellenme Sonrası
İstatistik
File engine/modules/zpstats.php not found.
Sıkça Sorulan Sorular
Video Trafiği
Etiketlere göre ara