Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky
Diplomová práce Autonomní detekce polohy robota
Plzeň, 2012
Jan Pšenička
Prohlášení Prohlašuji, že jsem diplomovou práci vypracoval samostatně a výhradně s použitím citovaných pramenů. V Plzni dne
Abstract Autonomous robot position detection This thesis deals with the possibility of detecting the position of the robot by rotating laser beams. The theoretical part describes the design solving problems associated with implementation and proposals for practical implementation of the device. The implementation part describes the implementation of the testing facility, where I tested the applicability of the proposed methods. Result of this thesis is to verify the practical applicability of the method detection position by rotating laser beams.
Obsah 1.Úvod...............................................................................................................................7 2.Teoretická část...............................................................................................................8 2.1.Využití rotujícího laserového paprsku pro detekci polohy....................................8 2.2.Zaměření laseru......................................................................................................8 2.2.1.Řešení zaměření laseru...................................................................................9 2.3.Přenos údajů o poloze..........................................................................................11 2.4.Synchronizace otáčení motoru a vysílání dat.......................................................11 2.5.Výpočet polohy....................................................................................................13 2.5.1.Sinová věta...................................................................................................14 2.6.Přesnost určení polohy.........................................................................................15 2.6.1.Obsah plošky................................................................................................16 2.6.2.Úhlová rychlost paprsku...............................................................................17 2.7.Pohyb robota v prostoru.......................................................................................19 2.7.1.Záznam trasy................................................................................................19 2.7.2.Navigace s využitím laserů...........................................................................19 2.7.3.Pohyblivý přijímač.......................................................................................20 2.7.4.Navigace k cíli..............................................................................................21 3.Realizační část.............................................................................................................22 3.1.Popis použitých součástek v zapojení..................................................................22 3.1.1.Integrované obvody......................................................................................22 3.1.2.Laser.............................................................................................................23 3.1.3.Fototranzistor................................................................................................24 3.2.Vývojový modul Renesas EVB2633F.................................................................25 3.2.1.Obecný popis................................................................................................25 3.2.2.Mikrokontrolér H8S/2633F..........................................................................26 3.2.3.Procesorové jádro.........................................................................................26 3.2.4.Adresování a organizace paměti...................................................................26 3.2.5.Periferie........................................................................................................27 3.2.6.Vnější paměti................................................................................................27 3.2.7.Sériové rozhraní............................................................................................28 5
3.2.8.Konektory.....................................................................................................28 3.3.Rozšiřující deska Pwr_2 pro EVB2633F.............................................................29 3.3.1.Blokové schéma desky.................................................................................29 3.3.2.Spínací můstky H.........................................................................................30 3.3.3.Obvod L298..................................................................................................31 3.3.4.Vstupní obvody pro připojení optických snímačů........................................32 3.3.5.Šířka adresní sběrnice...................................................................................33 3.4.SCI – Sériové komunikační rozhraní...................................................................34 3.4.1.Nastavení přenosové rychlosti......................................................................35 3.5.Výpočet souřadnic................................................................................................36 3.5.1.Postup výpočtu souřadnic.............................................................................37 3.5.2.Přesnost určení polohy.................................................................................38 3.6.Výpočet parametrů přenosu.................................................................................39 3.7.Program pro řízení vysílání a motor.....................................................................41 3.7.1.Naprogramování obvodu CPLD na desce Pwr_2.........................................41 3.7.2.Řízení směru otáčení motoru........................................................................42 3.8.Zapojení obvodu...................................................................................................44 3.8.1.Vysílací část..................................................................................................44 3.8.2.Přijímací část................................................................................................45 3.8.3.Ovládání motoru a čidla...............................................................................46 3.9.Vyhodnocení vlastností........................................................................................48 4.Závěr............................................................................................................................49 Přehled zkratek................................................................................................................50 Literatura.........................................................................................................................51 Příloha.............................................................................................................................52
6
1. Úvod V diplomové práci rozvíjím myšlenku na detekci polohy robota pomocí rotujících laserů. Úvod teoretické části se zabývá možnostmi využití tohoto způsobu určování polohy. Návrh principů, jakými bude možné zařízení realizovat, přináší velké množství problémů, které je nutné důkladně prozkoumat a nalézt pro ně řešení, nebo nalézt jiné řešení, kterého se dané problémy tolik nedotýkají. V teoretické části tedy postupně nacházím cestu k co možná nejlepšímu návrhu metody vhodné pro praktické pokusy. Součástí je i odvozování matematických vzorců, které umožní správně navrhnout testovací zařízení. Realizační část využívá poznatky získané v části teoretické a přiřazuje jim reálné rozměry. Snažím se v ním navrhnout testovací zařízení, které vyzkouší principy a metody popsané v teoretické části. Důležitou součástí realizace je správný návrh a zapojení analogových obvodů, pomocí kterých je možné navržené metody vyzkoušet. Jako základní část testovaného zařízení je zvolen mikrokontrolér H8S/2633F, ke kterému je možné připojit různé periferní obvody, z nichž některé umožní snazší realizaci zařízení.
7
2. Teoretická část 2.1. Využití rotujícího laserového paprsku pro detekci polohy Rotující laserový paprsek představuje možné řešení pro navigaci pohyblivého robota po malém prostoru (v řádu metrů). Robot se po vyhrazeném prostoru může pohybovat samostatně, podle předem připraveného algoritmu, nebo mu jsou data o poloze, na kterou se má přemístit dodávána bezdrátovou technologií. To hlavně v případě napájení robota z baterie, kdy poté nejsou potřeba žádné přívodní vodiče. Data o poloze získává robot ze dvou laserů, umístěných na dvou místech na kraji prostoru, který ohraničují. Při průchodu laserového paprsku přes přijímač na robotu je z úhlu jejich natočení možné vypočítat aktuální souřadnice robota v ohraničeném prostoru. Další možností využití je zaměření statického objektu nebo zařízení na určité místo v prostoru.
2.2. Zaměření laseru Aby bylo možné na přijímači zjistit údaje z laseru, je nutné zajistit správné zaměření vysílajícího laseru na přijímací fototranzistor. Vzhledem k tomu, že přijímací plocha fototranzistoru je v řádu milimetrů a plocha, na kterou dopadá záření z laseru je i přes velké vzdálenosti také v rozměru několika milimetrů, je velmi obtížné zajistit přesné vertikální zaměření. Stačí pouze malá změna výšky vysílače nebo přijímače a rotující laserový paprsek neprojde přesně přes střed přijímací plochy fototranzistoru.
8
U vysílače lze stabilitu zajistit. Očekává se, že bude umístěn na pevné základně a řádně zaměřen do přesné roviny. Problém nastává u přijímače. Ten může být tvořen pevným objektem, ale také pohybujícím se robotem, například na kolovém nebo pásovém podvozku a poté stačí, aby najel na nepatrnou nerovnost povrchu a příjem dat po laseru bude přerušen.
2.2.1. Řešení zaměření laseru Jednou z možností jak lze tento problém vyřešit na straně přijímače i vysílače je využití optických čoček. Na straně přijímače lze využít spojnou čočku (obrázek 2.1), kde bude přijímač přesně v jejím ohnisku (Focal point). Je ale nutné, aby se navzájem nepohnuly. Další nevýhodou tohoto řešení je pouze vertikální zvětšení rozsahu. Přijímač se může pohybovat nahoru a dolu o vzdálenost danou rozměry čočky, ale nesmí se změnit úhel naklonění čočky. Pokud na ní světlo dopadá z jiného úhlu než přímého, tak se její ohnisko posune a na přijímač bude dopadat nedostatek záření.
Obr 2.1: Spojná čočka [1]
9
Lepším řešením je použití rozptylné čočky (obrázek 2.2) na straně vysílače. Ta připevněná napevno k základně s laserem rozptyluje záření do šířky, takže pokryje větší vertikální rozsah a příjemce má větší šanci signál zachytit. Laser je umístěn v ohnisku (Focal point). Nevadí ani menší náklon přijímače. Ten je omezen přijímacím úhlem fototranzistoru (popis v realizační části – popis součástek).
Obr 2.2: Rozptylná čočka [1]
Při rozptylu laserového paprsku dochází ale k jeho zeslabení, čímž se znesnadňuje příjem signálu u příjemce a při zvýšení jeho citlivosti by se zase mohly objevovat chyby způsobené jinými zdroji záření. Rozptyl je proto vhodné volit pouze minimální, například v rozsahu centimetrů ve vertikálním směru a vzdálenosti několika metrů. To zaručuje dostatečný výkon laserového paprsku v celém rozsahu a není potřeba zvyšovat výkon laseru. To by zase znamenalo zvýšení spotřeby a navíc pokud by přišli do kontaktu se zrakem osob, jsou silnější lasery nebezpečnější.
10
Dále je nutné zaručit vysílání paprsku pouze v úzké čáře kolmé na zem. Při rozptylu záření do šířky, která by přesahovala šířku směru jednoho vysílaného úhlu, by vznikaly problémy na straně příjemce, který by v rychlém sledu za sebou zaznamenal několik sousedních úhlů. To by vedlo k velkému snížení přesnosti zaměření.
2.3. Přenos údajů o poloze Pro výpočet polohy je potřeba, aby přijímací zařízení znalo úhel, pod kterým je natočen každý z laserů při jeho zaznamenání. Jednou z možností je vysílání údaje o aktuálním otočení laseru pomocí bezdrátového přenosu, například Bluetooth. To by ale vyžadovalo připojení dalšího hardware a hlavně zaručení synchronizace při přenosu údajů. Další možnost přenosu, která je dále rozvíjena a využita i při praktických experimentech je modulování aktuálního úhlu natočení přímo na vysílaný laserový paprsek a následné získání údajů z paprsku na straně příjemce.
2.4. Synchronizace otáčení motoru a vysílání dat Zásadní věcí pro správnou navigaci je zajištění vysílání správné hodnoty úhlu při daném natočení laseru. Jedna z možností je použití krokovacího motoru. Zde je potřeba, aby umožňoval otáčení po dostatečně malých krocích, které umožní vysílat všechny požadované hodnoty úhlů v daném intervalu. Například pro interval 0° až 90° je to těch 90 kroků, které musí být rozloženy pravidelně v tomto rozsahu. Další možností, která je dále použita při experimentech je využití lineárního motoru, který je schopen se točit podle polarity napájení na obě strany. To je z důvodu připojení laseru, který je přidělán na nástavec na motoru, pomocí dvou drátů. Motor se
11
musí točit ze strany na stranu pouze v daném rozsahu, při točení dokola by se ukroutily přívodní vodiče. Rychlost otáčení je dána efektivní velikostí napájecího napětí, lze ji tedy řídit digitálně pomocí pulzně-šířkové modulace, nebo analogově úpravou velikosti amplitudy stejnosměrného napětí. Tento způsob je pro jednodušší aplikaci použit. Dobu otočení jedné otáčky o daný rozsah úhlů je ale složité přesně změřit, protože stačí malá změna napájecího napětí a doba otáčení se trochu změní. Tato doba je ale důležitá pro rozdělení intervalu na požadovaný počet úhlů. Předpoklad pro použití je tedy takový, že pokud změřím dobu otáčení při otáčce jedním směrem, při další otáčce stejným směrem se bude schodovat s velmi malou chybou. Při prvním průchodu se tedy změří čas otočení, a tato hodnota je při dalším průchodu použita pro výpočet délek intervalů jednotlivých úhlů. Stejně se výpočet provádí i pro druhý směr otáčení. Vzhledem k tomu, že se doba otáčení může v průběhu činnosti trochu měnit, použije se vždy změřená hodnota z předchozího otočení. V každém intervalu se vzhledem k dostatečné přenosové rychlosti dané úhly několikrát opakují, přijímač má tedy větší pravděpodobnost zachycení vysílaného úhlu. Díky tomu lze dále zjemnit rozlišení. To znamená, že se vysílá například po desetinách úhlu a tak se dále zvětší přesnost zaměření. Důležité ale je zaručení dostatečné přenosové rychlosti, aby při dané rychlosti otáčení laseru dokázal přijímač zaznamenat z laserového paprsku správnou hodnotu úhlu. Výpočet rychlostí popsán v realizační části v kapitole Výpočet parametrů přenosu.
12
2.5. Výpočet polohy Pro výpočet aktuálních souřadnic robota je dostačující znalost hodnot úhlů z obou laserů a vzdálenost mezi nimi. Pokud je vzdálenost konstantní, může být zadána přímo do programu ovládajícího robota, nebo do něj může být zadána dodatečně (například při přenosu dat do robota). Souřadnice zjistíme využitím triangulace. Ta popisuje způsob zjišťování souřadnic v trigonometrii a elementární geometrii. Trigonometrie je oblast matematiky, zabývající se užitím goniometrických funkcí (například sinus, kosinus, tangens, …) při řešení úloh o trojúhelnících. Výpočet povedeme trigonometrickým výpočtem. Triangulace se nejčastěji využívá pro účely
geodézie (určování polohy bodů na
zemském povrchu pro tvorbu map), navigace (stanovení polohy na zemském povrchu), astrometrie (měření vzdáleností hvězd a jiných objektů ve vesmíru), nebo řízení plavby. Známe vzdálenost mezi lasery, ta představuje v našem pomyslném trojúhelníku základnu. Další známé údaje jsou úhly, přiléhající k této základně. Aby byla zaručena správná hodnota úhlu, musíme znát úhel, který svírá hrana od laseru k robotovi se základnou. Pokud je úhel 0° ve směru základny (k druhému laseru), tak bereme pro výpočet právě tuto hodnotu. Pokud je úhel 0° brán kolmo k základně, počítáme s hodnotou úhlu jako rozdílu od 90°.
Obr 2.3: Nákres trojúhelníku pro výpočet souřadnic
13
V následujících kapitolách je užito značení vztahující se k obrázku 2.3 Z těchto dvou úhlů snadno dopočítáme podle vzorce (2.1) třetí úhel, který svírají lasery na přijímači jako rozdíl od 180°.
γ =180 °−α − β
(2.1)
Dále potřebujeme zjistit velikosti dalších stran trojúhelníku. K tomu využijeme sinovou větu.
2.5.1. Sinová věta Pro každý trojúhelník ABC s vnitřními úhly α, β, γ a stranami a, b, c platí vzorec (2.2). a b c = = sin (α ) sin ( β ) sin( γ )
(2.2)
„Poměr všech délek stran a hodnot sinů jim protilehlým úhlům je v trojúhelníku konstantní.“ Od začátku známe délku strany c (představující vzdálenost mezi lasery). Ostatní strany dopočítáme podle vzorců (2.3) vyplývajících ze sinové věty.
a=c∗
sin (α ) sin (γ )
b=c∗
sin( β ) sin( γ )
(2.3)
výpočtu souřadnic bereme úsek na straně c jako souřadnici x a výšku kolmou ke straně c jako souřadnici y. Bod A má tedy souřadnici (0, 0). Souřadnice (x, y) robota vypočítáme podle vzorců (2.4) a (2.6) y=V c=a∗sin ( β )=b∗sin( α ) 14
(2.4)
Velikost souřadnice x je dána vzdálenosti od bodu A k patě výšky Vc Pc. Pro výpočet je použita část trojúhelníku od bodu A po výšku Vc. Podle vzorce (2.5) se snadno dopočítá třetí úhel v tomto trojúhelníku.
δ =180 ° −90 °−α =90 ° −α
(2.5)
x=b∗sin (δ )
(2.6)
Z výpočtů je patrné, že stačí vypočítat pouze stranu a nebo b, a podle toho použít části vzorců (2.3) a (2.4), které pro výpočet používají danou stranu. Výsledné souřadnice x a y je potřeba vydělit číslem 10000, kterým byly vynásobeny siny úhlů. Poté tyto hodnoty představují vzdálenost v milimetrech od levého horního laseru, který má souřadnice (0, 0). Druhý laser má tedy souřadnice (5000, 0).
2.6. Přesnost určení polohy
Obr 2.4: Náčrt pohybu laserových paprsků
15
V obrázku 2.4 představují jednotlivé čáry laserový paprsek pod určitým úhlem. Laser při vysílání rotuje, proto není vysílána hodnota úhlu pouze v tomto jednom bodě ale v intervalu, za který budeme považovat plochu mezi sousedními paprsky (při vysílání je to od středu jedné plochy do středu sousední, ale výslednou plochu můžeme považovat za shodnou). Pro názornost je v obrázku jedna plocha zvýrazněna černou výplní. 2.6.1. Obsah plošky Jak je z obrázku patrné, tvoří jedny souřadnice čtyřúhelníková plocha mezi paprsky. Ta se vzrůstající vzdáleností od laseru zvětšuje svůj obsah. Její přesnou velikost je možné spočítat, ale znamenalo by to složitý výpočet několika obecných trojúhelníků s použitím sinové věty. Z nestejné plochy jednotlivých plošek také vyplývá, že rozestupy souřadnic nebudou konstantní a plochu tedy nepůjde rozdělit na pravidelnou čtvercovou síť. Pro představu o velikosti plošky ale stačí mnohem jednodušší výpočet. Ve vzdálenosti r, která představuje vzdálenost přijímače od laseru, vypočítáme úsek l, na kterém je vysílána hodnota jednoho úhlu podle vzorce (2.7).
l=
π ∗r 180
(2.7)
Vzdálenost mezi úhly lze pro výpočet považovat za kruhový oblouk, což je úsek na kružnici o poloměru r ohraničený dvěma sousedními úhly. Ve vzorci je jedinou proměnnou vzdálenost r, z čehož vyplývá zvětšující se velikost l se zvětšující se vzdáleností přijímače od laseru. Výpočtem délky l pro oba lasery dostaneme přibližnou velikost plošky jejich pouhým vynásobením, podle vzorce (2.8). S =l 1∗l 2
16
(2.8)
Z předchozích odstavců vyplývá, že ve větší vzdálenosti od laserů bude mít ploška větší rozměr a jedny vypočtené souřadnice budou připadat na větší plochu. Přesnost určení polohy je tedy závislá na vzdálenosti přijímače od laseru, kdy se zvětšující se vzdáleností od laseru klesá přesnost zaměření.
2.6.2. Úhlová rychlost paprsku
Se zvětšující se vzdáleností se navíc zvyšuje i úhlová rychlost paprsku. To znamená, že ve větší vzdálenosti urazí paprsek za jednotku času větší vzdálenost a data se tedy po paprsku musí vysílat dostatečně vysokou rychlostí, aby je přijímač v maximální požadované vzdálenosti dokázal zaznamenat. Pro výpočet je brána pozice robota na čtvercové ploše v nejvzdálenějším místě od laseru. Vzdálenost vypočítáme podle vzorce (2.9). Je to vlastně poloměr kružnice, kterou opisuje laserový paprsek.
r =√ c 2+ c 2
(2.9)
Obvod kružnice, kterou by obkroužil laserový paprsek, kdyby se točil dokola vypočítáme podle vzorce (2.10).
s1=2∗π ∗r
(2.10)
Při realizaci je využita pouze čtvrtina kružnice, protože se paprsek pohybuje pouze v rozmezí 90°. Ze vzorce (2.10) je tedy brána pouze jeho čtvrtina (vzorec (2.11)).
s 2=
2∗π ∗r 4
17
(2.11)
Maximální rychlost otáčení laseru, kterou můžeme použít, je taková, aby při zvolené přenosové rychlosti dat po laseru a délce jedné zprávy přenášející údaj o úhlu natočení laseru, byl přijímač schopen tento údaj zaznamenat. Vzdálenost, na které může být zpráva zaznamenána je dána velikostí přijímací plochy fototranzistoru a plochy na kterou svítí laser. Tato velikost, označená k má rozměr v milimetrech. Protože nevíme, kdy začíná nový údaj o úhlu natočení, je nutné aby tato hodnota prošla přes přijímač alespoň dvakrát. Údaj o úhlu má velikost v desítkách bitů, přenosová rychlost údajů po laseru je v desítkách kilobitů za sekundu. Doba přenosu jedné zprávy bude trvat dobu t 1, kterou vypočítáme podle vzorce (2.12).
t 1=
údaj o úhlu [bit ] [ s] přenosová rychlost [bit / s]
(2.12)
Počet bitů v údaji u úhlu je přibližně tisíckrát menší než u přenosové rychlosti, doba přenosu jedné zprávy bude tedy v řádu milisekund. Laserový paprsek musí svítit na fototranzistor po dobu minimálně
t 2=2∗t 1 .
Plocha příjmu k v řádech milimetrů a vzdálenost, kterou urazí laserový paprsek v řádu metrů vyjadřuje, že čas t2 se opakuje při jednom otočení laseru minimálně tisíckrát. Doba otočení laserového paprsku po 90° výseči musí tedy trvat minimálně dobu vypočtenou podle vzorce (2.13). s t= 2 ∗t 2 [ s] k
(2.13)
Doba otočení laseru jedním směrem bude podle vzorce (2.13) při očekávaných hodnotách rychlostí a vzdáleností popsaných v této kapitole vycházet v řádu jednotek sekund. Tato doba je závislá především na přenosové rychlosti, kterou lze měnit programově a také na optickém řešení přijímače, kde zvětšení plochy přijímače umožní
18
zvýšit rychlost otáčení a tím zkrátit dobu mezi jednotlivými průchody laseru přes přijímač.
2.7. Pohyb robota v prostoru Pro pohyb robota v prostoru pokrytém souřadnicovou sítí z laserů existuje několik možností jejího využití.
2.7.1. Záznam trasy První možností je pouhý záznam trasy, kudy se robot pohybuje. Ten může být ovládán například bezdrátově na dálku a zpět pouze odesílá údaje o své aktuální poloze. Případně kontrola pohybu po předem připravené trase.
2.7.2. Navigace s využitím laserů Hlavní možnost využití ale spočívá v pohybu na souřadnice, které jsou robotovi zadány. Ten se poté musí na požadované souřadnice dostat. První věcí, kterou je potřeba znát, je orientace robota v prostoru. To je důležité hlavně pro schopnost zaznamenávat údaje z obou laserů. Pokud dojde k otočení přijímače jiným směrem, než z jakého na něj dopadá laserový paprsek, dojde ke ztrátě signálu a nemožnosti výpočtu souřadnic. To znamená, že je potřeba natočit přijímací část kolmo k ose spojující oba lasery. Možným řešením je umístit přijímač na samostatně otočnou základnu na robotovi, které budou stačit pouze malé korekce směru. Podvozek umožňující pohyb by se otáčel na ní nezávisle. Toto řešení je zřejmě z praktického pohledu náročné na konstrukci. Zjednodušením může být zvolení směru a vzdálenosti, na kterou se má robot vydat. Ten se požadovaným směrem natočí, přejede danou vzdálenost a poté s otočí do 19
polohy, aby zaznamenal údaje z laserů a zkontroloval svoji pozici. Poté se vydá na další souřadnice. Toto řešení zřejmě také nebude snadné na provedení. Především z důvodu složitosti přesného zaměření směru pohybu a také vzdálenosti, na kterou se má dostat. To hlavně z důvodu nestejnoměrného rozložení souřadnic po ploše.
2.7.3. Pohyblivý přijímač Prakticky použitelným řešením může být využití přijímače který dokáže zaznamenat laserový paprsek z celého okolí 360°. Případně přijímače menšího úhlu, zřejmě stačí například 45° s možností jeho natočení. Jednou z možností je použití několika fototranzistorů, které jsou umístěny na destičce do oblouku, aby při menším natočení robota stále přijímaly paprsek z určitého směru. Rozestup mezi nimi je třeba zaručit co nejmenší, aby paprsek stále dopadal na jeden z nich. Vzhledem k tomu, že se robot při pohybu může točit, je potřeba přijímací destičku s fototranzistory, pokud tedy nezaznamenávají paprsek z celého rozsahu 360°, natáčet do požadovaného směru. Může se otáčet například lineárním motorem do takového směru, aby paprsek vždy dopadal na prostřední fototranzistor. Pokud začne přijímat sousední, motor s destičkou otočí do druhého směru, aby otočení vyrovnal. Aby nedošlo k překroucení přívodních vodičů při otáčení robota, musí mít motor rozsah alespoň 1,1 otáčky okolo osy a při dalším zvětšování natočení se přetočí zpět na druhou stranu. Rozsah větší než jedna otáčka okolo osy je z důvodu zamezení neustálého přetáčení přijímače při malých změnách v krajním rozsahu natočení. Abychom zaručili, že se paprsky z obou laserů nebudou překrývat, je vhodné umístit laser s jeho přijímačem do určité výšky nad zemí a druhý laser a přijímač do jiné, například několik centimetrů nad sebe. Vzdálenost záleží na rozptylu laserového paprsku v maximální očekávané poloze robota v daném ohraničeném prostoru.
20
2.7.4. Navigace k cíli Proti dříve popsaným řešením je toto nejsnáze prakticky řešitelné a zaručuje příjem po celé ploše pokryté laserovými paprsky. Platí to i pro pozice na krajích plochy, kde by u ostatních řešení dopadal laserový paprsek na fototranzistor pod příliš ostrým úhlem a nebyl by proto zaznamenán. Robot tedy bude mít údaj o své aktuální poloze stále k dispozici. Pokud tedy zadáme souřadnice, na které se má robot dostat, stačí aby se pohnul jakýmkoliv směrem. Souřadnice získané v nové poloze porovná s výchozími a cílovými. Ve většině případů se každá souřadnice změní o jiný úsek a podle toho lze odhadnou, jakým přibližným směrem se má dále vydat. Cílem je dosáhnout co nejrychlejšího přibližování k cílovým souřadnicím. Pokud se například rychle vzdaluje ve směru jedné osy, znamená to, že se má vydat druhým směrem. Díky neustálé dostupnosti aktuálních souřadnic je reakce na nesprávný směr pohybu možná už při krátkém pohybu o jednotky stupňů. Dosáhnou přímé cesty od startu do cíle je prakticky nemožné a pomocí zjišťování souřadnic pomocí úhlů prakticky neřešitelné. Pokud by se navíc měl měnit směr při každé změně souřadnic, vykonával by robot příliš mnoho změn směru. Je tedy vhodné, aby vykonával pohyb po lomené čáře. To znamená, že se vydá jedním směrem, kdy se obě souřadnice dostatečně rychle přibližují k cílovým. Dostatečně znamená, že se rozdíl snižuje řádově například o jednotky procent. Takto urazí určitou vzdálenost, kde se například přiblíží k jedné souřadnici mnohem více než ke druhé. Následně se provede úprava směru pohybu robota, která se bude neustále zmenšovat a vydá se na další úsek cesty.
21
3. Realizační část Realizační část obsahuje popis experimentálních metod ověřujících možnosti metody popsané v teoretické části. Na začátku jsou popsány parametry součástek použitých v zapojení experimentálního zařízení. Pro experimenty byl použit mikrokontrolér H8S/2633F a k němu připojená rozšiřující deska PWR_2 pro připojení periferních obvodů.
3.1. Popis použitých součástek v zapojení 3.1.1. Integrované obvody V zapojení testovacího zařízení jsou použity dva integrované obvody. MH7405 Obsahuje 6x invertor s otevřenými kolektory. Na výstupu každého invertoru je pouze jeden tranzistor NPN, který při sepnutém tranzistoru umožňuje, aby jím protékal dostatečně velký proud, nutný pro napájení laseru.
Obr 3.1: Logický diagram
Obr 3.2: Vstupy a výstupy pouzdra
22
Na obrázku 3.1 je logický diagram obvodu a na obrázku 3.2 rozložení vstupů, výstupů a napájení u pouzdra. Obrázky jsou brány z dokumentace integrovaného obvodu SN7405 [2], ale zapojení je shodné. SN74HC14N Obsahuje 6x invertor se Schmittovým klopným obvodem. Ten je využit k úpravě tvaru impulzů. Základní vlastností obvodu je hystereze. Ta zabraňuje vzniku zákmitů výstupního signálu při změnách vstupního signálu okolo střední úrovně napětí (přechodový stav). Jeho výstup je závislý na vstupu a na předchozím stavu.
Obr 3.4: Logický diagram
Obr 3.3: Vstupy a výstupy pouzdra [3]
Rozmístění vstupů, výstupů a napájení na pouzdře je znázorněno na obrázku 3.3. Na obrázku 3.4 je logický diagram jednoho invertoru. 3.1.2. Laser Pro určování polohy a zároveň i přenos dat je použit laser F-Laser 635. Jeho parametry jsou v následující tabulce 3.1. Parametr
Minimální
Optický výkon
3
Napětí
-
Proud
Typická
Maximální
Jednotka
4
mW
3.0
-
V
-
43
50
mA
Vlnová délka
630
635
640
nm
Výrobní číslo
ML-SHW-635-05-D (7-09) Tabulka 3.1: Parametry laseru [4]
23
3.1.3. Fototranzistor Pro příjem údajů z laseru je použit fototranzistor SFH309. Ten je vhodný pro příjem záření o vlnové délce v rozsahu od 380 nm do 1180 nm s maximální účinností příjmu na vlnové délce 860 nm. Jak je patrné z obrázku 3.5, má pro vlnovou délku laseru (635 nm) účinnost 60%.
Obr 3.5: Citlivost fototranzistoru na různé vlnové délky záření [5]
Důležitým parametrem fototranzistoru je jeho směrová charakteristika. Na obrázku 3.6 je vidět, že účinnost příjmu záření velmi rychle klesá při úhlu, pod kterým záření dopadá, větším než 10°. Jedno z možných řešení, jak se této vlastnosti vyvarovat je uvedeno v kapitole 2.7.3, kde je popsáno využití otočného přijímače.
24
Obr 3.6: Směrová charakteristika fototranzistoru [5]
3.2. Vývojový modul Renesas EVB2633F Popis vývojového modulu je čerpán ze stránek [6]. Jsou zde vypsány především části související se zkušebním zařízením.
3.2.1. Obecný popis Určen pro vývoj aplikací a získání zkušeností s mikrokontrolérem Renesas H8S/2633F. Modul je osazen uvedeným mikrokontrolérem s podpůrnými obvody, 256 kB statické paměti RAM, obvody pro sériové rozhraní a speciální deskou UFPB (Universal Flash Programming Board), určenou pro programování interní paměti Flash mikrokontroléru. Mikrokontrolér pracuje se základní frekvencí hodinového signálu 18.432 MHz. Většina signálů mikrokontroléru je přivedena na konektory, určené k připojení dalších případných modulů. EVB2633F se napájí z vnějšího zdroje 5V.
25
3.2.2. Mikrokontrolér H8S/2633F H8S/2633F je jedním z mikrokontrolérů řady Hitachi H8S. Je vybaven 16/32 bitovým procesorovým jádrem H8S/2600, interní pamětí Flash o kapacitě 128 kB, interní pamětí RWM o kapacitě 16 kB a řadou periferních obvodů.
3.2.3. Procesorové jádro Procesorové jádro má následující charakteristiku: •
Maximální frekvence hodinového signálu 25 MHz.
•
Instrukční soubor pro 8, 16 a 32 bitové celočíselné operace (celkem 69 typů instrukcí).
•
Adresní prostor 16 MB.
•
16 ks 16 bitových registrů, použitelných i jako 8 ks 32 bitových registrů,
•
Rychlost výpočtu: sčítání 8/16/32 bitů - 40ns/25MHz, násobení 16 x 16 bitů 160ns/25 MHz.
3.2.4. Adresování a organizace paměti Mikrokontrolér H8S/2633F pracuje s adresou o délce 24 bitů, což umožňuje adresovat maximálně 16 MB paměti. Celý adresní prostor je lineární a je rozdělen do 8 bloků o velikosti 2 MB. Pro každý z bloků lze v řadiči sběrnice nastavit jiný typ sběrnicového cyklu (lze volit cykly pro řízení statické nebo dynamické paměti, počet vložených čekacích taktů, šířka datové sběrnice 8/16 bitů apod.). Nejvyšší 3 bity adresy (A23,A22,A21) jsou dekódovány přímo v mikrokontroléru a výstup adresního dekodéru je vyveden jako signály CS0 - CS7, které odpovídají jednotlivým blokům paměti. Paměťový blok č. 0 je částečně obsazen interní pamětí kódu (Flash), pamětí RWM a speciálními funkčními registry (SFR), které slouží pro řízení periferních obvodů.
26
3.2.5. Periferie Vybavení mikrokontrolérů H8S/26xx periferními obvody se liší podle typu mikrokontroléru. Typ 2633 je vybaven následujícími periferiemi: •Celkem 73 bitů IO portů. Většina portů jsou 8 bitové obousměrné, dva z portů jsou 5 bitové resp. 4 bitové, 2 porty jsou pouze vstupní. Většina pinů má ještě několik
alternativních
funkcí,
které
souvisí
s
ostatními
jednotkami
mikrokontroléru. •5 ks duplexních synchronních/asynchronních sériových linek (SCI). •6 kanálovou 16 bitovou univerzální časovací jednotku (TPU). •Řadič přerušení (8 vnějších, 72 vnitřních, NMI). •Řadič vnější sběrnice. Všechny periferie je možné ovládat pomocí speciálních funkčních registrů (SFR), které jsou mapovány do adresního prostoru v rozsahu adres 0xFFFF60 0xFFFFC0. Většina periferií je po resetu odpojena od napájecího napětí. Před jejím použitím je nutné připojit napájení zápisem příslušné hodnoty do registru MSTPCRx.
3.2.6. Vnější paměti K mikrokontroléru jsou připojeny 2 ks. vnějších pamětí CMOS SRAM o kapacitě 128 kB. V adresním prostoru jsou paměti zapojeny do bloku č. 1, tj. na adresách 0x200000 - 0x23FFFF. Paměti jsou připojeny na 16 bitovou datovou sběrnici, takže blok č. 1 musí být konfigurován jako 16 bitový (ve vývojovém modulu zabezpečuje tuto konfiguraci standardní monitor, který je uložen v interní paměti Flash). Protože mikrokontrolér má lineární organizaci adresního prostoru, lze vnější paměť použít k uložení kódu aplikačního programu i k uložení dat.
27
3.2.7. Sériové rozhraní Mikrokontrolér H8S/2633F má 5 sériových rozhraní (SCI0 - SCI5). 3.2.8. Konektory Většina signálů mikrokontroléru je vyvedena na 6 konektorů, které slouží pro připojení případných dalších elektronických zařízení. Konektory nesou označení CON4 – CON9. V zařízení jsou využity konektory CON4 (obrázek 3.7) (signály z něj vyvedeny přes rozšiřující desku PWR_2 popsanou dále, kterou spojuje s vývojovým modulem) a CON8 (obrázek 3.8 (vyveden z konektoru přímo na vývojovém modulu).
Obr 3.7: Porty na konektoru 4
28
Obr 3.8: Porty na konektory 8
3.3. Rozšiřující deska Pwr_2 pro EVB2633F Údaje v následující kapitole čerpány ze stránek [7]. 3.3.1. Blokové schéma desky Deska
Pwr_2
je
určena
především
pro
připojování
různých
elektromechanických zařízení k vývojovému modulu Hitachi EVB2633F. Je osazena následujícími obvody: •
Vstupní obvody pro připojení optických snímačů (fototranzistory) - 4 vstupy.
•
Spínači 0.6 A - celkem 7 výstupů.
•
Spínací můstky H 4 A - 4 ks.
•
Logické vstupy se Schmittovými obvody - 2 ks.
•
Odporové děliče a ochranné obvody pro A/D převodník mikrokontroléru H8S/2633F- 4 ks.
29
•
Zdroj referenčního napětí pro A/D převodník.
•
Převodníky úrovní TTL <-> RS232 pro sériové rozhraní SCI1 mikrokontroléru H8S/2633F. Propojení většiny logických vstupních signálů, logických signálů pro řízení
spínačů a vstupních/výstupních signálů mikrokontroléru je provedeno pomocí obvodu Xilinx CPLD XC9536. Jeho naprogramováním lze účinně využít vlastnosti jednotek TPU a PPG mikrokontroléru. TPU jednota poskytuje 16 bitový časovač a jednotka PPG programovatelný pulzní generátor, využívající TPU jako svou časovou základnu. 3.3.2. Spínací můstky H Na desce Pwr_2 jsou osazeny dva obvody SGS Thomson L298. Každý z nich obsahuje dvojici úplných můstků H (označených jako můstek A a B), schopných napájet připojenou zátěž napětím obou polarit. Maximální proud dodávaný do zátěže je 4 A. Vstupy obvodů jsou připojeny na obvod XC9536. Jeho příslušným naprogramováním
tak
mohou být
vstupy
L298
buzeny
vhodnými
signály
mikrokontroléru H8S/2633F. Výstupy jsou připojeny na svorkovnice P2, P3, P4 a P5 (viz tabulka 3.3). Pro ochranu obvodu L298 při spínání indukční zátěže jsou ke každému výstupu připojeny ochranné diody.
30
3.3.3. Obvod L298
Obr 3.9: Vstupy a výstupy obvodu L298
L298 [8] je integrovaný monolitický obvod, designovaný na vysoká napětí a vysoké zátěže. V pouzdře jsou dva nezávislé obvody ovládané standardní TTL logikou pro ovládání například stejnosměrných nebo krokovacích motorů. Nezávisle na vstupních signálech lze obvod zapnout či vypnout signálem Enable. Rozmístění konektorů na obvodu L298 je na obrázku 3.9. V tabulce 3.2 je uvedeno přiřazení vývodů obvodu CPLD XC9536 jednotlivým vstupům spínače L298. Vstup L298 IN1 IN2 ENAB_A IN3 IN4 ENAB_B
Číslo vývodu L298 5 7 6 10 12 11
Význam řízení můstku A řízení můstku A blokování můstku A řízení můstku B řízení můstku B blokování můstku B
Tabulka 3.2: Zapojení vstupů můstků 1A a 1B (obvod U3)
31
Vývod CPLD 1 44 37 43 38 37
Číslo svorky 1 2
Svorkovnice P2 Můstek 1A, vývod OUT1 Můstek 1A, vývod OUT2
Svorkovnice P3 Můstek 1B, vývod OUT3 Můstek 1B, vývod OUT4
Tabulka 3.3: Zapojení svorkovnic P2, P3, P4, P5
Obr 3.10: Schéma zapojení jednoho obvodu L298 na desce Pwr_2
Na obrázku 3.10 je znázorněno schéma zapojení jednoho obvodu L298 na desce Pwr_2. V zařízení je přívod napájení pro motor připojen na port P1. Motor je buzen z vodičů připojených na port P2, který je ovládán Výstupy OUT1 a OUT2 u obvodu L298. Ten je řízen úrovní signálů na vstupech IN1 a IN2 a aktivován signálem Enable. 3.3.4. Vstupní obvody pro připojení optických snímačů Obvody pro připojení fototranzistorů jsou tvořeny zesilovacím tranzistorem a Schmittovým tvarovačem typu 7414. Na desce Pwr_2 jsou osazeny i kolektorové odpory o hodnotě 10 kΩ pro fototranzistory a předřadné odpory 820Ω připojené na napájecí napětí +5 V pro případné napájení diody LED. Celkem lze k desce Pwr_2 připojit 4 fototranzistory a 4 diody LED. Vývody pro připojení kolektoru a emitoru fototranzistoru a anody a katody diod LED jsou na konektoru X5. V testovacím zařízení je zapojení fototranzistoru a LED diody pro světelnou závoru řešeno samostatným zapojením, kde bylo možné upravovat hodnoty součástek. Signál je po úpravě Schmittovým klopným obvodem přiveden v logických úrovních na konektor X6. Kolektory zesilovacích tranzistorů jsou vyvedeny na konektor X6. Nejsou-li k desce připojeny fototranzistory, jsou tyto tranzistory zavřeny a konektor lze použít pro 32
vstup logických signálů. Každý vstup je potom zaveden do obvodu 7414. Přes rezistor 10 kΩ je současně připojen na napětí +5 V. Zjednodušené schéma jednoho obvodu pro připojení optického snímače je na obrázku 3.11.
Obr 3.11: Zapojení jednoho optického snímače a logického vstupu
Výstupy tvarovačů 7414 jsou zavedeny do obvodu XC9536. Příslušné vývody tohoto obvodu proto musí být naprogramovány jako vstupní. Zapojení konektoru X6 je v tabulce 3.4. Vývod konektoru 1 2 3 4 5 6 7
Název DIG0 DIG1 DIG2 DIG3 VCC key GND
Význam digitální vstup č. 0 digitální vstup č. 1 digitální vstup č. 2 digitální vstup č. 3 vývod napájení klíč společný vodič
Vývod CPLD 24 7 42 40
Tabulka 3.4: Zapojení konektoru X6
33
3.3.5. Šířka adresní sběrnice Mikrokontrolér H8S/2633F má vyvedenou 24 bitovou adresní sběrnici. Podobně jako další vývody mohou i adresní vývody mít řadu dalších funkcí. Pokud není všech 24 adresních vývodů využito pro dekódování adresy, lze nepotřebné adresní vodiče uvolnit pro využití v jiné funkci. Ve vývojovém modulu EVB2633F jsou využívány jen adresní vodiče A0 - A19. Vodiče A20 - A23 lze proto využít v jiné funkci, např. jako port P1.0 - P1.3. Pro odpojení vodičů A20 - A23 od adresní sběrnice je nutné zapsat do bitů PFCR: AE3 – PFCR: AE0 hodnotu 1100. PFCR – Pin Function Control Register [9, s. 186]
Obr 3.12: Bity v registru PFCR
Ve výchozím stavu jsou všechny bity nastaveny na hodnotu 1. Pro využití portů P10 až P13 nastavíme hodnoty bitů AE3 a AE2 na hodnotu 1, ostatní necháme na 0. Tím se deaktivuje výstup adres na vodičích A20 až A23 a je možné je využít jako vstupní nebo výstupní porty.
3.4. SCI – Sériové komunikační rozhraní Pro vysílání dat na laserový paprsek a jejich příjem z fototranzistoru je využito rozhraní SCI (Serial Communication Interface) [9, s. 725]. Zahrnuje asynchronní i synchronní sériovou komunikaci. Také ho lze využít pro komunikaci mezi procesory. V testovacím zařízení je pro komunikaci vybrán asynchronní mód, který má následující vlastnosti: •
komunikace je prováděna pomocí asynchronního systému, v němž je synchronizace dosahováno znak po znaku
•
na výběr je z 12 formátů přenosu ◦ délka dat: 7 nebo 8 bitů,
34
◦ stop bit: 1 nebo 2 bity ◦ parita: sudá, lichá, nebo žádná •
Detekce chyb příjmu: parita, přetečení, chyba rámce
•
Zabudovaným generátorem lze nastavit rychlost přenosu dat. Nastavení parametrů komunikace se provede v registru SMR (Serial Mode
Register) [9, s. 733]
Ve výchozím stavu jsou všechny bity nastaveny na hodnotu 0. Je tak vybrán asynchronní mód, délka znaku 8 bitů, je vypnut výpočet parity a konec přenosu je ohraničen jedním stop bitem. Dále se v registru SCR (Serial Control Register) [9, s. 736] (bity v registru jsou na obrázku 3.13) povolí vysílání a příjem dat zapsáním hodnoty 1 na bity TE (Transmit Enable, povolení vysílání) a RE (Receive Enable, povolení příjmu).
Obr 3.13: SCR
Bitem TIE aktivujeme přerušení, které nastane při příjmu znaku z laseru. 3.4.1. Nastavení přenosové rychlosti Přenosovou rychlost nastavíme zápisem čísla 0 až 255 do registru BRR (Bit Rate Register) [9, s. 744]. Z tabulky v [9, s. 745 až 747] zjistíme ve sloupci N, jakou máme nastavit hodnotu do registru BRR, aby nám vyšla požadovaná rychlost v bit/s. Rychlost je závislá na základní frekvenci hodinového signálu mikrokontroléru, která je v našem případě 18.432 MHz. Na straně 749 v [9] je vzorec, podle kterého lze hodnotu N spočítat. Pro N = 59 nám vychází rychlost 9600 bit/s, pro N = 14 je to 38400 bit/s.
35
3.5. Výpočet souřadnic V teoretické části je popsán postup výpočtu souřadnic ze získaných hodnot úhlů natočení laserů a známé vzdálenosti mezi nimi. Pro výpočet je použita sinová věta, v které se počítají siny úhlů. Zde ale narážíme na problém, protože procesor H8S/2633F neobsahuje aritmetiku v pohyblivé řádové čárce a nelze s ním tedy počítat desetinná čísla. Výpočet tedy nelze provádět přímo využitím matematických operací. Existují ale algoritmy, které jsou schopné trigonometrické funkce na mikrokontroléru H8S vypočítat, jedním z nich je metoda Cordic, který využívá pro výpočty pouze sčítání, odčítání, bitový posun a předpřipravenou tabulku s konstantami. Pro testovací zařízení jsou ale tyto algoritmy zbytečné, stačí mnohem jednodušší řešení s předpřipravenými hodnotami. Protože se pracuje stále pouze s úhly 0° až 90°, je nejsnazším řešením jejich výpočet předem a uložení spočítaných hodnot sinů úhlů do datové struktury (například pole). Protože jsou hodnoty sinů úhlů v rozmezí <0, 1>, jsou pro snadné výpočty pomocí celočíselné aritmetiky uloženy hodnoty 10000× větší. To stačí pro dostatečnou přesnost výpočtu a hodnota se vejde do 16 bitového celého čísla. Toto zvětšení je při výpočtech nutno zohlednit a výsledné hodnoty jím zase vydělit. Platí to hlavně pro výpočet výsledných souřadnic. Aby nedocházelo k velkým zaokrouhlovacím chybám, musíme počítat v dostatečně velkých celých číslech (řádově stovky až tisíce). Délky hran v trojúhelníku, podle něhož jsou z hodnot počítány výsledné souřadnice jsou tedy brány v milimetrech, což je při očekávané vzdálenosti laserů v metrech dostatečné.
36
3.5.1. Postup výpočtu souřadnic Předpokládáme, že přijímač zachytil hodnoty úhlů z obou laserů. Hodnoty úhlů α a β tedy známe. Úhel γ dopočítáme podle vzorce (2.1) Hodnoty úhlů (pro výpočet zvoleny) a strany c:
α =40 ° , β =25° , c=5[m]=5000[mm] Výpočet úhlu γ:
γ =180 °−α − β =180 °−40 °−25° =115 ° Délku strany a vypočítáme ze sinové věty (2.3). Pro výpočet je potřeba znát siny úhlů, které jsou vypočítány předem a uloženy do programu při jeho tvorbě: sin( 40 ° )=0,6428 , sin(25° )=0,4226 , sin(115 ° )=0,9063 Pro výpočet jsou uložené hodnoty 10000× větší:
a=c∗
sin (α ) 6428 =5000∗ =3546[mm] sin ( γ ) 9063
b=c∗
sin( β ) 4226 =5000∗ =2331[ mm] sin( γ ) 9063
Podle vzorce (2.4) můžeme ze znalosti velikosti strany b a sinu úhlu α vypočítat výšku ke straně c, která představuje souřadnici y: Výslednou hodnotu je ale potřeba vydělit číslem 10000, aby nám vyšla správná hodnota vzdálenosti.
y=V c=b∗sin ( α )=
2331∗6428 =1498[mm ] 10000
37
Podle vzorce (2.5) dopočítáme úhel v novém trojúhelníku ohraničeném výškou Vc.
δ =180 ° −90 °−α =90 ° −40 ° =50 ° Z tabulky vezmeme hodnotu sinu 50°:
sin(50 ° )=0,7660 A podle vzorce (2.6) vypočítáme velikost souřadnice x, kterou musíme také vydělit.
x=b∗sin (δ )=
2331∗7660 =1786[ mm] 10000
Výsledné souřadnice x, y robota v prostoru jsou následující.
( x , y )=(1786, 1499) Protože známe vzdálenost mezi lasery, lze souřadnici x přepočítat třeba na rozmezí 0 až 255. Pro hodnoty y poté využít stejný poměr přepočítání.
3.5.2. Přesnost určení polohy Protože je prostor od laseru rozdělen na 90 částí po 1 stupni, nepředstavuje každá kombinace úhlů z obou laserů přesně jeden bod, ale vypočtené souřadnice x a y představují střed malé plochy v prostoru. Výpočet plochy provedeme v bodě vypočteného v předchozí kapitole. K výpočtu nám stačí znát vzdálenosti bodu od laserů, kterými jsou strany a a b. Stranu a i b už máme vypočítanou, jejich délky jsou a=3546 [mm]
b=2331[mm ] 38
Podle vzorce (2.7) vypočteme vzdálenost, kterou urazí paprsek ve vzdálenosti danou velikostí strany a (respektive b) a rozsahu jednoho úhlu.
l a=
π ∗a 11140 = =62 [mm] 180 180
l b=
π ∗b 11140 = =41[mm] 180 180
Vychází nám tedy rozměr plochy připadající jedné souřadnici ve velikosti přibližně 6 krát 4 cm. To představuje plochu S =24 cm2
.
Se zvětšující se vzdáleností se bude velikost plochy připadající jedné souřadnici dále zvětšovat. Pokud například vezmeme bod ve vzdálenosti 5 m od obou laserů, bude velikost plochy připadající jedné souřadnici následující. a=b=5000 [mm]
l a=l b =
π ∗a 15708 = =87 [mm] 180 180
Plocha bude tedy mít rozměr přibližně 9 × 9 cm, to je plocha
S =81 cm2 ,
tedy více než 3× větší proti předchozímu výpočtu. Při zaměřování je proto nutné počítat s touto nepřesností zaměření.
3.6. Výpočet parametrů přenosu Výpočet provedeme pro případ, kdy je přijímač v prostoru uvedeném v předchozí kapitole, v nejvzdálenějším rohu od laseru. Jeho vzdálenost vypočítáme podle vzorce 2.9. r =√ c 2+ c 2=√ 50002 +5000 2=7071[mm ] Obvod kružnice opsané laserem vypočteme podle vzorce 2.10. Nám ale stačí znát vzdálenost pouze ve výseči (90°), viz vzorec 2.11.
39
s 2=
2∗π ∗r π ∗7071 = =11107[mm] 4 2
Počet bitů znamenajících údaj o jednom úhlu je 10. Na obrázku 3.14 je navíc ještě paritní bit, takže je bitů tvořících jeden znak 11.
Obr 3.14: 1 přijatý rámec [9, s. 769]
Při poklesu vstupního signálu z úrovně H na úroveň L zaznamená procesor začátek znaku a začne přijímat počet znaků nastavených v registrech. Protože ale není možné zaručit, že příjem začne právě na Start bitu, ale například na některém z datových bitů, který je v úrovni L, je potřeba, aby mezi přijímanými znaky byla mezera dlouhá minimálně jako jeden celý znak. Tím zaručíme, že chybný příjem znaku skončí a začne už správný od dalšího Start bitu. Na jeden údaj je proto potřeba minimálně 22 bitů. Přenosovou rychlost pro výpočet zvolíme 32000 bit/s. Podle vzorce 2.12 vypočteme dobu přenosu jedné zprávy ve vzdálenosti r.
t 1=
údaj o úhlu [bit ] 11 = =0,34375[ms] přenosová rychlost [bit / s] 32000
40
Z toho vyplývá doba pro údaj a mezeru
t 2=2∗t 1=2∗0,34375=0,6875[ms]
Délka plocha přijímací diody je přibližně k = 2 mm. Doba t, kterou musí minimálně trvat jedno otočení laseru vypočítáme podle vzorce 2.13. s2 11107 t= ∗t 2= ∗0,6875 m=3,82[ s] k 2 Tato doba je velmi dlouhá a pro praktické použití je nutné jí zkrátit. Zřejmě nejjednodušším řešením je zvětšit délku přijímací plochy, buď opticky, nebo umístěním dvou fototranzistorů těsně vedle se. Tím se plocha může prodloužit například na 10 mm a čas t může být 5× kratší. Zvyšování přenosové rychlosti je také možným řešením, ale zvyšují se nároky na kvalitu součástek a zapojení. Také vzniká v obvodu větší rušení a je nutné ho důkladně filtrovat.
3.7. Program pro řízení vysílání a motor 3.7.1. Naprogramování obvodu CPLD na desce Pwr_2 Konfigurací CPLD obvodu XC9536 dosáhneme propojení výstupních portů z mikrokontroléru na obvod L298 pro řízení lineárního motoru a vstupního portu mikrokontroléru s digitálním vstupem DIG0 z čidla natočení laseru.
41
CPLD je nakonfigurován tak, že portem P13 je přímo ovládán signál Enable obvodu L298, porty P14 a P 15 určují úroveň signálů IN1 a IN2. V registru P1DDR (Port 1 Data Direction Register) [9, s. 378] jsou tedy porty P13DDR až P15DDR nastaveny jako výstupní zapsáním hodnoty 1 do příslušných bitů (viz obrázek 3.15.
Obr 3.15: P1DDR
Následným zapsáním hodnoty 1 nebo 0 do registru P1DR (Port 1 Data Register) ovládáme otáčení motoru na jednu nebo druhou stranu (obrázek 3.16).
Obr 3.16: P1DR
3.7.2. Řízení směru otáčení motoru Nastavením bitu P13DR se port P13 přepne do úrovně H (logická 1) a aktivuje se signál Enable na obvodu L298. Ten do té doby není aktivní a bez ohledu na úrovně signálů na vstupech má na obou výstupech úroveň 0. Nastavením jednoho z bitů P14DR a P15DR se příslušný port přepne do úrovně H. Obvod L298 podle úrovně signálů na vstupu připojí jeden z výstupů na napájení z portu P1 a druhý na zem. Motor se začne točit v jednom směru. Pokud je v úrovni H druhý port, nastaví obvod L298 napětí na druhém výstupu a motor se začne točit v opačném směru.
42
Nesmí nastat situace, kdy budou oba porty nastaveny na úroveň H. Na obou výstupech by se objevilo napájecí napětí a motor by byl zbytečně zatěžován a k jeho otáčení by stejně nedošlo.
43
3.8. Zapojení obvodu V následujících podkapitolách jsou popsány jednotlivé části zapojení pokusného zařízení s vysvětlením jejich funkce. Kompletní zapojení je v příloze A. 3.8.1. Vysílací část
Obr 3.17: Budící obvod laseru
Na obrázku 3.17 je znázorněn budicí obvod laseru. Signál s daty, která se budou vysílat po laserovém paprsku (úhel jeho natočení), je přiveden v levé části zapojení z konektoru číslo 8, propojeného s portem P77 procesoru. Signál je Schmittovým klopným obvodem upraven na úrovně 0 V a 5 V. Budící obvod laserové diody je tvořen šesticí invertorů s otevřeným kolektorem (7405) spojených dohromady pro zajištění proudu potřebného pro laserovou diodu (do 50 mA při napětí 3 V). Druhý přívod laserové diody je připojen na napájecí napětí +5 V přes 2 diody 1N4007, které toto napětí snižují na přibližně 3,6 V. [10] 44
3.8.2. Přijímací část
Obr 3.18: Přijímač s fototranzistorem
Na obrázku 3.18 je přijímací část testovacího zařízení. Hlavní součástkou je zde fototranzistor, který spíná napětí na potenciometru R3 na zem. Signál je upraven pomocí dvou Schmittových klopných obvodů na úroveň, kterou přijímač správně rozpozná. Procesor je na daném portu neaktivní, pokud je na něm úroveň H (to znamená +5 V). Proto musí být zařazeny dva Schmittovy klopné obvody, aby při zavřeném fototranzistoru, kdy na něj nedopadá žádné záření, bylo na výstupu napětí v této úrovni. Na testovacím zařízení je umístěn přijímač na stejném místě jako vysílač a data jsou přenášena po stejném konektoru číslo 8, tentokrát na port P76. Zpracování na jednom procesoru umožňuje porovnávat odeslaná a přijatá data pro vyhodnocování schopnosti obvodu přenášet po laseru data. Na reálném zařízení by se přijímací část nacházela na robotovi, který by obsahoval svůj vlastní procesor na zpracování údajů. 45
3.8.3. Ovládání motoru a čidla
Obr 3.19: Ovládání motoru a čidla
Na obrázku 3.19 je zapojení pro připojení motoru s připevněným laserem k testovacímu zařízení. Potenciometrem R1 je upravována úroveň napětí pro napájení motoru. Lze jím řídit rychlost otáčení motoru. Ve spodní části je zapojení pro světelnou závoru, připevněnou ke konstrukci motoru, která zaznamenává pomocí dvou zarážek natočení laseru do krajní polohy. Světelná závora je tvořena LED diodou a fototranzistorem v pevném pouzdře, kde mezi nim je prostor, kudy může procházet zarážka. Jakmile je přerušen přímý výhled mezi diodou a fototranzistorem, fototranzistor se zavře a zvýší se na něm napětí. Tato změna je Schmittovým klopným obvodem upravena na úroveň vhodnou pro mikroprocesor, v tomto případě dojde k poklesu z úrovně H na úroveň L (0V). Obslužný program nahraný v mikroprocesoru na tuto
46
změnu zareaguje a zastaví otáčení motoru, tím že se na oba vstupy motoru přivede nulové napětí. Při dalším průběhu se motor točí na druhou stranu a díky světelné závoře se pomocí druhé zarážky znovu zastaví. Zarážky jsou umístěny pod úhlem 90°. Pokud je světelný tok v závoře přerušen, tak se po úpravě Schmittovým klopným obvodem změní úroveň na port P32. N tomto portu je k dispozici přerušení IRQ, které zaznamenává náběžnou hranu signálu na portu P32. Pokud ke změně dojde, skočí se v programu do obslužného podprogram pro toto přerušení. Tam se nastaví Port P14 a P15 na úroveň L a otáčení motoru se zastaví. Zároveň se nastaví hodnota v proměnné, aby program při následující rotaci motoru zajistil jeho otáčení na druhou stranu a počítání úhlů v obráceném pořadí (aby byla jedna hodnota úhlu vysílána stále tím samým směrem).
47
3.9. Vyhodnocení vlastností Přesnost zaměření se podle výpočtů pohybuje v řádu centimetrů při rozměru plochy, na které se může robot pohybovat v řádu metrů. Pokud to tedy bude nějaký větší robot, o velikosti několika desítek centimetrů, je přesnost dostatečná. Pro robota menších rozměrů nebo jeho přesnější zaměření by bylo potřeba rozdělit plochu ne na 90°, ale po menších úsecích, například po desetinách stupně. To ale znamená zvýšení přenosové rychlosti, nebo zpomalení otáčení laseru. Přesnost zaměření je navíc přímo úměrná vzdálenosti přijímače od laserů. V jejich blízkosti zabírají jednotlivé úhly menší plochu a přesnost zaměření se tím zvětšuje. Rychlost zjištění polohy závisí na správném nasměrování přijímače na vysílač a především na rychlosti jeho otáčení. Pokud by trvala jedna otáčka laseru například 2 s, může se nová souřadnice zaznamenat až po 4 s po té předchozí. Proto je nutné zajistit rychlejší otáčení laseru, které ale znamená nutnost zvýšení přenosové rychlosti dat po laserovém paprsku, nebo zvětšení dopadové plochy přijímače (například více fototranzistorů vedle sebe).
48
4. Závěr Při tvorbě diplomové práce jsem pro zadané téma prostudoval možnosti využití detekce polohy pomocí rotujících laserových paprsků. Navrhl jsem několik návrhů možné realizace zařízení, přičemž hlavně ta popsaná v kapitole 2.7.4 je zřejmě nejvhodnější pro případné pokračování v návrhu prototypu reálného zařízení. Jsem si jistý, že by zařízení postavené na základě tohoto principu mohlo být funkční. Metody přenosu dat po laseru (vysílání i příjem dat) jsem zkoušel pouze na jednom mikrokontroléru. To my poskytovalo možnost porovnání přijatých dat s odeslanými. V reálu by ale byly potřeba zařízení dvě, jedno jako vysílač, druhé jako přijímač, umístěný na pohyblivém robotovi. Pokud by mikrokontroléry nebyly stejného druhu, je potřeba zajistit, aby využívali stejný formát přenosu dat. Jinak by přijímač nerozpoznal přenášená data. Limitujícím prvkem pro zkoušení vyšších rychlostí přenosu a zaznamenávání údajů byly zřejmě použití starších a pomalejších součástek. Především ale zapojení všech obvodů na jedné nepájivé desce, která už sama o sobě nemá nejlepší vlastnosti a také využití jednoho napájecího zdroje. Několik různých signálů o různých úrovních a součástek s různým odpory bylo zdrojem rušení, které zhoršovalo kvalitu signálu. Pro lepší funkci je tedy vhodné rozdělit přijímací a vysílací část, aby se neovlivňovali a návrh desky plošného spoje, ne které budou součástky napájeny. Myslím, že jsem splnil všechny body zadání a při tvorbě této diplomové práce jsem se dozvěděl a naučil spoustu zajímavých věcí.
49
Přehled zkratek CPLD - Complex programmable logic device – Komplexně programovatelný logický obvod CMOS - Complementary Metal–Oxide–Semiconductor, doplňující se kov-oxidpolovodič technologie výroby integrovaných obvodů SRAM - Static Random Access Memory – statická paměť (data se nemusí neustále obnovovat, jsou v ní uloženy, dokud je připojeno napájení) s libovolným přístupem SCI – Serial Communication Interface – sériové komunikační rozhraní
50
Literatura 1
MELLISH, Bob, Lens (optics), 2006, [cit. 26.6.2012],
2
Texas Instruments, Hex inverters with open-collector outputs, SDLS030, 1983, rev. 1988,
3
Texas Instruments, Hex Schmitt-trigger inverters, SCLS085E, 1982, rev. 2004,
4
SHAWO HWA INDUSTRIAL CO.,LTD. , 635 Laser Module, [cit. 24.6.2012],
5
Siemens, NPN-Silizium-Fototransistor SFH 309, 1999-02-04, [cit. 25.6.2012],
6
DUDÁČEK, Karel, Renesas EVB2633F [online] , poslední revize 22.02.2005, [cit. 26.6.2012]
7
DUDÁČEK, Karel, Rozšiřující deska Pwr_2 pro EVB2633F [online], rev. 13.10.2006, [cit. 26.6.2012],
8
STMicroelectronics, L298 Dual full-bridge driver, 2000, [cit. 27.6.2012]
9
Renesas, H8S/2633 Group, User's Manual: Hardware. 2011.03, rev. 6.00
10
ŠMÍD, David, RS-232 Laser Transceiver [online], 5.4.2005, cit. 20.6.2012,
51
Příloha
Příloha A: Schéma zapojení testovacíh zařízení
52