MATURITNÍ PRÁCE dokumentace
Časomíra požárního útoku Michal Kulišťák
školní rok: 2012/2013
obor: třída:
Elektronické zpracování informací ZI4.B
ABSTRAKT Autorův cíl práce bylo navrhnout a vyrobit plnohodnotnou tréninkovou časomíru pro požární sport. Přesněji pro disciplínu požární útok. Jedná se jak o část hardwarovou, tak i softwarovou. Autor kladl důraz na jednoduchost obsluhy a na co nejednoduší zpracování této časomíry. V následujícím textu naleznete více informací jak o problematice celého řešení, tak i o obsluze samotného zařízení.
OBSAH ÚVOD .................................................................................................................................... 7 1
CÍLE PRÁCE ............................................................................................................. 8
2
VÝBĚR TECHNOLOGIÍ PRO ŘEŠENÍ ................................................................ 9
2.1 HARDWARE ............................................................................................................ 9 2.1.1 ATmega8-16PU ............................................................................................. 9 2.1.2 SinaProg ......................................................................................................... 9 2.1.3 LCD displej .................................................................................................... 9 2.2 SOFTWARE............................................................................................................ 10 2.2.1 Program Eagle .............................................................................................. 10 2.2.2 AVRstudio 5................................................................................................. 10 2.2.3 SinaProg 1.5.5.10 ......................................................................................... 10 3 ZPŮSOBY ŘEŠENÍ A POUŽITÉ POSTUPY ....................................................... 12 3.1 TEORETICKÝ NÁVRH ČASOMÍRY POŽÁRNÍHO ÚTOKU ............................................ 12 3.1.1 Schematický návrh ....................................................................................... 12 3.1.2 Návrh desky plošného spoje ......................................................................... 14 3.2 VYBRAT MIKROKONTROLÉR VHODNÝ K ŘEŠENÍ TOHOTO ZADÁNÍ. ........................ 15 3.3 VYPRACOVAT ALGORITMUS ŘÍDÍCÍHO PROGRAMU. ............................................... 15 3.3.1 Algoritmus hlavního programu .................................................................... 15 3.4 VYBRAT VHODNÝ PROGRAMOVACÍ JAZYK. ........................................................... 17 3.5 DŮKLADNĚ ROZEBRAT TEORII PŘIPOJENÍ SNÍMAČŮ A VÝSTUPNÍHO DISPLEJE. ....... 17 3.5.1 Snímače ........................................................................................................ 17 3.5.2 Displej .......................................................................................................... 19 4 ZHODNOCENÍ DOSAŽENÝCH VÝSLEDKŮ .................................................... 20
5
4.1
SPLNĚNÉ CÍLE ....................................................................................................... 20
4.2
NESPLNĚNÉ CÍLE................................................................................................... 21
PŘÍRUČKA UŽIVATELE ...................................................................................... 22 PŘIPOJENÍ VSTUPNÍCH KONEKTORŮ, ZAPNUTÍ ZAŘÍZENÍ A SPRÁVNÁ FUNKCE ZAŘÍZENÍ .............................................................................................................. 22 5.1.1 Připojení vstupních konektorů ..................................................................... 22 5.1.2 Zapnutí zařízení ............................................................................................ 23 5.1.3 Zkouška funkčnosti zařízení......................................................................... 24 5.2 PROGRAMOVÉ FUNKCE A JEJICH VÝZNAM V PROGRAMU....................................... 25 5.2.1 Knihovna funkcí LCD.H .............................................................................. 25 5.2.1.1 Funkce portsDirectionSet..................................................................... 25 5.2.1.2 Funkce LCDinit ................................................................................... 25 5.2.1.3 Funkce LCDclr..................................................................................... 25 5.2.1.4 Funkce LCDtoxy .................................................................................. 25 5.2.1.5 Funkce LDCstring ................................................................................ 26 5.2.1.6 Funkce sprintf ...................................................................................... 26 5.2.1.7 Funkce LCDdata .................................................................................. 26 5.1
6
5.2.2 Funkce pocitani ............................................................................................ 27 5.2.3 Funkce resetovani ......................................................................................... 28 5.2.4 Funkce blikani .............................................................................................. 28 5.2.5 Funkce vypisovanil....................................................................................... 29 5.2.6 Funkce vypisovanip ...................................................................................... 30 5.2.7 Funkce LCDhorizontal ................................................................................. 31 5.2.8 Funkce poradi ............................................................................................... 33 5.2.9 Funkce start .................................................................................................. 34 5.2.10 Funkce nastaveni .......................................................................................... 35 SHRNUTÍ .................................................................................................................. 36
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
7
ÚVOD Při výběru výrobku pro maturitní práci hrálo nemalou roli autorovo členství ve sboru dobrovolných hasičů Tylovice. Tento sbor se aktivně věnuje soutěžím v požárním sportu. Autor se proto rozhodl vyrobit tréninkovou časomíru pro tzv. požární útok. Co je to požární útok? Jedná se o kolektivní disciplínu v požárním sportu. Tým tvořený 7 členy má za úkol v co nejkratším čase zdolat terče proudem vody, přičemž základna se stojem je od terčů vzdálená cca. 80m.
Časomíra pro tuto disciplínu má dvě části. První částí jsou terče, na kterých jsou připevněny snímače. Tyto snímače posílají signál do další části. Ta vyhodnotí zaslané informace a vypíše je na dvouřádkový LCD displej. Jednotlivé časy (pravý a levý) jsou vypisovány na samostatném řádku. Tento zápis je tak přehledný a velikostí plně dostačuje pro tréninkové účely.
Uvnitř časomíry se nachází mikroprocesor, který má na starost řízení a správnou funkci časomíry. Pro jeho naprogramování byl zvolen programovací jazyk C.
Funkce časomíry je navržená s ohledem na jeho využití při požárním útoku (disciplíny požárního sportu).
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
8
1 CÍLE PRÁCE Cílem práce bylo zpracovat teoretická východiska pro řešení časomíry. Dále pak zpracovat teoretický návrh časomíry požárního útoku. Dalším z cílu bylo tyto teoretické návrhy použít při tvorbě samostatného hardwaru a softwaru časomíry. Mimo jiné připravit praktické odzkoušení v podmínkách obhajoby maturitní práce. Celkovým výstupem maturitní práce je funkční časomíra požárního útoku. Při vlastní realizaci bylo postupováno podle jednotlivých bodů uvedených v zadání:
1. Vybrat mikrokontrolér vhodný k řešení tohoto zadání. 2. Vypracovat algoritmus řídícího programu. 3. Vybrat vhodný programovací jazyk. 4. Důkladně rozebrat teorii připojení snímačů a výstupního displeje. 5. Vypracovat dokumentaci maturitního výrobku
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
9
2 VÝBĚR TECHNOLOGIÍ PRO ŘEŠENÍ 2.1
Hardware 2.1.1
ATmega8-16PU
Autor zvolil pro svou práci mikroprocesor firmy Atmel z řady ATmega. S těmito druhy mikroprocesorů se již dříve seznámil v hodinách programování na SŠIEŘ. Dalším důvodem pro jeho volbu byly i jeho funkce. Tyto funkce obsáhnou vše potřebné k řízení celé časomíry. Firma Atmel zároveň vyvíjí vývojové prostředí k naprogramování svých mikroprocesorů, proto bylo zvoleno programové prostředí AVRstudio 5.
2.1.2
SinaProg
Tento programátor umožnuje nahrát řídící program z PC do mikroprocesoru přes USB 2.0. a to pomocí programu SinaProg verze 1.5.5.10, ve kterém se řídící program nahrává do mikroprocesoru ve formátu HEX.
Obr. 1 Programátor SinaProg
2.1.3
LCD displej
Pro tuto práci byl použit znakový LCD displej, který má 2 řádky umožňující výpis 32 znaků.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
2.2
10
Software 2.2.1
Program Eagle
K návrhu schématu a návrhu plošného spoje byl použit software Eagle verze 6.3.0. Byl zvolen především kvůli znalostem z praktických hodin na SŠIEŘ.
2.2.2
AVRstudio 5
Obr. 2 Znak AVRStudia 5
Software je produktem firmy Atmel. Toto vývojové prostředí obsahuje editovací okno, ve kterém se celý program píše. Je velmi přínosné, že prostředí samo rozpoznává části kódu (funkce, čísla, komentáře atd.) a barevně jej označuje, což vede k lepší přehlednosti celého kódu. 2.2.3
SinaProg 1.5.5.10
Software díky kterému můžeme nahrát řídící program do mikroprocesoru, tedy do jeho paměti. Nahrávaný soubor s řídícími instrukcemi je ve formátu .HEX.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
Obr. 3 Programové prostředí SinaProg v. 1.5.5.10
11
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
12
3 ZPŮSOBY ŘEŠENÍ A POUŽITÉ POSTUPY 3.1
Teoretický návrh časomíry požárního útoku 3.1.1
Schematický návrh
Pro návrh schématu časomíry požárního útoku byl využit program Eagle. V tomto programu je umožněno vkládat schématické značky jednotlivých součástek a jednotlivě je mezi sebou propojovat (to se odehrává v modu shematic). Dále je zde k dispozici mód board, ve kterém program umožní uživateli vytvořit návrh desky plošného spoje. Součástky jsou zde již v reálné velikosti, přesně tak jak budou poté na desce zapájeny. Program uživateli napovídá, které součástky mají být propojeny přesně podle schématu, který si předem namodeloval. Tím uživateli usnadňuje práci. Bez této pomoci by se stal celý návrh značně nepřehledným. Celá časomíra se skládá ze dvou částí. První část je deska s výpočetní, řídící jednotkou, vstupy a výstupy jednotlivých snímačů a tlačítek a samozřejmě také napájením. Druhá část je samotný LCD displej na kterém se vypisují aktuální časy.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
13
Sch. 1 Schéma časomíry Na sch. 1 se nachází vstupní porty pro stejnosměrné napájení +12V nebo +5V , stabilizátor napětí, který nám stabilizuje napětí z +12V na napětí +5V. Toto napětí je potřebné pro fungování mikroprocesoru. Jsou zde také přidány dva elektrolytické kondenzátory, které by měli chránit celé zapojení od možných nepříjemných zákmitů. Dále pak mikroprocesor Atmega8, který má vyvedeny všechny porty na jednotlivé plošky desky plošného spoje pro případné budoucí využití dalších funkcí časomíry. Seznam použitých součástek C1 – 100nF C2 – ELRS 10M/25V/85 C3 – ELRA 220M/50V/105 R1 – 300R IC1 – PAT 28 DIL UZ-PR (patice úzká, precizní) IC2 – 7805 +5V (stabilizátor napětí) +12,-12,+5,-5,S,-S,R,-R,L,-L,P-P – CMM5/3 13mm svorkovnice
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm 3.1.2
Návrh desky plošného spoje
Obr. 4 Deska plošného spoje
Obr. 5 Osazovací plán součástek na desce plošného spoje
14
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
3.2
15
Vybrat mikrokontrolér vhodný k řešení tohoto zadání.
K řešení časomíry byl zvolen mikroprocesor ATmega8-16PU, který svými funkcemi plně vystačí požadavkům uživatele. V této práci se využívá jen některé funkce ATmegy8. Využíváme 16bitový čítač pro odměřování času, který generuje přerušení každých 0,01s. Jako porty vstupní jsou využity piny na portu B a porty výstupní jsou použity piny na portu C.
3.3
Vypracovat algoritmus řídícího programu. 3.3.1
Algoritmus hlavního programu Kód 1 Ukázka kódu hl. programu a vektoru přerušení
Hlavní program je psán ve funkci MAIN neboli hlavni, do kterého jsou připisovány další funkce. Program prochází jako první funkcí NASTAVENI a poté se již opakuje smyčkou, ve které se provádí funkce PORADI , START a RESETOVANI. Jednotlivé funkce používají knihovnu s názvem LCD.h, která obsahuje další funkce, starající se o chod programu.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
16
Je zde i vektor přerušení, do kterého se program přepne, když čítač napočítá do nastavené hodnoty, která odpovídá 0,01s. V tomto vektoru se provádí následující funkce, které se starají o důležité věci, co se týče samotného počítání času a to ve funkci POCITANI. VYPISOVANIL a VYPISOVANIP slouží k vypsání času na displej ve správném formátu a na přiděleném místě. Nachází se zde i funkce BLIKANI.
Obr. 6 Diagram hlavního programu
Obr. 7 Diagram přerušení
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
17
Více informací o všech těchto funkcích naleznete v kapitole Příručka uživatele a v podkapitole Programové funkce a jejich význam v programu.
3.4
Vybrat vhodný programovací jazyk.
Vzhledem ke znalostem autora a možnosti využití knihoven pro programování, byl vybrán programovací jazyk C. Práce s LCD displejem je jedno z bodů výuky na SŠIEŘ a tak bylo pro autora přínosné použít některé funkce z výuky do této práce. Příkladem je například animace posuvného textu při inicializaci časomíry.
3.5
Důkladně rozebrat teorii připojení snímačů a výstupního displeje. 3.5.1
Snímače
Aby bylo možné měřit časy, musí být připojeny snímače. V této práci jsou použity vodotěsné vypínače, které se ideálně hodí do prostředí s nadměrnou vlhkostí nebo s přímým stykem s vodou. Na terčích se nachází mechanismus, který reaguje na průchod tlaku vodou vyřezanou dírou, do které se musí závodník trefit. Při jeho zásahu padá závaží na snímač umístěný pod ním, viz obrázek 8 a 9. Terče nejsou součástí časomíry. Tyto terče byly vypůjčeny od Sboru dobrovolných hasičů Hutiska-Solance. Na obrázku 10 se nachází terč s otvorem, kterým musí projít určité množství vody, aby dokázal shodit válec a tím uvést vypínač do stavu sepnutého. Dále je zde vyvedené světlo, které by rád autor realizoval v budoucnu. A to když bude snímač v poloze sepnuté, světlo svítí a pokud v poloze rozepnuté, světlo nesvítí.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
Obr. 8 Mechanismus terče rozepnuté (Log 1)
Obr. 9 Mechanismus terče sepnuté (Log 2)
18
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
19
Obr. 10 Čelní strana terče Na obrázcích 8 a 9 se nachází terč s nainstalovaným snímačem. Na obrázku 8 se nachází snímač, který je v poloze rozepnuté (logická 1), tzn. mikroprocesor má nastavenu vstupní hodnotu jako logickou 1 a čeká na sepnutí proti zemi, neboli na log 0. Na obrázku 9 je vidět naopak snímač, v poloze sepnuté (logická 0), na kterou čeká mikroprocesor, který tuto hodnotu vyhodnotí a zastaví čas na displeji. 3.5.2
Displej
Tento znakový LCD displej má 2 řádky, na kterých lze dohromady vypsat 32 znaků. Znak je tvořen několika body, na kterých se daný znak vypisuje, tzn., že lze vypsat jakýkoliv znak, pokud si ho autor vytvoří a vloží do programu, aby s ním mohl dále pracovat. Displej má také podsvícení, v tomto případě je barvy žluté. Obsahuje také budič, který se stará o výpis jednotlivých znaku na přidělené místo. Tento displej pracuje ve 4 bitovém módu.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
20
4 ZHODNOCENÍ DOSAŽENÝCH VÝSLEDKŮ 4.1
Splněné cíle
Autorovou snahou bylo vytvořit plnohodnotnou tréninkovou časomíru pro jednu z disciplín požárního sportu, požární útok. Tento cíl byl splněn a to prakticky ve všech bodech, které si autor kladl. V testovací části časomíra funguje bez sebemenších problémů. Případné problémy a nevýhody odhalí až její odzkoušení v praxi.
Výhodou tohoto zpracování je, že na desku plošného spoje lze připojit další vstupní a výstupní porty. Což dává autorovi šanci rozšířit možnosti časomíry a obohatit tak tento výrobek o další zajímavé funkce.
Obr. 11 Časomíra přední panel
Obr. 12 Časomíra zadní panel
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
21
Obr. 13 Vnitřní zapojení
4.2
Nesplněné cíle
Autorův druhořadý cíl byl vytvořit tuto časomíru i pro 7 - segmentový displej. Což se mu bohužel zatím nepodařilo.
Výhodou tohoto 7 - segmentového displeje je jeho mnohem lepší čitelnost. Jeho nevýhodou je pak jeho menší schopnost výpisu informaci, tak jak je to u LCD displeje.
V budoucnu by chtěl autor tento systém realizovat a vypracovat poté i verzi zá vodní. Což by umožnilo využití této časomíry i pro oficiální závody.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
22
5 PŘÍRUČKA UŽIVATELE 5.1
Připojení vstupních konektorů, zapnutí zařízení a správná funkce
zařízení 5.1.1
Připojení vstupních konektorů
Propojení časomíry se snímači, připevněných na terčích je provedeno pomocí XLR konektorů, které se používají především jako konektory mikrofonní. Konektory jsou vybaveny západkou proti samovolnému vypadnutí konektoru ze zdířky, což je velmi přínosné jak pro funkčnost, tak i pro jednoduchost zapojení jednotlivých konektorů.
Jako první připojíme terče k časomíře. K tomu slouží propojovací krabička. Od koncových snímačů vedou kabely s 3 pinovými konektory. Tyto konektory zapojíme na správné místo do krabičky. Levý snímač na konektor s označením Levý a pravý snímač na konektor s označením Pravý viz obrázek 14. Pro úplnou názornost jsou tyto nápisy barevně označeny různou barvou. Tyto barvy korespondují s barvami na konektorech snímačů.
Obr. 14 Propojovací krabička pro snímače Z propojovací krabičky vede další kabel, který připojíme do samotné časomíry. A to do zdířky s názvem Terče, na zadním panelu nalevo od zdířky s názvem Start. Tento konektor je 4 pinový, a proto nemůže nastat chyba při zapojení konektoru do jiné zdířky.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
23
Obr. 15 Zapojení konektoru Terče Poté následuje spojení konektoru se startovacím tlačítkem, který je umístěný na zadním panelu časomíry, nalevo s popisem Start, viz obrázek 16.
Obr. 16 Zapojení konektoru Start
5.1.2
Zapnutí zařízení
Po zapojení všech konektorů, můžeme zapnout zařízení pomocí vypínače umístěného na zadním panelu časomíry, vpravo od konektoru Terče. To provedeme tak, že vypínač dáme do polohy ON, znázorněného jako symbol „ |.“ Obvod je napájen 12V baterií viz obrázek
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
24
16. Výrobcem baterie je firma VAR-TEC a její označení je AKKU SMART 12V/1,3Ah a její nominální kapacita je 1,3 Ah.
Obr. 17 12V baterie
5.1.3
Zkouška funkčnosti zařízení
Pokud jsme vše provedli správně, rozsvítí se displej s prvotní animací a to na prvním řádku text: „SDH TYLOVICE“ a na řádku druhém horizontálně posuvný text: „Treninkova casomira pro pozarni sport“. Po této animaci se na prvním řádku displeje zobrazí text: „Levy : 0:00:00“ a na druhém řádku text: „Pravy : 0:00:00“.
Při správném zapojení a při stisku startovacího tlačítka, by se měl čas začít počítat a vypisovat na displej. Pokud je jeden z terčů nebo i oba v poloze sepnuté, vypíše se na displej signalizační upozornění CHYBA a to na místech kde se chyba vyskytuje (levý, pravý nebo oba snímače) a je zapotřebí dát tyto snímače do polohy rozepnuté a znovu zmáčkneme tlačítko START. Pokud se nám čas na displeji vypisuje, zkontrolujeme snímače a to tak, že je uvedeme do polohy sepnuté. Nyní se čas zastavil a pomalejší z těchto času vizuálně bliká a tím nám oznamuje konečný výsledek celého měření.
Pokud je čas na obou snímačích stejný blikají oba dva. Pro vynulování času, pro další měření podržíme tlačítko RESTART, které se nachází na předním panelu časomíry, a to po dobu 2s. Po uplynutí této doby se čas vynuluje do podoby, jako na začátku tzn. samé nuly. Pokud vše proběhlo, celé nastavení je u konce a můžeme přejít k měření času závodníků.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
5.2
25
Programové funkce a jejich význam v programu
V této kapitole jsou detailně popsány funkce a jejich využití v programu, doplněné kódy z programu AVRstudio 5. 5.2.1
Knihovna funkcí LCD.H
Tato knihovna obsahuje základní funkce k práci s LDC displejem. Jedná se o značné ulehčení psaní celého programu. V hlavním programu a v ostatních funkcích jsou využity, jen některé funkce z této knihovny a to tyto: 5.2.1.1
Funkce portsDirectionSet
Nastavuje porty displeje jako výstupní. Příklad zapsání v programu: potrsDirectionSet(); Funkce používající tuto funkci: nastaveni 5.2.1.2
Funkce LCDinit
Funkce nastavující displej ke správné funkčnosti ve 4 bitovém módu. Příklad zapsání v programu: LCDinit(); Funkce používající tuto funkci: nastaveni 5.2.1.3
Funkce LCDclr
Tato funkce vymaže displej od veškerých znaků vyspaných na displej dříve. Příklad zapsání v programu: LCDclr(); Funkce používající tuto funkci: nastaveni 5.2.1.4
Funkce LCDtoxy
Nastavuje místo vypsání textu. První číslice znázorňuje řádek (1-2) a druhá číslo znaku, od nějž se začne text vypisovat (1-16) Příklad zapsání v programu: LCDtoxy(1,1); Funkce používající tuto funkci: vypisovanil, vypisovanip, LCDhorizontal, nastaveni
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm 5.2.1.5
26
Funkce LDCstring
Zařizuje výpis požadovaného textu na displej v požadovaném formátu. Před příkazem této funkce musí být použita funkce LCDtoxy, pro definici místa výpisu. Příklad zapsání v programu: LCDstring(“ SDH TYLOVICE“); Funkce používající tuto funkci: vypisovanil, vypisovanip, LCDhorizontal, nastaveni 5.2.1.6
Funkce sprintf
Nastavuje výpis pole jako řetězce. Hodí se pro vypsání požadovaných proměnných a to v pořadí a ve formátu jaký si zvolíme. Jako první se v závorkách objeví proměnná typu CHAR poté následují uvozovky, ve kterých se nachází požadovaný formát výpisu. V našem případě se jedná o celočíselné hodnoty prokládanými znakem dvojtečky. Po těchto uvozovkách následují proměnné, které se mají vypisovat. Příklad zapsání v programu: sprintf(txtBuffer,"%d:%d%d:%d%d",minuta_l,Dvterina_l,vterina_l,desetina_l,setina_l); Funkce používající tuto funkci: vypisovanil, vypisovanip 5.2.1.7
Funkce LCDdata
Umožňuje vypsání jednoho znaku z pole v našem případě z pole s označením text. Z indexu v hranatých závorkách můžeme vyčíst, který znak se aktuálně vypisuje. Příklad zapsání v programu: LCDdata(text[i+posun]); Funkce používající tuto funkci: LCDhorizontal
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm 5.2.2
27
Funkce pocitani Kód 2 Funkce pocitani
Tato funkce má za úkol, při každém provedení přerušení přičítat 0,01s k levému a pravému času, pokud je dodržena podmínka, kdy se proměnná levyc rovna 1. Pokud ano program vykoná příkazy, které jsou zde uvedeny. Tedy pokud je setina rovna 10, poté se vynuluje a do proměnné setina se přičte 1 atd.. Tento postup má za následek správný formát času, aby nedošlo k případu např., že se čas rovná 65sekundám a 120 setinám. Postup, který vidíme v kódu 2 je jen pro levý čas, avšak postup pro pravou část je zcela totožný až na změny v názvech proměnných a to s koncovým _p.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm 5.2.3
28
Funkce resetovani Kód 3 Funkce resetovani
Práce funkce resetovani spočívá v tom, že vynuluje proměnné, které obsluhují další funkce. A dochází tak k nastavení proměnných jako při zapnutí. Jako ochrana proti náhodnému stisku tlačítka, musí uživatel toto tlačítko držet minimálně 1 sekundy, jinak se vynulování neprovede a program pokračuje dál. 5.2.4
Funkce blikani
Tato funkce funguje jako čítač, který přičítá každou setinu sekundy jedničku. Poté když funkce napočítá do 50, do proměnné blik se zapíše jednička. Pokud napočítá do 100, tak se vynulují proměnné blik a i. Funkce poté začíná počítat odzačátku.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
29
Kód 4 Funkce blikani
5.2.5
Funkce vypisovanil
Funkce řídí vypisování času na displej. Jako první nastává podmínka, jestli se proměnná chybal rovná 0. Pokud ano nastává další podmínka, která má za úkol vypsání prázdného textu, nebo aktuálního času. Jestliže jsou splněny podmínky blik, povol_start a vypis v 1 a blikl ve 2, nebo blik, povol_start a výpis v 1 a bliko ve 2, vypíše se prázdný text. Tento text začíná na prvním řádku, 10 znaku. Pokud nejsou splněny tyto podmínky, program vypíše stávající čas na stejném místě jako prázdný text v předchozí podmínce. Význam této funkce spočívá v tom, pokud je výsledný čas pomalejší nebo se rovná druhému času, začne na displeji vizuálně blikat. Tohoto jevu je dosaženo právě vymazáním a dále vypisováním času na příslušné místo.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
30
Kód 5 Funkce vypisovanil
5.2.6
Funkce vypisovanip
Funkce vypisovanip, je naprosto shodná s funkcí vypisovanil, až na odlišnost názvů proměnných, které používá pro výpis času na displej a proměnné používané v podmínkách.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm Kód 6 Funkce vypisovanip
5.2.7
Funkce LCDhorizontal Kód 7 Funkce LCDhorizontal
31
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
32
Animace, která proběhne při zapnutí časomíry má na starost tato funkce LDChorizontal. Jak již z názvu vyplývá, jedná se o horizontální posun textu, který nám při správném nastavení času, v reálném čase připadá jako plynně plující text. Jako první se u funkce vyskytuje nastavení vstupních hodnot funkce, kterými nastavíme text, který se má vypisovat a poté délku posuvu. Ten se počítá z počtu znaků textu + 16 znaků s mezerami za textem.
Následuje podmínka, která se pořád opakuje do chvíle, než se bude posun rovnat nebo bude větší než proměnná d_posunu. V tomto opakování se jako první nastaví začátek vypisování textu na druhý řádek, prvního znaku a následuje podmínka, ve které platí, pokud je proměnná i menší 16 tak se vypíše pomocí funkce LCDdata znak s indexem tvořeným součtem dvou proměnných a to i+posun.a program počká 10us To má za následek že se vypíše 16 znakové pole, tudíž celý řádek, a podmínka končí a přichází na řadu až v dalším cyklu předchozí podmínky.
Po tomto cyklu následuje nastavení výpisu textu na první řádek, třetího znaku. Zde se vypíše text „SDH TYLOVICE“ a počká se 400ms, poté se k proměnné posun přičte jednička. Dále přichází na řadu ošetření nepříjemného problikávání textu a to výpisem prázdného textu na druhém řádku od prvního znaku. Program počká 150ms a cyklus while, pokud není splněna požadující podmínka, začíná od začátku. Po jejím ukončení se proměnná posun vynuluje a funkce končí.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm 5.2.8
33
Funkce poradi Kód 8 Funkce poradi
Výsledkem této funkce je zápis hodnot do proměnných bliklo, blikp, blikl a x. Tyto proměnné se později používají ve vypisování výsledného času na displej a jeho blikání. Jako první zde testujeme stlačení snímačů na terčích a zároveň musí být v proměnné povol_star 1.
Pokud platí tyto podmínky do proměnných levyc, pravyc se zapíše 0 a tím se později zastaví přičítání času obou časů. A do proměnné výpis se zapíše 1. Poté následuje podmínka. Jestliže je x rovno 0 provede se zápis do bliko 2 a za x 1. Tyto proměnné později rozhodují
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
34
o blikání textu. Pokud tato podmínka neplatí, začíná test jednotlivých tlačítek nejdříve levého a poté pravého s obdobným průběhem jako u testování obou tlačítek najednou. 5.2.9
Funkce start Kód 9 Funkce start
Tato funkce hlídá správnou funkci tlačítek start, levého a pravého snímače. Pokud je startovací tlačítko sepnuté, oba terče v poloze rozepnuté a proměnná povol_start je 1, poté program provede zápis do proměnných levyc, pravyc povol_ start 1. To má za důsledek že, se začne přičítat čas ve funkci počítání. Pokud tato podmínka není splněná, následuje další kontrola jednotlivých tlačítek a poté i kontrola zmáčknutí obou tlačítek. Pokud jsou obě, nebo jenom jedno tlačítko ve stavu sepnutém Zapíše se do proměnných chybal nebo chy-
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
35
bap 1, která se poté postará ve funkci vypisovanil a vypisovanip o vypsání chybné hlášky na displej a to ve tvaru: „ CHYBA“. 5.2.10 Funkce nastaveni Kód 10 Funkce nastaveni
Hlavní program začíná jako první použitím této funkce. Provede se nastavení výstupních portů displeje, nastavení LCD displeje a provede se funkce LCDhorizontal (Prvotní animace). Program čeká 0,5s a poté vymaže displej. Provede se nastavení čítače na hodnotu, do které má počítat a to do hodnoty 4E1 hexa což odpovídá 0,01s, kterou potřebujeme pro měření času. Následuje zapnutí před děličky, a zapnutí hodin, Povolení přerušení čítače. Příkaz sei(); povolí přerušení v programu. Nastaví se i porty B jako porty vstupní a nastaví se jim hodnota log 1. To znamená, že port čeká na propojení se zemí tedy log 0.
Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm
36
6 SHRNUTÍ Aby autor dospěl k úspěšnému dokončení práce a dosáhl tak vytýčených cílů, musel projít několika fázemi. První fází bylo vypracování návrhu schématu a návrh desky plošného spoje v programu Eagle. Další pak bylo napsání programu v jazyce C, v programovém prostředí AVRstudio 5, pro mikroprocesor ATmega 8. Následovala realizace propojení vstupních snímačů s časomírou a mechanická práce spojená s prací na hardwarové stránce časomíry. Konečnou fází pak byla instalace všech součástek do jednoho celku.
Asi nejtěžší pro autora bylo, když se vyskytla chyba po napájení součástek na desku plošného spoje. V nepájivém poli vše fungovalo, ale při zapájení součástek na desku se celá časomíra chovala nestandardně. Svítila jen půlka displeje a vypadalo to, že nefunguje mikroprocesor tak jak má. Po několika hodinovém hledání chyby se příčina chyba našla při měření napětí na napájení mikroprocesoru. Celý problém spočíval ve špatné funkci stabilizátoru napětí, který měl stabilizovat napětí z 12V na napětí, potřebné k napájení mikroprocesoru a displeje, a to 5V. Tento stabilizátor vykazoval hodnoty okolo 7-7,5 V, což značně přesahovalo rozsah napájení mikroprocesoru. Po výměně stabilizátoru napětí za funkční, se celý obvod choval standardně, tedy přesně tak, jak v nepájivém poli.
Tato časomíra bude sloužit jako tréninková časomíra pro sbor dobrovolných hasičů Tylovice a umožní jim tak měřit časy zaběhnuté na tréninku, což bude jistě motivační prvkem. Bude tak možno dosáhnout ještě lepších výkonů na soutěžích konající se v našem regionu.
Do budoucna si autor klade cíl vypracovat časomíru pro požární sport a to s daleko větším a mnohem svítivějším 7 - segmentovým displejem. Dále vyvinout a zrealizovat bezdrátovou komunikaci snímačů a časomíry s možností ukládat časy do počítače. A jako poslední cíl - vypracovat vlastní terče se signalizačním zařízením.