Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Gimbal Arduino DIY | Platform yang Menstabilkan Diri

Dalam tutorial ini kita akan belajar bagaimana membangun Arduino Gimbal atau platform self-stabilizing dengan motor servo. Tutorial ini sebenarnya merupakan lanjutan dari tutorial sebelumnya tentang tutorial MPU6050.

Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini.

Ringkasan

Saya merancang gimbal menggunakan perangkat lunak pemodelan 3D. Ini terdiri dari 3 motor servo MG996R untuk kontrol 3-sumbu, dan basis di mana sensor MPU6050, Arduino, dan baterai akan ditempatkan.

Anda dapat menemukan dan mengunduh model 3D ini, serta menjelajahinya di browser Anda di Thans.

File STL:

Menggunakan printer 3D Creality CR-10 saya, saya mencetak 3D semua bagian dan semuanya sempurna.

Merakit

Merakit gimbal itu cukup mudah. Saya mulai dengan menginstal servo Yaw. Dengan menggunakan baut dan mur M3, saya mengencangkannya ke alasnya.

Selanjutnya, dengan menggunakan metode yang sama saya mengamankan servo Roll. Bagian-bagiannya dirancang khusus agar pas dengan servo MG996R.

Untuk menghubungkan bagian satu sama lain saya menggunakan tanduk bulat yang datang sebagai aksesoris dengan servos.

Pertama, kita perlu mengencangkan klakson bundar ke alas dengan dua baut, lalu memasangnya ke servo sebelumnya menggunakan baut lain.

Saya mengulangi proses ini untuk merakit komponen lainnya, servo Pitch dan platform teratas.

Selanjutnya, saya melewati kabel servo melalui lubang pemegang agar tetap teratur. Kemudian saya memasukkan sensor MPU6050 dan mengencangkannya di alasnya dengan baut dan mur.

Untuk menyalakan proyek, saya menggunakan 2 baterai Li-ion yang saya tempatkan di tempat baterai ini. Saya mengencangkan dudukan baterai ke dasarnya menggunakan dua baut dan mur.

2 baterai Li-ion akan menghasilkan sekitar 7,4V, tetapi kami membutuhkan 5V untuk memberi daya pada Arduino dan servos.

Itu sebabnya saya menggunakan konverter uang yang akan mengubah 7.4V menjadi 5V.

Diagram Sirkuit Gimbal Arduino

Yang tersisa sekarang, adalah menghubungkan semuanya bersama-sama. Berikut diagram sirkuit proyek ini dan bagaimana semuanya perlu dihubungkan.

Anda bisa mendapatkan komponen yang diperlukan untuk Tutorial Arduino ini dari link di bawah ini:

  • MPU6050 IMU ………………………………. AmazonBanggood / AliExpress
  • Servo MG996R ………………………………. AmazonBanggood / AliExpress
  • Konverter Uang ………………………………
  • Arduino Board …………………………..…..
  • Breadboard dan Kabel Lompat ………… 

Pada akhirnya saya menekan komponen elektronik dan kabel ke dalam alas, dan menutupinya menggunakan penutup ini di bagian bawah.

Dengan ini platform self-balancing atau gimbal Arduino selesai dan berfungsi dengan baik seperti yang diharapkan. Yang tersisa adalah melihat programnya.

Kode Arduino

Kode Arduino untuk contoh ini adalah modifikasi dari contoh MPU6050_DMP6 dari perpustakaan i2cdevlib oleh Jeff Rowberg.

Berikut kode yang dapat Anda unduh:

Deskripsi kode: Jadi, kami menggunakan output yang dapat dibaca yaw, pitch and roll.

// 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);
    }
#endifCode language: Arduino (arduino)

Setelah kita mendapatkan nilainya, pertama kita ubah dari radian ke derajat.

// 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;Code language: Arduino (arduino)

Kemudian kita tunggu atau lakukan 300 pembacaan, karena sensor masih dalam proses kalibrasi sendiri selama ini. Selain itu, kami menangkap nilai Yaw, yang pada awalnya tidak 0 seperti nilai Pitch and Roll, melainkan selalu berupa nilai acak.

// 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++;
    }Code language: Arduino (arduino)

Setelah 300 pembacaan, pertama-tama kita atur Yaw ke 0 dengan mengurangkan nilai acak yang ditangkap di atas. Kemudian kami memetakan nilai Yaw, Pitch and Roll, dari – 90 hingga +90 derajat, menjadi nilai dari 0 hingga 180 yang digunakan untuk menggerakkan servo.

// 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);
    }Code language: Arduino (arduino)

Akhirnya menggunakan fungsi tulis, kami mengirim nilai-nilai ini ke servos sebagai sinyal kontrol. Tentu saja, Anda dapat menonaktifkan servo Yaw jika Anda hanya ingin stabilisasi untuk sumbu X dan Y, dan menggunakan platform ini sebagai gimbal kamera.

Harap dicatat ini jauh dari gimbal kamera yang bagus. Gerakannya tidak mulus karena servos ini tidak dimaksudkan untuk tujuan seperti itu. Gimbal kamera asli menggunakan jenis motor BLDC khusus untuk mendapatkan gerakan yang mulus. Jadi, anggap proyek ini hanya untuk tujuan pendidikan.

Itu saja untuk tutorial ini, saya harap Anda menikmatinya dan belajar sesuatu yang baru. Jangan ragu untuk mengajukan pertanyaan apa pun di bagian komentar di bawah dan jangan lupa untuk memeriksa koleksi Proyek Arduino saya.


Proses manufaktur

  1. DIY LUMAZOID Arduino Music Visualizer
  2. Voltmeter DIY Menggunakan Arduino dan Smartphone
  3. Hambatan Menghindari Robot Dengan Motor Servo
  4. Skateboard Realitas Virtual DIY
  5. Platform Pelatihan Arduino
  6. DIY Arduino RADIONICS Treatment MMachine
  7. Simulator Balap Gerak 2D DIY
  8. Bot Sampah Arduino (Buka Otomatis/Tutup Tempat Sampah)
  9. Sweep Servo Solo
  10. Ide DIY dengan RFID