Obsah:

Dvojkolesový samovyvažovací robot: 7 krokov
Dvojkolesový samovyvažovací robot: 7 krokov

Video: Dvojkolesový samovyvažovací robot: 7 krokov

Video: Dvojkolesový samovyvažovací robot: 7 krokov
Video: epic lego robot balance act #Shorts 2024, November
Anonim
Dvojkolesový samovyvažovací robot
Dvojkolesový samovyvažovací robot

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:

  1. Arduino Pro Mini 3,3 V 8 s 8 MHz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI modul sériového adaptéra USB na TTL
  3. Modul GY-521 s MPU-6050
  4. Dvojica mikro prevodových motorov N20 6 V - 300 ot / min
  5. Ovládač motora L298N
  6. LM2596S Buck prevodník DC na DC
  7. Batéria (nabíjateľná lítium-iónová batéria 9,7 V)
  8. Popruh na batériu
  9. Dve prototypy dosiek plošných spojov
  10. Prepojovacie vodiče kolíkových a mužských kolíkov

Náradie:

  1. Spájkovačka a spájkovačka
  2. Distančná podložka z nylonového šesťhranu
  3. Sada presných skrutkovačov
  4. 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

  1. Spodná vrstva spája motory a má montážne body pre modul ovládača motora L298N
  2. V ďalšej vrstve je umiestnená prototypová doska s Arduino pro mini a k nej pripájanými hlavičkami
  3. Tretia vrstva montuje IMU
  4. 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

Elektrické vedenie
Elektrické vedenie

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:

  1. Nastavte výrazy I a D na 0
  2. Držte robota a nastavte P tak, aby robot začal oscilovať v rovnovážnej polohe
  3. 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
  4. 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: