Isi kandungan:

Robot Pengimbang Diri Dua Roda: 7 Langkah
Robot Pengimbang Diri Dua Roda: 7 Langkah

Video: Robot Pengimbang Diri Dua Roda: 7 Langkah

Video: Robot Pengimbang Diri Dua Roda: 7 Langkah
Video: Bagaimana Kapal Berat Dapat Terapung? 2024, November
Anonim
Robot Pengimbang Diri Dua Roda
Robot Pengimbang Diri Dua Roda

Instruksional ini akan melalui proses reka bentuk dan pembinaan untuk robot pengimbangan diri. Sebagai makluman, saya hanya ingin mengatakan bahawa robot pengimbangan diri bukanlah konsep baru dan ia telah dibina dan didokumentasikan oleh orang lain. Saya ingin menggunakan peluang ini untuk berkongsi dengan saya tafsiran saya mengenai robot ini.

Apa itu robot pengimbang diri?

Robot pengimbang diri adalah sistem yang menggunakan data pengukuran inersia, yang dikumpulkan dari sensor onboard, untuk terus menyesuaikan kedudukannya agar tetap tegak.

Bagaimanakah ia berfungsi?

Analogi sederhana yang perlu dipertimbangkan adalah pendulum terbalik. Di mana pusat jisim berada di atas titik pangsi. Walau bagaimanapun, dalam kes kami, kami membatasi bandul hingga 1 darjah kebebasan dengan memiliki satu paksi putaran, dalam kes kami paksi putaran kedua roda. Oleh kerana sebarang gangguan akan menyebabkan robot jatuh, kita memerlukan kaedah untuk menjaga robot secara seimbang. Di sinilah algoritma gelung tertutup (pengawal PID) dimainkan, dengan mengetahui arah robot mana yang jatuh, kita dapat menyesuaikan arah putaran motor kita agar sistem tetap seimbang.

Bagaimana algoritma gelung tertutup berfungsi?

Prinsip asas dalam menjaga keseimbangan robot adalah, jika robot jatuh ke depan, ia akan mengimbangi dengan menggerakkan bahagian bawah robot ke depan untuk menangkapnya dan oleh itu tetap menegak. Begitu juga, jika robot jatuh ke belakang, ia akan mengimbangi dengan menggerakkan bahagian bawah robot ke belakang untuk menangkapnya sendiri.

Oleh itu, kita perlu melakukan dua perkara di sini, pertama, kita perlu mengira sudut kecenderungan (Roll) yang dialami robot dan sebagai hasilnya, kita perlu mengawal arah putaran motor.

Bagaimana kita mengukur sudut kecenderungan?

Untuk mengukur sudut kecenderungan kita akan menggunakan Unit Pengukuran Inersia. Modul ini menggabungkan akselerometer dan giroskop.

  • Accelerometer adalah alat elektromagnetik yang mengukur pecutan yang tepat, ini adalah pecutan badan dalam bingkai rehat seketika.
  • Giroskop adalah alat elektromekanik yang mengukur halaju sudut dan digunakan untuk menentukan orientasi peranti.

Namun, masalah penggunaan sensor seperti itu adalah:

  • Accelerometer sangat bising tetapi konsisten dari masa ke masa, sudut berbeza dengan pergerakan mendatar secara tiba-tiba
  • Nilai giroskop, sebaliknya, akan berubah dari masa ke masa, tetapi pada mulanya, ia cukup tepat

Untuk arahan ini, saya tidak akan menggunakan penapis sebaliknya menggunakan Digital Motion Processing (DMP) onboard. Yang lain telah menggunakan penapis pelengkap untuk mendapatkan isyarat yang lancar, anda boleh memilih kaedah mana yang anda suka. kerana robot mengimbangkan dengan kedua-dua pelaksanaan.

Bekalan

Bahagian:

  1. Arduino Pro Mini 3.3V 8 dengan 8 MHz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI USB ke TTL modul penyesuai bersiri
  3. Modul GY-521 dengan MPU-6050
  4. Sepasang motor gear mikro N20 6V - 300rpm
  5. Pemandu motor L298N
  6. Penukar LM2596S DC ke DC
  7. Bateri (pek bateri Li-ion 9.7V yang boleh dicas semula)
  8. Tali bateri
  9. Dua papan litar PCB prototaip
  10. Wayar jumper pin header lelaki dan wanita

Alat:

  1. Pateri dan pateri
  2. Penutupan spacer hex nilon
  3. Set pemutar skru tepat
  4. Pencetak 3D

Langkah 1: Pembinaan

Oleh kerana saya mempunyai akses ke pencetak 3D, saya memutuskan untuk mencetak casis 3D dan menggunakan penyekat untuk menghubungkan semuanya.

Robot terdiri daripada 4 lapisan

  1. Lapisan bawah menghubungkan motor dan mempunyai titik pemasangan untuk modul pemandu motor L298N
  2. Lapisan seterusnya menempatkan papan prototaip dengan Arduino pro mini dan header terpateri padanya
  3. Lapisan ketiga memasang IMU
  4. Lapisan teratas, yang saya sebut "lapisan bumper" melekatkan bateri, penukar wang, dan suis wang

Prinsip rekaan utama saya adalah untuk memastikan semuanya tetap modular. Sebabnya adalah jika ada yang salah dengan salah satu komponen saya dapat menggantinya dengan mudah atau jika saya memerlukan komponen untuk projek lain saya boleh mengambilnya dengan mudah tanpa perlu bimbang tidak dapat menggunakan sistem ini lagi.

Langkah 2: Pendawaian

Pendawaian
Pendawaian

Saya menyolokkan beberapa pin header wanita ke papan perfusi untuk dipadankan dengan pin header mini Arduino pro. Berikutan ini, saya menyisipkan header lelaki pin di papan untuk membenarkan akses ke I / O. Selebihnya komponen dipasang ke bingkai dicetak 3D dan disambungkan menggunakan kabel jumper.

Langkah 3: Teori Kawalan

Sekarang kita beralih ke teras projek. Untuk memastikan robot seimbang, kita perlu menghasilkan isyarat kawalan yang sesuai untuk menggerakkan motor ke arah yang betul dan pada kelajuan yang betul untuk memastikan robot seimbang dan stabil. Untuk melakukan ini, kami akan menggunakan algoritma gelung kawalan yang dikenali sebagai pengawal PID. Seperti singkatan menunjukkan terdapat tiga istilah untuk pengawal ini, ini adalah istilah berkadar, tidak terpadu, dan terbitan. Masing-masing disertakan dengan pekali yang menentukan pengaruhnya terhadap sistem. Selalunya bahagian yang paling memakan masa dalam pelaksanaan pengawal adalah penalaan keuntungan bagi setiap sistem unik untuk mendapatkan respons yang paling optimum.

  • Istilah berkadar terus menggandakan kesalahan untuk memberikan output, jadi semakin besar ralat semakin besar responsnya
  • Istilah integral menghasilkan tindak balas berdasarkan pengumpulan ralat untuk mengurangkan ralat keadaan mantap. Semakin lama sistem ini tidak seimbang, motor akan bertindak balas
  • Istilah derivatif adalah terbitan ralat yang digunakan untuk meramalkan tindak balas masa depan dan dengan berbuat demikian ia mengurangkan ayunan kerana mengatasi keadaan stabil.

Prinsip asas algoritma ini adalah untuk terus mengira sudut kecenderungan yang merupakan perbezaan antara kedudukan yang diinginkan dan kedudukan semasa, ini dikenali sebagai kesalahan. Ia kemudian menggunakan nilai ralat ini dan menghitung jumlah tindak balas berkadar, integral, dan derivatif untuk mendapatkan output, yang merupakan isyarat kawalan yang dihantar ke motor. Akibatnya, jika kesalahan besar, isyarat kawalan yang dihantar ke motor akan memutar motor pada kelajuan tinggi untuk sampai ke keadaan seimbang. Begitu juga, jika kesalahan kecil, isyarat kawalan akan memutar motor dengan kelajuan rendah untuk memastikan robot seimbang.

Langkah 4: Menggunakan MPU 6050

Perpustakaan MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

Mengkalibrasi offset Tidak semua sensor adalah replika yang tepat antara satu sama lain. Hasilnya, jika anda menguji dua MPU 6050, anda mungkin mendapat nilai yang berbeza untuk pecutan dan giroskop ketika diletakkan di permukaan yang sama. Untuk mengatasi offset sudut berterusan ini, kita perlu meraikan setiap sensor yang kita gunakan. Menjalankan skrip ini:

www.i2cdevlib.com/forums/topic/96-arduino-…

ditulis oleh Luis Rodenas, kita akan mendapat ofset. Kesalahan ofset dapat dihilangkan dengan menentukan nilai offset dalam setup () rutin.

Menggunakan Pemproses Gerakan Digital

MPU6050 mengandungi DMP (Digital Motion Processor).

Apa itu DMP? Anda boleh menganggap DMP sebagai mikrokontroler onboard yang memproses gerakan kompleks dari giroskop 3 paksi dan akselerometer 3 paksi di atas mpu6050, menggunakan algoritma perpaduan gerakan sendiri. Memunggah pemprosesan yang sebaliknya akan dilakukan oleh Arduino

Bagaimana untuk menggunakannya? Untuk mengetahui cara menggunakan DMP, lihat contoh sketsa MPU6050_DMP6 yang disertakan dengan perpustakaan MPU6050 (di Arduino IDE: File-> Contoh-> MPU6050-> MPU6050_DMP6). Ini juga merupakan peluang yang baik untuk memeriksa bahawa sensor anda betul-betul berfungsi dan pendawaiannya betul

Langkah 5: Pengekodan

Saya menggunakan Arduino IDE dan antara muka FTDI untuk memprogram Arduino pro mini.

Menggunakan contoh lakaran (MPU6050_DMP6) yang disertakan dengan perpustakaan MPU6050 sebagai kod asas saya, saya menambah fungsi PID () dan MotorDriver ().

Tambahkan perpustakaan

  • MPU6050: Untuk menggunakan sensor MPU6050, kita perlu memuat turun perpustakaan pengembang I2C dari Jeff Rowberg dan menambahkannya ke folder "perpustakaan" Arduino yang terdapat dalam fail program di komputer anda.
  • Kawat: Kami juga memerlukan perpustakaan Wire untuk membolehkan kami berkomunikasi dengan peranti I2C.

Kod Pseudo

Sertakan Perpustakaan:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Memulakan pemboleh ubah, pemalar, dan objek

Persediaan ()

  • Tetapkan mod pin untuk mengawal motor
  • Tetapkan mod pin untuk LED status
  • Permulaan MPU6050 dan tetapkan nilai offset

PID ()

Hitungkan nilai PID

MotorDriver (tindak balas PID)

Gunakan nilai PID untuk mengawal kelajuan dan arah motor

Gelung ()

  • Dapatkan data dari DMP
  • Panggil PID () fungsi MotorDriver ()

Langkah 6: Prosedur Penalaan PID

Ini adalah bahagian yang paling membosankan dalam projek ini dan memerlukan sedikit kesabaran kecuali anda bernasib baik. Berikut adalah langkah-langkahnya:

  1. Tetapkan istilah I dan D ke 0
  2. Dengan memegang robot, sesuaikan P supaya robot mula berayun mengenai kedudukan keseimbangan
  3. Dengan set P, tingkatkan I supaya robot memecut lebih cepat apabila tidak seimbang. Dengan P dan saya disetel dengan betul, robot harus dapat mengimbangkan diri sekurang-kurangnya selama beberapa saat, dengan sedikit ayunan
  4. Akhirnya, tingkatkan D mengurangkan ayunan

Sekiranya percubaan pertama tidak memberikan hasil yang memuaskan, ulangi langkah dengan nilai P. yang berbeza. Perlu diketahui juga bahawa anda boleh menyesuaikan nilai PID selepas itu, untuk meningkatkan lagi prestasi. Nilai di sini bergantung pada perkakasan, jangan terkejut jika anda mendapat nilai PID yang sangat besar atau sangat kecil.

Langkah 7: Keselesaan

Motor gear mikro yang digunakan lambat untuk bertindak balas terhadap gangguan besar dan memandangkan sistemnya terlalu ringan, tidak ada inersia yang cukup untuk mendapatkan kesan pendulum yang diinginkan, jadi jika robot bersandar ke depan, ia hanya akan bersandar pada sudut dan berlari ke depan. Akhirnya, roda dicetak 3D adalah pilihan yang buruk kerana mereka terus tergelincir.

Cadangan penambahbaikan:

  • Motor lebih cepat dengan tork yang lebih tinggi, iaitu untuk motor DC semakin tinggi penilaian voltan semakin tinggi torknya
  • dapatkan bateri yang lebih berat atau gerakkan jisimnya sedikit lebih tinggi
  • Gantikan roda dicetak 3D dengan roda getah untuk mendapatkan daya tarikan yang lebih banyak

Disyorkan: