Përmbajtje:

Roboti i vet balancimit me dy rrota: 7 hapa
Roboti i vet balancimit me dy rrota: 7 hapa

Video: Roboti i vet balancimit me dy rrota: 7 hapa

Video: Roboti i vet balancimit me dy rrota: 7 hapa
Video: ОЖИДАНИЕ или РЕАЛЬНОСТЬ! ИГРЫ в РЕАЛЬНОЙ ЖИЗНИ! Маленькие кошмары 2 в реальной жизни! 2024, Nëntor
Anonim
Roboti i vet balancimit me dy rrota
Roboti i vet balancimit me dy rrota

Ky udhëzues do të kalojë nëpër procesin e projektimit dhe ndërtimit për një robot vetë-balancues. Si shënim, unë thjesht dua të them se robotët vetë-balancues nuk janë një koncept i ri dhe ato janë ndërtuar dhe dokumentuar nga të tjerët. Dua ta shfrytëzoj këtë mundësi për të ndarë me ju interpretimin tim për këtë robot.

Çfarë është një robot vetë-balancues?

Një robot vetë-balancues është një sistem që përdor të dhëna matëse inerciale, të mbledhura nga një sensor në bord, për të rregulluar vazhdimisht pozicionin e tij për të mbajtur drejt.

Si punon?

Një analogji e thjeshtë për t'u marrë parasysh është një lavjerrës i përmbysur. Aty ku qendra e masës është mbi pikën e boshtit. Sidoqoftë, në rastin tonë, ne po kufizojmë lavjerrësin në 1 shkallë lirie duke pasur një bosht rrotullimi, në rastin tonë boshtin e rrotullimit të dy rrotave. Meqenëse çdo lloj shqetësimi do të shkaktojë rënien e robotit, ne kemi nevojë për një metodë për ta mbajtur robotin në mënyrë aktive të ekuilibruar. Këtu hyn në lojë algoritmi ynë me qark të mbyllur (kontrolluesi PID), duke ditur se në cilin drejtim po bie roboti ynë, ne mund të rregullojmë drejtimin e rrotullimit të motorëve tanë për ta mbajtur sistemin të balancuar.

Si funksionon algoritmi me qark të mbyllur?

Parimi bazë në mbajtjen e ekuilibruar të robotit është, nëse roboti bie përpara ai do të kompensojë duke lëvizur pjesën e poshtme të robotit përpara për të kapur veten dhe për këtë arsye të mbajë vertikale. Po kështu, nëse roboti po bie prapa do të kompensojë duke lëvizur pjesën e poshtme të robotit prapa për të kapur veten.

Pra, këtu duhet të bëjmë dy gjëra, së pari, duhet të llogarisim këndin e pjerrësisë (Roll) që po përjeton roboti dhe si rezultat, duhet të kontrollojmë drejtimin e rrotullimit të motorëve.

Si do ta masim këndin e pjerrësisë?

Për të matur këndin e pjerrësisë do të përdorim një Njësi Matëse Inerciale. Këto module përfshijnë një përshpejtues dhe xhiroskop.

  • Përshpejtuesi është një pajisje elektromagnetike që mat nxitimin e duhur, ky është nxitimi i një trupi në një kornizë pushimi të menjëhershëm.
  • Xhiroskopi është një pajisje elektromekanike që mat shpejtësinë këndore dhe përdoret për të përcaktuar orientimin e pajisjes.

Sidoqoftë, problemi me përdorimin e sensorëve të tillë është se:

  • Përshpejtuesi është shumë i zhurmshëm, por është i qëndrueshëm me kalimin e kohës, këndi ndryshon me lëvizjet e papritura horizontale
  • Vlera e xhiroskopit, nga ana tjetër, do të ndryshojë me kalimin e kohës, por fillimisht, është mjaft e saktë

Për këtë të udhëzueshme, unë nuk do të zbatoj një filtër në vend që të mos përdor përpunimin dixhital të lëvizjes në bord (DMP). Të tjerët kanë përdorur një filtër plotësues për të marrë një sinjal të qetë, ju mund të zgjidhni cilëndo metodë që ju pëlqen. ndërsa roboti balancon me secilin zbatim.

Furnizimet

Pjesët:

  1. Arduino Pro Mini 3.3V 8 me një ATMEGA328 8 Mhz
  2. Moduli i përshtatësit serik FT232RL 3.3V 5.5V FTDI USB në TTL
  3. Moduli GY-521 me MPU-6050
  4. Një palë motor N20 mikro ingranazhesh 6V - 300rpm
  5. Drejtuesi i motorit L298N
  6. Konvertuesi LM2596S DC në DC
  7. Bateria (Paketë baterie 9.7V Li-ion e rimbushshme)
  8. Rrip baterie
  9. Dy prototipe të bordeve të qarkut PCB
  10. Meshkujt dhe femrat me kokë lidhin telat e kërcyesit

Mjetet:

  1. Saldim dhe saldim
  2. Ngecje me ndarës najloni gjashtëkëndësh
  3. Set kaçavidash preciz
  4. Printer 3D

Hapi 1: Ndërtimi

Meqenëse kisha qasje në një printer 3D, vendosa të printoja 3D shasinë dhe të përdorja pengesat për të lidhur gjithçka së bashku.

Roboti përbëhet nga 4 shtresa

  1. Shtresa e poshtme lidh motorët dhe ka pika montimi për modulin e drejtuesit të motorit L298N
  2. Shtresa tjetër strehon prototipin e bordit me Arduino pro mini dhe tituj të ngjitur në të
  3. Shtresa e tretë monton IMU
  4. Shtresa e sipërme, të cilën unë e quaj "shtresa e parakolpit" përmban baterinë, konvertuesin dhe një çelës monetar

Parimi im kryesor i projektimit ishte të mbaja gjithçka modulare. Arsyeja për këtë ishte nëse diçka nuk shkonte mirë me një nga komponentët, unë mund ta zëvendësoja me lehtësi ose nëse kisha nevojë për një komponent për një projekt tjetër, unë lehtë mund ta marr atë pa u shqetësuar se nuk do të jem në gjendje ta përdor sistemin përsëri.

Hapi 2: Instalimet elektrike

Instalime elektrike
Instalime elektrike

Unë bashkova disa pinta me kokë femrash në një tabelë perfekte për t'u përputhur me kunjat e kokës Arduino pro mini. Pas kësaj, unë bashkova kokën e kokës mashkullore për të lejuar hyrjen në hyrje/dalje. Pjesa tjetër e përbërësve u montuan në kornizën e printuar 3D dhe u lidhën duke përdorur tela bluzë.

Hapi 3: Teoria e Kontrollit

Tani kalojmë në thelbin e projektit. Për ta mbajtur robotin të ekuilibruar, ne duhet të gjenerojmë një sinjal të përshtatshëm kontrolli për të drejtuar motorët në drejtimin e duhur dhe me shpejtësinë e duhur për ta mbajtur robotin të balancuar dhe të qëndrueshëm. Për ta bërë këtë ne do të përdorim një algoritëm të popullarizuar të lakut të kontrollit të njohur si kontrollues PID. Siç sugjeron akronimi, ekzistojnë tre terma për këtë kontrollues, këto janë termat proporcionalë, integralë dhe derivativë. Secila prej të cilave shoqërohet me koeficientë që përcaktojnë ndikimin e tyre në sistem. Shpesh pjesa më e gjatë e zbatimit të kontrolluesit është akordimi i përfitimeve për secilin sistem unik për të marrë përgjigjen më optimale.

  • Termi proporcional shumëzon drejtpërdrejt gabimin për të dhënë një dalje, kështu që sa më i madh gabimi aq më i madh përgjigja
  • Termi integral gjeneron një përgjigje të bazuar në një akumulim të gabimit për të zvogëluar gabimin e gjendjes së qëndrueshme. Sa më gjatë që sistemi të jetë i çekuilibruar aq shpejt motorët do të përgjigjen
  • Termi derivativ është derivat i gabimit që përdoret për të parashikuar përgjigjen e ardhshme dhe duke e bërë këtë zvogëlon lëkundjen për shkak të tejkalimit të gjendjes së qëndrueshme.

Parimi themelor i këtij algoritmi është llogaritja e vazhdueshme e këndit të pjerrësisë i cili është ndryshimi midis pozicionit të dëshiruar dhe pozicionit aktual, ky njihet si gabim. Pastaj përdor këto vlera të gabimit dhe llogarit shumën e përgjigjeve proporcionale, integrale dhe derivative për të marrë një dalje, e cila është sinjalet e kontrollit që dërgohen tek motorët. Si rezultat, nëse gabimi është i madh, sinjali i kontrollit i dërguar motorëve do të rrotullojë motorët me shpejtësi të madhe për të arritur në një gjendje të balancuar. Po kështu, nëse gabimi është i vogël, sinjali i kontrollit do të rrotullojë motorët me shpejtësi të ulët për ta mbajtur robotin të balancuar.

Hapi 4: Përdorimi i MPU 6050

Biblioteka MPU6050

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

Kalibrimi i kompensimeve Jo të gjithë sensorët janë kopje të sakta të njëri -tjetrit. Si rezultat, nëse testoni dy MPU 6050 mund të merrni vlera të ndryshme për përshpejtuesin dhe xhiroskopin kur vendoseni ende në të njëjtën sipërfaqe. Për të kapërcyer këtë kompensim të vazhdueshëm të këndit, ne duhet të festojmë çdo sensor që përdorim. Drejtimi i këtij skripti:

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

shkruar nga Luis Rodenas, ne do të marrim kompensime. Gabimet e kompensuara mund të eliminohen duke përcaktuar vlerat e kompensuara në rutinën e konfigurimit ().

Përdorimi i procesorit dixhital të lëvizjes

MPU6050 përmban një DMP (përpunues dixhital të lëvizjes).

Çfarë është një DMP? Ju mund të mendoni për DMP si një mikrokontrollues në bord që përpunon lëvizjen komplekse nga xhiroskopi me 3 aks dhe akselerometri me 3 boshte në bordin e mpu6050, duke përdorur algoritmet e veta të shkrirjes së lëvizjes. Shkarkimi i përpunimit që përndryshe do të bëhej nga Arduino

Si ta përdorni? Për të kuptuar se si të përdorni DMP kaloni nëpër shembullin e skicës MPU6050_DMP6 që vjen me bibliotekën MPU6050 (në Arduino IDE: Skedari-> Shembull-> MPU6050-> MPU6050_DMP6). Kjo është gjithashtu një mundësi e mirë për të kontrolluar që sensori juaj në të vërtetë punon dhe instalimet elektrike janë të sakta

Hapi 5: Kodimi

Kam përdorur Arduino IDE dhe një ndërfaqe FTDI për të programuar Arduino pro mini.

Duke përdorur skicën shembull (MPU6050_DMP6) që vjen me bibliotekën MPU6050 si kodin tim bazë, shtova funksionet PID () dhe MotorDriver ().

Shtoni bibliotekën

  • MPU6050: Për të përdorur sensorin MPU6050 do të na duhet të shkarkojmë bibliotekën e zhvilluesve I2C nga Jeff Rowberg dhe ta shtojmë në dosjen "bibliotekat" Arduino të gjetur në skedarët e programit në kompjuterin tuaj.
  • Wire: Ne gjithashtu kemi nevojë për bibliotekën Wire për të na lejuar të komunikojmë me pajisjet I2C.

Pseudo Kodi

Përfshi Bibliotekat:

  • Tela.h
  • MPU6050
  • I2Cdev.h

Filloni variablat, konstantet dhe objektet

Konfigurimi ()

  • Vendosni modalitetin pin për kontrollin e motorëve
  • Vendosni modalitetin pin për LED të statusit
  • Filloni MPU6050 dhe vendosni vlerat e kompensuara

PID ()

Llogaritni vlerën e PID -it

MotorDriver (përgjigja PID)

Përdorni vlerën PID për të kontrolluar shpejtësinë dhe drejtimin e motorëve

Lak ()

  • Merrni të dhëna nga DMP
  • Thirrni funksionet PID () një MotorDriver ()

Hapi 6: Procedura e akordimit të PID -it

Kjo është pjesa më e lodhshme e projektit dhe kërkon pak durim nëse nuk keni fat. Këtu janë hapat:

  1. Vendosni termin I dhe D në 0
  2. Duke mbajtur robotin, rregulloni P në mënyrë që roboti sapo të fillojë të lëkundet në lidhje me pozicionin e ekuilibrit
  3. Me grupin P, rriteni I në mënyrë që roboti të përshpejtohet më shpejt kur është jashtë bilancit. Me P dhe I janë akorduar siç duhet, roboti duhet të jetë në gjendje të balancojë veten për të paktën disa sekonda, me disa lëkundje
  4. Së fundi, rritja e D zvogëlon lëkundjen

Nëse përpjekja e parë nuk jep rezultate të kënaqshme, përsëritni hapat me një vlerë të ndryshme të P. Gjithashtu kini parasysh se mund të rregulloni mirë vlerat e PID më pas, për të rritur më tej performancën. Vlerat këtu varen nga hardueri, mos u habitni nëse merrni vlera PID shumë të mëdha ose shumë të vogla.

Hapi 7: Konkluzioni

Motorët e mikro -ingranazheve të përdorur ishin të ngadalshëm për të reaguar ndaj shqetësimeve të mëdha dhe duke qenë se sistemi ishte shumë i lehtë nuk kishte mjaft inerci për të marrë efektin e dëshiruar të lavjerrësit, kështu që nëse roboti përkulet përpara ai vetëm do të përkulet në një kënd dhe do të garojë përpara. Së fundi, rrotat e printuara 3D ishin një zgjedhje e keqe pasi vazhdojnë të rrëshqasin.

Sugjerime për përmirësim:

  • Motorë më të shpejtë me çift rrotullues më të lartë, domethënë për motorët DC është vlerësimi i tensionit më i lartë çift rrotullues më i lartë
  • merrni një bateri më të rëndë ose thjesht lëvizeni masën pak më lart
  • Zëvendësoni rrotat e printuara 3D me gome për të pasur më shumë tërheqje

Recommended: