INHOUDSOPGAWE:
- Voorrade
- Stap 1: Konstruksie
- Stap 2: Bedrading
- Stap 3: Beheerteorie
- Stap 4: Gebruik MPU 6050
- Stap 5: Kodering
- Stap 6: Prosedure vir afstemming van PID
- Stap 7: Afsluiting
Video: Twee-wiel self-balanserende robot: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Hierdie instruksies gaan deur die ontwerp- en bouproses vir 'n selfbalanserende robot. As 'n nota wil ek net sê dat selfbalanserende robotte nie 'n nuwe konsep is nie en dat dit deur ander gebou en gedokumenteer is. Ek wil hierdie geleentheid gebruik om my interpretasie van hierdie robot met u te deel.
Wat is 'n selfbalanserende robot?
'N Selfbalanserende robot is 'n stelsel wat traagmeetdata gebruik, wat van 'n ingeboude sensor ingesamel is, om sy posisie deurlopend aan te pas om regop te bly.
Hoe werk dit?
'N Eenvoudige analogie om te oorweeg, is 'n omgekeerde slinger. Waar die massamiddelpunt bo die spilpunt is. In ons geval beperk ons egter die slinger tot 1 vryheidsgraad deur een rotasie -as te hê, in ons geval die rotasie -as van die twee wiele. Aangesien enige versteuring die robot laat val, het ons 'n metode nodig om die robot aktief in balans te hou. Dit is waar ons geslote lus-algoritme (PID-kontroleerder) ter sprake kom, omdat ons weet in watter rigting ons robot val, ons die draairigting van ons motors kan aanpas om die stelsel gebalanseerd te hou.
Hoe werk die geslote lus-algoritme?
Die basiese beginsel om die robot in balans te hou, is dat as die robot vorentoe val, dit vergoed word deur die onderkant van die robot vorentoe te beweeg om homself te vang en dus vertikaal te bly. Net so, as die robot agteruit val, sal dit vergoed word deur die onderkant van die robot agteruit te beweeg om homself te vang.
Dus, ons moet hier twee dinge doen, eerstens moet ons die hellingshoek (rol) wat die robot ondervind, bereken, en gevolglik moet ons die draairigting van die motors beheer.
Hoe sal ons die hellingshoek meet?
Om die hellingshoek te meet, gebruik ons 'n traagheidseenheid. Hierdie modules bevat 'n versnellingsmeter en 'n gyroscoop.
- Die versnellingsmeter is 'n elektromagnetiese toestel wat die korrekte versnelling meet, dit is die versnelling van 'n liggaam in 'n oombliklike rusraamwerk.
- 'N Gyroscoop is 'n elektromeganiese toestel wat hoeksnelheid meet en word gebruik om die oriëntasie van die toestel te bepaal.
Die probleem met die gebruik van sulke sensors is egter dat:
- Die versnellingsmeter is baie raserig, maar is konsekwent oor tyd; die hoek wissel met skielike horisontale bewegings
- Die gyroscoopwaarde, aan die ander kant, sal mettertyd daal, maar aanvanklik is dit redelik akkuraat
Vir hierdie instruksies gaan ek nie 'n filter implementeer nie, maar ek gebruik die ingeboude Digital Motion Processing (DMP). Ander het 'n aanvullende filter gebruik om 'n gladde sein te kry; u kan die metode kies wat u wil. die robot balanseer met die implementering daarvan.
Voorrade
Dele:
- Arduino Pro Mini 3.3V 8 met 'n 8 Mhz ATMEGA328
- FT232RL 3.3V 5.5V FTDI USB na TTL seriële adapter module
- GY-521-module met MPU-6050
- 'N Paar N20 -mikrotandmotor 6V - 300 rpm
- L298N motorbestuurder
- LM2596S DC na DC boksomskakelaar
- Battery (herlaaibare 9.7V Li-ion battery pack)
- Battery band
- Twee prototipe PCB -stroombane
- Manlike en vroulike kopstukke se drade
Gereedskap:
- Soldeerbout en soldeer
- Nylon hex -afstandhouer
- Presisie skroewedraaier stel
- 3D -drukker
Stap 1: Konstruksie
Aangesien ek toegang tot 'n 3D -drukker gehad het, het ek besluit om die onderstel in 3D te druk en afwykings te gebruik om alles met mekaar te verbind.
Die robot bestaan uit 4 lae
- Die onderste laag verbind die motors en het bevestigingspunte vir die L298N -motorbestuurdermodule
- Die volgende laag bevat die prototipe -bord met die Arduino pro mini en koppe daaraan gesoldeer
- Die derde laag monteer die IMU
- Die boonste laag, wat ek die 'bufferlaag' noem, hou die battery, die boksomskakelaar en 'n geldelike skakelaar in
My belangrikste ontwerpbeginsel was om alles modulêr te hou. Die rede hiervoor was dat as daar iets verkeerd gaan met een van die komponente, ek dit maklik kan vervang, of as ek 'n komponent vir 'n ander projek nodig het, kan ek dit maklik neem sonder om bekommerd te wees dat ek nie weer die stelsel kan gebruik nie.
Stap 2: Bedrading
Ek het 'n paar vroulike kopstukke aan 'n perf-board gesoldeer om by die Arduino pro mini-kopstukpenne te pas. Hierna het ek 'n manlike kopstuk aan die bord vasgemaak om toegang tot die I/O te verkry. Die res van die komponente is op die 3D -gedrukte raam gemonteer en met springdrade verbind.
Stap 3: Beheerteorie
Nou gaan ons oor na die kern van die projek. Om die robot in balans te hou, moet ons 'n geskikte beheersignaal genereer om die motors in die regte rigting en op die regte spoed te dryf om die robot gebalanseerd en stabiel te hou. Om dit te doen, gebruik ons 'n gewilde kontrolelus -algoritme wat bekend staan as 'n PID -beheerder. Soos die akroniem aandui, is daar drie terme vir hierdie kontroleerder, dit is die proporsionele, integrale en afgeleide terme. Elkeen word vergesel van koëffisiënte wat hul invloed op die stelsel bepaal. Die mees tydrowende deel van die implementering van die kontroleerder is dikwels die afstemming van die winste vir elke unieke stelsel om die beste antwoord te kry.
- Die proporsionele term vermenigvuldig die fout direk om 'n uitset te gee, dus hoe groter die fout hoe groter is die reaksie
- Die integrale term genereer 'n antwoord gebaseer op 'n opeenhoping van die fout om die steady-state fout te verminder. Hoe langer die stelsel ongebalanseerd is, hoe vinniger reageer die motors
- Die afgeleide term is die afgeleide van die fout wat gebruik word om die toekomstige reaksie te voorspel, en sodoende verminder dit die ossillasie as gevolg van die oorskryding van die bestendige toestand.
Die basiese beginsel van hierdie algoritme is om die hellingshoek voortdurend te bereken, wat die verskil is tussen die gewenste posisie en die huidige posisie, dit staan bekend as die fout. Dit gebruik dan hierdie foutwaardes en bereken die som van die proporsionele, integrale en afgeleide reaksies om 'n uitset te kry, dit is die beheerseine wat na die motors gestuur word. As gevolg hiervan, as die fout groot is, sal die stuursein wat na die motors gestuur word, die motors teen hoë spoed draai om in 'n gebalanseerde toestand te kom. Net so, as die fout klein is, draai die beheersignaal die motors teen 'n lae spoed om die robot gebalanseerd te hou.
Stap 4: Gebruik MPU 6050
MPU6050 -biblioteek
github.com/jrowberg/i2cdevlib/tree/master/…
Nie alle sensors is presiese replika's van mekaar nie. As gevolg hiervan, as u twee MPU 6050 toets, kry u moontlik verskillende waardes vir die versnellingsmeter en die gyroscoop as dit op dieselfde oppervlak geplaas word. Om hierdie konstante hoekverskil te oorkom, moet ons elke sensor wat ons gebruik, vier. Hierdie script word uitgevoer:
www.i2cdevlib.com/forums/topic/96-arduino-…
geskryf deur Luis Rodenas, sal ons verreken. Die verrekeningsfoute kan uitgeskakel word deur die offsetwaardes in die opset () -roetine te definieer.
Gebruik die digitale bewegingsverwerker
Die MPU6050 bevat 'n DMP (Digital Motion Processor).
Wat is 'n DMP? U kan die DMP beskou as 'n ingeboude mikrobeheerder wat die komplekse beweging van die 3-as-gyroscoop en die 3-as-versnellingsmeter aan boord van die mpu6050 verwerk, met behulp van sy eie bewegingsfusie-algoritmes. Laai die verwerking af wat die Arduino andersins sou doen
Hoe om dit te gebruik? Om uit te vind hoe u die DMP kan gebruik, gaan deur die voorbeeldskets MPU6050_DMP6 wat by die MPU6050-biblioteek kom (in die Arduino IDE: File-> Voorbeeld-> MPU6050-> MPU6050_DMP6). Dit is ook 'n goeie geleentheid om te kontroleer of u sensor werklik werk en of die bedrading korrek is
Stap 5: Kodering
Ek het die Arduino IDE en 'n FTDI -koppelvlak gebruik om die Arduino pro mini te programmeer.
Met die voorbeeldskets (MPU6050_DMP6) wat saam met die MPU6050 -biblioteek as my basiskode verskyn, het ek 'n PID () en MotorDriver () funksie bygevoeg.
Voeg die biblioteek by
- MPU6050: Om die MPU6050 -sensor te gebruik, moet ons die I2C -ontwikkelaarsbiblioteek van Jeff Rowberg aflaai en dit by die Arduino -biblioteke "biblioteke" voeg, wat in die programlêers op u rekenaar gevind word.
- Wire: Ons benodig ook die Wire -biblioteek sodat ons met I2C -toestelle kan kommunikeer.
Pseudokode
Sluit biblioteke in:
- Draad.h
- MPU6050
- I2Cdev.h
Initialiseer veranderlikes, konstantes en voorwerpe
Stel op ()
- Stel penmodus in vir die bestuur van motors
- Stel penmodus vir die status -LED in
- Begin die MPU6050 en stel offsetwaardes
PID ()
Bereken die PID -waarde
MotorDriver (PID -reaksie)
Gebruik die PID -waarde om die snelheid en rigting van die motors te beheer
Lus ()
- Kry data van DMP
- Noem PID () 'n MotorDriver () funksie
Stap 6: Prosedure vir afstemming van PID
Dit is die verveligste deel van die projek en verg 'n bietjie geduld, tensy u baie geluk het. Hier is die stappe:
- Stel die term I en D op 0
- Hou die robot vas en pas P aan sodat die robot net oor die balansposisie begin ossilleer
- Met P -stel, verhoog I sodat die robot vinniger versnel as hy nie in balans is nie. As P en ek behoorlik ingestel is, behoort die robot ten minste 'n paar sekondes in staat te wees om self te balanseer, met 'n mate van ossillasie
- Laastens, verhoog D, verminder die ossillasie
As die eerste poging nie bevredigende resultate lewer nie, herhaal die stappe met 'n ander waarde van P. Let ook daarop dat u die PID-waardes daarna kan aanpas om die prestasie verder te verhoog. Die waardes hier is afhanklik van die hardeware, moenie verbaas wees as u baie groot of baie klein PID -waardes kry nie.
Stap 7: Afsluiting
Die mikro -ratmotors wat gebruik is, sou stadig reageer op groot versteurings, en aangesien die stelsel te lig was, was daar nie genoeg traagheid om die gewenste slinger -effek te kry nie, so as die robot vorentoe buig, sou hy net skuins leun en vorentoe jaag. Uiteindelik is 3D -gedrukte wiele 'n slegte keuse, aangesien dit steeds gly.
Voorstelle vir verbetering:
- Vinniger motors met 'n hoër wringkrag, dit wil sê vir GS -motors is die hoër spanning, hoe hoër die wringkrag
- kry 'n swaarder battery of skuif die massa net 'n bietjie hoër
- Vervang 3D -gedrukte wiele met rubberwiele om meer trekkrag te kry
Aanbeveel:
Twee maniere om 'n tekenprogram te maak: 10 stappe
Twee maniere om 'n teken -app te maak: ek weet dat hierdie teken -app slegs 'n skerm van 5 x 5 pixels het, sodat u regtig nie veel kan verdien nie, maar dit is steeds lekker
Tower Climb Helping Robot V1 - Twee -been, RF, BT -beheer met app: 22 stappe (met foto's)
Tower Climb Helping Robot V1 - Two Legged, RF, BT Control With App: As ek ooit akkedisse op mure sien, is ek van plan om 'n robot soos dit te maak. Dit is 'n langtermyn-idee; ek soek baie artikels na elektro-kleefmiddels en kyk of dit nie in staat was om dit te hou nie. Ek is nou eers van plan om dit met behulp van elektromagnet te maak om
Proyecto Laboratorio De Mecatrónica (robot met twee wiele): 6 stappe
Proyecto Laboratorio De Mecatrónica (tweewielbalansrobot): Een este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un " Two wheel balance robot " paso a paso y con explicación y concejos. Eerstens is daar 'n stelsel wat bestaan uit 'n robot, en dit is nie 'n manier om dit te doen nie, maar dit is ook 'n
Robot: twee maniere om selfoon te beheer deur Windows Phone.: 6 stappe (met foto's)
Robot: twee maniere mobiele beheer deur Windows Phone .: Lys: Arduino Uno L 293 (Bridge) HC SR-04 (Sonar Module) HC 05 (Bluetooth Module) Tg9 (Micro Servo) Motor met ratkas (twee) Baterryhouer (vir 6 AA) Houersdrade vir kontaklense (penne van man tot vrou) Kabelbinders warm lijm (plak
Wallace - self -outonome robot - deel 5 - Voeg IMU by: 9 stappe
Wallace - self -outonome robot - deel 5 - Voeg IMU by: ons gaan voort met Wallace. Die naam Wallace kom van 'n mengsel van " Wall-E ", en van 'n vorige projek (stemherkenning), en in die gebruik van die " espeak " nut, dit klink 'n bietjie Brits. En soos 'n valet of 'n butler. En t