Autonomní vozítko. Martin Škarytka. Odborný konzultant: Ing. Petr Kynčl. ISŠ Nová Paka

Podobné dokumenty
Chytkarobot. Karel Chytra. Vyšší odborná škola, Střední škola, Centrum odborné přípravy Budějovická 421 Sezimovo Ústí

Merkur perfekt Challenge Studijní materiály

Arduino Martin Friedl

Robotická ruka. Lukáš Fotr a Jaroslav Karban. Integrovaná střední škola, 2. ročník Kumburská 846, Nová Paka

Jízda po čáře pro reklamní robot

Students for Automotive (S4A)

Projekt BROB B13. Jízda po čáře pro reklamní robot. Vedoucí projektu: Ing. Tomáš Florián

DIGITÁLNÍ ODPALOVACÍ PULT

SKARAB ROBOT KSR5. Stavebnice. 1. Úvod a charakteristika. 2. Seznam elektronických součástek

BROUK ROBOT KSR6. Stavebnice. 1. Úvod a charakteristika. 2. Seznam elektronických součástek

Universální CNC stolní vrtačka

Jízda po čáře pro robot FEKTBOT BROB BAMT VUT FEKT. Michal Lesák, Tomáš Trenčan, Ondřej Balga Vedoucí projektu: Ing.

Elektronická stavebnice: Teploměr s frekvenčním výstupem

ETC Embedded Technology Club setkání 3, 3B zahájení třetího ročníku

Návrh konstrukce odchovny 2. dil

BEZDRÁTOVÉ ZABEZPEČOVACÍ ZAŘÍZENÍ

Students for Automotive (S4A)

Bakalářská práce Realizace jednoduchého uzlu RS485 s protokolem MODBUS

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST

Využití STM32 pro studentské projekty

STŘEDOŠKOLSKÁ TECHNIKA 2013

Climbing Robot. Václav Michal. SŠ AGC a.s Rooseveltovo nám. 5, Teplice

Programovatelný časový spínač 1s 68h řízený jednočip. mikroprocesorem v3.0a

Elektronická stavebnice: Deska s jednočipovým počítačem

Středoškolská technika Autonomně řízený model auta

Sériový programátor SI Prog

RobPi autonomní robot

AVR TESTBOARD. Karel Babický. SPŠ a VOŠ Písek Karla Čapka 402, Písek

Čtyřnohý kráčející robot


Univerzální napájecí moduly

Příloha A návod pro cvičení 1. SESTAVENÍ MODELU V PROSTŘEDÍ MATLAB SIMULINK Zapojení motoru

UV LED přenosná lampa pro vytvrzování laku na nehty

WOJCIASZYK, Petr Ing., Katedra ATŘ-352, VŠB-TU Ostrava, 17. listopadu, Ostrava Poruba, ,

BROB Projekt Robot: Mini Sumo. Spolupracovali: Brázdil Jan Davídek Daniel Dvořák Michal Bortlík Pavel Kozelek Jiří Kunz Jan

Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování

Praktická část maturitní zkoušky Pojízdný tank

Univerzální jednočipový modul pro řízení krokových motorů

LED zobrazovač. Úvod. Jak to pracuje? Popis zapojení. Autor: Ing.Tomáš Pavera / OK2TPQ Datum: Revize: 1.0

Manuál přípravku FPGA University Board (FUB)

Středoškolská technika 2016 SOUŘADNICOVÁ FRÉZKA

Popis vývodů desek, jejich zapojování a spárování robota

9. Robot pro Robotický den 2012

Samořízené auto na autodráhu

PK Design. MB-ATmega16/32 v2.0. Uživatelský manuál. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 (21.12.

Automaticky stabilizované 4kolové vozidlo

Praktický návod. Inteligentní elektroinstalace obytného domu Ego-n

Programování mikropočítačů platforma Arduino

Návrh a realizace regulace otáček jednofázového motoru

Co je uvnitř - senzory a přístrojová technika v NXT robotech. Pavel Ripka katedra měření ČVUT

eses výukový multi shield pro Arduino UNO

Monitorovací elektronika pro modely parních strojů

SuperCom. Stavebnice PROMOS Line 2. Technický manuál

Návod k obsluze [CZ] VMS 08 Heineken. Řídící jednotka pro přesné měření spotřeby nápojů. Verze: 1.1 Datum: Vypracoval: Vilímek

Cílem dnešní lekce je obohatit náš dosavadní systém a připravit se na připojení do cloudu

Control4 driver systému Lacrima - přijímač TRX-A a bateriové rádiové snímače teploty, vlhkosti TTX-A, TTX-AH a TTX-AX

Students for Automotive (S4A) Manuál pro soutěžní týmy

Středoškolská technika Pendl ovládání modelu vlaku na jednokolejné trati

Stabilizovaný zdroj s L 200T

KLIMATIZAČNÍ TECHNIKA

Středoškolská technika Scoreboard výsledková tabule pro volejbal, fotbal, házenou a jiné míčové sporty

Vývojové kity Mega48,

Popis obvodu U2403B. Funkce integrovaného obvodu U2403B

FREESCALE TECHNOLOGY APPLICATION

NÁVOD K POUŽITÍ. Automatická závora. řady RB30

-V- novinka. Jednotky motoru MTR-DCI 2.2. motor s integrovaným ovladačem, převodovkou a řízením. kompaktní konstrukce

APLIKACE MIKROKONTROLÉRŮ PIC32MX

Robot pro Robotický den 2015

Příloha č.1 Technická dokumentace Zálohovaného napájecího zdroje pro lékařský přístroj s managementem po I2C-hardwarová část

Impulsní regulátor ze změnou střídy ( 100 W, 0,6 99,2 % )

Vánoční hvězda 2. Publikované: , Kategória: Blikače a optika.

Víkendový projekt: Bezklíčové otevírání domovních dveří

Středoškolská technika SCI-Lab

Stroboskop pro školní experimenty

VUT EBEC2017 Projekt. Wiping Turn Indicator Audi TT

Studentská soutěžní práce

Návod na stavbu. K3NG open source Arduino CW keyer s podporou WinKey. edice v. 1.0 říjen 2012 od OK1HRA dostupné na

Inovace a zkvalitnění výuky směřující k rozvoji odborných kompetencí žáků středních škol CZ.1.07/1.5.00/

Mirrorbot. Středoškolská technika Setkání a prezentace prací středoškolských studentů na ČVUT. Roman Ludvík, Petra Melicharová

Cvičení 2. Obsah a cíle cvičení. Obsah. A5MPL Programování mikropočítačů Digitální vstupy a výstupy - LED a tlačítka.

Osnova přípravného studia k jednotlivé zkoušce Předmět - Elektrotechnika

Modul výkonových spínačů s tranzistory N-FET

TDS. LED zobrazovače. 4 sedmisegmentový svítící displej Výška znaku 10 nebo 57 mm Komunikace přes RS července 2012 w w w. p a p o u c h.

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

ŘÍZENÍ MECHANICKÝCH ZAŘÍZENÍ

Vstupy a výstupy základní sady modulů

Středoškolská odborná činnost

Zadání projektu č.2. Digitální binární hodiny

GENERÁTOR FUNKČNÍCH PRŮBĚHŮ

Kategorie Ž1. Test. U všech výpočtů uvádějte použité vztahy včetně dosazení!

Digitální odpalovací pult HELENA Firing 93

Magnetické čidlo pro snímání úhlu otočení Úvod. Popis funkce čidla

VÝVOJOVÁ DESKA PRO JEDNOČIPOVÝ MIKROPOČÍTAČ PIC 16F88 A. ZADÁNÍ FUNKCE A ELEKTRICKÉ PARAMETRY: vstupní napětí: U IN AC = 12 V (např.

Integrovaná střední škola Nová Paka. Pokyny pro zpracování ročníkové práce. pro 3. ročník oboru mechanik elektrotechnik¹

Měřič teploty s PT100

STABILIZACE PROUDU A NAPĚTÍ

TENZOMETRICKÝ PŘEVODNÍK

Střídací tabule na fotbal

Parkovací systém PWE-47 návod k použití

Úvod do mobilní robotiky AIL028

Transkript:

Středoškolská technika 2014 Setkání a prezentace prací středoškolských studentů na ČVUT Autonomní vozítko Martin Škarytka Odborný konzultant: Ing. Petr Kynčl ISŠ Nová Paka

Prohlášení Prohlašuji, že jsem svou práci SOČ vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v seznamu vloženém v práci SOČ. Prohlašuji, že tištěná verze a elektronická verze soutěžní práce SOČ jsou shodné. Nemám závažný důvod proti zpřístupňování této práce v souladu se zákonem č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon) v platném znění. V Nové Pace dne 19. 3. 2014 podpis: Poděkování: Děkuji panu Ing. Luboši Malému za obětavou pomoc a podnětné připomínky, které mi během práce poskytoval. 2

Anotace Práce se zabývá konstrukcí malého autonomního robota se dvěma sadami různých čidel. Robot je konstrukce dvoukolového vozítka se třetím opěrným bodem. Jedna sada čidel je optického charakteru a druhá mechanického. Informace z těchto čidel sbírá mikrokontrolér AVR, kontrolu motoru zabezpečuje dvojitý H-můstek. Celé zařízení je napájeno tříčlánkovou baterii Li- Fe. Klíčová slova: ATmega328, Mikrokontrolér, PWM, Arduino, ANOTATION The work deals with the assembly of a small autonomous robot with two different sets of sensors. The robot is the construction of the two-wheeled cart with the third supporting point. One set of the sensors has an optical character and the other one is mechanical. AVR microcontroller collects the information from these sensors and the double H-bridge controls the motor. The robot is powered by three cell Li-FePO4 batteries. Keywords: ATmega328, Microcontroller, PWM, Arduino 3

OBSAH: 1. Úvod 5 2. Popis funkcí 6 3. Výroba plošného spoje. 7 4. Stavba podvozku 8 5. Schémata... 9 6. Seznam součástek 10 7. Čidla 11 8. Mikrokontrolér.. 12 9. Ovládání motorů 14 10. Programování. 15 11. Program robota. 16 12. Závěr. 17 13. Zdroje 18 14. Příloha fotografie 19 15. Příloha výpis programu.. 21 Přílohou dokumentace je video autonomního vozítka ve formátu MP4. 4

1. Úvod V tomto projektu jsem se snažil vytvořit robota s autonomními schopnostmi, protože mě tato problematika velmi zajímala. Hlavním požadavkem bylo sledovaní čáry, později byly přidány mikrospínače pro detekci nárazu. Pro stavbu robota mi byla ze školy zapůjčena stavebnice Merkur, z níž jsem postavil podvozek robota. Z důvodů jednoduchosti programování a značného množství různých zveřejněných příkladů, návodů a podobně jsem si pro řízení zvolil platformu Arduino. 5

2. Popis funkcí Robot má dva hlavní algoritmy. Jeden pro sledování čáry a druhý vyhodnocuje stavy čelních nárazníku. První algoritmus vyhodnocuje polohu čáry pod čidly. Pokud je prostřední čidlo nad čarou, pojede rovně. Jakmile se čára dostane pod jedno z krajních čidel, zastaví se motor na opačné straně, a tím se robot vrátí zpět do přímého směru jízdy. Druhý algoritmus čte stavy dvou mikrospínačů. Při načtení jednoho ze dvou senzorů nárazníku začne robot couvat rovně dozadu, potom zastaví jedno určené kolo a pokračuje opět v přímé jízdě. Couvání a otáčení trvá dle nastavených hodnot v programu. 6

3. Výroba plošného spoje Plošné spoje jsem navrhoval v programu Eagel. Výsledný plošný spoj je na obrázku č. 1. Samostatná výroba probíhala na školní fréze na plošné spoje, kde jsem si mohl desku s plošnými spoji vyfrézovat. Spoje jsou osazeny klasickými vývodovými součástkami. Robot je osazen celkem dvěma plošnými spoji, z toho jeden pro sledování čáry (obr. č. 2) je osazen třemi čidly CNY 70 a druhá deska, která je hlavní, je osazena mikroprocesorem Atmega328, H-můstkem L263D a stabilizátorem napětí. Obr. 1 plošný spoj Obr. 2 plošný spoj čidel 7

4. Stavba podvozku Podvozek je sestaven z komponentů stavebnice Merkur, je osazen dvěma motory Merkur na obrázku č. 3 s dvourychlostní převodovkou. Stavebnici tvoří mnoho univerzálních dílů z kovů a plastu, ze kterých jsem si vybral díly na stavbu svého podvozku. Jako třetí opěrný bod jsem zvolil pingpongový míček, který jsem z půlky vylil pryskyřicí. Po vytvrdnutí jsem zde vyvrtal otvor pro šroubek. Všechny díly jsou k sobě spojeny šroubky a matičkami. Obr. 3 motor stavebnice Merkur 8

5. Schémata První schéma představuje hlavní desku s H-můstkem a stabilizací pro mikrokontrolér (obr. č. 4), druhá deska obsahuje pouze trojici optických čidel pro sledování čáry (obr. č. 5). Obr.4 hlavní řídicí deska Obr.5 deska s čidly 9

6. Seznam součástek Hlavní deska R1... 10kΩ R2... 100Ω R3... 100Ω R4... 100kΩ C1... 22pF C2... 22pF C3... 4700µF C4 - C7... 22nF JP1 - JP10... hřeben s piny IO1... L293D IO2... 7805 IO3... ATmega328 krystal. 16MHz S1... mikrospínač S2 - S3. páčkový mikrospínač Deska čidel R1 - R3 10kΩ R4 - R6 100Ω JP1 - JP2. hřeben s piny 3x optická závora.cny70 10

7. Čidla Pro sledování čáry jsou použity optické závory. Zvolil jsem čidla CNY70 (obr. č. 6). Snímače pracují na principu infračerveného paprsku (infračervená led dioda vysílá paprsky, které se od bílého podkladu odrazí a dopadnou na fototranzistor, ten sepne a na výstupu se objeví log. 0). Obr.6 optické čidlo Snímání nárazů zajišťují dva mikrospínače s dlouhými páčkami (obr. č. 7), které při nárazu sepnou, a na základě toho program vyhodnotí stav a provede příslušnou operaci. Obr.7 mikrospínač 11

8. Mikrokontrolér Hlavním řídicím obvodem je ATmega 328 (obr. č. 8), ve kterém je nahrán bootloader Arduina a samotný řídicí program. Mikrokontrolér obsahuje 6 A/D převodníků 10bit, 13 digitálních vstupních i výstupních pinů, z nichž dva slouží pro sériovou komunikaci a 6 pinů má funkci PWM (pulzní a šířková modulace). Je zasazen ve vývojové desce, která obsahuje veškeré potřebné komponenty pro běh mikrokontroléru. Pro jeho programování slouží ATmeg16u2, který tvoří převodník USB => RS232 (obr. č. 9). Obr.8 mikroprocesor 12

Obr.9 vývojová deska Arduino 13

9. Ovládání motorů K řízení motorů jsem použil dvojitý H-můstek L293D (obr. č. 10). Výkon motorů je regulován pomocí PWM pulzu. Můstek je schopen dodat proud o velikosti 0,5 A. Na pouzdro je připevněn chladič z důvodu nadměrného zahřívání. V pouzdře jsou integrované ochranné diody. Na obrázku č. 11 můžete vidět vnitřní zapojení, kde se nacházejí dva bloky, z nichž každý obsahuje dva vstupy a dva výstupy. Obr.10 integrovaný obvod L293D Obr.11 vnitřní zapojení H-můstku 14

10. Osazení plošného spoje Po vyvrtání plošného spoje jsem desku ze strany spojů očistil od koroze obyčejnou gumou na gumování a potřel ji rozpuštěnou kalafunou v lihu. Jako první jsem osadil propojky s rezistory, patice integrovaných obvodů, kondenzátory, diodu a led diodu, hřeben s piny pro připojení čidel, dále vypínače, krystal a nakonec velký elektrolytický kondenzátor. 11. Oživení Při oživování nastal problém s rušením mikrokontroléru od motorů, který jsem odstranil přímým napájením jejich regulátoru. Jinak nedošlo k žádným vážnějším problémům. 12. Programování Program je napsán v jazyce Wirling, což je zjednodušený jazyk C. Na tento programovací jazyk je na internetu mnoho návodů a příkladů. Programování je v něm poměrně snadné a přehledné. Samotné programování se provádí přímo na platformě od Arduina, které můžete vidět na obrázku č. 12. Programování probíhá zjednodušeně, napíšete program, platforma Arduino ho zkompiluje, zda půjde nahrát do mikrokontroléru. Dalším krokem bude připojení vývojové desky k PC pomocí USB kabelu. Následně je třeba vybrat správný port a vývojovou desku a nahrát program. 15

Obr.12 programovací prostředí 13. Program robota Výpis programu robota je uveden na konci dokumentu z důvodu jeho délky. 16

14. Závěr Při stavbě tohoto robota jsem se setkal s několika problémy, které jsem musel odstranit. První překážkou byly časové výpadky mikroprocesoru nejspíše z důvodu rušení motorů. Tento problém jsem vyřešil tím způsobem, že jsem H-můstek připojil přímo na baterii a přerušil napájení ze stabilizátoru, který napájí i samotný mikrokontrolér. Tím vznikl druhý problém, na baterii bylo vyšší napětí, než jaké potřebují motory, toto jsem vyřešil nastavením PWM regulace na motorech. Při navrhování plošného spoje došlo k několika chybám jako například jiná knihovna LCD, než jsem měl já, prohození drah, místo displeje jsem na jeho výstup napojil dvojbarevnou led diodu, která signalizuje aktuální program. Po delším provozu robota v kuse jsem zkontroloval orientačně teplotu H-můstku. Protože jsem zjistil, že teplota je příliš vysoká, použil jsem pro jeho chlazení nouzové řešení, tavnou pistolí jsem přilepil kus plechovky od nápoje. Jako třetí opěrný bod pro robota jsem použil pingpongový míček, což se ukázalo jako nepříliš vhodné řešení, jelikož po čase ježdění se míček probrousil o podklad, po kterém jezdí. Při prvním spuštění robota na zemi jsem zjistil, že jsou kola z poměrně tvrdého plastu a protáčejí se, proto jsem na kola nalepil oboustrannou lepicí pásku. V budoucnu bych chtěl tohoto robota rozšířit o některé další senzory jako například senzor vzdálenosti, kompas, akcelerometr atd. V příloze s dokumentací přikládám video s autonomním vozítkem. 17

15. Seznam zdrojů http://www.solarskit.wz.cz/source/robotika/century/century_amaro.pdf http://www.solarskit.wz.cz/source/robotika/bob/cny70obr.gif http://www.gme.cz/vyvojovy-kit-arduino-arduino-uno-p772-008 http://www.gme.cz/arduino-uno-nahradni-mcu-mega328-p772-010 http://www.gme.cz/l293d-p399-017 http://www.merkursets.ca/popup_image.php?pid=74&oscsid=ccbvlbytgg http://www.gme.cz/mikrospinac-zippy-sm-05h-09p0-z-p630-050 http://www.open-electronics.org/arduino-isp-in-system-programming-andstand-alone-circuits/ https://www.adafruit.com/blog/2012/05/30/ask-an-educator-how-can-icontrol-a-solenoid-or-motor-with-an-h-bridge/ http://www.josefnav.cz/ardubot_clanek_3.html 18

16. Příloha - fotografie Obr. 13 autonomní vozítko 19

Obr. 14 autonomní vozítko pohled zepředu Obr. 15 autonomní vozítko pohled zezadu 20

17. Příloha - výpis programu int mod; //motory #define A 10 #define B 11 #define C 9 #define D 5 //čidla #define C1 A0 pinmode(ledg, OUTPUT); pinmode(n1, INPUT); pinmode(n2, INPUT); pinmode(c1, INPUT); pinmode(c2, INPUT); pinmode(c3, INPUT); pinmode(t1, INPUT); delay(2000); #define C2 A1 #define C3 A2 //nárazníky #define N1 A3 #define N2 A4 //tlačítko,led #define T1 12 void loop() menu(); start(); #define LedR 8 #define LedG 6 void menu() void setup() pinmode(a, OUTPUT); pinmode(b, OUTPUT); pinmode(c, OUTPUT); pinmode(d, OUTPUT); pinmode(ledr, OUTPUT); while(digitalread(t1) == 1) if(analogread(n1) > 900) if(mod = 1) mod = mod = 1; 21

if(analogread(n2) > 900 ) if(mod = 2) mod = mod = 2; void start() switch (mod) switch (mod) case 1: case 1: sledovani_cary(); break; //sledování čáry digitalwrite(ledr, HIGH); digitalwrite(ledg, LOW); break; case 2: narazniky(); break; case 2: //autonomní s nárazníky digitalwrite(ledg, HIGH); digitalwrite(ledr, LOW); break; delay(100); while(digitalread(n1) == 0 && digitalread(n2) == 0 && digitalread(t1) == 0) void sledovani_cary() while(digitalread(t1) == 0) digitalwrite(ledg, LOW); digitalwrite(ledr, LOW); if(analogread(c1) < 700) if(mod = 1) mod = mod = 1; 22

digitalwrite(b, LOW); if(analogread(c3) < 700 ) analogwrite(c, 90); analogwrite(d, 90); break; if(mod = 2) mod = mod = 2; case 3: digitalwrite(a, LOW); if(analogread(c2) < 700 ) if(mod = 3) digitalwrite(b, LOW); digitalwrite(c, LOW); analogwrite(d, 90); break; mod = mod = 3; delay(10); switch (mod) case 1: digitalwrite(a, LOW); digitalwrite(b, LOW); analogwrite(c, 90); digitalwrite(d, LOW); break; void narazniky() while(digitalread(t1) == 0) digitalwrite(ledg, HIGH); digitalwrite(ledr, HIGH); if(analogread(n1) > 900) case 2: digitalwrite(a, LOW); if(mod = 1) mod = mod = 1; 23

digitalwrite(d, LOW); else if(analogread(n2) > 900 ) delay(700); break; if(mod = 3) mod = mod = 3; case 2: digitalwrite(a, LOW); digitalwrite(b, LOW); else analogwrite(c, 80); analogwrite(d, 95); break; if(mod = 2) mod = mod = 2; case 3: analogwrite(a, 80); analogwrite(b, 80); digitalwrite(c, LOW); switch (mod) case 1: analogwrite(a, 80); analogwrite(b, 80); digitalwrite(c, LOW); digitalwrite(d, LOW); delay(700); digitalwrite(d, LOW); delay(700); digitalwrite(a, LOW); analogwrite(b, 80); digitalwrite(c, LOW); digitalwrite(d, LOW); delay(700); break; analogwrite(a, 80); digitalwrite(b, LOW); digitalwrite(c, LOW); delay(10); 24