Obsah:

Dvoukolový samovyvažovací robot: 7 kroků
Dvoukolový samovyvažovací robot: 7 kroků

Video: Dvoukolový samovyvažovací robot: 7 kroků

Video: Dvoukolový samovyvažovací robot: 7 kroků
Video: epic lego robot balance act #Shorts 2024, Listopad
Anonim
Dvoukolový samovyvažovací robot
Dvoukolový samovyvažovací robot

Tento návod projde procesem návrhu a sestavení samovyvažovacího robota. Jako poznámku chci jen říci, že roboti s vlastním vyvažováním nejsou novým konceptem a byly postaveny a zdokumentovány ostatními. Chci využít této příležitosti a podělit se s vámi o svou interpretaci tohoto robota.

Co je to samovyvažovací robot?

Samovyvažovací robot je systém, který pomocí inerciálních naměřených dat shromážděných z palubního senzoru průběžně upravuje svou polohu tak, aby byl ve vzpřímené poloze.

Jak to funguje?

Jednoduchou analogií, kterou je třeba zvážit, je obrácené kyvadlo. Kde je těžiště nad bodem otáčení. V našem případě však omezujeme kyvadlo na 1 stupeň volnosti tím, že máme jednu osu otáčení, v našem případě osu otáčení dvou kol. Protože jakýkoli druh rušení způsobí pád robota, potřebujeme metodu aktivního udržování robota v rovnováze. Zde vstupuje do hry náš algoritmus s uzavřenou smyčkou (PID regulátor).

Jak funguje algoritmus s uzavřenou smyčkou?

Základním principem udržování robota v rovnováze je, že pokud robot padá dopředu, bude to kompenzovat posunutím spodní části robota dopředu, aby se zachytil, a proto zůstal ve svislé poloze. Stejně tak pokud robot padá dozadu, bude to kompenzovat pohybem spodní části robota dozadu, aby se zachytil.

Zde tedy musíme udělat dvě věci, za prvé musíme vypočítat úhel sklonu (Roll), se kterým se robot setkává, a v důsledku toho musíme ovládat směr otáčení motorů.

Jak budeme měřit úhel sklonu?

K měření úhlu sklonu použijeme inerciální měřicí jednotku. Tyto moduly obsahují akcelerometr a gyroskop.

  • Akcelerometr je elektromagnetické zařízení, které měří správné zrychlení, což je zrychlení tělesa v okamžitém klidovém rámci.
  • Gyroskop je elektromechanické zařízení, které měří úhlovou rychlost a slouží k určení orientace zařízení.

Problém s používáním takových senzorů je však ten, že:

  • Akcelerometr je velmi hlučný, ale v průběhu času je konzistentní, úhel se mění při náhlých vodorovných pohybech
  • Hodnota gyroskopu se na druhou stranu bude časem posouvat, ale zpočátku je poměrně přesná

Pro tento instruktáž nebudu implementovat filtr, místo toho nebudu používat integrované zpracování digitálního pohybu (DMP). Jiní použili doplňkový filtr k získání hladkého signálu, můžete si vybrat libovolnou metodu, která se vám líbí. jak robot vyvažuje s každou implementací.

Zásoby

Díly:

  1. Arduino Pro Mini 3,3 V 8 s 8 MHz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI Modul sériového adaptéru USB na TTL
  3. Modul GY-521 s MPU-6050
  4. Dvojice mikropřevodovek N20 6V - 300 ot./min
  5. Ovladač motoru L298N
  6. Převodník bucků LM2596S DC na DC
  7. Baterie (dobíjecí lithium-iontová baterie 9,7 V)
  8. Popruh na baterie
  9. Dvě prototypové desky plošných spojů
  10. Propojovací vodiče kolíkových a kolíkových konektorů

Nástroje:

  1. Páječka a pájka
  2. Distanční sloupek z nylonového šestihranu
  3. Sada přesných šroubováků
  4. 3D tiskárna

Krok 1: Stavba

Vzhledem k tomu, že jsem měl přístup k 3D tiskárně, rozhodl jsem se vytisknout podvozek 3D a použít spojovací prvky k propojení všeho dohromady.

Robot se skládá ze 4 vrstev

  1. Spodní vrstva spojuje motory a má montážní body pro modul ovladače motoru L298N
  2. V další vrstvě je prototypová deska s Arduino pro mini a k ní připájenými záhlavími
  3. Třetí vrstva připojuje IMU
  4. Horní vrstva, kterou nazývám „nárazníková vrstva“, obsahuje baterii, převodník bucků a peněžní přepínač

Mým hlavním principem návrhu bylo udržet vše modulární. Důvodem bylo to, že pokud se něco pokazilo s jednou ze součástí, kterou jsem mohl snadno vyměnit, nebo pokud jsem potřeboval součást pro jiný projekt, mohu ji snadno převzít, aniž bych se obával, že nebudu moci systém znovu použít.

Krok 2: Zapojení

Elektrické vedení
Elektrické vedení

Pájel jsem několik ženských hlavičkových pinů na desku perf, aby odpovídalo pinům mini hlaviček Arduino pro. V návaznosti na to jsem připájel samčí kolíky záhlaví desky, abych umožnil přístup k I/O. Zbytek komponent byl namontován na 3D tištěný rám a připojen pomocí propojovacích vodičů.

Krok 3: Teorie ovládání

Nyní přejdeme k jádru projektu. Aby byl robot vyvážený, potřebujeme generovat vhodný řídicí signál, který pohání motory ve správném směru a správnou rychlostí, aby byl robot vyvážený a stabilní. K tomu použijeme populární algoritmus řídicí smyčky známý jako PID regulátor. Jak zkratka naznačuje, existují tři termíny pro tento řadič, jedná se o proporcionální, integrální a derivační termíny. Každý z nich je doprovázen koeficienty, které určují jejich vliv na systém. Časově nejnáročnější částí implementace ovladače je často vyladění zisků pro každý jedinečný systém, aby se dosáhlo nejoptimálnější odezvy.

  • Proporcionální člen přímo vynásobí chybu a poskytne výstup, takže čím větší chyba, tím větší odezva
  • Integrální člen generuje odpověď na základě akumulace chyby za účelem snížení chyby v ustáleném stavu. Čím déle je systém nevyvážený, tím rychleji budou motory reagovat
  • Derivační termín je derivátem chyby, která se používá k předpovědi budoucí reakce, a tím snižuje oscilaci v důsledku překročení ustáleného stavu.

Základním principem tohoto algoritmu je nepřetržitý výpočet úhlu sklonu, což je rozdíl mezi požadovanou polohou a aktuální polohou, což je známé jako chyba. Poté použije tyto chybové hodnoty a vypočítá součet proporcionálních, integrálních a derivačních reakcí k získání výstupu, což jsou řídicí signály, které jsou vysílány do motorů. Výsledkem je, že pokud je chyba velká, řídicí signál vyslaný do motorů bude otáčet motory vysokou rychlostí, aby se dostal do vyváženého stavu. Podobně, pokud je chyba malá, řídicí signál bude otáčet motory nízkou rychlostí, aby byl robot v rovnováze.

Krok 4: Použití MPU 6050

Knihovna MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

Kalibrace offsetů Ne všechny senzory jsou navzájem přesné repliky. Výsledkem je, že pokud testujete dva MPU 6050, můžete získat různé hodnoty pro akcelerometr a gyroskop, pokud jsou umístěny stále na stejném povrchu. Abychom překonali tento konstantní úhel, musíme oslavit každý senzor, který používáme. Spuštění tohoto skriptu:

www.i2cdevlib.com/forums/topic/96-arduino-…

napsal Luis Rodenas, dostaneme ofsety. Chyby ofsetu lze eliminovat definováním hodnot offsetu v rutině setup ().

Pomocí digitálního pohybového procesoru

MPU6050 obsahuje DMP (Digital Motion Processor).

Co je DMP? DMP si můžete představit jako integrovaný mikrokontrolér, který zpracovává komplexní pohyb z 3osého gyroskopu a 3osého akcelerometru na palubě mpu6050 pomocí vlastních algoritmů fúze pohybu. Vyložení zpracování, které by jinak provedlo Arduino

Jak to použít? Chcete-li zjistit, jak používat DMP, projděte si ukázkový náčrt MPU6050_DMP6, který je dodáván s knihovnou MPU6050 (v Arduino IDE: Soubor-> Příklad-> MPU6050-> MPU6050_DMP6). Je to také dobrá příležitost zkontrolovat, zda váš senzor skutečně funguje a zda je správné zapojení

Krok 5: Kódování

K programování Arduino pro mini jsem použil Arduino IDE a rozhraní FTDI.

Pomocí příkladu skici (MPU6050_DMP6), který je dodáván s knihovnou MPU6050 jako základního kódu, jsem přidal funkce PID () a MotorDriver ().

Přidejte knihovnu

  • MPU6050: K použití snímače MPU6050 budeme muset stáhnout vývojářskou knihovnu I2C od Jeffa Rowberga a přidat ji do složky „knihovny“Arduino, která se nachází v programových souborech ve vašem počítači.
  • Wire: Potřebujeme také knihovnu Wire, která nám umožní komunikovat se zařízeními I2C.

Pseudo kód

Zahrnout knihovny:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Inicializujte proměnné, konstanty a objekty

Založit ()

  • Nastavte režim kolíku pro ovládání motorů
  • Nastavte režim pinů pro stavovou LED
  • Inicializujte MPU6050 a nastavte hodnoty ofsetu

PID ()

Vypočítejte hodnotu PID

MotorDriver (reakce PID)

Pomocí hodnoty PID můžete řídit rychlost a směr motorů

Smyčka ()

  • Získejte data z DMP
  • Volejte funkce PID () a MotorDriver ()

Krok 6: Postup ladění PID

Toto je nejnáročnější část projektu a vyžaduje trochu trpělivosti, pokud nebudete mít velké štěstí. Zde jsou kroky:

  1. Nastavte termín I a D na 0
  2. Držte robota a nastavte P tak, aby robot začal oscilovat kolem polohy vyvážení
  3. Se sadou P zvyšte I, aby robot zrychlil rychleji, když je mimo rovnováhu. Když jsme P a já správně naladěni, robot by měl být schopen se alespoň na několik sekund s určitou oscilací vyvážit
  4. Nakonec zvyšte D a snižte oscilaci

Pokud první pokus neposkytne uspokojivé výsledky, opakujte kroky s jinou hodnotou P. Mějte také na paměti, že hodnoty PID můžete později doladit, abyste dále zvýšili výkon. Hodnoty zde závisí na hardwaru, nenechte se překvapit, pokud získáte velmi velké nebo velmi malé hodnoty PID.

Krok 7: Conclution

Použité mikropřevodníky měly zpomalit, aby reagovaly na velké poruchy, a vzhledem k tomu, že systém byl příliš lehký, nebyla k dosažení požadovaného kyvadlového efektu dostatečná setrvačnost, takže pokud se robot nakloní dopředu, nakloní se pouze šikmo a proběhne vpřed. A konečně, 3D tištěná kola byla špatná volba, protože neustále klouzaly.

Návrhy na vylepšení:

  • Rychlejší motory s vyšším točivým momentem, tj. U stejnosměrných motorů platí, že čím vyšší je jmenovité napětí, tím vyšší točivý moment
  • získejte těžší baterii nebo jen posuňte hmotu o něco výše
  • Vyměňte 3D tištěná kola za gumová, abyste získali lepší trakci

Doporučuje: