Mundarija:

Ikki g'ildirakli o'z-o'zini muvozanatlaydigan robot: 7 qadam
Ikki g'ildirakli o'z-o'zini muvozanatlaydigan robot: 7 qadam

Video: Ikki g'ildirakli o'z-o'zini muvozanatlaydigan robot: 7 qadam

Video: Ikki g'ildirakli o'z-o'zini muvozanatlaydigan robot: 7 qadam
Video: Самаркандлик ам товба 2024, Noyabr
Anonim
Ikki g'ildirakli o'z-o'zini muvozanatlaydigan robot
Ikki g'ildirakli o'z-o'zini muvozanatlaydigan robot

Bu ko'rsatma o'z-o'zini muvozanatlaydigan robot uchun dizayn va qurilish jarayonidan o'tadi. Eslatib o'tmoqchimanki, o'z-o'zini muvozanatlaydigan robotlar yangi tushuncha emas va ular boshqalar tomonidan qurilgan va hujjatlashtirilgan. Men bu fursatdan foydalanib, siz bilan ushbu robot haqidagi sharhimni bo'lishmoqchiman.

O'z-o'zini muvozanatlaydigan robot nima?

O'z-o'zini muvozanatlaydigan robot-bu bort sensordan yig'ilgan inertial o'lchov ma'lumotlarini ishlatib, o'z pozitsiyasini doimiy ravishda to'g'rilab turish uchun ishlatadigan tizim.

Bu qanday ishlaydi?

Ko'rib chiqiladigan oddiy o'xshashlik - teskari mayatnik. Bu erda massa markazi burilish nuqtasidan yuqori. Ammo, bizning holatlarimizda, biz bitta aylanma o'qi, bizning holatimizda ikkita g'ildirakning aylanish o'qiga ega bo'lish orqali mayatnikni 1 darajali erkinlik bilan cheklaymiz. Har qanday buzilish robotning yiqilishiga olib kelishi mumkin, shuning uchun biz robotni muvozanatni faol saqlash uslubiga muhtojmiz. Bu erda bizning yopiq halqali algoritmimiz (PID tekshirgichi) ishga tushadi, bizning robotimiz qaysi tomonga tushayotganini bilib, biz tizim muvozanatini saqlash uchun dvigatellarimizning aylanish yo'nalishini sozlashimiz mumkin.

Yopiq pastadir algoritmi qanday ishlaydi?

Robotni muvozanatli saqlashning asosiy printsipi shundaki, agar robot oldinga yiqilsa, u o'zini tutib olish uchun robotning pastki qismini oldinga siljitadi. Xuddi shunday, agar robot orqaga yiqilsa, u o'zini tutish uchun robotning pastki qismini orqaga siljitish orqali o'rnini bosadi.

Shunday qilib, biz bu erda ikkita narsani qilishimiz kerak, birinchi navbatda, robot boshdan kechirayotgan moyillik burchagini (Roll) hisoblashimiz va natijada dvigatellarning aylanish yo'nalishini nazorat qilishimiz kerak.

Nishab burchagini qanday o'lchay olamiz?

Nishab burchagini o'lchash uchun biz inertial o'lchov birligidan foydalanamiz. Bu modullar akselerometr va giroskopni o'z ichiga oladi.

  • Akselerometr - bu to'g'ri tezlanishni o'lchaydigan elektromagnit qurilma, bu tananing bir lahzalik dam olish doirasidagi tezlashishi.
  • Gyroskop - bu burchak tezligini o'lchaydigan va qurilmaning yo'nalishini aniqlash uchun ishlatiladigan elektromexanik qurilma.

Biroq, bunday sensorlarni ishlatishda muammo shundaki:

  • Akselerometr juda shovqinli, lekin vaqt o'tishi bilan izchil bo'ladi, burchak to'satdan gorizontal harakatlar bilan o'zgaradi
  • Boshqa tomondan, giroskopning qiymati vaqt o'tishi bilan o'zgaradi, lekin dastlab bu aniq

Buning uchun men filtrni qo'ymoqchi emasman, chunki bortli raqamli harakatlarni qayta ishlash (DMP). Boshqalar qo'shimcha signalni olish uchun qo'shimcha filtrdan foydalangan, siz xohlagan usulni tanlashingiz mumkin. Robot har qanday dastur bilan muvozanatlashadi.

Ta'minotlar

Qismlar:

  1. Arduino Pro Mini 3.3V 8, 8 MGts ATMEGA328 bilan
  2. FT232RL 3.3V 5.5V FTDI USB to TTL seriyali adapter moduli
  3. MPU-6050 bilan GY-521 moduli
  4. Bir juft N20 mikro tishli dvigatel 6V - 300 rpm
  5. L298N dvigatel uchun haydovchi
  6. LM2596S DC to DC tok konvertori
  7. Batareya (qayta zaryadlanuvchi 9,7 V li-ionli batareya to'plami)
  8. Batareya tasmasi
  9. Ikkita prototipli PCB elektron platalari
  10. Erkak va ayol sarlavhali pinlar o'tish simlari

Asboblar:

  1. Lehimlash temir va lehim
  2. Neylon olti burchakli ajratgich
  3. Aniq tornavida to'plami
  4. 3D printer

1 -qadam: qurilish

Men 3D printerga ega bo'lganim uchun, men shassini 3D bosib chiqarishga qaror qildim va hamma narsani bir -biriga ulash uchun uzilishlardan foydalanardim.

Robot 4 qatlamdan iborat

  1. Pastki qavat dvigatellarni birlashtiradi va L298N dvigatel drayveri moduli uchun o'rnatish nuqtalariga ega
  2. Keyingi qatlamda Arduino pro mini prototipi va unga lehimlangan sarlavhalar joylashtirilgan
  3. Uchinchi qavat IMUni o'rnatadi
  4. Men "tampon qatlami" deb ataydigan yuqori qavat batareyani, pulni konvertorini va pulni almashtiradi

Mening asosiy dizayn printsipim hamma narsani modulli saqlash edi. Buning sababi shundaki, agar biron bir komponentda biron bir narsa noto'g'ri bo'lsa, men uni osonlik bilan almashtira olaman yoki agar menga boshqa loyiha uchun komponent kerak bo'lsa, men uni tizimni qayta ishlata olmasligimdan xavotirlanmasdan osongina olishim mumkin edi.

2 -qadam: simlarni ulash

Ulanish
Ulanish

Men Arduino pro mini-sarlavhasi pinlari bilan mos kelish uchun bir nechta ayol sarlavhali tugmachalarni lehim qildim. Shundan so'ng, men kirish/chiqish tizimiga kirishga ruxsat berish uchun taxtani erkaklar boshiga payvandladim. Qolgan komponentlar 3D bosilgan ramkaga o'rnatildi va o'tish simlari yordamida ulandi.

3 -qadam: Boshqaruv nazariyasi

Endi biz loyihaning asosiy qismiga o'tamiz. Robotni muvozanatli ushlab turish uchun biz robotni muvozanatli va barqaror ushlab turish uchun dvigatellarni to'g'ri yo'nalishda va to'g'ri tezlikda haydash uchun tegishli boshqaruv signalini ishlab chiqarishimiz kerak. Buning uchun biz PID kontroller deb nomlanuvchi mashhur boshqaruv halqasi algoritmidan foydalanamiz. Qisqartma shuni ko'rsatadiki, bu boshqaruvchining uchta atamasi bor, bular proportsional, integral va lotin atamalar. Ularning har biriga tizimga ta'sirini aniqlaydigan koeffitsientlar qo'shiladi. Ko'pincha boshqaruvchini amalga oshirishning eng ko'p vaqt talab qiladigan qismi-har bir noyob tizim uchun eng maqbul javobni olish uchun daromadlarni sozlash.

  • Proportional atama natijani berish uchun xatoni to'g'ridan -to'g'ri ko'paytiradi, shuning uchun xato qanchalik katta bo'lsa, javob shunchalik katta bo'ladi
  • Integral atama barqaror xatoni kamaytirish uchun xatoning to'planishiga asoslanib javob beradi. Tizim muvozanatsiz bo'lsa, motorlar tez javob beradi
  • Tug'ma atama-bu kelajakdagi javobni bashorat qilishda ishlatiladigan xatolarning hosilasi va shu bilan u barqaror holatning haddan tashqari otilishi tufayli tebranishni kamaytiradi.

Ushbu algoritmning asosiy printsipi - bu egilish burchagini doimiy ravishda hisoblash, bu kerakli pozitsiya va hozirgi pozitsiya o'rtasidagi farq, bu xato deb nomlanadi. Keyin u bu xato qiymatlarini ishlatadi va dvigatellarga yuboriladigan nazorat signallari bo'lgan chiqish uchun proportsional, integral va lotin javoblarining yig'indisini hisoblab chiqadi. Natijada, agar xato katta bo'lsa, dvigatellarga yuborilgan nazorat signallari muvozanatli holatga kelish uchun motorlarni yuqori tezlikda aylantiradi. Xuddi shunday, agar xato kichik bo'lsa, nazorat signallari robotni muvozanatni saqlash uchun motorlarni past tezlikda aylantiradi.

4 -qadam: MPU 6050 dan foydalanish

MPU6050 kutubxonasi

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

Hamma sensorlar bir -birining aniq nusxalari emas. Natijada, agar siz ikkita MPU 6050 -ni sinab ko'rsangiz, akselerometr va giroskop uchun har xil qiymatlarni olishingiz mumkin. Bu burchak burchagining siljishini engish uchun biz foydalanadigan har bir sensorni nishonlashimiz kerak. Ushbu skriptni ishga tushirish:

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

Luis Rodenas tomonidan yozilgan, biz ofsetlarni olamiz. O'rnatish () tartibida ofset qiymatlarini aniqlash orqali ofset xatolarini bartaraf etish mumkin.

Raqamli harakat protsessoridan foydalanish

MPU6050 DMP (Raqamli harakat protsessori) ni o'z ichiga oladi.

DMP nima? Siz DMPni o'z harakat termoyadroviy algoritmlaridan foydalangan holda, mpu6050 bortidagi 3 o'qli giroskop va 3 o'qli akselerometrdan murakkab harakatni qayta ishlovchi bortli mikrokontroller deb o'ylashingiz mumkin. Aks holda Arduino bajaradigan ishlovni yuklash

Buni qanday ishlatish kerak? DMP-dan qanday foydalanishni tushunish uchun MPU6050 kutubxonasi bilan birga kelgan MPU6050_DMP6 eskizini ko'rib chiqing (Arduino IDE-da: Fayl-> Misol-> MPU6050-> MPU6050_DMP6). Bu, shuningdek, sensori ishlayotganini va simlarning to'g'riligini tekshirish uchun yaxshi imkoniyatdir

5 -qadam: kodlash

Men Arduino pro mini -ni dasturlash uchun Arduino IDE va FTDI interfeysidan foydalandim.

Asosiy kod sifatida MPU6050 kutubxonasi bilan ta'minlangan namunaviy eskizdan (MPU6050_DMP6) foydalanib, PID () va MotorDriver () funksiyalarini qo'shdim.

Kutubxonani qo'shing

  • MPU6050: MPU6050 sensoridan foydalanish uchun biz Jeff Rowbergdan I2C ishlab chiquvchilar kutubxonasini yuklab olishimiz va uni kompyuterdagi dastur fayllarida joylashgan Arduino "kutubxonalari" jildiga qo'shishimiz kerak bo'ladi.
  • Tel: bizga I2C qurilmalari bilan aloqa qilish uchun Wire kutubxonasi ham kerak.

Soxta kod

Kutubxonalarni o'z ichiga oladi:

  • Wire.h
  • MPU6050
  • I2Cdev.h

O'zgaruvchilar, doimiylar va ob'ektlarni ishga tushiring

Sozlash ()

  • Dvigatellarni boshqarish uchun pin rejimini o'rnating
  • LED holati uchun pin rejimini o'rnating
  • MPU6050 -ni ishga tushiring va ofset qiymatlarini o'rnating

PID ()

PID qiymatini hisoblang

MotorDriver (PID javobi)

Dvigatellarning tezligi va yo'nalishini boshqarish uchun PID qiymatidan foydalaning

Loop ()

  • DMP -dan ma'lumotlarni oling
  • MotorDriver () funktsiyalariga PID () ni chaqiring

6 -qadam: PIDni sozlash tartibi

Bu loyihaning eng zerikarli qismi va agar omadingiz kelmasa, biroz sabr -toqat talab etiladi. Mana, qadamlar:

  1. I va D termini 0 ga o'rnating
  2. Robotni ushlab turib, P ni shunday sozlang, shunda robot faqat muvozanat holatida tebrana boshlaydi
  3. P to'plami bilan, I balansini oshiring, shunda robot muvozanatdan chiqib ketganda tezroq tezlashadi. Agar men va men to'g'ri sozlangan bo'lsak, robot bir necha soniya davomida, bir oz tebranib, o'zini muvozanatlashi kerak.
  4. Nihoyat, D ni oshirib, tebranishni kamaytiring

Agar birinchi urinish qoniqarli natija bermasa, qadamlarni boshqa qiymat bilan takrorlang. Shuningdek, PID qiymatlarini keyinroq sozlash mumkin, bu esa ishlashni yanada oshiradi. Bu erdagi qiymatlar uskunaga bog'liq, agar siz juda katta yoki juda kichik PID qiymatlarini olsangiz ajablanmang.

7 -qadam: Xulosa

Mikroto'lqinli dvigatellar katta buzilishlarga sekinlik bilan javob berar edi va tizim juda yengil bo'lsa, mayatnikning kerakli effektini olish uchun inertiya etarli emas edi, shuning uchun agar robot oldinga egilsa, u faqat burchakka egilib, oldinga yugurardi. Nihoyat, 3D bosilgan g'ildiraklar yomon tanlov edi, chunki ular sirg'alishda davom etmoqda.

Yaxshilash bo'yicha takliflar:

  • Yuqori momentga ega bo'lgan tezroq motorlar, ya'ni shahar dvigatellari uchun kuchlanish darajasi qanchalik yuqori bo'lsa, moment ham shuncha yuqori bo'ladi
  • og'irroq batareyani oling yoki massani biroz yuqoriga ko'taring
  • Ko'proq tortishish uchun 3D bosilgan g'ildiraklarni rezina g'ildiraklar bilan almashtiring

Tavsiya: