Již delší dobu jsem si chtěl postavit balancujícího robota (vozítko na dvou kolech) a při brouzdání na webu jsem narazil na stránky http://www.jjrobots.com, kde mají robota EVO 1 a nově bude i EVO 2, který splňuje mé požadavky (ovládání přes telefon - WiFi, snadná montáž) a je kompletně v otevřené platformě (open hardware a open software) - není tedy problém si robůtka upravit k obrazu svému...
Více informací k tunningu je uvedeno na webu v části tunning...
ZDARMA
(po registraci a přihlášení) komplet dokumentace (fw, hex, Arduino IDE, 3D...)
Video - ukázka funkce robota
Video - ukázka (tunning kola + LiPol + RGB LED)
Z těchto stránek jsem si objednal díly (motory, náklonoměr, Arduino Leonardo, ESP8266, budiče motorů atd...) bez 3D výtisků za 120 Euro (3D díly nabízejí za dalších 20 Euro). Pokud člověk začne díly hledat na webu, tak zjistí, že cena za balíček (kde je kromě 3D vše) je skoro stejná jako při kupování dílů po všech čertech na webu. Po zaplacení kartou na webu JJROBOT mi přišel za 10 dní balíček...
Popis robota (z webu JJROBOTS)
- Otevřený projekt: Kód C++ (pro Arduino) a 3D soubory jsou otevřené a lze je sdílet. DIY & Hackeable: B-ROBOT není uzavřený konečný produkt, B-ROBOT je otevřený modifikovatelný. Rozvíjejte své vlastní aplikace: Ty můžou modifikovat zdrojový kód B-ROBOTa a plnit různé úkoly (komunikační protokol je rovněž otevřen), takže si můžeme vytvořit svůj vlastní IOS, Android, PC vzdálenou aplikaci pro ovládání našeho robota. Naučte se: B-ROBOT je produkt JJROBOTS a to znamená, že budeme dostávat řádně zdokumentovaný projekt (zdrojový kód a externí dokumentaci). Chceme, abyste věděli všechno, co se děje uvnitř našeho robota! To je ideální pro učení a výuku technologie. Budeme poskytovat velmi dobrou dokumentaci. Jak ovládat motory, jak číst a integrovat informace z gyroskopu a akcelerometru, jak se kontroluje stabilita robota, jak komunikovat s kontrolními aplikacemi, atd... Postavte si robota se svými dětmi, ve škole pro sebe ...
- B-ROBOT má střední velikost, perfektně unese plechovku s pivem (nebo soda nápoj ;-))
- B-ROBOT je jediný samovyvažující robot (pokud je nám známo)
- B-ROBOT používá otevřený komunikační protokol (OSC), takže máte mnoho aplikací pro iOS, Android, PC, Mac ke komunikaci a ovládání robota!
- B-ROBOT využívá technologii Wi-Fi pro komunikaci. B-ROBOT vytváří svůj vlastní Wi-Fi přístupový bod, takže nepotřebujeme žádnou externí infrastrukturu (výchozí možnost), nebo si můžeme nastavit B-ROBOT pro připojení ke stávající Wi-Fi síti a můžeme ho ovládat přes internet z jiné země.
- K dispozici je komunitní fórum B-ROBOT, takže můžeme na fórum klást otázky, sdílet své úpravy a kontaktovat další fanoušky...
- Můžeme použít B-ROBOT díly pro vytváření většího počtu robotů (všechna zařízení používaná v B-ROBOT jsou standardní elektronická zařízení s velkým potenciálem).
Popis dílů
- 1x Napájení - držák baterie: 6ks baterie AA 1,5V (alkalická, nebo nabíjecí baterie)
- 2x Motor - NEMA 17 krokový motor (40mm délka, příklad: 42BYGHW609)
- 1x Arduino - Leonardo
- 1x IMU - Gyro, akcelerometr
- 1x Servo - Mikroservo Tower Pro MG90S
- 2x Budič motorů - A4988
- 1x Shield s ESP12-E verze
Aplikace pro ovládání (pro Android, IOS, Block Programming)
Více informací na webu JJROBOTS...
FREE (v příloze 3D díly pro tiskárnu, Arduino zdrojový kód, touch osc editor, šablona pro toucosc)
Doporučuji zakoupit pro telefon aplikaci Touchosc za cca 130,- a do ni nahrát šablonu pro ovládání robota, kde si můžeme rozložit ovládání dle vlastní fantazie :-)
Na tiskárně Průša I3 jsem si vytiskl z PLA materiálu díly pro robota (PLA gcode pro tiskárnu je v příloze pod článkem).
Díly robota
Tisk z materiálu PLA 210/50 °C
Nastavení tiskárny
- rafty (přilnavost okolo výrobku): Ne
- podpěry: Ne
- rozlišení: 0,3
- výplň: 20% (stačí)
- tloušťka stěny: 0,8 mm
Tělo robota se skládá z těchto částí
- 2x Boční panel (Side panel, 1 ks se tiskne se cca 70 minut)
- 1x Držák motrů (Motor shelf, tiskne se cca 90 minut)
- 1x Držák elektroniky (Electronics shelf, tiskne se cca 106 minut)
- 2x Kolo (Wheel, 1 ks se tiskne se cca 90 minut)
- 2x Náboj kola (Hub, 1 ks se tiskne cca 16 minut)
- 1x Horní panel (Top shelf, tiskne se cca 100 minut)
- 1x Ruka (Arm, tiskne se cca 27 minut)
1x Přední a 1x zadní kryt (Bumper) jsem netisknul, protože byl již v sadě dodán s elektronikou
Celkem tedy budeme 3D díly na robota tisknout cca 675 minut (tedy 11 hodin).
Na tiskárnu Průša I3 používám lepidlo Kores (nanesu před každým tiskem na sklo a dám sklo do tiskárny)
Více informací ohledně tohoto robota na webu JJROBOTS
Stránky projektu: http://www.jjrobots.com/projects-2/b-...
B-robot KIT: http://www.jjrobots.com/product/b-rob...
B-robot GITHUB: https://github.com/jjrobots/B-ROBOT
!!! POZOR - robota skládejte přesně jako je to vidět na videu, pokud například otočíte vodiče k motorům, nebo náklonoměr nebude robot fungovat - nikdy se nenakalibruje !!!
Moje montáž robota
Z obrázků je vidět jak se robot smontuje (dlouhé 4 šrouby jsou pro uchycení 3D horního krytu a 4 pro 3D desku elektroniky, ostatní jsou malé šroubky) - Já mám robota smontovaného opačně, než je vidět na videu (skládal jsem ho v době, když ještě nebylo uveřejněno nové video pro EVO 2) servo na druhé straně a předek robota koukám na vodiče od krok. motorů (správně to má být otočeno, ale na funkci to nemá vliv, pouze vzhled)
Poznatky
Je potřeba dodat 5ks šroubků M3x5 + M3 matky (na boční kryty), kterých jsem měl v pytlíku pouze 15ks, ale potřeba je 20ks (možná se jen někdo v JJROBOT seknul, protože jsem byl mezi prvními, kdo objednal EVO 2 verzi. K dnešnímu dni 28. 1. 2017 ještě není na webu JJROBOT EVO2 verze k dispozici :-)
- vlevo na obrázku: stabilní poloha
- uprostřed na obrázku: naklonění se do strany (chyba)
- vpravo na obrázku: vyrovnávání naklonění pomocí motorů (vyvážení chyby)
Trochu více do hloubky problematiky...
Problém který B-ROBOT musí řešit se nazývá opačné kyvadlo "Inverted Pendulum". Jedná se o stejný mechanismus jako je potřeba vyvážit deštník nad hlavou pomocí vaší ruky. Otočný bod je pod těžištěm objektu. Více informací o Inverted Pendulum zde. Matematické řešení tohoto problému není snadné. To co potřebujeme vědět je jak to udělat, aby se obnovila rovnováha robota (takže můžeme realizovat řídicí algoritmus pro vyřešení problému).
Řídicí systémy robota jsou velmi podobné principům používaným v průmyslové automatizaci. U robota používáme PID regulátor (P = proporcionální, I = integrační, D = derivační). PID má 3 konstanty pro nastavení KP, KD a KI. PID regulátor patří mezi spojité regulátory, složený z proporcionální, integrační a derivační části. V systémech řízení se řadí před řízenou soustavu. Do regulátoru vstupuje regulační odchylka a vystupuje akční veličina.
Tedy zadáme do PID regulátoru tyto parametry:
Vstup z čidel, Požadovaná hodnota a proměnné, kterými chceme nastavit odezvu systém. PID potom upravuje výstup tak, aby se vstupní hodnoty rovnaly požadavku.
kP je poměrná část a je hlavní součástí kontroly, tato část je úměrná míře chyb - určuje zesílení.
kD je derivační složka. Tato část je závislá na dynamice systému (v závislosti na robotu, jeho hmotnosti, motorech, setrvačné hmotnosti ...) - určuje přesnost.
kI je integrační složka a používá se ke snížení kmitání (kI odstraňuje posun mezi požadovanou a skutečnou hodnotou).
Příklad: Pokud uživatel odešle příkaz řízení 6 odbočit vpravo (od -10 do +10) musíme přidat 6 k hodnotě levého motoru a odečíst 6 z pravého motoru. V případě, že se robot nepohybuje dopředu nebo dozadu.
Pohled na robota shora pro příklad
Postup inicializace (je nutné ho přesně dodržet!)
1) Položíme robota vodorovně na místo.
2) Otočíme na robotu spínač baterie na ON (ZAP).
3) Necháme robota 10 vteřin nakalibrovat. Jakmile je robot nakalibrovaný budou se pomálu otáčet kola.
4) Čas vstát! Použijeme ruku na robotu, nebo mu pomůžeme vstát naší rukou.
5) Připojíme se pomocí telefonu (tabletu, notebooku) k Wi-Fi robota
Poznámka: B-robot Brain Shield's má výchozí Wi-Fi heslo 87654321
Existují tři možnosti, jak ovládat B-robota, pomocí softwaru TouchOSC ("lze si přizpůsobit", ale není zdarma), přes JJrobots aplikaci pro iOS nebo Android.
TIP: Pokud nemají krokové motory dostatek energie roztočit kola, tak nastavíme větší výstupní proud v budičích motorů (A4988) pomocí šroubku na desce budičů (doprava větší síla, doleva menší síla)
Tuning část první - kola
3D PLA díly, ze kterých je robot vyroben jsou dobré na plášť (bočnice, podvozek atd.), ale kola nejsou z plastu ideální (provoz na koberci je OK, ale pro linoleum nebo něco tvrdšího - dlaždice není toto řešení vyhovující). Lepší je namísto PLA kol zakoupit v modeláři kola z nějakého autíčka (ala bugina). V kameném krámku http://www.model-fun.cz/ jsem zakoupil 2ks kol 1:10 zadní (pro buggy) za 299,-.
Přesně tato kola v e-shopu kód zboží: HM06026Y zadní, nebo lze použít přední kola (ty jsou o kousek užší) v e-shopu kód zboží: HM06010Y
Kola na buggy (přední i zadní) jsou průměrově stejná (85mm guma čudlík - guma čudlík), ale liší se hloubkou ráfku a gumy (přední: 35mm, zadní: 42mm). Guma je na ráfku nalepená.
Proč používat tato kola?
Výsledkem bude daleko lepší odpružení (kola nepůjdou "natvrdo") v terénu (například venku na "asfaltu") a zároveň ložiska motorů nebudou tolik "trpět" jako při použití PLA kol (řemínek, který je nasunut na PLA kolech vůbec netlumí vybrace, pouze brání prokluzu...
Pro montáž kol na robota je potřeba vytisknout 2ks 3D matic z PLA materiálu (v příloze soubor: matky kol pro offroad) a v ráfku kola zvětšit průměr díry z 4 mm na 5 mm (lepší postupně zvětšovat a testovat, aby šel ráfek nasadit "ztuha").
Osu Kolo - motor to chce vymezit například bužírkou (kolo má jinak snahu se posouvat ke středu a následně "drhne o PLA materiál)
Tuning část druhá - RGB LED oči
Pokud provozujeme robota na aplikaci od JJrobot (ne na placené osc aplikaci - tam je indikace baterek vyřešena) nepoznáme na první pohled stav baterií robota. Dále je vhodné nějak zobrazit stav kalibrace (že již můžeme robota postavit) po zapnutí robota, když nemáme osazené servo (servo s rukou). Rozhodl jsem se robota doplnit o 2ks RGB LED diod, které jsou umístěné v očích robota. Zakoupil jsem v tomto e-shopu destičky s čipem WS2812, ke kterému je připojena RGB LED dioda. Výhoda tohoto řešení je to, že nám stačí z Arduina pouze jeden vodič (namísto 6 tedy 2x RGB pro každé oko zvlášť) po kterém můžeme ovládat každé oko nezávisle (v RGB podání).
Stav LED očí na robotu
- zapnutí napájení a čekání na kalibraci - červená barva / zelená barva (blikání v rytmu serva po kalibraci)
- provozní stav - modrá barva (svítí pokud neaktivujeme servo) / červená barva (svítí pokud aktivujeme servo)
- varování před slabou baterií - žlutá barva (svítí do doby než se aktivuje bezpečnostní odpojení robota při změně na červenou barvu)
- bezpečnostní odpojení motorů při slabé baterii - červená barva (rychlé blikání)
Modul RGB LED s čipem WS2812
Tuning část třetí - NiMH baterie
Provoz robota na baterie je cca 1 hodina. Pokud se spočítá částka za 6ks AA článků 1,5V a doba provozu robota, tak je cenově (i vzhledem eko šetrnosti k přírodě) výhodnější používat nabíjecí baterie. Bateriový blok na 6 tužkových AA baterií 1,5V je možné osadit i nabíjecími bateriemi 6ks 1,2V v mém případě jsem použil baterie Eneloop Pro 2500mAh.
Pro nabíjení NiMH baterií používám tuto nabíječku za cca 470,- z gesu, kde nastavíme přepínačem 6 článků a 1A nabíjecí proud (Automatický síťový rychlonabíječ NiCd a NiMH akumulátorových sad ze 2-10 článků. Nabíjecí proud volitelný 0,5 nebo 1A. Po ukončení rychlonabíjení automaticky přejde na udržovací nabíjení. Možnost vybití akumulátorů. Kontrola nabíjení tříbarevnou LED.)
Výhodou nabíječe je, že se nemusí baterie vyndavat z PVC držáku (odmontovat z robota - tedy povolit šroub, vytáhnout ven, vyndat baterie...), ale stačí odpojit kabel z desky Arduino a připojit ho na vodiče z nabíječky. Pokud si do robota osadíme další konektor (s přepínáním robot/baterie), tak nemusíme rozpojovat ani kabel z Arduina...
- AA baterie (6ks) Eneloop Pro 1,2V/ 2500mAh s PVC držákem váží cca 240g.
- Celkové napětí článků je 6x1,2V = 7,2V.
- Nevýhodou NiMH baterií je tzv. paměťový efekt (nebo zde), kde je nutné je nejprve zcela vybít a následně je možné je nabíjet (nelze tedy například uprostřed kapacity) -> menší kapacita.
Pokud budeme používat můj upravený EVO 2 kód: 24.2.2017 verze 2.7 a vyšší (LiPol, NiMH, RGB LED) pro kontrolu napětí baterie s články NiMH je potřeba v programu nastavit: #define LIPOBATT 0
Aktuální hodnoty pro NiMH: 6.5V varování / 5.5V vypnutí
Tuning část třetí - LiPol baterie (pouze na Vaše riziko)
Robot jezdí na tuto LiPol baterii cca hodinu.
Li-Pol = Lithium - Polymer
Druhou možností je nahradit baterie AA (ať již nabíjecí AA, nebo alkalické AA) + držák baterií za LiPol článek, který má své výhody :-), ale i nevýhody (bezpečí článků). V kameném krámku http://www.model-fun.cz/ jsem zakoupil tuto LiPol baterii (přesněji akupack - akumulátor) za 420,-
- 1800-2S ECO-S (7,4V)
- 90x35x16 mm 100g
- Max. proudové zatížení: 25C (max 45A)
- Max. nabíjecí proud 4C (max 7A)
- Servisní konektor JST-XH
Akku LiPol XPower 1800-2S ECO 25C
je novou řadou LiPol akumulátorů vyrobených při příležitosti desátého výročí od založení firmy Dualsky. Akumulátory této řady jsou lehké, odolné a s výborným poměrem výkon/cena.
K nabíjení tohoto článku nemůžeme z důvodu bezpečnosti použít "samodomo nabíječku co dům dal", ale je nutné mít nabíječku přímo na LiPol články. U LiPol se každý článek při nabíjení kontroluje samostatně. Použil jsem tento nabíječ za 599,-
Mikroprocesorový nabíječ 20W s balancerem pro 2-4 čl. Li-poly/Li-Fe s přepínatelným proudem 1, 2 nebo 3A. Napájení 110-230V.
Nabíječ SKY RC e4 s vestavěným balancerem je velmi jednoduchý "krabičkový" nabíječ pro rekreační jezdce a letce se síťovým napájením pro nabíjení Li-poly a Li-Fe akumulátorů. Je ideálním doplňkem "setových" stavebnic umožňující jednoduché nabíjení doma nebo výborným společníkem na cesty, kdy s sebou nechcete "tahat" velký, těžký a drahý nabíječ. Nabíjený akumulátor se připojuje pomocí silových kabelů zapojených do výstupu nabíječe (4 mm banánky) a k vestavěnému balanceru prostřednictvím servisního konektoru; nabíječ je opatřen třemi zásuvkami (2s, 3s a 4s) pro konektory systému JST-XH. V jednu chvíli je možno nabíjet vždy jen jednu sadu - buď dvoučlánkovou, tříčlánkovou, nebo čtyřčlánkovou.
Základní funkce
Síťové napájení 100-230 V/50-60 Hz
Pro nabíjení 2-4s Li-poly nebo Li-Fe článků
Nabíjecí proud přepínatelný 1, 2 nebo 3A
Max. výkon pro nabíjení 20 W
Nabíjení metodou „konstantní proud/konstantní napětí“
Přepínač koncového napětí 3,6 V pro Li-Fe a 4,2 V pro Li-poly na předním panelu nabíječe
Provozní stavy nabíječe signalizovány LED diodami
Hlásí chybové stavy (velký rozdíl napětí jednotlivých článků, přerušení kabelů)
Nabíjecí konektory JST-XH 2s, 3s a 4s, nabíjet je možno vždy jen jednu sadu
Kompaktní plastová skříňka, kapesní rozměry
Sada nabíječe obsahuje: nabíječ SKY RC e4, síťový napájecí kabel, nabíjecí kabel se 4 mm banánky a druhým koncem volným, návod.
Vstupní napětí (síťové - AC) [V] 230
Nabíjecí proud [A] 1 - 3
Li-Pol [čl.] 2 - 4
Li-Fe [čl.] 2 - 4
Balancer Ano
Výkon při nabíjení [W] 20
Délka [mm] 110.7
Šířka [mm] 69.4
Výška [mm] 40.5
Hmotnost [g] 176
Z robota tedy vyjmeme původní držák baterií AA 6ks a na jeho místo (nad motory a pod PLA držák elektroniky) umístíme LiPol akumulátor. Pro přichycení použijeme pásek suchého zipu. Pro propojení LiPol akumulátoru s Arduino deskou potřebujeme zakoupit také protikus konektor Dualsky DC-3A sameconektor Dualsky DC-3A samec za 30,- (dvojice silových konektorů firmy Dualsky. Konektory mají průměr 3,5 mm. Dutinka je trořena pevnou trubičkou, kolík je rozříznut. Kontakt konektorů není pouze kruhový ale plošný, takže spoj má velmi malý ohmický odpor. To je důležité pro správné využití moderních baterií, jejichž vnitřní odpor je velmi nízký. Povrch konektorů je pozlacen. Pár je uzavřen v polarizovaném plastovém pouzdře, takže při spojení nemůže dojít k přepólování.)
Informace o akupacku LiPol 2 články 1800mAh (čtěte!)
- Plně nabitý LiPol článek má 4,2 V (+-0,05 V na článek) a pokud napětí klesne pod 2,9 V může být akumulátor nenávratně zničen.
- Teplota při nabíjení smí být v rozmezí 10°C - 45°C!
- Teplota při vybíjení smí být v rozmezí 10°C - 50°C!
- Skladování (2 týdny a déle) se provádí při nabití na 50% - 60% (tedy 3,8V na článek) nikoliv při nabití na 100%!
- Baterie se nesmí nikdy ohřát na teplotu vyšší než 60°C!
- Nabíjení nastavíme dle článku 1800mAh (bezpečné na 2C uvnitř místností) -> tj. nabíjecí proud bude na nabíječi nastaven na hodnotu 3A (přesně 2C je 2 x 1800 mAh = 3,6A)
Můj zakoupený akumulátor (akupack) má dva články - maximální napětí bude celkem 4,2 + 4,2 = 8,4V tedy o 0,6V méně než při použití 6ks AA 1,5V článků a o 1,2V více než při použití 6ks AA NiMH 1,2V článků. Napětí je tedy v pořádku a robot bude pracovat i s LiPol akumulátorem.
Pokud budeme používat můj upravený EVO 2 kód: 24.2.2017 verze 2.7 a vyšší (LiPol, NiMH, RGB LED) pro kontrolu napětí baterie s články NiMH je potřeba v programu nastavit: #define LIPOBATT 1
Aktuální hodnoty pro LiPol: 6.3V varování / 6.0V vypnutí
Více informací o LiPol článku například na Wiki...
POZOR LiPol opravdu není sranda!
Výhody
- Velká kapacita na malém rozměru
- Bez paměťového efektu
- Minimální samovybíjení (cca 5 % za měsíc)
- Jednoduché a bezproblémové zapojení mnoha článků do série
- Vhodné nominální napětí 3,7 V
- Dlouhá životnost (až 2000 cyklů, až 3 roky)
- Není ho nutné zcela vybíjet před nabitím
- Přijatelný teplotní rozsah (-10 až 50 °C)
- Rychlonabíjení (až 4-násobkem kapacity článku)
- Vysoký vybíjecí proud (špičkově až 50-násobek kapacity článku)
Nevýhody
- Možnost vznícení nebo výbuchu (zejména při zkratování – nutná interní ochrana)
- Kapacita klesá i při nepoužívání akumulátoru
- Při poklesu napětí pod 2,7 V může být akumulátor nenávratně zničen
- Vyšší pořizovací cena
- Akumulátor může tzv. "vytuhnout" (i při nízkém samovybíjení, po roce a půl nepoužívání prostě odejde)
- Časem se zvyšuje tlak uvnitř baterie
Pomocí suchého zipu drží baterie nad motory
(Baterka je odpojena - rozpojením konektorů...)
Tuning robota
- Doplněná LED indikace (4 LED serio-paralelně připojené na pin A3 a zem na desce Leonardo)
- výměna serva za servo MG996R s kovovými převody (namísto mikroserva s plast. převody)