ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra mikroelektroniky
Autonomní robotický vysavač Autonomous Robotic Vacuum Cleaner
Bakalářská práce
Studijní program: Komunikace, multimedia a elektronika Studijní obor: Aplikovaná elektronika Vedoucí práce: Ing. Tomáš Teplý
Jan Černý
Praha 2013
Poděkování Tímto bych chtěl poděkovat v prvé řadě vedoucímu práce Ing. Tomáši Teplému za jeho náměty, připomínky a rady, které mě vždy správně nasměrovaly. Dále bych chtěl poděkovat své rodině za morální a především materiální podporu během studia. V neposlední řadě bych chtěl poděkovat své přítelkyni za toleranci, podporu a motivaci během vytváření této práce.
Čestné prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o dodržování etických principů při přípravě vysokoškolských závěrečných prací.
V Praze dne ............
.............................. podpis studenta
Abstrakt V bakalářské práci jsou popsány principy nejčastěji používaných komponentů pro konstrukci autonomních robotických vysavačů. Dále je zde popsán postup návrhu a konstrukce prototypu robotického vysavače. Robotický vysavač má za úkol pohybovat se po místnosti bez narážení do překážek a přitom sbírat nečistoty. Pohyb prototypu je realizován dvojicí stejnosměrných motůrků s převodovkou. Bezkontaktní detekce překážek je zajištěna pomocí senzorického subsystému, který se skládá z optoelektronických senzorů a taktilního nárazníku. Vysávací ústrojí je zkonstruováno pomocí radiálního ventilátoru a nádoby pro sběr nečistot. Řídicí systém robotického vysavače zajišťuje mikrokontrolér PIC od firmy Michrochip.
Klíčová slova Autonomní robot, robotický vysavač, mobilní robot, stejnosměrný motor, krokový motor, senzory, sonar, SHARP detektor, mikrokontrolér.
Abstract This bachelor’s thesis describes principles of most commonly used components for construction of autonomous robotic vacuum cleaners. The second section describes the process of design and construction of a prototype robotic vacuum cleaner. Robotic vacuum cleaner is intended to move around the room without hitting the obstacles while collecting dirt. Moving of robot is implemented by two DC-motors with gearboxes. Contactless obstacle avoiding is provided by the sensory subsystem that consists of optoelectronic sensors and tactile bumper. Vacuum system is designed using radial fan and container for collecting debris. The control system is ensured by PIC microcontroller from company of Microchip.
Keywords Autonomous robot, robotic vacuum cleaner, mobile robot, DC motor, stepper motor, sensors, sonar, SHARP range finder, microcontroller.
Obsah 1 2
Úvod ................................................................................... 4 Teoretická část ..................................................................... 4 2.1
Druhy pohonu vhodné pro roboty ...................................... 4
2.1.1 2.1.2 2.1.3 2.1.4 2.2
Senzory pro roboty .......................................................... 9
2.2.1 2.2.2 2.2.3 2.2.4 2.3
Krokové motory ......................................................... 4 Stejnosměrné motory ................................................. 6 Servomotory .............................................................. 7 Ostatní pohony........................................................... 8 Sonary ...................................................................... 9 Optoelektronické senzory .......................................... 10 Taktilní senzory ........................................................ 11 Ostatní senzory ........................................................ 12
Řídicí systém robota ....................................................... 12
2.3.1 Mikrokontrolér .......................................................... 13 2.3.2 H-můstek ................................................................ 16 2.4
Akumulátory ................................................................. 17
2.4.1 2.4.2 2.4.3 2.4.4 2.5 3
Ni-Cd ...................................................................... 18 Ni-MH ..................................................................... 18 Olověné................................................................... 18 Li-pol/ Li-ion ............................................................ 18
Vysavače ...................................................................... 19
Praktická část ..................................................................... 20 3.1 3.2
Výběr motůrku .............................................................. 21 Obvodový návrh ............................................................ 25
3.2.1 Obvody pro řízení ..................................................... 25 3.2.2 Napájecí obvody ....................................................... 27 3.2.3 Elektrické schéma celého systému .............................. 29 3.3
Programová část............................................................ 29
3.3.1 3.3.2 3.3.3 3.3.4 3.4
Ovládání pohybu ...................................................... 30 Obsluha senzoru....................................................... 30 Obsluha přerušení .................................................... 32 Programové řešení.................................................... 33
Konstrukční řešení ......................................................... 33
3.4.1 Sací ústrojí .............................................................. 34 3.4.2 Podvozek a kryt ....................................................... 35 3.5
Shrnutí, porovnání a zhodnocení...................................... 35
1
4 5 6 7 8 9
Závěr................................................................................. 36 Seznam použité literatury..................................................... 38 Seznam obrázků ................................................................. 42 Seznam tabulek .................................................................. 42 Seznam příloh ..................................................................... 42 Přílohy ............................................................................... 43
2
Seznam zkratek A/D – Analogově/digitální BLDC – Brushless direct current CAN – Controller area network CCD – Charge-coupled device CCP – Capture/compare/PWM Co. - Company CPU – Central processing unit D/A – Digitálně/analogový DC – Direct current GND - Ground GPS – Global positioning system I2C – Inter-integrated circuit LED – Light-emitting diode Li-ion – Lithium-ion Li-pol – Lithium-polymer Ltd. - Limited MCLR – Master clear MCU - Microcontroller MKO - Monostabilní klopný obvod Ni-Cd – Nickel-cadmium Ni-MH – Nickel-metal hydride PDA – Personal digital assistant PE - Polyethylene PSD – Position sensitive device PWM – Pulse-width modulation RAM – Random access memory RAM - Rechagable alkaline manganese RISC – Reduced instruction set computing ROM – Read-only memory SLA – Sealed lead acid SMA – Shape-memory alloy USB – Universal serial bus Wi-Fi – Wireless-fidelity
3
1
Úvod
Robotické vysavače zažívají rychlý nárůst popularity a pomalu se stávají nedílnou součástí moderních domácností. Tento fakt mě vedl k průzkumu pořizovací ceny takového vysavače. Po zběžném pátrání u mě vyvstala myšlenka, zda je možné takovýto robotický vysavač postavit v domácích podmínkách a zda je možné přiblížit se nebo dokonce nějakým aspektem konkurovat komerčně dostupným robotickým vysavačům. Cílem celého projektu je vytvořit funkční prototyp robotického vysavače s ohledem na nízké pořizovací náklady, možnost budoucí modifikace a na použití v domácím prostředí. V této práci popíši postup návrhu a realizace robotického vysavače. Práce je strukturovaná do dvou hlavních celků. První část práce je věnována analýze nejčastěji používaných komponentů pro konstrukce robotů a robotických vysavačů. Druhá část práce popisuje návrh a realizaci autonomního robotického vysavače. Prototyp je realizován pomocí dvou stejnosměrných motůrků ovládaných mikrokontrolérem PIC. Robotický vysavač se za pomocí senzorického subsystému vyhýbá překážkám. V závěru práce jsou zhodnoceny dosažené výsledky.
2
Teoretická část
V této části práce popíšu komponenty nejrozšířeněji používané pro stavbu malého autonomního robota. Objasním základní principy funkce těchto prvků a porovnám jejich slabé a silné stránky s ohledem na jejich uplatnění v nezávislém robotickém vysavači.
2.1 Druhy pohonu vhodné pro roboty Mezi bezesporu nejdůležitější část robota patří pohonná jednotka. Druh použitého pohonu ovlivňuje dynamiku, energetickou náročnost, výkon, způsob pohybu a v neposlední řadě také hmotnost. Z výše zmíněných důvodů je třeba pečlivě zvážit výběr tohoto komponentu. V následující části přiblížím principy a poukáži na vlastnosti nejběžněji užívaných motorů pro pohon malých mobilních robotů.
2.1.1
Krokové motory
Krokový motor masově užívaný v digitální technice je druh synchronního točivého stroje, jehož rychlost je řízena elektrickými pulsy. Pokaždé, když přijde impuls, rotor se pootočí o konstantní úhel tzv. krok a zastaví se, odtud název krokový motor. Pokud přicházejí elektrické pulsy periodicky za sebou, motor se roztočí. Při nízkých frekvencích je tento pohyb trhaný - krok, zastavení, další krok, atd. Se zvyšující se frekvencí se pohyb stává plynulým až do meze, kdy rotor přestane stíhat vnější impulsy a nastane skluz rotoru, dalším zrychlováním pulsů motor přestává fungovat úplně. Díky přímé úměře konstantního pootočení při jednom impulsu, lze 4
motor úspěšně regulovat bez použití vnějších systémů se zpětnou vazbou. V praxi je proto nejčastěji motor využíván jako akční prvek číslicových systémů (polohování hlavy tiskárny, počítačově řízené obráběcí stroje, průmyslové manipulátory …) [1].
Princip funkce krokového motoru Základní princip funkce krokového motoru je velice jednoduchý. Motor je rozdělen na dvě části rotor a stator. Rotor je tvořen v základní podobě permanentním magnetem se dvěma póly. Stator je tvořen pólovými nástavci, na nichž jsou navinuty cívky. Pro lepší ilustraci slouží obr. 1. viz níže. Vybudíme-li vinutí statorové cívky elektrickým proudem, vytvoří se na pólovém nástavci statoru severní a jižní magnetický pól dle orientace protékaného proudu. Zmagnetovaný statorový pól si přitáhne (pootočí) odpovídající protikladný pól rotoru. Postupným odpojováním a připojováním cívek za sebou lze dosáhnout plynulého pohybu rotoru. Otáčivý pohyb rotoru zajišťují ložiska, rotor a stator není nijak galvanicky spojen a je mezi nimi vzduchová mezera v řádech desetin až setin milimetrů.
Obr. 1 Základní princip krokového motoru [41]
Druhy krokových motorů Samozřejmě, že výše popsaný mechanismus je pouze základní princip. Pro zvýšení výkonu se využívají zejména konstrukční úpravy, kdy je rotor tvořen z více pólových nástavců vyrobených z jednoho kusu oceli nebo z nalisovaných plechů. Stator se obvykle skládá z osmi pólových nástavců. Dalšího nárůstu výkonu a účinnosti se dosahuje s axiálně polarizovaným rotorem. Takový rotor je vyroben z nemagnetického materiálu, který má ve svém jádru nalisován permanentní magnet. Póly tohoto magnetu jsou vyvedeny ve dvou hladinách nad sebou, tím se zvedne počet pólových nástavců rotoru až na několik desítek. Různým způsobem řízení chodu motoru se reguluje výsledný krouticí moment a jemnost jednoho kroku.[2]
Výhody a nevýhody krokových motorů Výhody: Možnost regulace bez použití externích senzorů Životnost Řízení chodu digitálním signálem
5
Nevýhody: Hmotnost Složitost řízení Bez řídícího obvodu je motor nefunkční
2.1.2
Stejnosměrné motory
Stejnosměrný motor (v anglické literatuře DC motor) je točivý stroj nejrozšířeněji používaný v robotických aplikacích jako pohon robota. Mezi jeho hlavní přednosti pro tyto aplikace patří přibližně lineární mechanické charakteristiky, regulace rychlosti pomocí změny napětí, změna smyslu otáčení prohozením polarity napájení a v neposlední řadě příznivý poměr hmotnost/výkon. Mezi jeho negativní vlastnosti patří hlavně fakt, že většina těchto motorků pracuje ve vysokých otáčkách, proto je nutností použít převodovku. Proto nabízejí výrobci tento motor s převodovkou zabudovanou v jeho obalu. Další problém stejnosměrných motorů je, že kvůli komutátoru nejsou bezúdržbové. I přes tyto nedostatky nabízejí firmy bohaté variace výkonů a převodových poměrů pro tento typ pohonu.[1][2]
Princip činnosti Motor se skládá ze dvou částí statoru a rotoru. Stator je tvořen nejčastěji permanentním magnetem o dvou pólech a tvoří obal rotoru. Rotor je pohyblivá část uvnitř statoru. Obě části jsou od sebe odděleny vzduchovou mezerou. Rotor je tvořen vodičem, kterým prochází proud, a komutátorem (označeným červeně na obr. 2). V praxi je rotor tvořen hřídelí s nalisovanými plechy, na nichž jsou navinuty cívky. Motor funguje na základě specifického chování vodiče protékaného proudem v magnetickém poli: Na vodič začne působit Lorentzova síla. Směr této síly je dán Flemingovým pravidlem levé ruky a je znázorněn na obrázku 2. Konstrukce rotoru a Lorentzova síla nutí vodič vykonat otáčivý pohyb. Zjednodušeně lze říci, že vodič rotoru se začne chovat jako souhlasně zmagnetovaný pól vůči pólu statoru a vzájemně se začnou odpuzovat. Pro opakování tohoto jevu je třeba obrátit polaritu protékaného proudu, což zajišťuje mechanicky komutátor. Rotor je galvanicky propojen s napájecím zdrojem pomocí tzv. kartáčů (označených na obr. 2 modře). Při mechanickém přepínání směru toku proudu se kartáče opotřebovávají a může docházet k jiskrám. [1][2]
Obr. 2 Základní princip stejnosměrného motoru [42]
6
Bezkartáčový stejnosměrný motor Speciální případ stejnosměrného motoru je bezkartáčový motor, který je ve světové literatuře označován BLDC (Brushless DC). Statorem jsou zde navinuté cívky na pólových nástavcích a rotorem je permanentní magnet. Komutace je řízena elektronicky pomocí Hallových sond. Oproti obyčejnému stejnosměrnému motůrku je bezúdržbový a účinnější. Naproti tomu řízení je nákladné a složitější. [3]
Výhody a nevýhody stejnosměrných motorů Výhody Poměr hmotnost/výkon Jednoduché ovládání Přibližně lineární mechanické charakteristiky Pestrá nabídka a dostupnost Nevýhody Nutnost použití převodovky U normálních DC motůrků nutná údržba Nutnost regulace polohy pomocí externího zařízení
2.1.3
Servomotory
Servomotor je stejnosměrný motor modifikovaný pro přesné nastavování polohy. Jeho rozsah pohybu je omezený např.: 90° na každou stranu. Pohyb mimo uvedenou rozteč je mechanicky zablokován. V robotice jsou hojně využívány pro různé elektromechanické polohovací zařízení jako robotické paže, pohyblivé detektory apod.
Princip činnosti K vysvětlení principu funkce servomotoru poslouží obr. 3.
Obr. 3 Řez modelářským servomotorem [43]
7
Servomotor se skládá ze stejnosměrného motorku, který je zpřevodován s výstupní hřídelí. S výstupní hřídelí je také spřažen potenciometr, který dává zpětnou vazbu řídícím obvodům a tím poskytuje informaci o stavu pootočení. Poloha servomotoru je řízena elektronicky. Zjednodušené schéma vnitřní elektroniky je na obr. 4.
Obr. 4 Blokové schéma řídícího obvodu servomotoru [44]
Na vstup servomotoru jsou přiváděny pulsy v podobě pulsně šířkové modulace (PWM). Vstupní signál PWM je upraven monostabilním klopným obvodem (MKO). O podobě úpravy rozhoduje zpětná vazba - potenciometr. Upravený signál se odečte od původního vstupního a výsledkem je rozdílový puls. V závislosti na délce trvání rozdílové pulsu se pomocí zesilovače pootočí motor na jednu nebo druhou stranu.[2][9] V praxi je možné mechanickou úpravu vnitřku servomotoru odstranit blokovaný rozsah pohybu. Po této úpravě je možné použít servomotor pro plynulý pohon malých robotů, avšak nebyl výrobcem pro tuto funkci určen. Jelikož je servomotor primárně polohovací zařízení, nebudu zde uvádět výhody a nevýhody tohoto typu pro pohon robota.
2.1.4
Ostatní pohony
Pro pohon robotů se využívá řada dalších typů aktuátorů, např.: malé spalovací motory, střídavé elektrické motory, lineární motory, chytré kovy (v anglické literatuře Shape-memory alloy - SMA), solenoidy a další… Nicméně výše jmenovaní zástupci nejsou až tak masově využívány nebo se nehodí z různých důvodů (cena, velikost, hmotnost, dostupnost,…) pro použití v robotickém vysavači.
8
2.2 Senzory pro roboty Senzory jsou pro robota prostředek pro interakci s prostředím. Pokud srovnáme robota s člověkem, senzory jsou jako uši, oči, ruce, pokožka apod. Nejčastější použití senzorů u robota je kvůli navigaci. Podle Nováka [2] můžeme navigaci rozdělit na globální a lokální. Globální navigace umožňuje určit polohu robota vůči nějaké inerciální soustavě, příkladem mohou být GPS souřadnice. Lokální navigace nemá žádný pevný bod, ke kterému robot vztahuje svoji polohu a pouze reaguje na nejbližší okolí. Pro robotické vysavače je lokální navigace dostačující.
2.2.1
Sonary
Sonary jsou ultrazvukové senzory pracující na principu echolokace. Součástí senzoru jsou dva ultrazvukové měniče - jeden vysílač, druhý přijímač. Vysílač vyšle sérii zvukových vln o vysoké frekvenci (typicky 40 kHz). Akustické vlny dorazí k překážce, odrazí se a putují zpět k senzoru. Přijímač naopak vyčkává na tento odražený akustický signál tzv. echo a přemění jej v úroveň elektrického napětí. Z doby mezi vysláním zvukového signálu a příjmem echa lze podle rovnice (1) odvodit vzdálenost od překážky. (1) kde d = vzdálenost od překážky [m] c = rychlost zvuku 346 m/s, ve vzduchu při teplotě 20°C [4] t = čas [s]
Obr. 5 Typický představitel sonaru pro malé roboty [45]
V praxi je senzor složen z řídícího mikrokontroléru, budícího obvodu vysílače, vysílače, přijímače, zesilovacího stupně přijímače a komparátoru. Řídícím pulsem je odstartován chod senzoru. Na výstupu se objeví obdélníkový puls, jehož šířka odpovídá vzdálenosti od překážky.
9
Výhody a nevýhody Výhody tohoto typu senzoru jsou široký detekční paprsek, větší rozsah detekovatelných vzdáleností (např.: od 3cm do 3m) a relativně vysoká přesnost.
Obr. 6 „Ghost echo“ [46]
Naopak mezi jeho hlavní nevýhody patří tzv. ghost echo. Jak je patrné z obr. 6, tento jev nastává, když se zvuková vlna neodrazí od překážky přímo zpět, ale pokračuje v jiném směru dále, kde se teprve odrazí zpět. Sonar toto vyhodnotí jako vzdálenější překážku. Další nevýhodou při využití vícero sonarů najednou je detekování echa od jiného sonaru. V neposlední řadě nesmím opomenout špatnou detekovatelnost pohltivých materiálů jako například houba. Významným faktorem ovlivňující výpočet vzdálenosti překážky jsou také vlastnosti prostředí a to zejména vlhkost a teplota vzduchu. Ty zapříčiní změnu rychlosti šíření zvuku a zkreslí výpočet. [2][5][6]
2.2.2
Optoelektronické senzory
Dalším typem hojně využívaných senzorů na poli robotiky jsou optoelektronické senzory. Základní princip funkce těchto senzorů je následující: Senzor se typicky skládá z emitoru a detektoru. Emitor je zde zdroj světelného záření - LED nebo laserová dioda. Jako detektor může posloužit fotorezistor, fotodioda, fototranzistor, CCD pole (z angl. Chargedcoupled device) nebo speciální detektor pozice dopadajícího paprsku (angl. PSD). Emitor vyzáří paprsek světla, ten se odrazí od překážky a dopadá na detektor. U jednodušších detektorů jako je fotorezistor, fotodioda, fototranzistor lze zjistit přítomnost překážky před robotem, vzdálenost překážky je těžce rozlišitelná nebo nepřesná. Tyto vlastnosti nám, ale postačí například k aplikaci sledování čáry nebo k bezkontaktnímu nárazníku.[2]
10
Ke zjištění vzdálenosti překážky se užívají detektory typu CCD nebo PSD. Asi nejužívanějšími optoelektronickými senzory s funkcí detekce vzdálenosti v oblasti malých robotů jsou senzory od firmy SHARP. Firma vyrábí různé řady lišících se rozsahem detekce. Všechny, ale pracují na obdobném principu, jako je na obr. 7.
1 2 3 4 5
– – – – –
infračervená dioda čočka spojná čočka PSD pohyblivá překážka
Obr. 7 Princip infračerveného senzoru od firmy SHARP
Infračervená dioda vyzáří paprsek o vlnové délce 880nm, záření je modulované, tím se zajišťuje vyšší odolnost vůči okolnímu záření. Paprsek se odrazí, spojná čočka ho zaostří a dopadá na PSD detektor. Funkce PSD detektoru spočívá v tom, že generuje dva elektrické proudy, jejich velikost je určena polohou dopadajícího paprsku. [7] Poloha překážky je tedy přímo úměrná analogové velikosti elektrického napětí.
Výhody a nevýhody Mezi výhody patří nižší cena než u sonarů, minimum rušivých elementů, kompaktnost a jednoduché ovládání. Naopak mezi nevýhody je třeba zmínit úzký detekční paprsek.
2.2.3
Taktilní senzory
Taktilní senzory jsou nejjednoduššími detektory překážek. Bývají často realizovány mechanickými spínacími prvky. Používají se jako pojistný
11
element k sofistikovanějšímu způsobu detekce překážky. Jak už z názvu taktilní neboli dotykový vyplývá, k detekci je třeba kontakt s překážkou, tím se sepne spínací prvek a ten většinou změní logickou úroveň na obslužném vstupu řídícího obvodu robota. Příkladem nejběžnějších zapojení je obr. 8 Někdy může být výstupní kanál rušen šumem např.: od motorků, zvláště když je třeba vést senzor po vodiči na větší vzdálenost. Naindukované napětí z okolí by mohlo změnit logickou úroveň bez sepnutí spínače. Proto se doporučuje, užití odporu, jak je znázorněno na obr. 8.[8]
Obr. 8 (1) Aktivní v log.1 (2) Aktivní v log.0 (3) přepínač [47]
2.2.4
Ostatní senzory
Senzory patří k robotice od nepaměti, za léta vývoje dramaticky stoupl počet typů senzorů a způsobů detekce určité veličiny. Proto v kapitole o senzorech věnuji největší pozornost pouze základním a nejvíce používaným typům senzorů pro lokální navigaci u malých mobilních robotů. Zmapovat využití všech možných způsobů pro lokální navigaci rozsah této práce neumožňuje. Uvedu zde alespoň pár příkladů, které nevyhovují požadavkům pro použití v aplikaci robotického vysavače: fotorezistory, akcelerometry, rozpoznávání kamerou, laserová navigace a další ...
2.3 Řídicí systém robota Řídicí systém robota je druhá nejdůležitější část robota. Pokud použiji opět přirovnání k lidskému tělu - řídicí systém je mozek robota. Systém se skládá ze dvou částí: hardwarové a programové. Hardwarová část obsahuje obvody pro komunikaci s periferiemi, paměť a výpočetní jádro. Periferní obvody mění signál získaný z periférií (např. senzorů) na data, s kterými pracuje programová část a naopak. Výpočetní jádro vykonává instrukce vytvořené programovou částí. Paměť slouží k ukládání dat. Programová část má za úkol koordinovat hardwarovou část, analyzovat shromážděné data a reagovat na ně. Vše výše popsané se děje v reálném čase. Výsledkem je pozorovatelné chování robota.[2]
12
Řídicí systémy robota lze podle McComba [9] rozdělit do šesti kategorií: Lidské řízení: Člověk koordinuje akce robota a reaguje na podněty (např.: ovládání robotické ruky, řízení robotického vozítka). Řízení diskrétními součástkami: Robot je vytvořen ze součástek tak, aby na sebe reagovaly. Například dioda svítí před robota, paprsek se odrazí od překážky, fototranzistor detekuje odražený paprsek a rozevírá se, to způsobuje přivření jiného tranzistoru ovládající motůrek. Nevýhodou je, že se systém obtížně rozšiřuje a přizpůsobuje. Mikrokontroléry: Počítač na čipu, obsahuje vše potřebné k řízení robota. Toto je asi nejrozšířenější způsob ovládání robota. Počítačový řídicí systém: Tento systém je řízen pomocí klasické počítačové architektury. Části řídicího systému jsou rozděleny na moduly, které spolu komunikují. Jedná se o často používaný způsob, když nestačí výpočetní výkon mikrokontrolérů. V poslední době je stále populárnější hlavně díky kapesním počítačům (např.: Raspeberry Pi). Vzdálený počítačový řídicí systém: Robot obsahuje pouze části nezbytné pro navázání spojení se vzdáleným počítačem, řízení je tedy vykonáváno vzdáleně přes komunikační kanál (např.: sériový port, Wi-Fi, apod.). Řízení za použití telefonu, tabletu a PDA: Smartphony jsou v současné společnosti masově využívaná zařízení. Disponují dostatečným výpočetním výkonem a standardním komunikačním rozhraním, proto nabízejí variantu univerzálního ovládacího zařízení. Nicméně jde o cestu plnou kompromisů, neboť zařízení není primárně konstruováno k ovládání externí elektroniky. Při svém návrhu jsem se držel klasického stylu, robota řízeného mikrokontrolérem, proto budu dále popisovat vlastnosti toho zařízení.
2.3.1
Mikrokontrolér
Mikrokontrolér (MCU) je programovatelný jednočipový mikropočítač v podobě integrovaného obvodu. Jinými slovy to znamená, že obsahuje všechny důležité části velkého počítače v miniaturní formě na jednom čipu. První prototyp takového mikropočítače byl vyroben firmou Texas Instruments v roce 1971, na trh se dostal až o 3 roky později pod označením TMS1000. [10] Mikrokontrolér byl v základu vybaven centrální výpočetní jednotkou (CPU), pamětí (s oddělenou programovou a datovou sekcí), vstupně/výstupními porty a vnitřním oscilátorem. [11] Za léta vývoje prodělal mikrokontrolér řadu změn k lepšímu. Vzhledem k univerzálnosti jeho využití v řídících aplikacích se na trhu uchytil a stal se 13
běžně používanou součástkou. Výrobci se začali předhánět ve vývoji a výsledky se dostavily. Integrovaný oscilátor zajišťující hodinový signál mikrokontroléru, A/D převodník, komparátory, komunikační moduly (USB, CAN, Ethernet, I2C,…), PWM moduly, ovladače dotykových zařízení a mnoho dalších, to je dnes už standardní vybavení mikrokontrolérů. Mimo bohatou nabídku modulů se s časem zvedl výpočetní výkon, snížila se spotřeba a zmenšily rozměry. Mezi nejznámější výrobce mikrokontrolérů dnes patří Microchip, Atmel, STMicoelectronics, Texas Instuments, Freescale Semiconductor a další.
Obr. 9 Mikrokontroléry [48]
Univerzálnost, široká nabídka periférií a soběstačnost mikrokontroléru z něj činí ideální prostředek pro řízení robota. K úspěšnému naprogramování mikrokontroléru je potřeba, znát alespoň trochu mechanismus jeho funkce. Jelikož každý výrobce má vždy nějakou část odlišnou od ostatních, budu popisovat základní principy mikrokontroléru od výrobce Microchip s označením PIC, konkrétně z řady 18F.
Obr. 10 Příklad Harvardské architektury v mikrokontroléru [13]
Mikrokontrolér PIC používá tzv. Harvardskou architekturu. Tato architektura je založená na myšlence oddělených sekcí paměti. Jedna sekce je programová, druhá je datová. Programová sekce je paměť typu non-volatile ROM (Read-OnlyMemory). Slouží k uložení obslužného programu vytvořeného uživatelem i po odpojení napájecího napětí. Rodina PIC18F používá k ukládání programu paměť typu flash. Ta je elektronicky programovatelná a lze do ní i zapisovat. Program se skládá z posloupnosti instrukcí obsažených v instrukční sadě. Instrukční sada jsou povely, kterým mikrokontrolér rozumí a umí je vykonat (např.: odečti, sečti,…). Sada je definována 14
výrobcem. Mikrokontrolér, který používá tzv. redukovanou instrukční sadu (RISC), umí vykonat pouze jednoduché a rychlé instrukce. Datová sekce je naopak tvořena pamětí typu RAM (Random-accesmemory). Výhodou je možnost čtení i zápisu do této paměti. Naopak nevýhodou je ztráta dat bez připojeného zdroje napájecího napětí. Její vlastnosti z ní tvoří ideální paměť pro práci s daty. Výpočetní jádro má přístup k oběma typům pamětí najednou, to mu umožňuje vykonávat efektivně instrukce pro manipulaci s daty. Nicméně CPU může přistupovat pouze k osmi bitům datové paměti najednou, tzn. jedna informace je tvořena kombinací osmi nul a jedniček. Naopak do programové paměti může přistupovat až k šestnácti bitům najednou. [13][14] Při startu chodu mikrokontroléru začíná program na nejnižší adrese v programové části paměti. CPU přečte, vykoná instrukci, a pokud první instrukce není skok do jiné části programu, přejde na následující instrukci nacházející se o jednu adresu výše. Posloupnost instrukcí ovlivňuje uživatel napsáním a nahráním programu do programové paměti ROM. Zdrojový kód programu lze psát programovacím jazykem a přeložit překladačem do strojového kódu. Strojový kód je „jazyk“, jemuž rozumí mikrokontrolér. Skládá se z posloupností nul a jedniček. Jelikož pro člověka je posloupnost nul a jedniček nečitelná, vymyslel si na pomoc programovací jazyk. Nejprve to byl nižší jazyk tzv. assembler, jazyk nejvíce připomínající strojový kód a zároveň čitelný pro člověka. Příkladem jsou následující řádky: MOV PORTB,0b00000001; // naplní 0.bit registru PORTB logickou 1 ADD PORTB, PORTA; // přičti obsah registru PORTA k obsahu registru PORTB Assembler je sice čitelný pro člověka, ale při složitějších aplikací je zdrojový kód z tohoto jazyku dlouhý a nepřehledný. To vedlo k použití vyšších programovacích jazyků jako je C, C++ apod. S nárůstem popularity mikrokontrolérů a elektroniky všeobecně začali výrobci poskytovat vývojová prostředí, v nichž je možno úhledně psát zdrojový kód ve vyšším programovacím jazyku, případně použít předdefinované funkce v podobě knihoven. Součástí vývojového prostředí je rovněž překladač, který napsaný zdrojový kód přeloží do strojového kódu. Soubor se strojovým kódem je pak nutné pomocí programátoru nahrát do paměti v mikrokontroléru. Programátor je rovněž běžně komerčně dostupný a většinou dokáže obsluhovat širokou řadu vyráběných mikrokontrolérů. [12][13][14]
PWM modul PWM modul je součástí CCP (Capture/Compare/PWM) periferie nacházející se na téměř každém moderním mikrokontroléru. PWM modul generuje obdélníkové pulsy, u kterých lze nastavit frekvenci a šířku pulsu. Signál se u robota využívá na řízení výkonu stejnosměrného motoru. Nastavení šířky pulsu vnímá motor v konečném důsledku jako změnu napájecího napětí, proto lze tímto způsobem regulovat výkon.
15
A/D převodník Další standardní výbavou mikrokontrolérů je A/D převodník. Analogově digitální převodník, jak z názvu plyne, slouží k binární reprezentaci analogové hodnoty napětí. U robotů se nejčastěji využívá k získávání dat od senzorů.
Přerušení Přerušení je speciální událost, která mění tok programu. Nastává při splnění určité podmínky (např.: přetečení čítače, při změně úrovně elektrického napětí na vstupním portu, při dokončení A/D konverze, apod.). Po splnění některé z těchto podmínek příslušné obvody generují signál přerušení, a pokud je přerušení programově povoleno, dojde ke skoku do obslužné funkce přerušení. Uvnitř funkce pro obsluhu přerušení je nutné postupně provést tyto úkony: 1) Zakázat přerušení – pokud chceme vykonat obsluhu přerušení, je nezbytné, aby se během obsluhy negenerovalo další přerušení. 2) Uložit registry – WREG, STATUS a BSR registry je doporučované uložit do uživatelem vytvořené proměnné. [27] 3) Vykonat funkci pro obsluhu přerušení 4) Navrátit zpět obsahy registrů WREG, STATUS a BSR. 5) Vynulovat Flag Bit – různé přerušení generují různé flag bity, testováním flag bitů je možné rozlišit, které přerušení nastalo. Flag bit je nutný na konci funkce obsluhy přerušení vynulovat, aby se přerušení negenerovalo stále dokola. 6) Povolit přerušení – po skončení obslužné funkce program pokračuje na následující adrese před skokem do přerušení. Povolením přerušení na konci obslužné funkce, se zajišťuje možnost opětovného využití obslužné funkce.
2.3.2
H-můstek
Jelikož mikrokontrolér poskytuje omezený elektrický proud na jeden pin (25mA), avšak pro funkčnost motůrku je potřeba typicky více, je nezbytné použít externí součástku ke spínání motůrku. Typickým představitelem pro tuto úlohu je H-můstek. H-můstky se dnes vyrábějí v integrované podobě a jejich princip je patrnější z obr. 11 a 12.
16
Obr. 11 H-můstek s aktivní jednou stranou [15]
Obr. 12 H-můstek s aktivní druhou stranou [15]
H-můstek se skládá ze čtyř spínacích prvků označených na obrázcích 11 a 12 jako Q1 až Q4. Nejčastěji jde o tranzistory bipolární nebo MOSFET. Jejich hlavním úkolem je spínat induktivní zátěž jako jsou motůrky, a to ve dvou směrech. Když je otevřen tranzistor Q1 a Q4, proud motůrkem teče jedním směrem, jak je patrné na obrázku 11. Pokud otevřeme tranzistory Q3 a Q2 jako na obr. 12, proud poteče opačným směrem, což má za následek otáčení motůrku na druhou stranu. Spínání tranzistorů lze kontrolovat logickými signály z mikrokontroléru. Napájení integrovaných Hmůstků je pro logickou a zatěžovanou část oddělené. To v praxi znamená, že kombinací logických úrovní z mikrokontroléru lze určovat směr otáčení motůrku. Diody D1-D4 jsou tzv. flyback diody. Při odpojení motůrku od zdroje, diody odvádí energi, která se naakumulovala v indukčnosti. [15] [16]
2.4 Akumulátory Robot pro svoji funkci potřebuje zdroj elektrické energie. Použití primárních baterií by bylo nákladné a nešetrné k životnímu prostředí, proto dalším logickým kandidátem jsou sekundární baterie neboli akumulátory, přesněji elektrochemické akumulátory. Akumulátor se skládá ze záporné a kladné elektrody a elektrolytu. Elektrolyt je médium obvykle kapalná látka, které vede elektrický proud a reaguje se zápornou elektrodou za vzniku elektronů. Elektrony přijímá kladná elektroda a vzniká elektrický proud. Chemická reakce pokračuje, dokud je anoda schopna tvořit elektrony. Tento proces je v případě akumulátorů vratný. [17] Akumulátor je důležitou součástí návrhu robota a je potřeba si určit hlavní požadavky, podle kterých vybírat nebo naopak meze, které jsou už neakceptovatelné. Mezi důležité vlastnosti, podle kterých je třeba se 17
orientovat, patří: kapacita, hmotnost, životnost, cena, vnitřní odpor a maximální vybíjecí proud.
2.4.1
Ni-Cd
Nikl-Kadmiové baterie mají velmi nízký vnitřní odpor, udržují si relativně stálé napětí při vybíjení a snáší vysoké vybíjecí i nabíjecí proudy. Jejich životnost se pohybuje přibližně okolo 500 cyklů. [17] Nevýhodou je vyšší riziko vzniku paměťového efektu, kdy se akumulátor nevybije celý a navenek se chová, jakoby ztratil notnou část své kapacity. Paměťovému efektu lze předcházet používáním kvalitní nabíječky, která baterii nejdříve vybije a poté nabije. Další nevýhodou je přítomnost jedovatého kadmia, proto se od používání snaží upouštět. Zanedbatelné není ani samovolné vybíjení článku. [17][18]
2.4.2
Ni-MH
Nikl-metal hydridový akumulátor je oproti Ni-Cd vyroben z ekologičtějších materiálů a přitom si zachovává podobné vlastnosti jako Ni-Cd článek. Mezi jeho výhody patří vyšší kapacita než Ni-Cd, menší náchylnost k vytvoření paměťového efektu, částečná recyklovatelnost, bezpečnost při nabíjení a vybíjení velkými proudy a vyšší životnost. Naopak mezi nevýhody patří složitější nabíjení, snížení výkonu při nízkých teplotách, relativně vysoké samovolné vybíjení a při skladování ve stavu hlubokém vybití dojde k poškození článku. [17][18]
2.4.3
Olověné
Olověné akumulátory (angl. Lead Acid) jsou nejstarší, ale stále velice populární a používaný typ akumulátoru. Mezi jeho hlavní výhody patří cena, dostupnost, bohatá variace kapacit, léty prověřený výrobní proces, proudově vysoce zatížitelný, recyklovatelnost použitých materiálů a nejmenší samovolné vybíjení. Naopak mezi jeho nevýhody patří slabý poměr hmotnost/hustota energie, pomalé nabíjení, nutnost skladování v nabitém stav a nižší životnost, která se dá rychle snížit hlubokým vybíjením akumulátoru. [17][18]
2.4.4
Li-pol/ Li-ion
Lithium-iontové a Lithium-polymerové jsou představitelé relativně nového typu akumulátoru. Jejich hlavní předností je poměr hmotnost/kapacita, vysoká energetická hustota, schopnost zvládat velké 18
vybíjecí a nabíjecí proudy, dlouhá životnost, vysoké napětí na jeden článek 2.5 – 4.3V [17] a relativně malé samovybíjení. Mezi nevýhody patří vysoká cena, nutnost přítomnosti ochranné elektroniky, při přebíjení a zdeformování jsou nebezpečné a hořlavé. [17][18] Pro shrnutí vlastností a lepší přehled slouží tab. 1. Tabulka je pouze orientační, jiné zdroje uvádějí odlišné hodnoty, nicméně relace mezi jednotlivými druhy je podobná. Tabulka 1 Orientační porovnání vlastností běžných typů akumulátorů [19]
Typ akumulátoru
NiCd
NiMH
SLA
Jmenovité napětí [V]
1,2
1,2
2,0
1,5
3,6
Hustota energie [Wh/l]
140
180
85
380
200
Hustota energie [Wh/Kg]
39
57
30
?
90
Samovybíjení [%/den]
1
1,5
0,1
0,01
0,5
Počet nabíjecích cyklů
1000
500
>1000
20
400
1h
?
1h
Rychlonabíjení
15 min 30 min
RAM Li-ion
Pozn.: SLA – bezúdržbový olověný akumulátor, RAM – alkalický akumulátor.
2.5 Vysavače Historie vzniku vysavače se datuje již od roku 1860. Byl to Američan Daniel Hess, který vytvořil a nechal si patentovat první světu známý prototyp vysavače. Jednalo se spíš o manuální kartáčový čistič koberců s namontovaným zařízením, které vytvářelo jemný podtlak. Patent je veden jako kartáčový čistič koberců. [20] Postupně se začaly objevovat nové prototypy od ručních přes benzínově poháněné. Až roku 1901 vynalezl Hubert Cecil Booth z Londýna první elektricky poháněný vysavač. [21] Princip funkce vysavače je patrnější z obr. 13. Vysavač se obvykle skládá z ventilátoru připojeného k elektricky poháněnému motoru, z nádoby na hromadění nečistot, filtru, nasávací hadice a výfukového otvoru. Vysavač využívá fyzikálních vlastností proudění tekutin. Motor roztáčí ventilátor, lopatky rotujícího ventilátoru způsobují změnu tlaku. Blíže ke středu ventilátoru je tlak menší, naopak lopatky vytlačují vzduch pryč, tedy na kraji je tlak větší. Vhodným uložením ventilátoru dosáhneme efektu, že se
19
středem z jedné strany vzduch nasává a druhou stranou je vyháněn ven. Nasáváním vzduchu z vnitřku vysavače se vytvoří podtlak, který způsobí nasávání vzduchu spolu s nečistotami skrz hadici. Modifikace průřezu vnitřku sacího ústrojí zajišťuje podle Bernoulliho principu, že nečistoty zůstávají v širší části (nádobě na nečistoty) a neputují dále k ventilátoru. Pro jistotu se před ventilátor řadí ještě prachový filtr, aby se miniaturní částečky prachu nevířily dále. [22][23]
Obr. 13 Princip vysavače [22]
3
Praktická část
V následující části popíši postup návrhu a realizace autonomního robotického vysavače. Mým úkolem je sestavit robotický vysavač, který se bude snažit konkurovat komerčně dostupným robotickým vysavačům. Usoudil jsem, že nejpravděpodobnějším kritériem, ve kterém by se dalo vyrovnat, je cena. Ceny robotických vysavačů v České Republice se k roku 2013 pohybují přibližně od dvou do sedmnácti tisíc. [25] Veškerý výběr komponentů je tedy kompromisem mezi cenou a použitelností. Dalším hlediskem podle, kterého jsem řídil výběr komponentů, bylo okolí, v němž se bude robot pohybovat, možnost budoucí modifikace a celková univerzálnost použitých komponent. Podlaha v celé naší domácnosti, kromě koupelny a WC, je laminátová bez prahů mezi jednotlivými pokoji. Sociální zařízení má podlahu dlážděnou. Podobné prostředí se blíží k ideálním podmínkám. Funkci robotického
20
vysavače neohrožují žádné schody, náhlé změny povrchu nebo nezdolatelné překážky. Z celkového rozboru základních vlastností, jimiž bude robot disponovat, jsem vytvořil blokové schéma, viz obr. 14. Výběr jednotlivých komponentů popíši v následující části práce.
Obr. 14 Blokové schéma robotického vysavače
3.1 Výběr motůrku Při návrhu robota je nutné nejdříve vybrat vhodný typ a model motůrku. Od jeho katalogových vlastností se poté odvíjí návrh napájecích obvodů. Pro pohon jsem zvolil klasický stejnosměrný motůrek se zabudovanou převodovkou. Rozhodoval jsem se na základě ceny, dostupnosti a jednoduchého ovládání. Nyní je třeba vybrat správný model motůrku. Správný model musí mít dostatečný výkon, krouticí moment a rychlost jeho otáček musí vyhovovat plynulému pohybu po místnosti. Při hledání optimálního výkonu motůrku jsem vycházel z Novákovy knihy Mobilní roboty [2]. K nalezení vhodného typu poslouží modelový příklad pohybu robota po nakloněné rovině. Jelikož se bude robotický vysavač pohybovat po rovné dřevěné podlaze, zvolil jsem nakloněnou rovinu spíše symbolickou, tj. stoupání 2 cm na vzdálenost 1 m. Na obr. 15 jsou znázorněny síly působící na robota při pohybu po nakloněné rovině.
21
Obr. 15 Síly působící na robota při pohybu na nakloněné rovině
K úspěšnému rozpohybování robota do kopce je nutné, působit větší silou než je síla F. Síla F reprezentuje všechny vlivy, které brání v jízdě, a s kterými se musí motůrek vypořádat, aby rozjel robota. (2) Jednotlivé síly bránící rozjezdu: Fw - síla potřebná k překonání výškového stoupání (výslednice tlakové normálové síly a gravitační síly). (3) Ft - Třecí síla, přesněji síla valivého odporu dvou kol. Pro jízdu po nakloněné rovině platí: (4) kde = součinitel valivého odporu. Typické hodnoty pro hladký povrch (beton= 0,015 – 0,025, dlažba= 0,02 – 0,03).[14] Fa – odpor zrychlení způsobený setrvačností posuvných hmot. [14] (5) Fs - odpor zrychlení způsobený setrvačností rotujících hmot, kde [14] (6) JC = celkový moment setrvačnosti, ε = úhlové zrychlení a r = poloměr hnaného kola.
22
Celkový moment setrvačnosti (neuvažuje se účinnost převodovky a motoru) se skládá z: (7) = moment setrvačnosti vztažený přes převodovku k hnanému kolu, = moment setrvačnosti převodovky, = moment setrvačnosti hnaného kola. (8) = moment setrvačnosti motůrku i = převodový poměr převodovky Dosazením všech vyjádřených odporů do (2): (9) , po úpravě vznikne: (10) Jelikož při návrhu nejsou známy přesné údaje motůrku s převodovkou, je obtížné určit odpor způsobený setrvačností rotujících hmot. Proto se pro jednoduchost podle F. Vlka často nahrazuje bezrozměrným součinitelem rotačních odporů ϑ. [24] Výsledná síla se zjednoduší na: (11) Výkon motůrku tedy vyjádříme jako: (
)
(12)
Potřebný moment tedy jako: (13) ω – úhlová rychlost.
23
Pro výpočet potřebného výkonu jsem zvolil následující parametry: m = 5 Kg – hmotnost robota a všech jeho částí v = 0,2 m/s – rychlost robota a = 0,1 m/s2 – zrychlení pohybu α = 1,146° - sklon dráhy r = 0,04 m – poloměr hnaného kola ξ = 0,015 součinitel valivého odporu ϑ = 1,3 součinitel rotačních odporů [24]
Dosazením parametrů do rovnice (12): (
)
(14)
Jelikož převodovky nejsou stoprocentně účinné a převod hnané síly není bezeztrátový, je třeba výkon předimenzovat. Podle Nováka [2] jsem zvolil předimenzování o 50%, tedy: (15) Protože jsem při návrhu počítal s dvěma poháněnými kolečky, je třeba výkon rozdělit mezi dva motůrky: (16) Ze zadané rychlosti robota a vypočítaného výkonu lze dopočítat potřebný moment motůrku: (17) Moment je třeba převést na jednotky ve světě více užívané, tím se usnadní vyhledávání:
(18)
Při výběru motorku je nutný ještě poslední parametr, tj. rychlost otáčení v otáčkách za minutu. Otáčky lze vypočítat ze zadané rychlosti a známého poloměru koleček. (19)
24
Nyní jsou známé potřebné parametry pro výběr motůrku. Na základě dostupnosti jsem se rozhodl pro model GM12 – N20VA250 od výrobce Shenguang Science & Technology Co., Ltd. [26] Parametry vybraného motůrku při zátěži jsou: U = 5 V – napájecí napětí I = 200 mA – odebíraný proud při zátěži n = 35 ot/min - rychlost otáčení M = 770 g-cm krouticí moment Is = 0,6 A – odebíraný proud při zaseknutí motůrku Jelikož nebyl dostupný motůrek s požadovaným momentem a zároveň s požadovanými otáčkami, zvolil jsem sice pomalejší verzi, ale zato s dostatečným momentem.
3.2 Obvodový návrh K návrhu obvodu je třeba znát nejdříve základní komponenty robota. Jelikož jsem se dříve již setkal s mikrokontroléry PIC od firmy Microchip, dal jsem přednost právě této volbě. Jako senzory jsem zvolil dva optoelektronické detektory překážek od firmy SHARP s rozsahem detekce od 4 do 30 cm [29], doplněné o taktilní senzory vpředu a vzadu v podobě mikrospínačů. K výběru optoelektronických detektorů mě vedla hlavně cena a fakt, že robot je určen pro pohyb uvnitř bytu plného nábytku. Použití ultrazvukových sonarů by mohlo vést k nepřesné detekci překážek způsobené „ghost“ efektem.
3.2.1
Obvody pro řízení
Mikrokontrolér Mikrokontrolér PIC jsem zvolil z řady 18F konkrétně 18F45K22 ve čtyřiceti pinovém provedení. Mikrokontrolér je z řady vysokovýkonných zařízení a disponuje následujícími vlastnostmi: 16 bitů široké instrukční slovo, 8 bitů široké datové slovo, bohatá a flexibilní oscilátorová struktura (tři vnitřní oscilátory, externí oscilátory nastavitelné až do 64 MHz), 10bitový A/D a D/A převodník, nízko energetický mód, 35 vstupně-výstupních pinů, obvody přerušení, dva plnohodnotné a tři rozšířené CCP moduly a další. [27] K výběru tohoto typu mě vedl poměr cena/výkon. Ceny se od nižší výkonové kategorie moc neliší, proto jsem zvolil mikrokontrolér s relativně bohatou výbavou. Další důvodem pro výběr je fakt, že do budoucna také počítám s rozšířením funkcí a přidáním dalších periférií.
25
Obr. 16 Schéma zapojení MCU PIC v robotickém vysavači
Základní schéma zapojení je znázorněno na obr. 16. Mikrokontrolér je napájen napětím 5V. Mezi napájecí a zemnící piny jsou připojeny blokovací Kondenzátory, mají za úkol vyfiltrovat napájecí napětí od ̅̅̅̅̅̅̅̅ vysokofrekvenčních složek. pin je připojen přes rezistor k napájecímu napětí. Pokud je přivedena na tento pin logická nula mikrokontrolér se resetuje. Piny RA0 a RA1 slouží k připojení výstupů z optoelektronických senzorů SHARP. Součástí PORTUA je A/D převodník. Piny RC2 a RB3 slouží k regulaci výkonu motůrku pomocí PWM signálu. Piny RC4 a RC5 obstarávají řízení směru otáčení jedné strany a piny RB1, RB2 obstarávají řízení směru druhé strany. Piny RB4 až RB7 vyvolávají přerušení při změně napěťové úrovně na jejich vstupu, to z nich dělá ideální kandidáty na připojení taktilních senzorů.
H-můstek Ke spínání motůrků jsem zvolil integrovaný H-můstek od firmy Texas Instruments s označením SN754410. Integrovaný obvod obsahuje dva plnohodnotné H-můstky a umožňuje spínat induktivní zátěž s protékaným proudem až 1A na jeden motůrek bez použití vnějšího chlazení. Motůrek, který jsem zvolil, může odebírat maximálně 0,6A, proto je volba SN754410 dostačující. Každý H-můstek má zvláštní vstup „enable“,který umožňuje připojením PWM signálu regulovat výkon motůrků. Funkce je více patrná z obr. 16. Motůrek je připojen mezi výstupy Y1 a Y2. Přivedením log. 1 na vstup A1 a log. 0 na vstup A2 se na výstupu objeví Y1 = 5V (stav High), Y2 = GND (staw Low). Motůrek se roztočí na jednu stranu, prohozením logických stavů na A1 a A2 se roztočí na stranu opačnou. Přivedením PWM signálu na vstup EN1,2 se funkce H-můstku povoluje/zakazuje. Rychlým střídáním těchto stavů se zajišťuje regulace výkonu. [16] 26
Obr. 17 Rozložení pinů, pravdivostní tabulka a logické schéma SN754410 [16]
3.2.2
Napájecí obvody
K navržení napájecích obvodů je třeba znát všechny součástky, které potřebují externí napájení a zdroj elektrické energie, respektive velikost jeho napětí.
Akumulátor Výběru akumulátoru předcházel odhad jak velkou kapacitu a jak velké napájecí napětí zvolit. Při výběru kapacity jsem se nechal inspirovat komerčně nejúspěšnějším vysavačem iRobot Roomba. Tod E. Kurt ve své práci [28] zmiňuje, že starší verze těchto vysavačů používaly akumulátory o kapacitě 3600 mAh a odebíraly proud mezi 1500 a 2000 mA. To znamená, že vydržely pracovat přibližně dvě hodiny. Udělal jsem tedy odhad předpokládané spotřeby konstruovaného prototypu. Motůrky pro pohon by měly odebírat něco okolo 400 mA s rezervou 500 mA, odběr sacího motůrku jsem odhadnul na 500mA a mikrokontrolér se senzory podle dokumentace odebírají maximálně 200mA a 2x22 mA [27][29]. Celkový odhadovaný odběr by tedy mohl být přibližně 1300 mA. S přihlédnutím na účinnost napájecích měničů vyplývá, že k tomu, aby prototyp pracoval dvě hodiny, bude zapotřebí kapacita přibližně 3000mAh. Výběr napájecího napětí se obvykle odvíjí od použitých motůrků. U malého robota potřebuje motor obvykle nejvyšší napájecí napětí. V mém případě potřebují motůrky na pohon pouze 5V, nicméně sací motor, který ještě není vybrán, obvykle funguje na vyšším napětí cca 9 – 12 V. Je výhodné použít, jednu ze zátěží na stejné napětí jako napětí zdroje. Omezí se tím potřeba více měničů napětí. Stejnosměrné motůrky o jmenovitém napětí 9-12 V, mají při zaseknutí relativně veliký proudový odběr běžně 1A a více. [30] Jelikož dostupnost zvyšujících se měničů napětí s vysokým proudovým odběrem je omezená, rozhodl jsem se použít dostatečně vysoké napájecí napětí, aby se dal sací motůrek spínat rovnou ze zdroje. Rozhodl jsem se pro napájecí napětí 12 V.
27
Hlavním kritériem pro výběr akumulátoru byla cena, proto jsem hned na začátku vyřadil akumulátory typu Li-ion a Li-pol. Samotný akumulátor je třeba doplnit o nabíječku. Nabíječka pro Ni-MH a Ni-Cd akumulátory bývá zpravidla dražší než nabíječka na olověné akumulátory. Srovnání na příkladu [31][32], kdy je nabíječka na olověné akumulátory levnější o 100 Kč. Cena samotného akupacku složeného z Ni-MH nebo Ni-Cd a olověného akumulátoru je už rozdílná výrazněji. Ni-MH akupack se jmenovitým napětím 12V stojí cca 1500 Kč [33]. Naproti tomu cena olověného akumulátoru se jmenovitým napětí 12V, a kapacitou dokonce více než 3000mAh, se pohybuje okolo 350 Kč. Z výše uvedených údajů vyplývá, že jsem se rozhodl pro použití olověného akumulátoru. Nevýhodou tohoto typu akumulátoru je prostorová náročnost a hlavně jeho hmotnost.
Měniče napětí Jelikož z 12V baterie nejde přímo napájet obvody vyžadující napájecí napětí 5V, je nutné použít měniče napětí. Měniče lze rozdělit do dvou základních skupin lineární a spínané. Lineární potřebují k regulaci napětí vždy vyšší napětí na vstupu a menší napětí na výstupu. Rozdíl energie mezi vstupem a výstupem je přeměněn v teplo neboli ztracen. Naopak spínané regulátory fakticky navzorkují vstupní energii a pomocí akumulačních prvků, kondenzátorů a cívek, ji vhodným spínáním převádějí na výstup. To vede k vyšší účinnosti a menším ztrátám elektrické energie. Při použití baterie jako napájecího zdroje je tedy efektivnější použít spínané regulátory a to i za cenu vyšší pořizovacích nákladů. Jelikož už jsem v minulosti zkoušel pracovat s mikrokontroléry, měl jsem k dispozici spínaný regulátor k napájení mikrokontroléru. Rozhodl jsem se ho využít v robotickém vysavači. Základní schéma je na obr. 18.
Obr. 18 Schéma zapojení spínaného regulátoru pro napájení MCU [35]
Regulátor LM2574 udržuje na výstupu napětí 5V a je schopen snášet zatěžovací proud 0,5 A. LM2574 je v provedení integrovaného obvodu a ke své funkci potřebuje čtyři externí součástky. Měnič pracuje s účinností 77%. [35]
28
Obr. 19 Schéma zapojení spínaného regulátoru pro napájení pohonu [36]
Další spínaný regulátor je nutný použít pro napájení motůrků. Použité stejnosměrné motůrky pro pohon odebírají při 0 ot/min, tedy při zaseknutí nebo rozjezdu, špičkový proud 0,6 A na jeden motůrek. Proto je měnič nutný dimenzovat na výstupní proud 1,2 A s rezervou spíše 1,5 A. Z dostupných měničů jsem vybral LM2576, který disponuje nastavitelným výstupním napětím, zvládá proudovou zátěž až 3A a pracuje s účinností 77%. Bohužel se mi nepodařilo sehnat s nižší proudovou zátěží, nicméně rozdíl v ceně by měl být minimální (cca 10 Kč). Schéma zapojení je na obr. 19.
3.2.3
Elektrické schéma celého systému
Spojením jednotlivých výše popsaných části vzniká ucelený návrh robotického vysavače s prostorem pro budoucí vylepšení. Elektrické schéma celého projektu je možno nalézt v příloze. (1) Schéma je navrhované pomocí softwaru Eagle CadSoft. Seznam použitých součástek je k dispozici rovněž v příloze.(2) Celý obvod je realizován na univerzálním plošném spoji z důvodu možné budoucí modifikace ve velkém rozsahu.
3.3 Programová část Programová část se skládá z jednotlivých problémů, které bylo třeba ošetřit a následně spojit do jednoho celku. Řídící program je napsán v jazyce C. Vývojové prostředí jsem použil MikroC Pro for PIC od firmy MikroElektronika. Demo verze vývojového prostředí je ke stažení zdarma na webových stránkách firmy. [37] Demo verze je omezena délkou programu. Prostředí jsem si vybral kvůli jeho přehlednosti a bohatým knihovnám, které umožňují přehlednější a jednodušší obsluhu mikrokontroléru. Jako programátor jsem použil populární PicKit2 od firmy Microchip. [38]
29
3.3.1
Ovládání pohybu
Ovládání směru pohybu obstarávají jednoduché funkce forward(), stop() a reverse(). Obsahem funkcí jsou pouze změny logických úrovní na portech, které řídí směr chodu motůrků. K regulování výkonu slouží již zmíněný PWM signál. Obsluha PWM signálu je za použití knihoven: PWM1_Init(5000); // nastaví PWM modul na frekvenci 5 kHz PWM1_Set_Duty(200); // volbou čísla v rozmezí 0-255 se nastavuje duty cycle, 0 představuje 0% výkonu, 255 představuje 100% výkonu PWM1_Start(); // spustí PWM signál na příslušném pinu PWM1_Stop(); // přeruší PWM signál
3.3.2
Obsluha senzoru
K detekci překážek je třeba neustále vyčítat a vyhodnocovat data ze senzorů. K vyčítání dat slouží A/D převodník. K obsluze A/D převodníků za použití knihoven nám postačí pouze jeden příkaz: adc_value1 = ADC_Read(1); Přečte analogovou hodnotu napětí na kanálu AN01 a uloží jej do proměnné adc_value1 v binární podobě (10-bitů). Cílem optoelektronických senzorů je, aby robotický vysavač zastavil před překážkou a neponičil tak například nábytek. K tomu je třeba z dokumentace získat tabulku nebo graf závislosti výstupu senzoru na detekované vzdálenosti. Výstupní hodnoty k požadované detekční vzdálenosti poté použít v rozhodovací úrovni při obsluze A/D převodníku. Jelikož jsem si chtěl ověřit funkci detektoru SHARP, provedl jsem experimentální měření. Měření jsem provedl v prostředí, kde se bude robot pohybovat, abych podchytil případné nestandardní chování. Měřením jsem se snažil zmapovat detekční oblast senzoru. Při mapování detekční oblasti jsem zkoušel různé kombinace překážek a uspořádání senzorů. Měření jsem provedl pomocí archu papíru, na který jsem vynesl X a Y souřadnice s rozlišením 2 cm. Senzory jsem rozmístil v prvním případě paralelně vedle sebe, tak aby se jejich detekční paprsky nekřižovaly. V druhém případě jsem senzory rozmístil tak, aby se jejich detekční paprsky překřižovaly. Postupným umísťováním překážky a zaznamenáváním hodnot výstupu senzoru vznikla přibližná mapa detekčního paprsku, viz tabulka 2 a 3. Provedené měření ilustruje přiložené fotografie, viz příloha (6). Při měření jsem vypozoroval, že senzor je relativně citlivý na změnu osvětlení. Poměrně častým jevem také bylo, že senzor na okraji detekční oblasti nedržel stálou hodnotu výstupu, ale objevovaly se rušivé pulsy.
30
Podle McComba [9] lze tyto jevy utlumit hardwarovým a softwarovým řešením. V prvém případě je třeba připojit kondenzátor (100nF) mezi napájecí a zemnící vývod pro odstranění špiček ze zdroje. Při softwarovém Tabulka 2 Mapa detekčního paprsku paralelní kombinace
26 24 22 20 18 16 14 12 10 8 6 4 2 Y/X [cm]
500 400
2 4
6
8
400 350 330
400 550 650 500 500 400
430 530 630 450
650 780 900 700
550 700 800 550
850 1000 1000 880
900 1000 1000 700
10 12 14
16
18
20
22
24
26
28
30
32
34
36
38
40
Pozn.: Parametrem je výstupní napětí senzoru [mV]. řešení je třeba ke čtení ze senzoru použít programovou smyčku, ve které se bude hodnota výstupu senzoru vyčítat vícekrát. Mezi jednotlivými čtení je vhodné udělat alespoň 50ms pauzy. Dalším krokem je vyčtené výsledky zprůměrovat a rozhodovat se na základě průměrné hodnoty. Tabulka 3 Mapa křížených detekčních paprsků
22 430/ 430/ 430 500 570 450 440
20 18 16 14 12 10 8 6 4 2 Y/X [cm]
520/ 530/ 500/ 500 400 500 600
680 888 880 800 700 670
2
4
6
8 10 12 14
16
18 20
22
680 780 650
600 875 1050 1250 1400 1000
24
26
28 30
32
34
36
38 40
Pozn.: Parametrem je výstupní napětí senzoru [mV]. Z důvodů konstrukčního uspořádání jsem se rozhodl použít paralelní konfiguraci optoelektronických senzorů. Při selhání detekce překážky pomocí křížového uspořádání, by mohlo dojít k poničení senzorů. Jako rozhodovací úroveň jsem použil 1V, což by podle dokumentace a
31
orientačního měření mělo znamenat detekci ve vzdálenosti 10-12 cm od překážky. Výsledná část programu obsluhy senzoru vypadá takto: while(1) { average1 = 0; for(i=0; i<=5; i++) { adc_value1 = ADC_Read(0); average1 = average1 + adc_value1; delay_ms(50); } adc_value1 = average1/5; adc_value1 = ADC_Read(0); if (adc_value1 > 205){ // když přesáhne výstupní hodnota 1V stop(); // robot zastaví }
3.3.3
Obsluha přerušení
Pojistným prvek k optoelektronickým senzorům je taktilní nárazník. Taktilní nárazník je realizován pomocí mikrospínačů. Když mikrospínač sepne, změní se hodnota na některém ze vstupů RB4-RB7 a je generováno přerušení reagující na změnu logické úrovně na těchto pinech. V obslužné funkci přerušení je provedena změna směru pohybu robota. Tyto taktilní senzory jsou připevněné na robotu vepředu, ale i vzadu pro detekci kontaktu s překážkou při couvání. Přerušení je obsluhováno speciální funkcí interrupt(), která je implicitně spuštěna při vzniku přerušení. Přerušení je nutno nejdříve povolit nastavením příslušných bitů v registru INTCONx. Při využití funkce interrupt() ve vývojovém prostředí MikroC PRO, není nutné ukládat obsah registrů WREG, STATUS a BSR. [39] Před ukončením obslužné funkce se doporučuje vyčíst obsah registru PORTB. [27] Část obslužné funkce vypadá následovně: void interrupt(){ // obslužná funkce INTCON.GIE = 0; // zakázání přerušení if(INTCON.RBIF == 1){ // test přerušení na změnu if(PORTB.B7){ // test spínače na pinu RB7 stop(); // robot zastaví delay_ms(200); reverse(); // couvne delay_ms(1000); LATB.B1=~ LATB.B1; // pootočí se LATB.B2=~ LATB.B2; delay_ms(1500); forward(); // a jede dále } temp = PORTB; // vyčítání z registru PORTB INTCON.RBIF =0; // nulování flag bitu } 32
INTCON.GIE = 1; // povolení přerušení } void main (){ … IOCB = 0b11110000; // povolení reakce na změnu na RB4-RB7 INTCON=0b10001000; // povolení a nastavení přerušení …
3.3.4
Programové řešení
Spojením předcházejících částí vzniká ucelený řídící program (firmware). Pro přehlednost uvádím pouze vývojový diagram řídícího programu, viz obr. 20. V inicializační části se nastavuje chod vnitřního oscilátoru, směr na jednotlivých pinech a frekvence PWM signálu. Další fáze (pohyb vpřed) je již součástí nekonečné smyčky, ve které se opakuje vyčítání ze senzorů. Kompletní zdrojový kód je k nahlédnutí v příloze. (3)
Obr. 20 Vývojový diagram programu pro robotický vysavač.
3.4 Konstrukční řešení Posledním krokem ve vývoji robotického vysavače je výroba podvozku, krytu a vysávacího ústrojí. Důležitou roli zde hraje materiál. Materiál pro stavbu robota musí být pevný, lehký a zároveň lehce 33
obrobitelný. Jako hlavní materiál jsem zvolil desky tzv. hliníkové sendviče. Jsou to hliníkové fólie nalisované na PE desku. Výsledný efekt kombinuje to nejlepší z obou materiálů, deska je tenká přibližně 3 mm, přitom pevná a lehce obrobitelná. Materiál je relativně drahý (cca 1000 Kč/m2), nicméně se mi naskytla příležitost levné pořizovací ceny.
3.4.1
Sací ústrojí
Konstrukcí sacího ústrojí jsem se nechal inspirovat od komerčně dostupného robotického vysavače Neato.[49] Základem sacího ústrojí je radiální ventilátor poháněný bezkartáčovým stejnosměrným motorem. Miniaturní verze takového větráku se používá například v laptopech. Názornější je obr. 21. Výběr modelu proběhl s ohledem na napájecí napětí, cenu a dostupnost. Výběrem akumulátoru jsem si stanovil napájecí napětí na 12V. V této kategorii lze najít dostupné a dostatečně výkonné ventilátory. Rozhodl jsem se tedy pro model PMB1297PYB2 od výrobce Sunon. [40] Ventilátor disponuje příkonem 6,7W, 3200 ot. /min a průtokem vzduchu o hodnotě 45,22 m3/hod.
Obr. 21 Radiální ventilátor [40]
Vzduch proudí kulatým otvorem do ventilátoru a hranatým otvorem pryč. Na nasávací otvor je přilepena objímka se závitem. Do závitu je našroubována nádoba jímající nečistoty, která je na protějším konci zúžena pomocí trychtýře. Zúžením vzniká rychlejší proudění vzduchu dovnitř nádoby a zařízení pracuje jako malý vysavač. Před nasávacím otvorem ventilátoru je filtr, který odděluje pohyblivou mechanickou část od nečistot. Na trychtýř je nasazena nasávací hadice s hubicí, čímž je umožněno vysávat nečistoty pod robotem. Pro jasnější ilustraci, slouží obr. 22.
Obr. 22 Model sacího ústrojí
34
3.4.2
Podvozek a kryt
Pro konstrukci podvozku a krytu jsem zvolil klasickou metodu dvou pater. Tento základní návrh lze spatřit na různých robotických fórech nebo v literatuře zabývající se konstrukcí robotů velice často. Základním principem jsou dvě desky. Desky jsou vyřezané do podobného obrysu. Spodní deska slouží jako podvozek pro upevnění motůrků a zároveň jako „podlaha“ pro montáž součástek, desek plošných spojů či jiného vybavení robota. Vrchní deska překrývá vnitřek robota. Mezi vrchním a spodním patrem jsou umístěny sloupky, zajišťující pevný rozestup mezi horní a dolní hladinou. Pro lepší ilustraci slouží obr. 23. Boční kryt poté zajistí nařezané destičky přilepené plastovými držáky do pravého úhlu tzv. L-ka. Fotky výrobku lze najít v příloze. (4)
Obr. 23 Přibližný model robotického vysavače
3.5 Shrnutí, porovnání a zhodnocení Jedno z hlavních kritérií pro výrobu robotického vysavače byla cena. Shrnutím použitých dílů se lze dopočítat k celkové ceně výrobku: 2x stejnosměrný motůrek s převodovkou …………….. 640 Kč 2x kolečka pro pojezd ……………………………………………… 250 Kč elektronické součástky (MCU, H-můstek,…)………….. 450 Kč 2x SHARP detektor ………………………………………………….. 840 Kč Akumulátor, nabíječka ………………………………………….... 770 Kč Radiální ventilátor ……………………………………………………. 350 Kč Deska, konstrukční prvky ……………………………………. 600 Kč Celková suma ………………………………………………………… 3900 Kč (* uvedené ceny jsou pouze orientační a jsou odvozené z ceny, za kterou jsem je pořídil) Komerčně dostupný vysavač lze pořídit od 2000 Kč, konkrétně jde o model Agama Aibot RC320. Aibot disponuje pouze základní výbavou podobnou vyrobenému prototypu. Jelikož nemám finanční prostředky na koupi a žádný z mých přátel nevlastní robotický vysavač Aibot, vycházel jsem při srovnání pouze z parametrů udávaných výrobcem. [50] Aibot má oproti mému prototypu cliff sensor proti pádu ze schodů, vyšší sací výkon (17W), výrazně nižší pořizovací cenu, boční kartáče a více módů pro pohyb po místnosti. Naproti tomu vyrobený prototyp má výrazně navíc ve výdrži
35
baterie (Aibot cca 60 min., prototyp cca 3 hodiny) a disponuje bezkontaktní detekcí překážek. Dalším kritériem pro výběr komponent a konstrukci byla možnost budoucí modifikace. Toto kritérium jsem zvolil ze dvou důvodů. První důvod je, že umožněním modifikace se nabízí prostor k budoucímu vylepšování. Druhým důvodem byla spíše pojistka v případě neúspěchu. Komponenty použité při stavbě robotického vysavače tvoří z velké části univerzální základ pro konstrukci relativně bohaté škály autonomních robotických vozidel apod. Z výše uvedených faktů vyplývá, že výroba domácího prototypu robotického vysavače s ohledem na minimální náklady se spíše nevyplatí. Nicméně tento závěr není úplně přesný, vzhledem k dalším aspektům (univerzálnost, budoucí modifikace) se náklady zvýšily. Při návrhu se nabízí relativně velký prostor pro snížení nákladů jako např.: použití motůrků z jiného elektrického zařízení (tiskárny, hračky, …), použití jednodušších a tím pádem levnějších senzorů pro detekci překážek, použití koleček pro pojezd z jiného staršího zařízení, apod. Z hlediska budoucího vylepšování robotického vysavače se nabízí veliký prostor pro zlepšování funkce např.: časový management, různé druhy pohybu po místnosti, modul pro bezdrátovou komunikaci, automatické zajíždění do dokovací stanice, montáž kartáčů pro čištění špatně dostupných míst, obvody pro mapování pohybu po místnosti, a další. Z hlediska univerzálnosti a možné budoucí modifikace prototyp splňuje veškerá očekávání. Robotický vysavač je usazen na klasickém podvozku, který nabízí dostatečný prostor pro přidání různých součástí (kamera, obvody pro globální navigaci, apod.). Prototyp disponuje základní sadou senzorického systému užívaného pro bezkontaktní detekci překážek. Tento fakt, lze v budoucnu využít k sestrojení např.: průzkumného vozidla, soutěžního zápasnického robota, apod.
36
4
Závěr
Cílem práce bylo seznámit se s komponenty užívanými v robotické praxi, navrhnout a sestavit prototyp robotického vysavače. Výrobek měl být navrhnut s ohledem na minimální náklady, možnost budoucí modifikace, konstrukci v domácích podmínkách a funkčnost v domácím prostředí. Robotický vysavač je sestaven z dvojice stejnosměrných motůrků s převodkou, které zajišťují pohon robota. Senzorický systém pro bezkontaktní detekci překážek je tvořen dvojicí optoelektronických senzorů od firmy SHARP, doplněnou o taktilní nárazník v podobě mikrospínačů. Vysávací ústrojí je zkonstruováno z radiálního ventilátoru poskytujícího dostatečný sací výkon pro sběr nečistot. Nečistoty se hromadí ve vyjímatelné nádobě. Celý systém robotického vysavače je řízen mikrokontrolérem PIC z řady 18F od výrobce Microchip. Prototyp robotického vysavače splnil požadavek na funkčnost, pohybuje se po místnosti náhodným pohybem, ve většině případů se bezkontaktně vyhýbá překážkám a přitom vysává nečistoty z podlahy. Výrobek splnil požadavky na univerzálnost a možnost budoucí modifikace. Výsledné náklady na sestavění prototypu nebyly dle očekávání nižší než pořizovací cena nového komerčního robotického vysavače. Nicméně byl zde nalezen prostor pro snížení nákladů na výrobu prototypu. Fakt, že cena nesplnila očekávání je také způsoben nadstandardní bezdotykovou detekcí překážek. Komerčně dostupné robotické vysavače ve spodní cenové relaci naopak používají dotykovou detekci překážek. Sestavený robotický vysavač nabízí prostor pro budoucí vylepšení funkce např.: time management, modul pro dálkové ovládání, systém pro mapování pohybu po místnosti apod. Tyto funkce mohou být v budoucnu předmětem diplomové práce.
37
5
Seznam použité literatury
[1]
SLAVÍČEK, Ing. Ivan. Elektromotorky a jejich řízení. 1. vyd. Praha: Práce, 1968. Polytechnická knižnice: Technický výběr do kapsy, sv. 109. NOVÁK, Petr. Mobilní roboty: pohony, senzory, řízení. Vyd. 1. Praha: BEN - technická literatura, 2004, 247 s. ISBN 80-730-0141-1. JAROSLAV, Vyčítal. Řízení rychlosti otáček motoru [online]. Brno, 2012 [cit. 2013-05-11]. Dostupné z: http://www.vutbr.cz/www_base/zav_prace_soubor_verejne.php?file_ id=55519. Bakalářská práce. VUT FEKT Brno. Vedoucí práce Ing. Petr Marcoň. MIKULČÁK, Jiří, Bohdan KLIMEŠ, Jaromír ŠIROKÝ, Václav ŠŮLA a František ZEMÁNEK. Matematické, fyzikální a chemické tabulky pro střední školy. 3. vyd. Praha: Prometheus, 1988, 206 s. SRF04 - Ultra-Sonic Ranger: Technical Specification [online]. s. 6 [cit. 2013-04-11]. Dostupné z: http://www.robotelectronics.co.uk/htm/srf04tech.htm Robot Sensors Vol. 2: Tactile & Non-Vision/ Edited by: Alan Pugh. 1. ed. Berlin: Springer-Verlag;, 1986. Master books on sensors: modular courses on modern sensors Leondaro da Vinci project CZ/PP-134026. Editor Pavel Ripka, Alois Tipek. Praha: BEN - technical literature, 2003, 1 sv. (různé stránkování). ISBN 80-730-0129-2. BISHOP, O. The robot builder's cookbook. Boston: Elsevier/Newnes, c2007, vi, 366 p. ISBN 07-506-6556-4. MCCOMB, Gordon. Robot builder's bonanza. 4th ed. New York: McGraw-Hill, c2011, xxviii, 704 p. ISBN 00-717-5036-3. AUGARTEN, Stan. State of the art: a photographic history of the integrated circuit. New Haven: Ticknor, 1983, xv, 79 p. ISBN 08-9919195-9. Texas Instruments TMS1000 microcontroller family: Texas Instruments TMS1000JL / TMS1000JDL / TMS1000JDLC. In: CPU World [online]. [cit. 2013-05-13]. Dostupné z: http://www.cpuworld.com/CPUs/TMS1000/Texas%20Instruments-TMS1000JL%20%20TMS1000JDL%20-%20TMS1000JDLC.html HUANG, Han-Way. PIC microcontroller: an introduction to software. Clifton Park [u.a.]: Delmar Thompson Learning, 2004. ISBN 14-0183967-3. Pic microcontrollers: programmin in c [online]. S.l.: Mikroelectronika, 2009 [cit. 2013-05-13]. Dostupné z: http://www.mikroe.com/products/view/285/book-picmicrocontrollers-programming-in-c/ CRISP, John. Introduction to microprocessors and microcontrollers. 2. ed. Amsterdam [u.a.]: Elsevier [u.a.], 2004. ISBN 07-506-5989-0. H-Bridge - The Basics. In: Modular Circuits [online]. [cit. 2013-0514]. Dostupné z:
[2] [3]
[4] [5] [6] [7]
[8] [9] [10] [11]
[12] [13]
[14] [15]
38
[16] [17] [18] [19] [20]
[21]
[22] [23] [24] [25] [26] [27] [28] [29] [30]
[31]
http://modularcircuits.tantosonline.com/blog/articles/h-bridgesecrets/h-bridges-the-basics/ SN754410 datasheet: Quadruple Half-H Driver. In: Texas Instruments [online]. [cit. 2013-05-14]. Dostupné z: http://www.ti.com/lit/ds/symlink/sn754410.pdf Linden's handbook of batteries. 4th ed. Editor Thomas B Reddy, David Linden. New York: McGraw-Hill, c2011, různé stránkování. ISBN 978-0-07-162421-3. Batteryuniversity.com. [online]. [cit. 2013-05-15]. Dostupné z: http://www.batteryuniversity.com/ BELZA, Jaroslav. Akumulátory Li-Ion a jejich nabíjení. Praktická elektronika - Amatérské radio. Praha: Amaro, 2011-, s. 3. Dostupné z: http://cs.scribd.com/doc/76178851/Prakticka-Elektronika-2001-04 HESS, Daniel. Carpet Sweeper [patent]. US patent, US29077. Uděleno 10. 07. 1860. Dostupné z: http://www.google.com/patents?id=LRlnAAAAEBAJ&printsec=abstrac t&zoom=4#v=onepage&q&f=false Vacuum Cleaner: Fascinating facts about the invention of vacuum cleaner by Daniel Hess in 1860. In: Http://www.ideafinder.com [online]. 2007 [cit. 2013-05-15]. Dostupné z: http://www.ideafinder.com/history/inventions/vacleaner.htm Vysavač :: Fyzika: Jak funguje vysavač. Fyzika [online]. 2008 [cit. 2013-05-15]. Dostupné z: http://fyzika-pascal.webnode.cz/vysavac/ HowStuffWorks: How Vacuum Cleaners Work. HARRIS, Tom. HowStuffWorks [online]. 2001 [cit. 2013-05-15]. Dostupné z: http://home.howstuffworks.com/vacuum-cleaner.htm VLK, František. Dynamika motorových vozidel /. vyd. 2. Brno: Prof.Ing.František Vlk,DrSc., nakladatelství a vydavatelství, 2006, 432 s. ISBN 80-239-0024-2. Srovnání cen robotických vysavačů. Heureka: Porovnávač zboží [online]. 2013 [cit. 2013-05-16]. Dostupné z: http://vysavace.heureka.cz/f:3327:101671;13786:1/?o=4 GM12 – N20VA250 datasheet. In: SGM12 series [online]. [cit. 201305-16]. Dostupné z: http://www.sgstcl.com/up/32/engpdf/gm1213.jpg MICROCHIP TECHNOLOGY INC. PIC18(L)F2X/4XK22: Data Sheet [online]. 2011 [cit. 2013-05-16]. Dostupné z: http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf KURT, Tod E. Hacking Roomba. Indianapolis, IN: Wiley Pub., c2007, xviii, 436 p. ISBN 978-047-0072-714. GP2Y0A41SKOF datasheet. In: SHARP: Optoelectronic devices specification [online]. 2005 [cit. 2013-05-17]. Dostupné z: http://www.robotshop.com/content/PDF/datasheet-gp2y0a41sk0f.pdf A - max 22: specification. In: Maxxon motors [online]. 2012 [cit. 2013-05-17]. Dostupné z: http://www.maxonmotor.com/medias/sys_master/8800973651998/1 2_097_EN.pdf Nabíječ Pb Akumulátorů. Www.shop-online.cz: Inteligentní nabíječe [online]. [cit. 2013-05-17]. Dostupné z: http://www.shop-
39
[32]
[33] [34] [35] [36]
[37] [38] [39]
[40]
[41] [42] [43] [44]
[45] [46]
online.cz/OEM/Nabijec-Pb-akumulatoru-2-6-12V600mA_g5635.html#top Nabíječ NiCd/NiMh článků. Www.shop-online.cz [online]. [cit. 201305-17]. Dostupné z: http://www.shop-online.cz/Minwa-ElectronicsCo-LTD/Rychlonabijec-sad-2-10-NiCd-NiMH-canku-0-5-1A-s-detekcidV-a-vybijenim-MW6168-AKCE_g5094.html Výroba a repase akupacků. Avacom.cz [online]. [cit. 2013-05-18]. Dostupné z: http://www.avacom.cz/repase-a-vyroba-akupacku Olověný akumulátor 12V 5Ah. Avacom.cz [online]. [cit. 2013-05-18]. Dostupné z: http://www.avacom.cz/long-12v-5ah-olovenyakumulator-f1 LM2574 datasheet: 0.5A Step-Down Voltage Regulator. National Semiconductor [online]. 1999, s. 24 [cit. 2013-05-18]. Dostupné z: http://www.gme.cz/dokumentace/330/330-135/dsh.330-135.1.pdf LM2576/LM2576HV datasheet: 3A Step-Down Voltage Regulator. National Semiconductor [online]. 1999, s. 22 [cit. 2013-05-18]. Dostupné z: http://www.gme.cz/dokumentace/330/330113/dsh.330-113.1.pdf MikroC PRO for PIC. MikroElektronika [online]. [cit. 2013-05-18]. Dostupné z: http://www.mikroe.com/mikroc/pic/ MICROCHIP. PICkit2 Programmer/Debugger: User's Guide [online]. 2008 [cit. 2013-05-18]. Dostupné z: http://ww1.microchip.com/downloads/en/DeviceDoc/51553E.pdf MIKROELEKTRONIKA. MikroC PRO for PIC: manual. 2009. Dostupné z: http://www.mikroe.com/downloads/get/30/mikroc_pic_pro_manual_ v101.pdf Sunon PMB1297PYB2: specifikace. TME.eu: Electronics component [online]. [cit. 2013-05-20]. Dostupné z: http://www.tme.eu/cz/details/pmb1297pyb2-ay/ventilatory-dc12v/sunon/# Www. built to spec.com. [online]. [cit. 2013-05-20]. Dostupné z: http://www.built-to-spec.com/blog/2012/04/09/understandingstepper-motors-part-i-a-basic-model/ SPM physics. [online]. [cit. 2013-05-20]. Dostupné z: http://www.physics4spm.com/2009/05/how-dc-motor-works.html Rcmania. [online]. [cit. 2013-05-20]. Dostupné z: http://www.pslib.cz/kz/models/servo_schema.gif Schéma řídící elektroniky servomotoru. [online]. [cit. 2013-05-20]. Dostupné z: http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Kr%C3%A1%C4%8 Daj%C3%BAci_mobiln%C3%BD_robot Sonar rangefinder. [online]. [cit. 2013-05-20]. Dostupné z: http://www.acroname.com/robotics/parts/R93-SRF04.jpg Society of Robots: Ultrasonic vs. Infrared. [online]. [cit. 2013-05-20]. Dostupné z: http://www.societyofrobots.com/member_tutorials/book/export/html /71
40
[47] [48] [49] [50]
Society of robots: Tactile sensor. [online]. [cit. 2013-05-20]. Dostupné z: http://www.societyofrobots.com/sensors_tactbumpswitch.shtml Wikimedia Commons: PIC Microcontrollers. [online]. [cit. 2013-0513]. Dostupné z: http://commons.wikimedia.org/wiki/File:PIC_microcontrollers.jpg Neato XV-11 Disassembly. Robotshop.com [online]. [cit. 2013-0521]. Dostupné z: http://www.robotshop.com/blog/en/neato-xv-11disassembly-see-the-guts-of-your-robotic-vacuum-978 Aibot RC 320: Specifikace. Heureka.cz [online]. [cit. 2013-05-22]. Dostupné z: http://vysavace.heureka.cz/aibot-rc320/specifikace/#section
41
6 Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr.
7
Seznam obrázků 1 Základní princip krokového motoru ............................................. 5 2 Základní princip stejnosměrného motoru ..................................... 6 3 Řez modelářským servomotorem ............................................... 7 4 Blokové schéma řídícího obvodu servomotoru .............................. 8 5 Typický představitel sonaru pro malé roboty ................................ 9 6 „Ghost echo“ ......................................................................... 10 7 Princip infračerveného senzoru od firmy SHARP........................... 11 8 (1) Aktivní v log.1 (2) Aktivní v log.0 (3) přepínač ...................... 12 9 Mikrokontroléry ...................................................................... 14 10 Příklad Harvardské architektury v mikrokontroléru .................... 14 11 H-můstek s aktivní jednou stranou ......................................... 17 12 H-můstek s aktivní druhou stranou ......................................... 17 13 Princip vysavače ................................................................... 20 14 Blokové schéma robotického vysavače ..................................... 21 15 Síly působící na robota při pohybu na nakloněné rovině .............. 22 16 Schéma zapojení MCU PIC v robotickém vysavači ...................... 26 17 Rozložení pinů, pravdivostní tabulka a logické schéma SN754410 27 18 Schéma zapojení spínaného regulátoru pro napájení MCU .......... 28 19 Schéma zapojení spínaného regulátoru pro napájení pohonu....... 29 20 Vývojový diagram programu pro robotický vysavač. .................. 33 21 Radiální ventilátor ................................................................. 34 22 Model sacího ústrojí ............................................................... 34 23 Přibližný model robotického vysavače...................................... 35
Seznam tabulek
Tab. 1 Orientační porovnání vlastností běžných typů akumulátorů .......... 19 Tab. 2 Mapa detekčního paprsku paralelní kombinace ........................... 31 Tab. 3 Mapa křížených detekčních paprsků .......................................... 31
8
Seznam příloh
Příloha Příloha Příloha Příloha Příloha Příloha
(1) (2) (3) (4) (5) (6)
Elektrické schéma celého robotického vysavače .................... 43 Seznam součástek ............................................................. 44 Zdrojový kód .................................................................... 47 Fotografie výrobku bez bočního opláštění ............................. 47 Fotografie testovacího prototypu ......................................... 47 Fotografie měření detekční oblasti paprsku ........................... 48
42
9
Přílohy
Příloha (1) Elektrické schéma celého robotického vysavače
43
Označení IC1 IC2 IC3 IC4 C1 C2 C3 C4 C5,C6,C7,C8 D1 D2 R1,R2,R3,R4, R5 S1 S2,S3,S4,S5 DC_MOTOR VACUUM_MO TOR SHARP
Hodnota PIC18F45K22 SN754410 LM2576T LM2574HVN 220uF 22uF 100uF 1000uF 100n 1N5818 1N5822 10K
Popis Mikrokontrolér H-můstek Spínaný regulátor 5V/3A Spínaný regulátor 5V/0,5A Kondenzátor elektrolytický Kondenzátor elektrolytický Kondenzátor elektrolytický Kondenzátor elektrolytický Kondenzátor keramický Schottkyho dioda do 1A Schottkyho dioda do 10A Uhlíkové rezistory
Ks 1 1 1 1 1 1 1 1 4 1 1 5
Cena[Kč] 78 39 49 50 1,30 0,20 2,60 2,37 10 2,20 4,40 10
-
Hlavní vypínač Mikrospínače Stejnosměrné motůrky Sací ventilátor
1 4 2 1
8 40 640 350
GP2Y0A41SK 0F
Sensor optoelektronický
2
840
Příloha (2) Seznam součástek
unsigned
int adc_value1, adc_value2, average1, average2,
i, j; unsigned short temp=0; void Init_main() { OSCCON = 0b01100111; // High-Speed Internal Oscilator at 8MHz PORTA = 0b00000000; PORTB = 0b00000000; PORTC = 0b00000000; // clearing PORT A-C TRISA = 0b11111111; // Port A as input ANSELA = 0b00000011; // Set AN0 and AN1 as analog ports ANSELC = 0b00000000; // na základě MikroC fora TRISB = 0b11110000; // RB7-4 as input rest as output TRISC = 0b00000000; //Port C as Digital output C1ON_bit = 0; C2ON_bit = 0; // Disable comparators IOCB = 0b11110000; // Enable portb as Int On Change INTCON=0b10001000;// enable global interrupt, Enable Interrupt on change at portB, Clear the IOC Flag bit PWM1_Init(4900); PWM2_Init(4900); // Initialize PWM modul at 4.9 KHz } 44
void stop(){ LATB.B1=0; LATB.B2=0; LATC.B5=0; LATC.B4=0; } void forward(){ LATB.B1=0; LATB.B2=1; LATC.B5=1; LATC.B4=0; } void reverse(){ LATB.B1=1; LATB.B2=0; LATC.B5=0; LATC.B4=1; } void interrupt(){ INTCON.GIE = 0; // disable global interrupt if(INTCON.RBIF == 1){ if(PORTB.B7){ // front bumper stop(); delay_ms(200); reverse(); delay_ms(1000); LATB.B1=~ LATB.B1; LATB.B2=~ LATB.B2; delay_ms(1500); forward(); } if(PORTB.B6){ // front bumper stop(); delay_ms(200); reverse(); delay_ms(1000); LATB.B1=~ LATB.B1; LATB.B2=~ LATB.B2; delay_ms(1500); forward(); } if(PORTB.B5){ // rear bumper stop(); delay_ms(200); forward(); } if(PORTB.B4){ // rear bumper stop(); delay_ms(200); forward(); }
45
temp = PORTB; // reading from PORTB recommends INTCON.RBIF =0; // clearing flag } INTCON.GIE = 1; // enable interrupt } void main() { Init_main(); delay_ms(2000); forward(); PWM2_Start(); PWM1_Start(); PWM1_Set_Duty(254); PWM2_Set_Duty(254); delay_ms(3000); while(1) { average1 = 0; for(i = 0; i<=5; i++) { adc_value1 = ADC_Read(0); average1 = average1 + adc_value1; delay_ms(50); } adc_value1 = average1/5;
as
datasheet
average2 = 0; for(j = 0; j<=5; j++) { adc_value2 = ADC_Read(1); average2 = average2 + adc_value2; delay_ms(50); } adc_value2 = average2/5; if (adc_value1 > 205) { // left sensor stop(); // if the voltage goes over 1V it should stop delay_ms(300); reverse(); delay_ms (1000); //1 sec reverse move LATB.B1 =~ LATB.B1; LATB.B2 =~ LATB.B2; delay_ms(1000); //2 sec turning right stop(); delay_ms(200); forward(); adc_value1 = 0; } if (adc_value2 > 205){ // right sensor stop(); delay_ms (300); reverse(); delay_ms(1000);
46
LATC.B4 =~ LATC.B4; LATC.B5 =~ LATC.B5; delay_ms(1000); // turning left stop(); delay_ms(200); forward(); adc_value2 = 0; } } } Příloha (3) Zdrojový kód
Příloha (4) Fotografie testovacího prototypu
Příloha (5) Fotografie výrobku bez bočního opláštění
47
Příloha (6) Fotografie měření detekční oblasti paprsku
48