Daftar Isi:
- Perlengkapan
- Langkah 1: Konstruksi
- Langkah 2: Pengkabelan
- Langkah 3: Teori Kontrol
- Langkah 4: Menggunakan MPU 6050
- Langkah 5: Pengkodean
- Langkah 6: Prosedur Penyetelan PID
- Langkah 7: Kesimpulan
Video: Robot Self-Balancing Dua Roda: 7 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Instruksi ini akan melalui proses desain dan pembuatan untuk robot self-balancing. Sebagai catatan, saya hanya ingin mengatakan bahwa robot self-balancing bukanlah konsep baru dan mereka telah dibuat dan didokumentasikan oleh orang lain. Saya ingin menggunakan kesempatan ini untuk berbagi dengan Anda interpretasi saya tentang robot ini.
Apa itu robot penyeimbang diri?
Robot self-balancing adalah sistem yang menggunakan data pengukuran inersia, dikumpulkan dari sensor onboard, untuk terus menyesuaikan posisinya agar tetap tegak.
Bagaimana cara kerjanya?
Sebuah analogi sederhana untuk dipertimbangkan adalah pendulum terbalik. Dimana pusat massa berada di atas titik pivot. Namun, dalam kasus kami, kami membatasi pendulum hingga 1 derajat kebebasan dengan memiliki satu sumbu rotasi, dalam kasus kami sumbu rotasi kedua roda. Karena gangguan apa pun akan menyebabkan robot jatuh, maka diperlukan metode untuk menjaga keseimbangan robot secara aktif. Di sinilah algoritma loop tertutup kami (pengontrol PID) berperan, mengetahui ke arah mana robot kami jatuh, kami dapat menyesuaikan arah putaran motor kami untuk menjaga sistem tetap seimbang.
Bagaimana cara kerja algoritma loop tertutup?
Prinsip dasar dalam menjaga keseimbangan robot adalah, jika robot jatuh ke depan maka akan mengimbangi dengan menggerakkan bagian bawah robot ke depan untuk menangkap dirinya sendiri dan karena itu tetap vertikal. Begitu juga jika robot jatuh ke belakang akan mengimbanginya dengan menggerakkan bagian bawah robot ke belakang untuk menangkap dirinya sendiri.
Jadi, kita perlu melakukan dua hal di sini, pertama, kita perlu menghitung sudut kemiringan (Roll) yang dialami robot dan sebagai hasilnya, kita perlu mengontrol arah putaran motor.
Bagaimana kita mengukur sudut kemiringan?
Untuk mengukur sudut kemiringan kita akan menggunakan Unit Pengukuran Inersia. Modul ini menggabungkan accelerometer dan giroskop.
- Akselerometer adalah perangkat elektromagnetik yang mengukur akselerasi yang tepat, ini adalah akselerasi tubuh dalam kerangka istirahat sesaat.
- Giroskop adalah perangkat elektromekanis yang mengukur kecepatan sudut dan digunakan untuk menentukan orientasi perangkat.
Namun, masalah dengan menggunakan sensor tersebut adalah bahwa:
- Akselerometer sangat bising tetapi konsisten dari waktu ke waktu, sudutnya bervariasi dengan gerakan horizontal yang tiba-tiba
- Nilai giroskop, di sisi lain, akan melayang seiring waktu, tetapi pada awalnya, itu cukup akurat
Untuk instruksi ini, saya tidak akan menerapkan filter melainkan menggunakan Digital Motion Processing (DMP) onboard. Yang lain telah menggunakan filter pelengkap untuk mendapatkan sinyal yang halus, Anda dapat memilih metode mana pun yang Anda suka. sebagai keseimbangan robot dengan salah satu implementasi.
Perlengkapan
Bagian:
- Arduino Pro Mini 3.3V 8 dengan ATMEGA328 8 Mhz
- FT232RL 3.3V 5.5V FTDI USB ke modul adaptor serial TTL
- Modul GY-521 dengan MPU-6050
- Sepasang motor gigi mikro N20 6V - 300rpm
- Pengemudi motor L298N
- Konverter uang DC ke DC LM2596S
- Baterai (Paket baterai Li-ion 9,7V yang dapat diisi ulang)
- Tali baterai
- Dua papan sirkuit PCB prototipe
- Kabel jumper pin header pria dan wanita
Peralatan:
- Besi solder dan solder
- Kebuntuan spacer hex nilon
- Set obeng presisi
- pencetak 3D
Langkah 1: Konstruksi
Karena saya memiliki akses ke printer 3D, saya memutuskan untuk mencetak 3D sasis dan menggunakan standoff untuk menghubungkan semuanya bersama-sama.
Robot terdiri dari 4 lapisan
- Lapisan bawah menghubungkan motor dan memiliki titik pemasangan untuk modul driver motor L298N
- Lapisan berikutnya menampung papan prototipe dengan Arduino pro mini dan header yang disolder ke sana
- Lapisan ketiga memasang IMU
- Lapisan atas, yang saya sebut "lapisan bumper" menampung baterai, konverter uang, dan sakelar moneter
Prinsip desain utama saya adalah menjaga semuanya tetap modular. Alasannya adalah jika ada yang salah dengan salah satu komponen, saya dapat dengan mudah menggantinya atau jika saya membutuhkan komponen untuk proyek lain, saya dapat dengan mudah mengambilnya tanpa khawatir tidak dapat menggunakan sistem lagi.
Langkah 2: Pengkabelan
Saya menyolder beberapa pint header perempuan ke papan perf agar sesuai dengan pin header mini Arduino pro. Setelah ini, saya menyolder pin header laki-laki pada papan untuk memungkinkan akses ke I/O. Komponen lainnya dipasang ke bingkai cetak 3D dan dihubungkan menggunakan kabel jumper.
Langkah 3: Teori Kontrol
Sekarang kita beralih ke inti proyek. Untuk menjaga keseimbangan robot, kita perlu menghasilkan sinyal kontrol yang tepat untuk menggerakkan motor ke arah yang benar dan pada kecepatan yang benar untuk menjaga keseimbangan dan kestabilan robot. Untuk melakukan ini, kita akan menggunakan algoritma loop kontrol populer yang dikenal sebagai pengontrol PID. Seperti yang ditunjukkan oleh akronim ada tiga istilah untuk pengontrol ini, ini adalah istilah proporsional, integral, dan turunan. Masing-masing disertai dengan koefisien yang menentukan pengaruhnya terhadap sistem. Seringkali bagian yang paling memakan waktu dari implementasi pengontrol adalah penyetelan keuntungan untuk setiap sistem unik untuk mendapatkan respons paling optimal.
- Istilah proporsional secara langsung mengalikan kesalahan untuk memberikan output, jadi semakin besar kesalahan semakin besar responsnya
- Istilah integral menghasilkan respons berdasarkan akumulasi kesalahan untuk mengurangi kesalahan kondisi tunak. Semakin lama sistem tidak seimbang, semakin cepat motor akan merespons
- Suku turunan adalah turunan dari kesalahan yang digunakan untuk memprediksi respons masa depan dan dengan demikian mengurangi osilasi karena melampaui kondisi tunak.
Prinsip dasar dari algoritma ini adalah menghitung secara terus menerus sudut kemiringan yang merupakan selisih antara posisi yang diinginkan dengan posisi saat ini, hal ini dikenal sebagai error. Kemudian menggunakan nilai kesalahan ini dan menghitung jumlah respons proporsional, integral, dan turunan untuk mendapatkan output, yang merupakan sinyal kontrol yang dikirim ke motor. Akibatnya, jika kesalahannya besar, sinyal kontrol yang dikirim ke motor akan memutar motor dengan kecepatan tinggi untuk mencapai keadaan seimbang. Demikian juga, jika kesalahannya kecil, sinyal kontrol akan memutar motor dengan kecepatan rendah untuk menjaga keseimbangan robot.
Langkah 4: Menggunakan MPU 6050
Perpustakaan MPU6050
github.com/jrowberg/i2cdevlib/tree/master/…
Mengkalibrasi offsetTidak semua sensor merupakan replika yang tepat satu sama lain. Akibatnya, jika Anda menguji dua MPU 6050, Anda mungkin mendapatkan nilai yang berbeda untuk akselerometer dan giroskop saat diletakkan di permukaan yang sama. Untuk mengatasi offset sudut konstan ini kita perlu merayakan setiap sensor yang kita gunakan. Menjalankan skrip ini:
www.i2cdevlib.com/forums/topic/96-arduino-…
ditulis oleh Luis Rodenas, kita akan mendapatkan offset. Kesalahan offset dapat dihilangkan dengan mendefinisikan nilai offset dalam rutin setup().
Menggunakan Prosesor Gerak Digital
MPU6050 berisi DMP (Digital Motion Processor).
Apa itu DMP? Anda dapat menganggap DMP sebagai mikrokontroler onboard yang memproses gerakan kompleks dari giroskop 3-sumbu dan akselerometer 3-sumbu di papan mpu6050, menggunakan algoritme fusi geraknya sendiri. Membongkar pemrosesan yang seharusnya dilakukan oleh Arduino
Bagaimana cara menggunakannya? Untuk mengetahui cara menggunakan DMP, lihat contoh sketsa MPU6050_DMP6 yang disertakan dengan pustaka MPU6050 (di Arduino IDE: File->Contoh->MPU6050->MPU6050_DMP6). Ini juga merupakan kesempatan yang baik untuk memeriksa sensor Anda benar-benar berfungsi dan kabelnya sudah benar
Langkah 5: Pengkodean
Saya menggunakan Arduino IDE dan antarmuka FTDI untuk memprogram Arduino pro mini.
Menggunakan contoh sketsa(MPU6050_DMP6) yang disertakan dengan perpustakaan MPU6050 sebagai kode dasar saya, saya menambahkan fungsi PID() dan MotorDriver().
Tambahkan perpustakaan
- MPU6050: Untuk menggunakan sensor MPU6050 kita perlu mengunduh perpustakaan pengembang I2C dari Jeff Rowberg dan menambahkannya ke folder "perpustakaan" Arduino yang ada di file program di komputer Anda.
- Wire: Kami juga membutuhkan perpustakaan Wire untuk memungkinkan kami berkomunikasi dengan perangkat I2C.
Kode Semu
Sertakan Perpustakaan:
- Wire.h
- MPU6050
- I2Cdev.h
Inisialisasi variabel, konstanta, dan objek
Mempersiapkan ()
- Atur mode pin untuk mengendalikan motor
- Atur mode pin untuk LED status
- Inisialisasi MPU6050 dan atur nilai offset
ID ()
Hitung nilai PID
MotorDriver (tanggapan PID)
Gunakan nilai PID untuk mengontrol kecepatan dan arah motor
Lingkaran ()
- Dapatkan data dari DMP
- Panggil PID() a MotorDriver() fungsi
Langkah 6: Prosedur Penyetelan PID
Ini adalah bagian proyek yang paling membosankan dan membutuhkan sedikit kesabaran kecuali jika Anda sangat beruntung. Berikut langkah-langkahnya:
- Tetapkan suku I dan D ke 0
- Memegang robot, sesuaikan P sehingga robot mulai berosilasi tentang posisi keseimbangan
- Dengan set P, naikkan I agar robot berakselerasi lebih cepat saat tidak seimbang. Dengan P dan I disetel dengan benar, robot harus dapat menyeimbangkan diri setidaknya selama beberapa detik, dengan beberapa osilasi
- Akhirnya, meningkatkan D mengurangi osilasi
Jika upaya pertama tidak memberikan hasil yang memuaskan, ulangi langkah-langkah dengan nilai P yang berbeda. Perlu diketahui juga bahwa Anda dapat menyempurnakan nilai PID sesudahnya, untuk lebih meningkatkan kinerja. Nilai di sini tergantung pada perangkat keras, jangan heran jika Anda mendapatkan nilai PID yang sangat besar atau sangat kecil.
Langkah 7: Kesimpulan
Motor roda gigi mikro yang digunakan lambat untuk bereaksi terhadap gangguan besar dan mengingat sistemnya terlalu ringan, tidak ada cukup inersia untuk mendapatkan efek pendulum yang diinginkan, jadi jika robot condong ke depan, ia hanya akan bersandar pada sudut dan berlari ke depan. Akhirnya, roda cetak 3D adalah pilihan yang buruk karena terus tergelincir.
Saran untuk peningkatan:
- Motor yang lebih cepat dengan torsi yang lebih tinggi, yaitu untuk motor DC, semakin tinggi peringkat tegangan, semakin tinggi torsi
- dapatkan baterai yang lebih berat atau cukup pindahkan massa sedikit lebih tinggi
- Ganti roda cetak 3D dengan roda karet untuk mendapatkan lebih banyak traksi
Direkomendasikan:
Robot Sepak Bola Roda 4Omni CHAMPION !: 7 Langkah (dengan Gambar)
The CHAMPION 4Omni Wheel Soccer Robot !: Ini adalah robot omni wheel penggerak 4 Roda yang dikendalikan Bluetooth berdasarkan Arduino Mega 2560 (Anda dapat menggunakan arduino UNO atau lainnya, Anda mau), Ini bukan robot biasa melainkan Robot Sepak Bola, dan itu telah berpartisipasi dalam 3 kompetisi bekerja sama dengan teman saya
Robot Pelacak Warna Berdasarkan Roda Omnidirectional dan OpenCV: 6 Langkah
Robot Pelacak Warna Berdasarkan Roda Omnidirectional dan OpenCV: Saya menggunakan sasis roda omnidirectional untuk menerapkan pelacakan warna saya, dan saya menggunakan perangkat lunak seluler bernama OpenCVBot. Terima kasih kepada pengembang perangkat lunak di sini, terima kasih. OpenCV Bot benar-benar mendeteksi atau melacak objek waktu nyata apa pun melalui proses gambar di
Proyecto Laboratorio De Mecatrónica (Robot Keseimbangan Roda Dua): 6 Langkah
Proyecto Laboratorio De Mecatrónica (Robot Keseimbangan Dua Roda): En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "Robot keseimbangan dua roda" paso a paso y con explicación y concejos. Este es un sistema que konsisten en que el robot no se debe caer, se debe de mantener en el
Roda Robot Buatan Sendiri: 8 Langkah (dengan Gambar)
Roda Robot buatan rumah: Halo semuanya…….. Saya suka kreativitas. Setiap orang memiliki kreativitasnya masing-masing. Namun pada kenyataannya hanya 10% orang yang menemukan kreativitasnya. Karena mereka mengambil jalan yang mudah. Kreativitas adalah kemampuan berpikir, berkembang melalui pengalaman, pengamatan
Robot Roda 4 Terkendali Wi-Fi: 6 Langkah
Robot Roda 4 Terkendali Wi-Fi: Untuk proyek ini, kami akan mengembangkan Robot Roda 4 menggunakan ESP8266 yang akan dikendalikan melalui Jaringan Wi-Fi. Robot dapat dikendalikan dari browser internet biasa, menggunakan antarmuka yang dirancang HTML atau juga dari aplikasi seluler android