Obsah:
- Zásoby
- Krok 1: Konštrukcia
- Krok 2: Zapojenie
- Krok 3: Teória kontroly
- Krok 4: Použitie MPU 6050
- Krok 5: Kódovanie
- Krok 6: Postup ladenia PID
- Krok 7: Konklúzia
Video: Dvojkolesový samovyvažovací robot: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
Tento návod prejde procesom návrhu a výroby samovyvažovacieho robota. Ako poznámku chcem len povedať, že samovyvažovacie roboty nie sú novým konceptom a boli zostrojené a zdokumentované inými. Chcem využiť túto príležitosť a podeliť sa s vami o moju interpretáciu tohto robota.
Čo je to samovyvažovací robot?
Samovyvažovací robot je systém, ktorý používa zotrvačné údaje z merania zhromaždené z integrovaného senzora na nepretržitú úpravu polohy tak, aby bol vo vzpriamenej polohe.
Ako to funguje?
Jednoduchú analógiu, ktorú je potrebné zvážiť, je obrátené kyvadlo. Kde je ťažisko nad bodom otáčania. Avšak v našom prípade obmedzujeme kyvadlo na 1 stupeň voľnosti tým, že máme jednu os otáčania, v našom prípade os otáčania dvoch kolies. Pretože akýkoľvek druh rušenia spôsobí pád robota, potrebujeme spôsob, ako ho udržať v rovnováhe. Tu vstupuje do hry náš algoritmus s uzavretou slučkou (regulátor PID), ktorý vie, akým smerom náš robot klesá, môžeme prispôsobiť smer otáčania našich motorov, aby bol systém vyvážený.
Ako funguje algoritmus s uzavretou slučkou?
Základným princípom udržania robota v rovnováhe je, že ak robot padá dopredu, bude to kompenzovať posunutím spodnej časti robota dopredu, aby sa zachytil, a teda zostal vo zvislej polohe. Rovnako tak, ak robot padá dozadu, bude to kompenzovať pohybom spodnej časti robota dozadu, aby sa zachytil.
Tu teda musíme urobiť dve veci, za prvé, musíme vypočítať uhol sklonu (Roll), s ktorým robot zažije, a v dôsledku toho musíme ovládať smer otáčania motorov.
Ako budeme merať uhol sklonu?
Na meranie uhla sklonu použijeme inerciálnu meraciu jednotku. Tieto moduly obsahujú akcelerometer a gyroskop.
- Akcelerometer je elektromagnetické zariadenie, ktoré meria správne zrýchlenie, tj. Zrýchlenie telesa v bezprostrednom kľude.
- Gyroskop je elektromechanické zariadenie, ktoré meria uhlovú rýchlosť a používa sa na určenie orientácie zariadenia.
Problém pri použití takýchto senzorov je však v tom, že:
- Akcelerometer je veľmi hlučný, ale v priebehu času je konzistentný, uhol sa mení pri náhlych horizontálnych pohyboch
- Hodnota gyroskopu sa na druhej strane bude časom uberať, ale na začiatku je pomerne presná
Pokiaľ ide o tento pokyn, nebudem implementovať filter, namiesto toho nebudem používať integrované digitálne pohybové spracovanie (DMP). Iní použili na získanie hladkého signálu doplnkový filter. Môžete si vybrať ľubovoľný spôsob. pretože robot vyvažuje s ktoroukoľvek implementáciou.
Zásoby
Diely:
- Arduino Pro Mini 3,3 V 8 s 8 MHz ATMEGA328
- FT232RL 3.3V 5.5V FTDI modul sériového adaptéra USB na TTL
- Modul GY-521 s MPU-6050
- Dvojica mikro prevodových motorov N20 6 V - 300 ot / min
- Ovládač motora L298N
- LM2596S Buck prevodník DC na DC
- Batéria (nabíjateľná lítium-iónová batéria 9,7 V)
- Popruh na batériu
- Dve prototypy dosiek plošných spojov
- Prepojovacie vodiče kolíkových a mužských kolíkov
Náradie:
- Spájkovačka a spájkovačka
- Distančná podložka z nylonového šesťhranu
- Sada presných skrutkovačov
- 3D tlačiareň
Krok 1: Konštrukcia
Keďže som mal prístup k 3D tlačiarni, rozhodol som sa podvozok 3D vytlačiť a pomocou spojovacích prvkov všetko prepojiť.
Robot sa skladá zo 4 vrstiev
- Spodná vrstva spája motory a má montážne body pre modul ovládača motora L298N
- V ďalšej vrstve je umiestnená prototypová doska s Arduino pro mini a k nej pripájanými hlavičkami
- Tretia vrstva montuje IMU
- Horná vrstva, ktorú nazývam „nárazníková vrstva“, obsahuje batériu, prevodník dolárov a menový prepínač
Mojím hlavným princípom návrhu bolo udržať všetko modulárne. Dôvodom bolo, že ak sa niečo pokazilo s jedným z komponentov, mohol som ho ľahko vymeniť alebo ak som potreboval komponent pre iný projekt, môžem ho ľahko prevziať bez obáv, že by som systém nemohol znova používať.
Krok 2: Zapojenie
Spájkoval som niekoľko pinov záhlavia žien na výkonovú dosku, aby zodpovedali pinom mini záhlavia Arduino pro. Potom som spájkoval kolíkové kolíky mužskej dosky a umožnil prístup k I/O. Ostatné komponenty boli namontované na 3D tlačený rám a prepojené pomocou prepojovacích drôtov.
Krok 3: Teória kontroly
Teraz prejdeme k jadru projektu. Aby bol robot vyvážený, musíme vygenerovať vhodný riadiaci signál na poháňanie motorov správnym smerom a správnou rýchlosťou, aby bol robot vyvážený a stabilný. Na tento účel použijeme populárny algoritmus riadiacej slučky známy ako PID regulátor. Ako skratka naznačuje, že tento radič má tri výrazy, jedná sa o proporcionálne, integrálne a odvodené termíny. Každý z nich je sprevádzaný koeficientmi, ktoré určujú ich vplyv na systém. Časovo najnáročnejšou súčasťou implementácie ovládača je často vyladenie ziskov pre každý jedinečný systém, aby sa získala najoptimálnejšia odozva.
- Proporcionálny výraz priamo vynásobí chybu a poskytne výstup, takže čím väčšia je chyba, tým väčšia je odpoveď
- Integrálny výraz generuje odozvu založenú na akumulácii chyby na zníženie chyby v ustálenom stave. Čím dlhšie je systém nevyvážený, tým rýchlejšie budú motory reagovať
- Derivačný termín je derivátom chyby, ktorá sa používa na predpovedanie budúcej reakcie, a tým znižuje osciláciu v dôsledku prekročenia ustáleného stavu.
Základným princípom tohto algoritmu je nepretržitý výpočet uhla sklonu, ktorý je rozdielom medzi požadovanou polohou a aktuálnou polohou, čo je známe ako chyba. Potom použije tieto chybové hodnoty a vypočíta súčet proporcionálnych, integrálnych a derivačných reakcií na získanie výstupu, ktorým sú riadiace signály odoslané do motorov. Výsledkom je, že ak je chyba veľká, riadiaci signál odoslaný do motorov bude otáčať motory vysokou rýchlosťou, aby sa dostali do vyváženého stavu. Rovnako tak, ak je chyba malá, riadiaci signál bude otáčať motory nízkou rýchlosťou, aby bol robot v rovnováhe.
Krok 4: Použitie MPU 6050
Knižnica MPU6050
github.com/jrowberg/i2cdevlib/tree/master/…
Kalibrácia ofsetov Nie všetky senzory sú navzájom presnými replikami. Výsledkom je, že ak testujete dva MPU 6050, môžete získať rôzne hodnoty pre akcelerometer a gyroskop, ak sú umiestnené stále na rovnakom povrchu. Aby sme prekonali tento offset s konštantným uhlom, musíme osláviť každý senzor, ktorý použijeme. Spustenie tohto skriptu:
www.i2cdevlib.com/forums/topic/96-arduino-…
napísal Luis Rodenas, dostaneme ofsety. Chyby posunu je možné odstrániť definovaním hodnôt odsadenia v rutine setup ().
Použitie digitálneho pohybového procesora
MPU6050 obsahuje DMP (digitálny pohybový procesor).
Čo je to DMP? DMP si môžete predstaviť ako vstavaný mikrokontrolér, ktorý spracováva komplexný pohyb z 3-osového gyroskopu a 3-osového akcelerometra na palube mpu6050 pomocou vlastných algoritmov fúzie pohybu. Zníženie záťaže spracovania, ktoré by inak vykonalo Arduino
Ako sa to používa? Ak chcete zistiť, ako používať DMP, prečítajte si ukážkový náčrt MPU6050_DMP6, ktorý je súčasťou knižnice MPU6050 (v Arduino IDE: Súbor-> Príklad-> MPU6050-> MPU6050_DMP6). Je to tiež dobrá príležitosť skontrolovať, či váš snímač skutočne funguje a či je zapojenie správne
Krok 5: Kódovanie
Na programovanie Arduino pro mini som použil Arduino IDE a rozhranie FTDI.
Pomocou príkladu náčrtu (MPU6050_DMP6), ktorý je súčasťou knižnice MPU6050, ako základného kódu som pridal funkcie PID () a MotorDriver ().
Pridajte knižnicu
- MPU6050: Na použitie senzora MPU6050 budeme musieť stiahnuť vývojársku knižnicu I2C od Jeffa Rowberga a pridať ju do priečinka „Knižnice“Arduino, ktorý sa nachádza v súboroch programu vo vašom počítači.
- Wire: Potrebujeme tiež knižnicu Wire, ktorá nám umožní komunikovať so zariadeniami I2C.
Pseudokód
Zahrnúť knižnice:
- Wire.h
- MPU6050
- I2Cdev.h
Inicializujte premenné, konštanty a objekty
Nastaviť ()
- Nastavte režim kolíka na ovládanie motorov
- Nastavte režim PIN pre stavovú LED
- Inicializujte MPU6050 a nastavte hodnoty ofsetu
PID ()
Vypočítajte hodnotu PID
MotorDriver (reakcia PID)
Na ovládanie rýchlosti a smeru motora použite hodnotu PID
Slučka ()
- Získajte údaje z DMP
- Zavolajte funkcie PID () a MotorDriver ()
Krok 6: Postup ladenia PID
Toto je najnáročnejšia časť projektu a vyžaduje si trocha trpezlivosti, pokiaľ nebudete mať veľké šťastie. Tu sú kroky:
- Nastavte výrazy I a D na 0
- Držte robota a nastavte P tak, aby robot začal oscilovať v rovnovážnej polohe
- Pri nastavení P zvýšte I tak, aby robot pri nerovnováhe akceleroval rýchlejšie. Keď sú P a ja správne naladení, robot by mal byť schopný vyvážiť sa aspoň na niekoľko sekúnd s určitým osciláciou
- Nakoniec zvýšením D znížte osciláciu
Ak prvý pokus neposkytne uspokojivé výsledky, zopakujte kroky s inou hodnotou P. Uvedomte si tiež, že hodnoty PID môžete neskôr doladiť, aby ste ešte viac zvýšili výkon. Hodnoty tu závisia od hardvéru, nenechajte sa prekvapiť, ak získate veľmi veľké alebo veľmi malé hodnoty PID.
Krok 7: Konklúzia
Použité mikroprevodové motory reagovali na veľké poruchy rušivo a vzhľadom na to, že systém bol príliš ľahký, nebola dostatočná zotrvačnosť na dosiahnutie požadovaného kyvadlového efektu, takže ak sa robot nakloní dopredu, nakloní sa a uhne dopredu. Nakoniec boli 3D tlačené kolesá zlou voľbou, pretože sa stále kĺzali.
Návrhy na zlepšenie:
- Rýchlejšie motory s vyšším krútiacim momentom, tj. Pre jednosmerné motory platí, že čím vyššie napätie, tým vyšší krútiaci moment
- získajte ťažšiu batériu alebo hmotu jednoducho posuňte o niečo vyššie
- Vymeňte 3D tlačené kolesá za gumové, aby ste získali väčšiu trakciu
Odporúča:
Samovyvažovací robot - algoritmus riadenia PID: 3 kroky
Self Balancing Robot - PID Control Algorithm: Tento projekt bol koncipovaný, pretože som mal záujem dozvedieť sa viac o riadiacich algoritmoch a o tom, ako efektívne implementovať funkčné slučky PID. Projekt je stále vo fáze vývoja, pretože ešte bude pridaný modul Bluetooth, ktorý bude
Samovyvažovací robot od Magicbit: 6 krokov
Samovyvažovací robot od Magicbit: Tento tutoriál ukazuje, ako vytvoriť samovyvažovacieho robota pomocou vývojovej dosky Magicbit. V tomto projekte používame magicbit ako vývojovú dosku, ktorá je založená na ESP32. V tomto projekte je preto možné použiť akúkoľvek vývojovú dosku ESP32
Ako vytvoriť diaľkovo ovládaný 3D tlačený samovyvažovací robot: 9 krokov (s obrázkami)
Ako vytvoriť diaľkovo ovládaný 3D tlačený samovyvažovací robot: Toto je vývoj predchádzajúcej verzie B-robota. 100% OTVORENÝ ZDROJ / robot Arduino. KÓD, 3D diely a elektronika sú otvorené, takže ho môžete upraviť alebo vytvoriť obrovskú verziu robota. Ak máte pochybnosti, nápady alebo potrebujete pomoc, urobte
Samovyvažovací robot pomocou algoritmu PID (STM MC): 9 krokov
Samovyvažovací robot využívajúci algoritmus PID (STM MC): V poslednom čase sa vykonalo veľa práce na vlastnom vyvažovaní objektov. Koncept vlastného vyvažovania sa začal vyvážením obráteného kyvadla. Tento koncept sa rozšíril aj na dizajn lietadiel. V tomto projekte sme navrhli malý režim
Samovyvažovací robot: 6 krokov (s obrázkami)
Samovyvažovací robot: V tomto návode vám ukážeme, ako postaviť samovyvažovací robot, ktorý sme vyrobili ako školský projekt. Je založený na niektorých ďalších robotoch, ako je nBot a ďalší Instructable. Robota je možné ovládať zo smartfónu s Androidom