Tartalomjegyzék:

Kétkerekű önkiegyenlítő robot: 7 lépés
Kétkerekű önkiegyenlítő robot: 7 lépés

Videó: Kétkerekű önkiegyenlítő robot: 7 lépés

Videó: Kétkerekű önkiegyenlítő robot: 7 lépés
Videó: Dyna-Saw Robot Heists Chicken 2024, Július
Anonim
Kétkerekű önkiegyenlítő robot
Kétkerekű önkiegyenlítő robot

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:

  1. Arduino Pro Mini 3.3V 8 és 8 MHz -es ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI USB - TTL soros adapter modul
  3. GY-521 modul MPU-6050-el
  4. Egy pár N20 mikro hajtóműves motor 6V - 300 fordulat / perc
  5. L298N motor meghajtó
  6. LM2596S DC -DC buck konverter
  7. Akkumulátor (újratölthető 9.7V Li-ion akkumulátor)
  8. Akkumulátor heveder
  9. Két prototípus -nyomtatott áramköri lap
  10. Férfi és női fejléc csapok jumper vezetékek

Eszközök:

  1. Forrasztópáka és forrasztópáka
  2. Nylon hexa távtartó
  3. Precíziós csavarhúzó készlet
  4. 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

  1. Az alsó réteg összeköti a motorokat, és rögzítési pontokat tartalmaz az L298N motorvezérlő modulhoz
  2. A következő réteg a prototípus táblát tartalmazza az Arduino pro mini -vel és a hozzá forrasztott fejlécekkel
  3. A harmadik réteg rögzíti az IMU -t
  4. 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

Vezeték
Vezeték

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:

  1. Állítsa az I és D kifejezést 0 -ra
  2. A robotot fogva állítsa be a P -t, hogy a robot csak elkezdjen ingadozni a mérleghelyzet körül
  3. 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
  4. 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: