TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií Bakalářský projekt Filip Procházka, Ladislav Hofman Liberec 0/0 Tento materiál vznikl v rámci projektu ESF (CZ..07/..00/07.047) Ref lexe požadavků průmyslu na výuku v oblasti automatického řízení a měření, KTERÝ JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY
TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií Ústav mechatroniky a technické informatiky Akademický rok: 0/ ZADÁNÍ ROČNÍKOVÉHO PROJEKTU Jméno a příjmení: Filip Procházka, Ladislav Hofman Studijní program: B 646 Informační technologie Název tématu: (0) Vedoucí učitel projektu: Ing. Jan Koprnický, Ph.D. Zásady pro vypracování:. Seznamte se s částmi elektronického systému automaticky řízeného elektrického auta na autodráhu.. Realizujte hardwarovou část systému.. Navrhněte algoritmus řízení a vytvořte odpovídající software. 4. Funkční auto otestujte na závodní autodráze. 5. Závěrečnou technickou zprávu napište v sázecím systému L A TEX. Seznam odborné literatury: [] Brejl, M.; Necesany, J.: Student s contest: Self-driven slot car racing. In Computer Science and Information Technology, 008. IMCSIT 008. International Multiconference on, Říjen 008, ISBN 978-8-6080-4-9, ISSN 896-7094, s. 589 59, doi: 0.09/IMCSIT.008.47470. [] Rybička, J.: L A TEXpro začátečníky. Brno: Konvoj, 999, ISBN 80-8565-4-8. [] Ďaďo, S.; Kreidel, M.: Senzory a měřicí obvody. Praha: ČVUT, druhé vydání, 999, ISBN 80-0-0057-6. Rozsah závěrečné zprávy o řešení projektu: 0 až 5 stran V Liberci dne 0. září 0 Vedoucí učitel projektu (podpis)...................
Prohlášení Byli jsme seznámeni s tím, že na náš bakalářský projekt se plně vztahuje zákon č. /000 Sb. o právu autorském, zejména 60 - školní dílo. Berem na vědomí, že Technická univerzita v Liberci (Tul) nezasahuje do našich autorských práv užitím našeho bakalářského projektu pro vnitřní potřebu TUL. Užijeme-li bakalářský projekt nebo poskytneme-li licenci k jejímu využití, jsme si vědomi povinnosti informovat o této skutečnosti Tul; v tomto případě má TUL právo od nás požadovat úhradu nákladů, které vynaložila na vytvoření díla, až do jejich skutečné výše. Bakalářský projekt jsme vypracovali samostatně s použitím uvedené literatury na základě konzultací s vedoucím bakalářského projektu a konzultantem. Datum Podpis Prohlášení
Poděkování Na tomto místě bychom rádi poděkovali Ing. Janu Koprnickému, Ph.D. za jeho podporu a cenné rady, které nám poskytl při tvorbě bakalářského projektu. Poděkování 4
Abstrakt Projekt se zabývá návrhem samořídícího autíčka na autodráhu. Srdcem autíčka je mikrokontroler MCF5JM64, díky kterému je možné programově ovládat zbylé komponenty. Model autíčka je napájen stabilním napětím 5 V z dráhy. Napětí je následně usměrněno a s pomocí lineárního napěťového regulátoru LP950 sníženo na, V. Projekt demonstruje využití H- můstku MC9 ovládaného PWM signály z mikrokontroleru. Dále pak čtení a zpracování údajů z tříosého akcelerometru MMA76. Práci s ukládáním a čtením dat z SD karty a programování autíčka s využitím USB portu. Při analýze projektu jsme zvolili vhodné řešení mapování tratě s využitím akcelerometru. Nejprve bylo ale nutné zvolit vhodné softwarové filtrování dat z akcelerometru, jelikož výchozí řešení bylo časově zpožděné. Klíčová slova: Akcelerometr, H-můstek, Freescale, Kalmanův filtr, CNY70 Abstract Project is concerned with self-controlled slot car. The heart of the car is microcontroller. Thanks to MCF5JM64 it is possible to control other components by software. Model of the car is powered by stable voltage of 5 V from slot car racing. After that the voltage is streamlined a with help of linear voltage regulator LP950 it is lowered to.v. Project demonstrate use of H-bridge MC9, which is controled by PWM signals from microcontroller. Next is reading and processing of informations from three-axis accelerometer MMA76. Project also demonstrates work with saving and reading information from SD card a programming of car using USB port. During the analysis of project, we used suitable solution of maping the track with use of accelerometer. First it was neccessary to use suitable software data filtering from accelerometer, because default solution had time delays. Key words: Accelerometer, H-bridge, Freescale, Kalman filtr, CNY70 Abstract 5
Obsah Prohlášení Poděkování 4 Abstrakt 5 Abstract 5 Obsah 6 Úvod 8 Hardwarová část 8. Mikrokontroler MCF5JM64........................... 8. Napájení z dráhy................................. 8. Lineární napěťový regulátor. V........................ 9.4 H-můstek pro napájení motoru.......................... 0.5 Akcelerometr MMA76..............................6 LED pro přední a zadní světla...........................7 Instalace desky do modelu autíčka.........................8 Čidla CNY70................................... Software. Mapování a průjezd tratě.............................. SD karta...................................... 4 4 Závěr 5 Literatura 6 Příloha A - Schéma obvodu plošného spoje. 7 Příloha B Doplňující fotky. 8 Obsah 6
Seznam obrázků Napájení z dráhy.................................. 9 Napěťový regulátor LP950............................ 9 Schéma H-můstku................................. 0 4 Ovládání H-můstku................................ 0 5 Akcelerometr MMA76.............................. 6 Zapojení LED diod................................. 7 Nefiltrovaná data z akcelerometru......................... 8 Data z Kalmanova filtru.............................. 9 Model vozu..................................... 8 0 Osazený plošný spoj. Převzato z <http://www.hw.cz/frc0........ 8 Seznam obrázků 7
Úvod Cílem projektu bylo naprogramovat samořídící autíčko, které by bylo schopné jezdit maximální rychlostí po neznámé dráze. Autíčko jede v prvním kole referenční rychlostí a využívá akcelerometru k mapování tratě. V dalších kolech již využívá mapu z prvního kola k dosažení maximální rychlosti. Základem práce bylo nutné pochopit funkčnost jednotlivých obvodů, především akcelerometru a H-můstku. Dále se seznámit se způsobem programování mikrokontroleru a s vývojovým prostředím CodeWarrior. Model autíčka se účastní soutěže Freescale Race Challenge 0, což jsou v podstatě rychlostní závody na předem známé a neznámé trati. Vítěz univerzitního kola postupuje do finále v Rožnově pod Radhoštěm. Hardwarová část. Mikrokontroler MCF5JM64 Mikrokontroler MCF5JM64[] obsahuje bitové jádro V ColdFire, které využívá 64 kb paměti typu flash pro program a je schopné pracovat maximálně na frekvenci 50, MHz. V našem případě pracuje na 48 MHz, přičemž referenční krystal kmitá na 8 MHz. Paměť typu RAM je má velikost 6 kb. Mikrokontroler integruje více funkčních bloků na jeden čip. Jedná se tedy o konstrukci typu SoC (system on a chip). Mikrokontroler sice dokáže pracovat v rozmezí,7 V až 5,5 V, my jej ale díky lineárnímu napěťovému regulátoru napájíme stabilními, V. Z kontaktů 64 pinového pouzdra využíváme především dva 6 bitové časovače kvůli PWM regulaci. Dále pak piny pro komunikaci s SD kartou a USB portem. Nesmíme zapomenout na digitální vstupy a výstupy pro ovládání různých komponent, například optických čidel.. Napájení z dráhy Autíčko je standardně napájeno z kolejnic dráhy napětím o velikosti 5 V. Přenos napětí k elektronice autíčka je uskutečněn dvojicí snímacích kartáčků pro každou jednotlivou kolej- Hardwarová část 8
nici dráhy. Aby nedošlo ke zničení elektroniky a zároveň bylo možno jezdit po dráze oběma směry, je na vstupu umístěn usměrňovací diodový můstek (B, Grätzův, typ DB06S A[]). Můstek je doplněný o 00 uf kondenzátor (C), sloužící k filtraci vstupního napětí V in (obr. ). Z kartáčků jsou vyvedeny přes děliče napětí vstupy mikrokontroleru INT a INT, které slouží například k indikaci křížení na dráze. Obrázek : Napájení z dráhy.. Lineární napěťový regulátor. V Napětí z diodového můstku je nutné snížit na, V, se kterými pracuje mikrokontroler. Z tohoto důvodu je na desce umístěn,v lineární napěťový regulátor LP950[6] (obr. ). Napájet je ho možné dvěma způsoby, které jsou vzájemně oddělené pomocí Shottkyho diod (D, D). První způsob je napájení z napětí dráhy. Druhý způsob je z miniusb portu, tedy přes programovací mód, kdy je oddělen H-můstek s motorem. Obrázek : Napěťový regulátor LP950. Hardwarová část 9
Snímací kartáčky občas ztrácí kontakt s dráhou a dochází k něžádoucím výpadkům napětí. Toto chování bylo částečně eliminováno zapojením kondenzátoru (CON) na výstup regulátoru (v našem případě 000 uf). Pro absolutní eliminaci výpadků bylo nutné zapojit paralelně k C kondenzátor o kapacitě 000 uf. Na tomto kondenzátoru je výrazně vyšší napětí (okolo 4 V) a díky tomu dokáže déle napájet regulátor..4 H-můstek pro napájení motoru H-můstek MC9[5] (obr. je ovládán PWM signály z mikrokontroleru přivedenými na vstupy IN a IN, pro obě strany H-můstku. Dále jsou zapojeny piny D (vypínání), EN/D (sleep mode), SF (status motoru) a FB (proud protékající H-můstkem). Motor (CON) je řízen čtyřkvadrantově. To znamená, že je umožněno zrychlování i zpomalovaní v obou směrech otáčení. Obrázek : Schéma H-můstku. Obrázek 4: Ovládání H-můstku. Hardwarová část 0
.5 Akcelerometr MMA76 Akcelerometr (obr. 5) dnes nalezneme v každém druhém mobilním telefonu. Tento funguje úplně stejně tedy na principu změny kapacity ve osách. Typ MMA76[4] umožňuje nastavení citlivosti uzemněním pinu G S EL je nastaveno ±,5g. Akcelerometr má vlastní krystal KHz Bylo by tedy vhodné mikrokontrolerem vzorkovat X, Y, Z stejnou frekvencí, aby se zamezilo chybám ve vzorkování. V praxi však akcelerometr generuje veliké množství šumu, který je nutné pro potřeby aplikace softwarově filtrovat. Obrázek 5: Akcelerometr MMA76..6 LED pro přední a zadní světla Na přední a zadní světla jsme použili mm LED (obr. 6). Tato světla jsme pak využívali jako signalizaci stavů různých proměnných. Například zadní světla pro signalizaci překřížení a přední světla pro signalizaci směru zatáčení. Výhodou bylo, že nebylo nutné přidávat předřadné rezistory, jelikož již jsou na základní desce obsaženy. Obrázek 6: Zapojení LED diod. Hardwarová část
.7 Instalace desky do modelu autíčka Jelikož konstrukce našeho modelu autíčka byla jiná, než jsme očekávali, museli jsme vyřešit několik problémů s tím spojených. Prvním problémem byla jiná pozice distančního sloupku v autíčku oproti otvoru v základní desce nebylo tedy možné desku na dané místo nainstalovat. Toto jsme vyřešili tak, že jsme pomocí dvousložkového lepidla nalepili distanční sloupek na správné místo. Desku pak stačilo jednoduše přišroubovat. Druhým problémem byla chybějící tlumivka k motorku na základní desce. Jelikož jsme předepsaný typ nesehnali, připájeli jsme jiné tlumivky ze staré ATX základní desky..8 Čidla CNY70 Z důvodu potřeby více synchronizačních míst na trati jsme do podvozku modelu autíčka zabudovali dva kusy reflexních optosnímačů CNY70. Toto čidlo kombinuje LED a fototranzistor v jednom pouzdře, což zjednodušuje instalaci. Pro napájení čidel jsme vhodně využili konektor CON9 a CON0, který se standardně používá pro nahrání bootloaderu do mikrokontroleru. Čidla používáme pro snímání startu kde na dráze v místě začátku jízdy, byl umístěn bílý pruh s nápisem START. Bylo nutné, abychom použili dvě čidla z důvodu eliminace chyby, jako může být například odraz od kolejnice a tím pádem chybného vyhodnocení startu. Čidla jsou zapojeny co nejdále od sebe, a když jsou obě čidla sepnuta, tak nám následně program vyhodnotí, že jsme projeli startem a podle toho zareaguje program. Software. Mapování a průjezd tratě Základem řídícího programu je Kalmanův filtr[7] na který byl následně aplikován průměrovací filtr. Nefiltrovaná data (obr. 7) a ty z Kalmanova filtru (obr. 8) můžeme pro porovnání vidět na obrázku níže. Tento filtr jsme vybrali, jelikož se osvědčil jako nejrychlejší z filtrů, které jsme zkoušeli. Filtr FilterHalfBand8Lynn zvolený v ukázkovém programu je pro danou aplikaci nevhodný kvůli velkému zpoždění výstupních dat. Software
Obrázek 7: Nefiltrovaná data z akcelerometru. Obrázek 8: Data z Kalmanova filtru. Program při prvním průjezdu dráhou zvolí bezpečnou referenční rychlost, při které až do druhého křížení (což představuje jistotu průjezdu celé tratě) mapuje trať. K mapování tratě se využívají filtrovaná data z akcelerometru. Tato data se předávají průměrovacímu filtru, který je vyhodnotí ( = rovina, = levá zatáčka, = pravá zatáčka, 4 = křížení) a každých 0 ms uloží do pole. Po druhém průjezdu křížením se program přepne do závodního režimu. V tomto režimu program postupně projíždí jednotlivé hodnoty v poli a podle nalezené hodnoty mění aktuální rychlost motoru. Zároveň se program dívá o indexy v mapě dopředu. Pokud zjistí, že se blíží zatáčka nebo křížení, začne postupně zpomalovat až na rychlost nutnou k projetí (viz. Software
Typ Rychlost Rovina 00 Zatáčka 900 Křížení 650 Tabulka : Rychlostní tabulka tab. ). To samé platí o zrychlování při výjezdu ze zatáčky. Funkce zmenrychlost, která je volaná přerušením každých 0,5 ms, zvyšuje, nebo snižuje hodnotu motorvoltage (rychlost) o 0. Díky této funkci máme zaručené plynulé zvyšování rychlosti autíčka.. SD karta SD karta nakonec nebyla pro účely programu využita, jelikož zpomaluje start autíčka o přibližně sekundu. Problém, který nám přínáší to, že nepoužíváme SD kartu, jen ten, že pokud nám auto vypadne z dráhy, tak po nasazení musí auto opět mapovat a tím se nám prodlouží celkový čas jízdy. Z tohoto důvodu jsme zvolili takové rychlosti, aby nám auto (při očištěných pneumatikách) v žádném případě nevypadlo, jelikož by se nám výrazně zpomalila jízda okruhu. Tento problém by se dal vyřešit několika způsoby. Pokud bychom nadále nechtěli používat SD kartu, tak by bylo řešením použít připojení akumulátoru, který by udržel napětí i po vypadnutí autíčka z dráhy. Další možností, jak vyřešit problém s vypadnutím napájení, by bylo použítí SD karty, kde bychom si po namapování uložili celý profil dráhy a stále si ukládali pozici auta, následně po vypadnutí a nasazení auta na dráhu bychom zjistili, jestlli je na kartě nějaký soubor, a pokud ano, tak načíst mapu, aktuální pozici a přepnout do závodního řežimu, pokud ne, tak opět namapovat dráhu. Software 4
4 Závěr Na konci projektu byl vytvořen algoritmus, který byl schopen zúčastnit se univerzitního finále, které se konalo 5. 4. 0. V hlavním závodě jsme se umístili až na šestém místě (z celkového počtu sedmi závodníků). Největším problémem, který nás v této jízdě provázel, byl ten, že se nám nedařilo v jízdě správně synchronizovat s tratí, a auto zvyšovalo rychlost v místech, v kterých by mělo zpomalovat. Hlavní důvod této komplikace bylo to, že jsme v době závodu neměli funkční synchronizaci po přejetí křížení. Jakmile jsme zprovoznily detekci křížení, tak naše auto bylo konkurenceschopné jízdy a to i s vítězem hlavního závodu. Ve vyřazovacím závodě, kde byla trať asi o polovinu kratší a neměla v ní synchronizace tak důležitou roli, jako v hlavním závodě, jsme se umístili první. V průběhu práce se také objevilo několik problémů. Jedním z nejčastějších problémů byl utržený drátek z plošného spoje, protože často docházelo k pádu autíčka z velké výšky poté, co jsme měli špatně navržený program, nebo jsme testovali maximální průjezd zatáčkou a následně auto vyletělo z dráhy a posléze také ze stolu. V příštím roce bychom se rádi účastnili soutěže znovu a pokud možno se umístili do druhého místa. Nejdůležitější částí by bylo zlepšení určení pozice autíčka, což by mohlo vylepšit snímání otáček z kol a měření ujeté vzdálenosti. Další možností by bylo používání akcelerometru přímo v závodním režimu a kontrolování, jestli je pozice auta totožná s indexem v mapě. 4 Závěr 5
Literatura [] BREJL, Milan. Freescale Race Challenge 0: Soutěž samořídících autíček na autodráhu pokračuje [online]. 9.0.0 [citováno 0--7]. Dostupné z: <http://www. hw.cz/frc0> [] FREESCALE. Datasheet mikroprocesoru MCF5JM64 [online]. 06-009 [citováno 0- -7]. Dostupné z: <http://www.freescale.com/files/bit/doc/ref_manual/ MCF5JM8RM.pdf> [] DC COMPONENTS CO., LTD. Datasheet diodového můstku DB06S-SMD [online]. 06-009 [citováno 0-05-0]. Dostupné z: <http://www.ges.cz/sheets/d/db0_07s_ dc.pdf> [4] FREESCALE. Datasheet Akcelerometru MMA76 [online]. 04-008 [citováno 0- -7]. Dostupné z: <http://www.freescale.com/files/sensors/doc/data_sheet/ MMA76L.pdf> [5] FREESCALE. Datasheet H-můstku MC9 [online]. -008 [citováno 0- -7]. Dostupné z: <http://www.freescale.com/files/analog/doc/data_sheet/ MC9.pdf> [6] ONSEMI. Datasheet regulátoru LP950 [online]. 09-0 [citováno 0--7]. Dostupné z: <http://www.onsemi.com/pub_link/collateral/lp950-d.pdf> [7] TINKERING. Kalmanův filtr [online]. 009--8 [citováno 0-05-]. Dostupné z: <http://www.scribd.com/doc/700586/ Filtering-Sensor-Data-with-a-Kalman-Filter-\T\ textemdash-interactive-matter> Literatura 6
Příloha A Schéma obvodu plošného spoje. + +..009 6:48:0 D:\berem\zaloha PC\work\auticko v.0\slot car v.\slot car v..sch (Sheet: /) CON + + + + B D D4 C 00uF D D C uf C uf R R4 +V +V C 00nF R7 M Q C9 C0 5pF 5pF R9 C C R8 R5 0k R6 70R FB C7 uf L 4 4 45 0 4 5 A P P P P VPWR VPWR VPWR VPWR VPWR 4 5 6 40 9 V_in CON R R 6k 6k INT INT +V +V IC R8 0k IN OUT SENSE VOTAB 6 SH-DOWN FB 7 ERROR 4 LP95CDM-. R R4 C4 C5 k k R R USB_DN USB_DP 4 5 6 7 8 9 0 0 6 7 54 55 57 58 59 56 5 45 46 PTE0/TXD PTE/RXD PTE/TPMCH0 PTE/TPMCH PTE4/MISO PTE5/MOSI PTE6/SPSCK PTE7/SS PTF0/TPMCH PTF/TPMCH PTF/TPMCH4 PTF/TPMCH5 PTF4/TPMCH0 PTF5/TPMCH PTF6 PTF7/TXCAN PTG0/KBIP0 PTG/KBIP PTG/KBIP6 PTG/KBIP7 PTG4/XTAL PTG5/EXTAL VSSOSC IRQ BKGD/MS #RESET VUSB VREFH VREFL MCF5JM8 PTA0/RGPIO0 PTA/RGPIO PTA/RGPIO PTA/RGPIO PTA4/RGPIO4 PTA5/RGPIO5 PTB0/MISO/ADP0 PTB/MOSI/ADP PTB/SPSCK/ADP PTB/SS/ADP PTB4/KBIP4/ADP4 PTB5/KBIP5/ADP5 PTB6/ADP6 PTB7/ADP7 PTC0/SCL PTC/SDA PTC PTC/TXD PTC4 PTC5/RXD PTC6/RXCAN PTD0/ADP8/ACMP+ PTD/ADP9/ACMP- PTD/KBIP/ACMP0 PTD/KBIP/ADP0 PTD4/ADP PTD5 PTD6 PTD7 USBDN USBDP 8 9 0 4 5 6 7 8 9 40 4 60 6 6 6 64 4 4 48 49 50 5 5 5 4 MC9 SF 44 FB SF FB CCP OUT C6 IN 4 IN OUT CON OUT 00nF IN 4 IN D EN/D OUT OUT OUT 4 6 7 8 4 5 6 7 8 9 7 8 9 47 VSS VSSAD VDD VDDAD 44 CLK DI DO #CS C6 IC5 5 7 6 VSS VDD 4 +V +V 0k 00nF MICRO_SD MHz +V 00nF 00nF CON0 0R KBIP C4 4.7uF R_LED_ F_LED_ R_LED_ F_LED_ IN IN D SF XTAL EXTAL BKGD/MS #RESET C5 0.47uF +V CAP D EN/D SW +V CON_MISO EXP CON_MOSI CON_MOSI 0 CON_MISO CON_CLK CON_SS CON_CLK CON_SS CON_TX INT CON_RX INT R7 0k BKGD/MS CON9 CON_TX CON_RX EN/D FB JP SW GPIO USB_DN USB_DP CON C8 nf +V R C7 00nF 0k MOTOR LED_R_R R5 CON7 LED_F_R R0 CON6 LED_R_L R6 CON5 LED_F_L R CON4 MMA76 VDD 0 G_SEL SLEEP 0G TEST VSS F_LED_ R_LED_ F_LED_ R_LED_ C8 C9 C0 n n n 4 5 8 5 Z Y X 8 6 4 9 7 5 6 7 9 5 X Y Z 4 X Y Z Příloha A - Schéma obvodu plošného spoje. 7
Příloha B Doplňující fotky. Obrázek 9: Model vozu. Obrázek 0: Osazený plošný spoj. Převzato z <http://www.hw.cz/frc0. Poděkování: Tento materiál vznikl v rámci projektu ESF (CZ..07/..00/07.047) Ref lexe požadavků průmyslu na výuku v oblasti automatického řízení a měření. Formát zpracování originálu: titulní list barevně, další listy včetně příloh černobíle. Příloha B Doplňující fotky. 8