Satura rādītājs:

Divu riteņu pašbalansējošais robots: 7 soļi
Divu riteņu pašbalansējošais robots: 7 soļi

Video: Divu riteņu pašbalansējošais robots: 7 soļi

Video: Divu riteņu pašbalansējošais robots: 7 soļi
Video: ГИБЕЛЬ ТИТАНИКА. ЧТО ПРОИЗОШЛО НА САМОМ ДЕЛЕ? 2024, Decembris
Anonim
Divu riteņu pašbalansējošais robots
Divu riteņu pašbalansējošais robots

Šī pamācība iet cauri pašbalansējoša robota projektēšanas un būvēšanas procesam. Kā piezīmi es tikai gribu teikt, ka pašbalansējošie roboti nav jauna koncepcija un tos ir izveidojuši un dokumentējuši citi. Es vēlos izmantot šo iespēju, lai dalītos ar jums savā šī robota interpretācijā.

Kas ir pašbalansējošs robots?

Pašbalansējošs robots ir sistēma, kas izmanto inerciālos mērījumu datus, kas iegūti no borta sensora, lai nepārtraukti pielāgotu savu stāvokli, lai saglabātu vertikāli.

Kā tas darbojas?

Vienkārša analoģija, kas jāņem vērā, ir apgriezts svārsts. Kur masas centrs atrodas virs pagrieziena punkta. Tomēr mūsu gadījumā mēs ierobežojam svārstu līdz 1 brīvības pakāpei, jo mums ir viena rotācijas ass, mūsu gadījumā - divu riteņu rotācijas ass. Tā kā jebkāda veida traucējumi izraisīs robota krišanu, mums ir nepieciešama metode, kā robotu aktīvi noturēt līdzsvarā. Šeit sāk darboties mūsu slēgtā cikla algoritms (PID kontrolieris), zinot, kādā virzienā mūsu robots krīt, mēs varam pielāgot savu motoru griešanās virzienu, lai sistēma būtu līdzsvarota.

Kā darbojas slēgtā cikla algoritms?

Robota līdzsvara uzturēšanas pamatprincips ir tāds, ka, ja robots krīt uz priekšu, tas to kompensēs, pārvietojot robota dibenu uz priekšu, lai noķertu sevi un tādējādi saglabātu vertikāli. Tāpat, ja robots krīt atpakaļ, tas to kompensēs, pārvietojot robota dibenu atpakaļ, lai noķertu sevi.

Tātad, mums šeit ir jādara divas lietas, pirmkārt, mums ir jāaprēķina robota slīpuma leņķis (rullis), un tāpēc mums ir jākontrolē motoru griešanās virziens.

Kā mēs izmērīsim slīpuma leņķi?

Lai izmērītu slīpuma leņķi, mēs izmantosim inerciālu mērvienību. Šajos moduļos ir akselerometrs un žiroskops.

  • Akselerometrs ir elektromagnētiska ierīce, kas mēra pareizu paātrinājumu, tas ir ķermeņa paātrinājums momentānā atpūtas rāmī.
  • Žiroskops ir elektromehāniska ierīce, kas mēra leņķisko ātrumu un tiek izmantota, lai noteiktu ierīces orientāciju.

Tomēr šādu sensoru izmantošanas problēma ir šāda:

  • Akselerometrs ir ļoti trokšņains, bet laika gaitā nemainīgs, leņķis mainās ar pēkšņām horizontālām kustībām
  • No otras puses, žiroskopa vērtība laika gaitā mainīsies, taču sākotnēji tā ir diezgan precīza

Šajā pamācībā es netaisos ieviest filtru, tā vietā nelietojot borta digitālo kustību apstrādi (DMP). Citi ir izmantojuši papildu filtru, lai iegūtu vienmērīgu signālu, jūs varat izvēlēties jebkuru metodi, kas jums patīk. jo robots līdzsvarojas ar jebkuru ieviešanu.

Piegādes

Daļas:

  1. Arduino Pro Mini 3.3V 8 ar 8 Mhz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI USB uz TTL seriālā adaptera modulis
  3. GY-521 modulis ar MPU-6050
  4. Pāris N20 mikro pārnesumu motora 6V - 300 apgr./min
  5. L298N motora vadītājs
  6. LM2596S līdzstrāvas līdzstrāvas pārveidotājs
  7. Akumulators (uzlādējams 9.7V litija jonu akumulators)
  8. Akumulatora siksna
  9. Divi PCB shēmu plates prototipi
  10. Vīriešu un sieviešu galviņu tapas, džemperu vadi

Rīki:

  1. Lodāmurs un lodēt
  2. Neilona sešstūra starplikas izslēgšana
  3. Precīzs skrūvgriežu komplekts
  4. 3D printeris

1. solis: būvniecība

Tā kā man bija pieejams 3D printeris, es nolēmu izdrukāt šasiju 3D un izmantot pārtraukumus, lai visu savienotu kopā.

Robots sastāv no 4 slāņiem

  1. Apakšējais slānis savieno motorus, un tam ir stiprinājuma punkti L298N motora draivera modulim
  2. Nākamajā slānī atrodas prototipa dēlis ar Arduino pro mini un pie tā pielodēti galvenes
  3. Trešais slānis piestiprina IMU
  4. Augšējais slānis, ko es saucu par “bufera slāni”, iztukšo akumulatoru, buka pārveidotāju un naudas slēdzi

Mans galvenais dizaina princips bija saglabāt visu modulāru. Iemesls tam bija, ja kaut kas noiet greizi ar kādu no komponentiem, kuru es varētu viegli nomainīt, vai ja man ir nepieciešams komponents citam projektam, es varu to viegli paņemt, neuztraucoties par to, ka nevarēšu vēlreiz izmantot sistēmu.

2. solis: elektroinstalācija

Elektroinstalācija
Elektroinstalācija

Es lodēju dažas sieviešu galvenes pintes uz perf-board, lai tās atbilstu Arduino pro mini galvenes tapām. Pēc tam es lodēju vīrieša galvenes tapas, lai ļautu piekļūt I/O. Pārējās sastāvdaļas tika montētas uz 3D drukātā rāmja un savienotas, izmantojot džemperu vadus.

3. solis: kontroles teorija

Tagad mēs pārietam pie projekta būtības. Lai robots būtu līdzsvarā, mums jāģenerē atbilstošs vadības signāls, lai dzinēji darbotos pareizajā virzienā un ar pareizu ātrumu, lai robots būtu līdzsvarots un stabils. Lai to izdarītu, mēs izmantosim populāru vadības cilpas algoritmu, kas pazīstams kā PID kontrolieris. Kā norāda akronīms, šim kontrolierim ir trīs termini, tie ir proporcionālie, integrālie un atvasinātie termini. Katram no tiem ir pievienoti koeficienti, kas nosaka to ietekmi uz sistēmu. Bieži laikietilpīgākais kontroliera ieviešanas posms ir ieguvumu noregulēšana katrai unikālajai sistēmai, lai iegūtu optimālāko atbildi.

  • Proporcionālais termins tieši reizina kļūdu, lai iegūtu rezultātu, tāpēc jo lielāka kļūda, jo lielāka atbilde
  • Integrētais termins ģenerē atbildi, pamatojoties uz kļūdas uzkrāšanos, lai samazinātu līdzsvara stāvokļa kļūdu. Jo ilgāk sistēma ir nelīdzsvarota, jo ātrāk dzinēji reaģēs
  • Atvasinātais termins ir atvasinājums no kļūdas, ko izmanto, lai prognozētu turpmāko reakciju, un, to darot, tas samazina svārstības līdzsvara stāvokļa pārsniegšanas dēļ.

Šī algoritma pamatprincips ir nepārtraukti aprēķināt slīpuma leņķi, kas ir atšķirība starp vēlamo stāvokli un pašreizējo stāvokli, to sauc par kļūdu. Pēc tam tā izmanto šīs kļūdu vērtības un aprēķina proporcionālo, integrālo un atvasināto atbilžu summu, lai iegūtu izvadi, kas ir vadības signāli, kas tiek nosūtīti uz motoriem. Tā rezultātā, ja kļūda ir liela, uz motoriem nosūtītais vadības signāls rotēs motorus lielā ātrumā, lai sasniegtu līdzsvarotu stāvokli. Tāpat, ja kļūda ir maza, vadības signāls rotēs motorus ar mazu ātrumu, lai robots būtu līdzsvarā.

4. darbība: MPU 6050 izmantošana

MPU6050 bibliotēka

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

Ne visi sensori ir precīzas viens otra kopijas. Tā rezultātā, pārbaudot divus MPU 6050, akselerometra un žiroskopa vērtības var būt atšķirīgas, ja tās tiek novietotas uz vienas virsmas. Lai pārvarētu šo nemainīgo leņķa nobīdi, mums jāsvin katrs izmantotais sensors. Palaižot šo skriptu:

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

rakstījis Luiss Rodenas, mēs saņemsim kompensācijas. Nobīdes kļūdas var novērst, nosakot nobīdes vērtības iestatīšanas () rutīnā.

Digitālā kustības procesora izmantošana

MPU6050 ir DMP (digitālais kustības procesors).

Kas ir DMP? Jūs varat iedomāties DMP kā iebūvētu mikrokontrolleru, kas apstrādā sarežģīto kustību no 3 asu žiroskopa un 3 asu akselerometra uz mpu6050, izmantojot savus kustības saplūšanas algoritmus. Izkrauj apstrādi, ko citādi veiktu Arduino

Kā to izmantot? Lai saprastu, kā izmantot DMP, izlasiet parauga skici MPU6050_DMP6, kas pievienota MPU6050 bibliotēkai (Arduino IDE: Fails-> Piemērs-> MPU6050-> MPU6050_DMP6). Šī ir arī laba iespēja pārbaudīt, vai sensors darbojas un vai vadi ir pareizi

5. darbība: kodēšana

Arduino pro mini programmēšanai es izmantoju Arduino IDE un FTDI saskarni.

Izmantojot skices piemēru (MPU6050_DMP6), kas pievienots MPU6050 bibliotēkai, kā savu pamata kodu, es pievienoju PID () un MotorDriver () funkcijas.

Pievienojiet bibliotēku

  • MPU6050: Lai izmantotu MPU6050 sensoru, mums būs jālejupielādē I2C izstrādātāju bibliotēka no Džefa Rovberga un jāpievieno tā mapei Arduino “bibliotēkas”, kas atrodama jūsu datora programmas failos.
  • Vads: mums ir nepieciešama arī Wire bibliotēka, lai mēs varētu sazināties ar I2C ierīcēm.

Pseido kods

Iekļaut bibliotēkas:

  • Vads.h
  • MPU6050
  • I2Cdev.h

Inicializējiet mainīgos, konstantes un objektus

Uzstādīt ()

  • Iestatiet tapas režīmu motoru vadīšanai
  • Iestatiet statusa gaismas diodes tapas režīmu
  • Inicializējiet MPU6050 un iestatiet nobīdes vērtības

PID ()

Aprēķiniet PID vērtību

MotorDriver (PID atbilde)

Izmantojiet PID vērtību, lai kontrolētu motoru ātrumu un virzienu

Cilpa ()

  • Iegūstiet datus no DMP
  • Izsauciet PID () par MotorDriver () funkcijām

6. darbība: PID regulēšanas procedūra

Šī ir visgarlaicīgākā projekta daļa un prasa nelielu pacietību, ja vien jums nav ļoti paveicies. Tālāk ir norādītas darbības.

  1. Iestatiet I un D terminu uz 0
  2. Turot robotu, noregulējiet P, lai robots tikai sāk svārstīties par līdzsvara stāvokli
  3. Ja iestatīts P, palieliniet I, lai robots ātrāk paātrinātos, kad tas nav līdzsvarā. Ja P un I ir pareizi noregulēti, robotam vismaz dažas sekundes jāspēj līdzsvarot sevi ar nelielām svārstībām
  4. Visbeidzot, palielinot D, samaziniet svārstības

Ja pirmais mēģinājums nedod apmierinošus rezultātus, atkārtojiet darbības ar citu P. vērtību. Ņemiet vērā arī to, ka pēc tam varat precizēt PID vērtības, lai vēl vairāk palielinātu veiktspēju. Šeit norādītās vērtības ir atkarīgas no aparatūras, nebrīnieties, ja iegūstat ļoti lielas vai ļoti mazas PID vērtības.

7. solis: secinājums

Izmantotie mikro pārnesumu motori lēnām reaģēja uz lieliem traucējumiem, un, ņemot vērā, ka sistēma bija pārāk viegla, nebija pietiekami daudz inerces, lai iegūtu vēlamo svārsta efektu, tādēļ, ja robots noliecas uz priekšu, tas vienkārši noliecas leņķī un skrien uz priekšu. Visbeidzot, 3D drukātie riteņi bija slikta izvēle, jo tie turpina slīdēt.

Ieteikumi uzlabošanai:

  • Ātrāki motori ar lielāku griezes momentu, t.i., līdzstrāvas motoriem ir lielāks spriegums, jo lielāks griezes moments
  • iegūstiet smagāku akumulatoru vai vienkārši pārvietojiet masu nedaudz augstāk
  • Lai iegūtu lielāku saķeri, nomainiet 3D drukātos riteņus pret gumijas riteņiem

Ieteicams: