Tartalomjegyzék:
- Kellékek
- 1. lépés: Építés
- 2. lépés: Kábelezés
- 3. lépés: Vezérléselmélet
- 4. lépés: Az MPU 6050 használata
- 5. lépés: Kódolás
- 6. lépés: PID hangolási eljárás
- 7. lépés: Összegzés
Videó: Kétkerekű önkiegyenlítő robot: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Ez az oktatóanyag végigmegy az önkiegyenlítő robot tervezési és gyártási folyamatán. Megjegyzésként csak annyit szeretnék mondani, hogy az önkiegyenlítő robotok nem új koncepció, és mások készítették és dokumentálták őket. Szeretném használni ezt a lehetőséget, hogy megosszam veletek a robotról adott értelmezésemet.
Mi az önkiegyenlítő robot?
Az önkiegyenlítő robot olyan rendszer, amely a fedélzeti érzékelőből gyűjtött inerciális mérési adatokat használja fel helyzetének folyamatos beállításához, hogy egyenes helyzetben maradjon.
Hogyan működik?
Egy egyszerű analógia, amelyet figyelembe kell venni, egy fordított inga. Ahol a tömegközéppont a forgáspont felett van. Esetünkben azonban az ingát 1 szabadságfokra korlátozzuk azzal, hogy van egy forgástengelyünk, esetünkben a két kerék forgástengelye. Mivel bármilyen zavar miatt a robot leesik, szükségünk van egy módszerre, amellyel aktívan tarthatjuk a robotot egyensúlyban. Itt jön szóba zárt hurkú algoritmusunk (PID-szabályozó), tudva, hogy robotunk melyik irányba esik, beállíthatjuk motorjaink forgásirányát a rendszer egyensúlyának megőrzése érdekében.
Hogyan működik a zárt hurkú algoritmus?
A robot kiegyensúlyozásának alapelve az, hogy ha a robot előre esik, akkor ezt kompenzálja azzal, hogy előre mozgatja a robot alját, hogy elkapja magát, és ezért függőleges maradjon. Hasonlóképpen, ha a robot hátrafelé esik, akkor ezt úgy kompenzálja, hogy hátrafelé mozgatja a robot alját, hogy elkapja magát.
Tehát itt két dolgot kell tennünk, először is ki kell számítanunk a robot által tapasztalt dőlésszöget (Roll), és ennek eredményeként szabályoznunk kell a motorok forgásirányát.
Hogyan mérjük a dőlésszöget?
A dőlésszög méréséhez inerciális mérőegységet fogunk használni. Ezek a modulok gyorsulásmérőt és giroszkópot tartalmaznak.
- A gyorsulásmérő egy elektromágneses eszköz, amely a megfelelő gyorsulást méri, ez a test gyorsulása azonnali pihenőkeretben.
- A giroszkóp egy elektromechanikus eszköz, amely a szögsebességet méri, és az eszköz tájolásának meghatározására szolgál.
Az ilyen érzékelők használatával azonban az a probléma, hogy:
- A gyorsulásmérő nagyon zajos, de idővel állandó, a szög hirtelen vízszintes mozgásoktól függően változik
- A giroszkóp értéke viszont idővel eltolódik, de kezdetben meglehetősen pontos
Ebből a célból nem fogok szűrőt alkalmazni, hanem a fedélzeti digitális mozgásfeldolgozást (DMP). Mások kiegészítő szűrőt használtak a zökkenőmentes jelzéshez, tetszés szerint választhat. ahogy a robot bármely megvalósítással egyensúlyoz.
Kellékek
Alkatrészek:
- Arduino Pro Mini 3.3V 8 és 8 MHz -es ATMEGA328
- FT232RL 3.3V 5.5V FTDI USB - TTL soros adapter modul
- GY-521 modul MPU-6050-el
- Egy pár N20 mikro hajtóműves motor 6V - 300 fordulat / perc
- L298N motor meghajtó
- LM2596S DC -DC buck konverter
- Akkumulátor (újratölthető 9.7V Li-ion akkumulátor)
- Akkumulátor heveder
- Két prototípus -nyomtatott áramköri lap
- Férfi és női fejléc csapok jumper vezetékek
Eszközök:
- Forrasztópáka és forrasztópáka
- Nylon hexa távtartó
- Precíziós csavarhúzó készlet
- 3d nyomtató
1. lépés: Építés
Mivel hozzáférhettem egy 3D -s nyomtatóhoz, úgy döntöttem, hogy 3D -n kinyomtatom a házat, és a standoff -ok segítségével mindent összekapcsolok.
A robot 4 rétegből áll
- Az alsó réteg összeköti a motorokat, és rögzítési pontokat tartalmaz az L298N motorvezérlő modulhoz
- A következő réteg a prototípus táblát tartalmazza az Arduino pro mini -vel és a hozzá forrasztott fejlécekkel
- A harmadik réteg rögzíti az IMU -t
- A felső réteg, amelyet „lökhárító rétegnek” nevezek, eltakarja az akkumulátort, a bak konverterét és a monetáris kapcsolót
A fő tervezési elvem az volt, hogy mindent modulárisan tartsak. Ennek oka az volt, hogy ha valami baj történt az egyik komponenssel, könnyen lecserélhetem, vagy ha szükségem van egy komponensre egy másik projekthez, akkor könnyen átvehetem, anélkül, hogy aggódnom kellene, hogy nem használhatom újra a rendszert.
2. lépés: Kábelezés
Forrasztottam néhány női fejlécet egy perf-táblára, hogy illeszkedjenek az Arduino pro mini fejlécekhez. Ezt követően forrasztottam a fejléc csapjait a táblára, hogy hozzáférést biztosítsunk az I/O -hoz. A többi komponenst a 3D nyomtatott keretre szerelték fel, és áthidaló vezetékek segítségével kötötték össze.
3. lépés: Vezérléselmélet
Most áttérünk a projekt lényegére. Annak érdekében, hogy a robot kiegyensúlyozott legyen, megfelelő vezérlőjelet kell generálnunk, hogy a motorokat a megfelelő irányba és megfelelő sebességgel vezessük, hogy a robot kiegyensúlyozott és stabil maradjon. Ehhez egy népszerű vezérlőhurok -algoritmust fogunk használni, amelyet PID -szabályozónak neveznek. Ahogy a rövidítés azt sugallja, ennek a vezérlőnek három kifejezése van, ezek az arányos, az integrál és a származtatott kifejezések. Mindegyik együtthatót tartalmaz, amelyek meghatározzák a rendszerre gyakorolt hatásukat. Gyakran a vezérlő megvalósításának legidőigényesebb része az egyes egyedi rendszerek nyereségének beállítása a legoptimálisabb válasz elérése érdekében.
- Az arányos tag közvetlenül megszorozza a hibát, hogy kimenetet kapjon, tehát minél nagyobb a hiba, annál nagyobb a válasz
- Az integrál kifejezés a hiba halmozása alapján választ generál az egyensúlyi hiba csökkentése érdekében. Minél tovább van kiegyensúlyozatlan a rendszer, annál gyorsabban reagálnak a motorok
- A derivált kifejezés a hiba származéka, amelyet a jövőbeli válasz előrejelzésére használnak, és ezzel csökkenti az egyensúlyi állapot túllépése miatti rezgést.
Ennek az algoritmusnak az alapelve, hogy folyamatosan kell számítani a dőlésszöget, amely a kívánt pozíció és az aktuális pozíció közötti különbség, ezt hibának nevezzük. Ezután ezeket a hibaértékeket használja, és kiszámítja az arányos, integrál és derivált válaszok összegét, hogy kimenetet kapjon, amely a motoroknak küldött vezérlőjelek. Ennek eredményeként, ha a hiba nagy, a motorokhoz küldött vezérlőjel nagy sebességgel forgatja a motorokat, hogy kiegyensúlyozott állapotba kerüljön. Hasonlóképpen, ha a hiba kicsi, a vezérlőjel a motorokat alacsony sebességgel forgatja, hogy a robot egyensúlyban maradjon.
4. lépés: Az MPU 6050 használata
MPU6050 Könyvtár
github.com/jrowberg/i2cdevlib/tree/master/…
Nem minden érzékelő pontos másolata egymásnak. Ennek eredményeként, ha két MPU 6050 -et tesztel, akkor eltérő értékeket kaphat a gyorsulásmérő és a giroszkóp számára, ha ugyanazon a felületen helyezi el őket. Ennek az állandó szögeltolásnak a kiküszöbölése érdekében minden egyes érzékelőt meg kell ünnepelnünk. A szkript futtatása:
www.i2cdevlib.com/forums/topic/96-arduino-…
írta Luis Rodenas, kapunk ellentételezéseket. Az eltolási hibák kiküszöbölhetők az eltolási értékek meghatározásával a setup () rutinban.
A digitális mozgásprocesszor használata
Az MPU6050 DMP -t (Digital Motion Processor) tartalmaz.
Mi az a DMP? Úgy gondolhat a DMP-re, mint egy fedélzeti mikrokontrollerre, amely a 3 tengelyes giroszkóp és a 3 tengelyes gyorsulásmérő összetett mozgását dolgozza fel az mpu6050 fedélzetén, saját mozgásfúziós algoritmusai segítségével. A feldolgozás lerakása, amelyet egyébként az Arduino végezne
Hogyan kell használni? A DMP használatának megértéséhez nézze át az MPU6050_DMP6 példavázlatát, amely az MPU6050 könyvtárhoz tartozik (az Arduino IDE-ben: Fájl-> Példa-> MPU6050-> MPU6050_DMP6). Ez egy jó lehetőség arra is, hogy ellenőrizze, hogy az érzékelő valóban működik -e, és a kábelezés megfelelő -e
5. lépés: Kódolás
Az Arduino IDE -t és egy FTDI interfészt használtam az Arduino pro mini programozásához.
Az MPU6050 könyvtárhoz mellékelt példavázlat (MPU6050_DMP6) segítségével alapkódként PID () és MotorDriver () függvényeket adtam hozzá.
Adja hozzá a könyvtárat
- MPU6050: Az MPU6050 érzékelő használatához le kell töltenünk az I2C fejlesztői könyvtárat Jeff Rowbergtől, és hozzá kell adnunk a számítógép programfájljaiban található Arduino „könyvtárak” mappához.
- Vezeték: Szükségünk van a Wire könyvtárra is, hogy kommunikálni tudjunk az I2C eszközökkel.
Álkód
Könyvtárak beillesztése:
- Drót.h
- MPU6050
- I2Cdev.h
Változók, állandók és objektumok inicializálása
Beállít ()
- Állítsa be a tüskés üzemmódot a motorok vezérléséhez
- Állítsa be a pin módot az állapotjelző LED -hez
- Inicializálja az MPU6050 készüléket, és állítsa be az eltolási értékeket
PID ()
Számítsa ki a PID értéket
MotorDriver (PID válasz)
A PID értékkel szabályozhatja a motorok sebességét és irányát
Hurok ()
- Szerezzen adatokat a DMP -től
- Hívja a PID () MotorDriver () funkcióit
6. lépés: PID hangolási eljárás
Ez a projekt legunalmasabb része, és egy kis türelmet igényel, hacsak nem lesz szerencséje. Íme a lépések:
- Állítsa az I és D kifejezést 0 -ra
- A robotot fogva állítsa be a P -t, hogy a robot csak elkezdjen ingadozni a mérleghelyzet körül
- P beállítással növelje az I értéket, hogy a robot gyorsabban gyorsuljon, ha nincs egyensúlyban. Ha a P és én megfelelően hangolva vagyunk, a robotnak legalább néhány másodpercig képesnek kell lennie egyensúlyra, bizonyos lengésekkel
- Végül a D növelése csökkenti az oszcillációt
Ha az első kísérlet nem ad kielégítő eredményt, ismételje meg a lépéseket más P értékkel. Ne feledje, hogy a teljesítmény további növelése érdekében finomhangolhatja a PID értékeket. Az itt megadott értékek a hardvertől függenek, ne csodálkozzon, ha nagyon nagy vagy nagyon kicsi PID értékeket kap.
7. lépés: Összegzés
A használt mikro fogaskerék -motorok lassúak voltak a nagy zavarokra való reagáláshoz, és mivel a rendszer túl könnyű volt, nem volt elegendő tehetetlenség a kívánt ingahatás eléréséhez, így ha a robot előrehajol, csak szögben dől és előre száguld. Végül a 3D nyomtatott kerekek rossz választás, mivel folyamatosan csúsznak.
Javítási javaslatok:
- Gyorsabb motorok nagyobb nyomatékkal, azaz egyenáramú motorok esetén a nagyobb feszültség, annál nagyobb nyomaték
- szerezzen be egy nehezebb akkumulátort, vagy csak mozgassa a masszát egy kicsit magasabbra
- A nagyobb tapadás érdekében cserélje le a 3D nyomtatott kerekeket gumikra
Ajánlott:
Önkiegyenlítő robot - PID vezérlő algoritmus: 3 lépés
Önkiegyenlítő robot - PID vezérlő algoritmus: Ez a projekt azért jött létre, mert többet akartam megtudni a vezérlőalgoritmusokról és a funkcionális PID hurkok hatékony megvalósításáról. A projekt még fejlesztési fázisban van, mivel még nincs hozzá Bluetooth modul, amely
Önkiegyenlítő robot a Magicbit -től: 6 lépés
Önkiegyenlítő robot a Magicbit -ről: Ez az oktatóanyag bemutatja, hogyan lehet egyensúlyozó robotot készíteni a Magicbit dev tábla használatával. Ebben a projektben, amely az ESP32 -en alapul, fejlesztési táblaként a magicbit -et használjuk. Ezért bármilyen ESP32 fejlesztői kártya használható ebben a projektben
HeadBot-önkiegyenlítő robot a STEM tanuláshoz és ismeretterjesztéshez: 7 lépés (képekkel)
A HeadBot-egy önkiegyenlítő robot a STEM tanuláshoz és ismeretterjesztéshez: A Headbot-egy két láb magas, önkiegyenlítő robot-a South Eugene Robotics Team (SERT, FRC 2521), a versenyképes középiskolai robotika csapata, az ELSŐ ötlete. Robotika Verseny, Eugene, Oregon. Ez a népszerű ismeretterjesztő robot újra
Proyecto Laboratorio De Mecatrónica (kétkerekű Balance Robot): 6 lépés
Proyecto Laboratorio De Mecatrónica (kétkerekű mérlegrobot): En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un " Kétkerekű egyensúlyi robot " paso a paso y con explicación y concejos. Este es un sistema que következőkből állnak en que el robot no se Debe caer, se Debe de mantener en el
Távirányítású Arduino önkiegyenlítő robot létrehozása: B-robot EVO: 8 lépés
Távirányítású Arduino önkiegyenlítő robot létrehozása: B-robot EVO: ------------------------------------ -------------- UPDATE: ennek a robotnak van egy új és továbbfejlesztett változata: a B-robot EVO, új funkciókkal! ------------ -------------------------------------- Hogyan működik? A B-ROBOT EVO távolról ellenőrzés