Sisukord:
- Tarvikud
- Samm: ehitamine
- 2. samm: juhtmestik
- 3. samm: juhtimisteooria
- Samm 4: MPU 6050 kasutamine
- Samm: kodeerimine
- 6. samm: PID -häälestusprotseduur
- 7. samm: järeldus
Video: Kaherattaline isetasakaalustav robot: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
See juhend juhendab isetasakaalustava roboti projekteerimise ja ehitamise protsessi. Märkusena tahan lihtsalt öelda, et isetasakaalustavad robotid ei ole uus kontseptsioon ning need on ehitatud ja dokumenteeritud teiste poolt. Tahan kasutada seda võimalust ja jagada teiega oma tõlgendust sellest robotist.
Mis on isetasakaalustav robot?
Isetasakaalustav robot on süsteem, mis kasutab pardasensorilt kogutud inertsiaalseid mõõtmisandmeid, et oma asendit pidevalt püsti hoida.
Kuidas see töötab?
Lihtne analoogia, mida kaaluda, on ümberpööratud pendel. Kus massi keskpunkt on pöördepunktist kõrgemal. Kuid meie puhul piirame pendlit 1 vabadusastmega, kuna meil on üks pöörlemistelg, meie puhul kahe ratta pöörlemistelg. Kuna igasugused häired põhjustavad roboti kukkumise, vajame meetodit, kuidas robot aktiivselt tasakaalus hoida. Siin tuleb mängu meie suletud ahela algoritm (PID-kontroller), teades, millises suunas meie robot langeb, saame reguleerida oma mootorite pöörlemissuunda, et süsteem oleks tasakaalus.
Kuidas suletud ahela algoritm töötab?
Roboti tasakaalus hoidmise põhiprintsiip on see, et kui robot kukub ettepoole, siis kompenseerib see seda, liigutades roboti põhja ettepoole, et end kätte saada ja seega vertikaalselt hoida. Samamoodi, kui robot kukub tahapoole, kompenseerib see seda, liigutades roboti põhja tahapoole, et end kätte saada.
Niisiis, siin peame tegema kahte asja, esiteks peame arvutama roboti kaldenurga (rulli) ja selle tulemusena peame kontrollima mootorite pöörlemissuunda.
Kuidas mõõta kaldenurka?
Kaldenurga mõõtmiseks kasutame inertsiaalset mõõteseadet. Need moodulid sisaldavad kiirendusmõõturit ja güroskoopi.
- Kiirendusmõõtur on elektromagnetiline seade, mis mõõdab õiget kiirendust, see on keha kiirendus hetkelises puhkeraamis.
- Güroskoop on elektromehaaniline seade, mis mõõdab nurkkiirust ja mida kasutatakse seadme orientatsiooni määramiseks.
Selliste andurite kasutamise probleem on aga järgmine:
- Kiirendusmõõtur on väga mürarikas, kuid aja jooksul ühtlane, nurk varieerub järskude horisontaalsete liikumiste korral
- Seevastu güroskoobi väärtus aja jooksul triivib, kuid esialgu on see üsna täpne
Selle juhendi jaoks ei kavatse ma filtrit rakendada, vaid ei kasuta sisseehitatud digitaalset liikumistöötlust (DMP). Teised on sujuva signaali saamiseks kasutanud täiendavat filtrit, saate valida mis tahes meetodi, mis teile meeldib. kuna robot tasakaalustab kummagi teostusega.
Tarvikud
Osad:
- Arduino Pro Mini 3.3V 8 ja 8 MHz ATMEGA328
- FT232RL 3.3V 5.5V FTDI USB to TTL jadaadapteri moodul
- GY-521 moodul koos MPU-6050-ga
- Paar N20 mikrokäigukastiga mootorit 6V - 300 p / min
- L298N mootorijuht
- LM2596S DC to DC buck converter
- Aku (laetav 9,7 V liitiumioonaku)
- Aku rihm
- Kaks trükkplaadi prototüüpi
- Isase ja naissoost päisepistikute hüppajajuhtmed
Tööriistad:
- Jootekolb ja jootekolb
- Nailon -kuusnurkne vahekaugus
- Täpse kruvikeeraja komplekt
- 3D printer
Samm: ehitamine
Kuna mul oli juurdepääs 3D -printerile, otsustasin šassii 3D -printida ja kasutada kõikide ühendamiseks väljalülitusi.
Robot koosneb 4 kihist
- Alumine kiht ühendab mootorid ja sellel on L298N mootori draiverimooduli kinnituskohad
- Järgmine kiht sisaldab prototüüpplaati koos Arduino pro mini ja selle külge joodetud päistega
- Kolmas kiht kinnitab IMU
- Ülemine kiht, mida ma nimetan „kaitseraua kihiks”, katab aku, buck -muunduri ja rahalüliti
Minu peamine disainipõhimõte oli hoida kõik modulaarsena. Selle põhjuseks oli asjaolu, et kui ühe komponendiga läks midagi valesti, saaksin selle hõlpsalt asendada või kui mul oleks vaja komponenti mõne muu projekti jaoks, saan selle hõlpsalt kätte võtta, muretsemata selle pärast, et ei saa süsteemi uuesti kasutada.
2. samm: juhtmestik
Jootsin mõned naissoost päisepinnad perf-tahvlile, et need sobiksid kokku Arduino pro mini päisepistikutega. Pärast seda jootsin tahvlile isased päised, et võimaldada juurdepääsu I/O -le. Ülejäänud komponendid paigaldati 3D -prinditud raamile ja ühendati hüppajajuhtmete abil.
3. samm: juhtimisteooria
Nüüd liigume projekti tuuma juurde. Roboti tasakaalus hoidmiseks peame genereerima sobiva juhtsignaali, et mootorid õiges suunas ja õigel kiirusel liikuda, et robot oleks tasakaalus ja stabiilne. Selleks kasutame populaarset juhtimisahela algoritmi, mida tuntakse PID -kontrollerina. Nagu akronüüm viitab, on sellel kontrolleril kolm terminit, need on proportsionaalsed, integraalsed ja tuletised. Igaühega kaasnevad koefitsiendid, mis määravad nende mõju süsteemile. Sageli on kontrolleri juurutamisel kõige aeganõudvam osa iga unikaalse süsteemi kasumi häälestamine, et saada kõige optimaalsem vastus.
- Proportsionaalne termin korrutab vea otseselt väljundi saamiseks, nii et mida suurem viga, seda suurem on vastus
- Integraaltermin tekitab vea kuhjumisel põhineva vastuse, et vähendada püsiseisundi viga. Mida kauem süsteem tasakaalust väljas on, seda kiiremini mootorid reageerivad
- Tuletisinstrument on vea tuletisinstrument, mida kasutatakse tulevase reageerimise ennustamiseks ja seejuures vähendab see püsiseisundi ületamisest tingitud võnkumist.
Selle algoritmi aluspõhimõte on kalde nurga pidev arvutamine, mis on soovitud positsiooni ja hetkeasendi vahe, seda nimetatakse veaks. Seejärel kasutab ta neid veaväärtusi ja arvutab väljundi saamiseks proportsionaalsete, integraalsete ja tuletiste vastuste summa, mis on mootoritele saadetavad juhtsignaalid. Selle tulemusena, kui viga on suur, pöörab mootoritele saadetud juhtsignaal mootoreid suurel kiirusel tasakaalustatud olekusse jõudmiseks. Samamoodi, kui viga on väike, pöörab juhtsignaal mootoreid väikese kiirusega, et robot oleks tasakaalus.
Samm 4: MPU 6050 kasutamine
MPU6050 raamatukogu
github.com/jrowberg/i2cdevlib/tree/master/…
Kõik nihked ei ole üksteise täpsed koopiad. Selle tulemusel, kui katsetate kahte MPU 6050, võite kiirendusmõõturi ja güroskoobi jaoks saada erinevad väärtused, kui need asetatakse samale pinnale. Selle pideva nurga nihke ületamiseks peame tähistama iga kasutatavat andurit. Selle skripti käitamine:
www.i2cdevlib.com/forums/topic/96-arduino-…
kirjutas Luis Rodenas, saame nihkeid. Nihke vead saab kõrvaldada, määrates seadistus () rutiinis nihke väärtused.
Digitaalse liikumisprotsessori kasutamine
MPU6050 sisaldab DMP -d (Digital Motion Processor).
Mis on DMP? Võite mõelda DMP-le kui pardal olevale mikrokontrollerile, mis töötleb keerukat liikumist 3-teljelisest güroskoobist ja 3-teljelisest kiirendusmõõturist mpu6050 pardal, kasutades oma liikumissulamisalgoritme. Töötluse mahalaadimine, mida muidu teeks Arduino
Kuidas seda kasutada? DMP kasutamise selgitamiseks vaadake MPU6050 raamatukoguga kaasas olevat näidisvisandit MPU6050_DMP6 (Arduino IDE-s: Fail-> Näide-> MPU6050-> MPU6050_DMP6). See on ka hea võimalus kontrollida, kas teie andur tegelikult töötab ja juhtmestik on õige
Samm: kodeerimine
Arduino pro mini programmeerimiseks kasutasin Arduino IDE -d ja FTDI liidest.
Kasutades baaskoodina MPU6050 raamatukoguga kaasas olevat näidisvisandit (MPU6050_DMP6), lisasin PID () ja MotorDriver () funktsioonid.
Lisage kogu
- MPU6050: MPU6050 anduri kasutamiseks peame Jeff Rowbergilt alla laadima I2C arendajateeki ja lisama selle Arduino kausta „teegid”, mis asub teie arvuti programmifailides.
- Traat: me vajame ka Wire raamatukogu, et saaksime suhelda I2C seadmetega.
Pseudo kood
Kaasa raamatukogud:
- Traat.h
- MPU6050
- I2Cdev.h
Initsialiseerida muutujad, konstandid ja objektid
Seadistamine ()
- Määrake mootorite juhtimiseks pin -režiim
- Määrake oleku LED -ile pin -režiim
- Vormindage MPU6050 ja määrake nihkeväärtused
PID ()
Arvutage PID väärtus
MotorDriver (PID -vastus)
Kasutage PID väärtust mootorite kiiruse ja suuna juhtimiseks
Silmus ()
- Hankige andmeid DMP -st
- Helistage PID () MotorDriver () funktsioonidele
6. samm: PID -häälestusprotseduur
See on projekti kõige tüütum osa ja nõuab natuke kannatust, kui teil väga ei vea. Siin on sammud:
- Määrake I ja D termin 0 -le
- Hoides robotit käes, reguleerige P nii, et robot hakkaks tasakaaluasendis võnkuma
- Kui P on seatud, suurendage I, et robot kiirendaks tasakaalust väljas olles kiiremini. Kui P ja I on korralikult häälestatud, peaks robot suutma vähemalt mõne sekundi jooksul tasakaalustada, mõningase võnkumisega
- Lõpuks suurendage D, vähendage võnkumist
Kui esimene katse ei anna rahuldavaid tulemusi, korrake samme erineva väärtusega P. Samuti pidage meeles, et saate PID väärtusi hiljem peenhäälestada, et veelgi suurendada jõudlust. Siin olevad väärtused sõltuvad riistvarast, ärge imestage, kui saate väga suured või väga väikesed PID väärtused.
7. samm: järeldus
Kasutatavad mikrokäigumootorid reageerisid suurtele häiretele aeglaselt ja kuna süsteem oli liiga kerge, ei olnud soovitud pendliefekti saavutamiseks piisavalt inertsi, nii et kui robot ettepoole kaldub, kaldub ta lihtsalt viltu ja liigub edasi. Lõpuks olid 3D -prinditud rattad halb valik, kuna need libisevad pidevalt.
Soovitused parandamiseks:
- Kiiremad suure pöördemomendiga mootorid, st alalisvoolumootorite puhul on kõrgem pinge, seda suurem pöördemoment
- hankige raskem aku või liigutage massi veidi kõrgemale
- Suurema haarduvuse saavutamiseks asendage 3D -prinditud rattad kummist ratastega
Soovitan:
Isetasakaalustav robot - PID -juhtimisalgoritm: 3 sammu
Isetasakaalustav robot - PID -juhtimisalgoritm: see projekt loodi, kuna olin huvitatud rohkem juhtimisalgoritmide tundmaõppimisest ja funktsionaalsete PID -ahelate tõhusast rakendamisest. Projekt on alles arendusfaasis, kuna Bluetooth -moodul on veel lisamata, mis
Isetasakaalustav robot Magicbitist: 6 sammu
Magicbiti isetasakaalustav robot: see õpetus näitab, kuidas teha Magicbit dev tahvli abil isetasakaalustav robot. Selles projektis, mis põhineb ESP32 -l, kasutame arendusplaadina magicbitit. Seetõttu saab selles projektis kasutada mis tahes ESP32 arendusplaati
HeadBot-isetasakaalustav robot STEM-i õppimiseks ja teavitamiseks: 7 sammu (piltidega)
HeadBot-isetasakaalustav robot STEM-i õppimiseks ja teavitamiseks: Headbot-kahe jala kõrgune isetasakaalustav robot-on ESIMENE konkurentsivõimelise keskkooli robootikameeskonna Lõuna-Eugene'i robootikameeskonna (SERT, FRC 2521) idee. Robootikavõistlus, Eugene, Oregon. See populaarne teavitusrobot muudab
Proyecto Laboratorio De Mecatrónica (kaherattaline tasakaalustusrobot): 6 sammu
Proyecto Laboratorio De Mecatrónica (kaherattaline tasakaalustusrobot): En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un " Kahe ratta tasakaalustusrobot " paso a paso y con explicación y concejos. Este es un system que consiste en que el robot no se debe caer, se debe de mantener en el
2 ratastega isetasakaalustav robot: 4 sammu
2 ratastega isetasakaalustav robot: minu tagasihoidliku arvamuse kohaselt ei ole te tõeline tegija, kui te ei ehita oma kaherattalist isetasakaalutavat robotit. :-) Niisiis, siin see on … ja mis kõige tähtsam, see töötab !!! See projekt tundub väga lihtne. Selle asemel nõuab see häid teadmisi