Başa dön
ARDUINO GIMBAL YAPIMI

Arduino ile Gimbal Yapımı

Merhaba arkadaşlar ilginç arduino projeleri serimiz de, Arduino Gimbal Yapımı, servo motorlu kendinden dengeleyici bir platform yapmayı öğreneceğiz. Bu yazımız da bulunan projenin MPU6050 ile ilgili kısmını bağlantıya tıklayarak inceleyebilirsiniz.
Daha fazla ayrıntı için aşağıdaki videoyu izleyebilirsiniz.
 
Gimbal’ı 3B modelleme yazılımı kullanarak tasarladık. 3D çıktı alacağımız parçalar içerisinde 3 eksenli kontrol için MG996R servo motor “L” dirsekleri, MPU6050 6 eksen ivme ve gyro sensörü, Arduino ve pilin yerleştirileceği bir tabandan oluşur.
 

Birduino --- Arduino-Oyun-Proje-Example1

3D yazdırma için kullanılan STL dosyalarını aşağıdaki bağlantılardan indirebilirsiniz:

STEP Dosyası (Fusion 360 ile açabilirsiniz):

 

 

3D Baskı için STL dosyaları:

 

Birduino --- Arduino-Oyun-Proje-Example1

Arduino Gimbal Yapımı – Birleştirme

Arduino gimbal yapımı projemiz de gimbal’ı monte etmek oldukça kolaydır. Servoyu kurmaya başlayalım. M3 cıvata ve somun kullanarak tabana sabitleyelim.

Birduino --- Arduino-Oyun-Proje-Example1

Sonra, aynı yöntemi kullanarak diğer servo motorun güvenliğini sağlayalım. Parçalar, MG996R servolarına kolayca uyacak şekilde özel olarak tasarlanmıştır.

Birduino --- Arduino-Oyun-Proje-Example1

Parçaları birbirine bağlamak için servo aksesuarı yuvarlak mili takalım.

Birduino --- Arduino-Oyun-Proje-Example1

İlk önce mili tabana iki cıvatayla tutturmamız ve daha sonra başka bir cıvata kullanarak önceki servoya takmamız gerekiyor.

Birduino --- Arduino-Oyun-Proje-Example1

Kalan bileşenler için servo’nun ve üst platformun montajı bu işlemini tekrarlayalım.

Birduino --- Arduino-Oyun-Proje-Example1

Daha sonra, düzenli tutmak için servo kablolarını tutucu açıklıklarından geçirelim. MPU6050 sensörünü taktıktan sonra bir cıvata ve somun ile tabana sabitleyelim.Birduino --- Arduino-Oyun-Proje-Example1

Arduino gimbal yapımı projesine güç vermek için, pil yuvasına 2 adet pil yerleştirelim. Pil yuvasını tabana iki cıvata ve somun kullanarak sabitleyelim.

Birduino --- Arduino-Oyun-Proje-Example1

2 Li-ion pil yaklaşık 7.4V üretecektir, ancak Arduino ve servoları çalıştırmak için 5V’a ihtiyacımız var.

Birduino --- Arduino-Oyun-Proje-Example1

Bu yüzden 7.4V ile 5V arasında dengeyi sağlayan bir çevirici kullanalım.

Arduino Gimbal Devre Şeması

Şimdi geriye, her şeyi birbirine bağlamak kaldı. İşte bu projenin devre şeması ve her şeyin nasıl bağlanması gerektiğini aşağıdan görebilirsiniz.

Birduino --- Arduino-Oyun-Proje-Example1

Arduino Gimbal Yapımı Projesi için gerekli malzemeleri aşağıdaki linklerden satın alabilirsiniz:

 

Sonunda elektronik bileşenleri ve telleri taban içerisine yerleştirip kapağı kullanarak kapatalım.

Birduino --- Arduino-Oyun-Proje-Example1

Birduino --- Arduino-Oyun-Proje-Example1

Arduino Kodu

 

 Kod açıklaması:

// Get Yaw, Pitch and Roll values
#ifdef OUTPUT_READABLE_YAWPITCHROLL
    mpu.dmpGetQuaternion(&q, fifoBuffer);
    mpu.dmpGetGravity(&gravity, &q);
    mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
    // Yaw, Pitch, Roll values - Radians to degrees
    ypr[0] = ypr[0] * 180 / M_PI;
    ypr[1] = ypr[1] * 180 / M_PI;
    ypr[2] = ypr[2] * 180 / M_PI;
    
    // Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }
    // After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180
      int servo0Value = map(ypr[0], -90, 90, 0, 180);
      int servo1Value = map(ypr[1], -90, 90, 0, 180);
      int servo2Value = map(ypr[2], -90, 90, 180, 0);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }
#endif

 

Kod açıklaması 2:

Değerleri aldıktan sonra, ilk önce radyandan dereceye çevirip düzenleyelim.

// Yaw, Pitch, Roll values - Radians to degrees
    ypr[0] = ypr[0] * 180 / M_PI;
    ypr[1] = ypr[1] * 180 / M_PI;
    ypr[2] = ypr[2] * 180 / M_PI;


Daha sonra bekleyip 300 okuma yaparız, çünkü sensör bu süre zarfında hala kendi kendine kalibrasyon sürecindedir. Ayrıca, başlangıçta Pitch and Roll değerleri gibi “0”(sıfır) olmayan Yaw değerini yakalarız.

// Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }

300 okumadan sonra, yukarıdaki yakalanan rastgele değeri çıkartarak önce Yawdeğerini “0”a ayarlarız. Daha sonra Yaw, Pitch ve Rolldeğerlerini – 90 – +90 derece arasında, servoları sürmek için kullanılan 0 – 180 değerlerine eşleriz.

// After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180
      int servo0Value = map(ypr[0], -90, 90, 0, 180);
      int servo1Value = map(ypr[1], -90, 90, 0, 180);
      int servo2Value = map(ypr[2], -90, 90, 180, 0);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }

Arduino Gimbal Yapımı Projesi – Sonuç

Sonunda write işlevini kullanarak bu değerleri servolara kontrol sinyali olarak göndeririz. Tabii ki, eğer X ve Y ekseni için sadece dengeleme yapmak istiyorsanız, servoyu devre dışı bırakabilir ve bu platformu Kamera gimbal olarak kullanabilirsiniz. Hareketler pürüzsüz değildir çünkü bu servolar böyle bir amaç için tasarlanmamıştır. Proje amaçlı yapılmıştır. Gerçek hassasiyete sahip bir gimbal için bir kaç bin tl’yi gözden çıkarıp satın alabilirsiniz 🙂 Gerçek kamera gimbal’ları, yumuşak hareketler elde etmek için özel bir fırçasız motor tipi kullanır. Yani, bu projeyi sadece eğitim amaçlı düşünün. Umarım beğenmiş ve yeni bir şeyler öğrenmişsinizdir.
 

Diğer Güncel Arduino Projeleri için BURAYA TIKLAYABİLİRSİNİZ.

Sizde Robotlara ve Maker’lığa Meraklıysanız, Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Okuduğunuz İçin Teşekkürler.
 
Kaynak: howtomechatronics.com/projects/diy-arduino-gimbal-self-stabilizing-platform/