Vyšší odborná škola a Střední průmyslová
škola elektrotechnická Olomouc,
Božetěchova 3
PRAKTICKÁ ZKOUŠKA Z ODBORNÝCH
PŘEDMĚTŮ
Autonomní robot RX1
2008
Milan Kořínek
Praktická zkouška z odborných předmětů - Autonomní robot RX1
2
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Prohlašuji, že jsem praktickou zkoušku vypracoval samostatně a všechny
prameny jsem uvedl v seznamu použité literatury.
……………………………
jméno a příjmení studenta
Chtěl bych vyslovit poděkování panu Ing. Liborovi Kyselému za odborné
konzultace a poskytnuté informace.
……………………………
jméno a příjmení studenta
Prohlašuji, že nemám námitek proti půjčování nebo zveřejňování mé práce nebo její
části se souhlasem školy.
……………………………
jméno a příjmení studenta
3
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obsah
1. Úvod .................................................................................................................................. 6
1. Úvod .................................................................................................................................. 6
2. Mechanická část robota ..................................................................................................... 7
2.1 Základní typy robotů ................................................................................................... 7
2.2 Použitý materiál ........................................................................................................... 7
2.3 Realizace pohybu robota – dopředu, dozadu a do stran .............................................. 7
2.4 Pásy.............................................................................................................................. 8
3. Elektrická část robota ...................................................................................................... 10
3.1 Základní vlastnosti, výrobní procesy ......................................................................... 10
3.2 Řídicí jednotka........................................................................................................... 11
3.2.1 Základní informace ............................................................................................. 11
3.2.2 Mikrokontrolér a programátor ............................................................................ 11
3.2.3 Resetovací obvod ................................................................................................ 12
3.2.4 Oscilátory ........................................................................................................... 12
3.2.5 Generátor pseudonáhodných čísel ...................................................................... 13
3.2.6 Detektory překážek ............................................................................................. 13
3.2.7 Výstupní budič sběrnice ..................................................................................... 16
3.2.8 Další konektory a signalizace ............................................................................. 17
3.3 Výkonový budič stejnosměrných motorů .................................................................. 19
3.3.1 Budící obvody stejnosměrného elektromotorku ................................................. 19
3.3.2 Obvod L293D ..................................................................................................... 19
3.3.3 Popis zapojení výkonového budiče stejnosměrných motorů .............................. 20
3.3.4 Odrušení motorů ................................................................................................. 21
3.4 Tvarovač, dekodér kvadraturního signálu ................................................................. 22
3.4.1 Základní popis zapojení ...................................................................................... 22
3.4.2 Připojované senzory ........................................................................................... 22
3.4.3 Tvarovač signálu................................................................................................. 24
3.4.4 Dekodér kvadraturního signálu .......................................................................... 24
3.4.5 Propojení s řídící jednotkou................................................................................ 25
3.5 Kompas CMPS03 ...................................................................................................... 26
3.6 Komunikační jednotka............................................................................................... 28
3.6.1 OEMSPA311i-04 ............................................................................................... 28
3.6.2 Komunikační jednotka – napěťová úprava signálu ............................................ 29
3.6.3 Bluetooth adaptér na straně PC .......................................................................... 31
3.7 Napájecí jednotka ...................................................................................................... 32
3.8. Seznam součástek ..................................................................................................... 34
4
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.8.1 Tvarovač, dekodér kvadraturního signálu .......................................................... 34
3.8.3 Výkonový budič motorů ..................................................................................... 36
3.8.4 Komunikační jednotka........................................................................................ 37
3.8.5 Napájecí jednotka ............................................................................................... 38
3.8.6 Ostatní................................................................................................................. 38
4. Programová část robota ................................................................................................... 39
4.1 Program mikrokontrolérů AT89S52 .......................................................................... 39
4.1.1 Základní informace, inicializační část programu ............................................... 39
4.1.2 Systémový časovač, 16b instrukce ..................................................................... 40
4.1.2 Řízení spojky ...................................................................................................... 42
4.1.3 Automatický režim robota .................................................................................. 43
4.1.4 Komunikace s kompasem ................................................................................... 45
4.1.5 Komunikace mikrokontroléru s počítačem......................................................... 47
4.2 Komunikátor – program pro počítač ......................................................................... 50
Závěr .................................................................................................................................... 52
Seznam použité literatury a studijních materiálů ................................................................ 53
Seznam příloh obsažených na CD ....................................................................................... 54
5
Praktická zkouška z odborných předmětů - Autonomní robot RX1
1. Úvod
Robotika se dnes řadí mezi mladé, ale velmi rychle se rozšiřující vědní obory. Samotná
robotika se, pak dělí do mnoha dalších disciplín např. výzkum 3D vidění, navigace, umělá
inteligence, konstrukční řešení robotů atd. V dnešní době narazíme na roboty na každém
rohu. Roboti se využívají v domácnostech, v průmyslu, v kosmonautice. Je snahou, aby
všichni tito roboti byli natolik inteligentní, tak aby si dokázali poradit s neočekávanými
situacemi, základem každého inteligentního robota je schopnost učení se.
Cílem dlouhodobé maturity bylo sestavit funkční verzi robota postaveném na speciálním
podvozku (popsán v kapitole mechanické části) a zjistit jeho výhody/nevýhody proti
konvečnímu řešení. Dalším z cílů bylo detekovat překážky pomocí vhodných čidel,
realizovat komunikace mezi počítačem a robotem. Pomocí počítače mít možnost ovládat
robota ručně. Během celého cyklu sestavování a oživování robota jsem se snažil veškeré
problémy řešit sám bez cizí pomoci. Veškerá zapojení, konstrukční díly jsem sestavoval
sám za pomocí odborné literatury a datasheetu, díky čemuž jsem získal mnoho cenných
zkušeností z oblasti elektroniky, navrhování plošných spojů a celkového řešení robota.
Celého robota lze rozdělit na šest základních bloků, jenž je znázorněn na obrázku č. 1.
Nejdůležitější a také nejsložitější částí robota je řídící jednotka, která se stará o řízení a
zpracování dat z ostatních bloků. Senzorický subsystém lze rozdělit na dvě základní
skupiny senzorů. První skupina slouží pro vnitřní potřeby a zabezpečení správné funkce
samotného robota. Druhá skupina senzorů je využita pro orientaci robota v prostoru. Další
částí je akční subsystém, který je určen pro samotný pohyb. Nejméně důležitým blokem je
komunikační jednotka, bez které může robot bez většího omezení fungovat. Komunikační
jednotka je určena pro zabezpečení komunikace mezi robotem a počítačem, kde může
operátor převzít kontrolu nad robotem, sledovat chybové stavy, nastavovat významné
konstanty ovlivňující chování robota. Do akčního subsystému spadají motory pro pohyb
robota. Napájení robota je řešeno kabelem z externího zdroje. Robot nemá vlastní zdroj
napětí z finančních důvodů a z důvodu velké hmotnosti baterií.
Počítač
Komunikační
jednotka
Řídicí
jednotka
Napájecí
jednotka
Senzorický
subsystém
Obr. č. 1: Blokové znázornění robota RX1.
6
Akční
subsystém
Praktická zkouška z odborných předmětů - Autonomní robot RX1
2. Mechanická část robota
2.1 Základní typy robotů
Existuje mnoho kategorií robotů podle prostředí, ve kterém se mohou pohybovat: na souši
(vnitřní/vnější prostory), ve vzduchu, ve vodě atd. Já jsem si vybral robota pro vnitřní
prostředí, protože na rozdíl od ostatních základních typů je nejjednodušší na realizaci a
není striktně vyžadována přesnost, malá váha, aerodynamický tvar atd. Dále tento typ
robotů můžeme rozdělit podle druhu podvozku:
- Kolové
- Pásové
- Kráčející
- Hybridní
Jelikož jsem několik měsíců před zadáním dlouhodobé maturity začal vyvíjet mechaniku
pro řízení pásového podvozku, rozhodl jsem jej tedy použít, otestovat, vyhodnotit výhody
a nevýhody proti konvenční realizaci podvozku.
2.2 Použitý materiál
Hlavním materiálem na výrobu robota sloužil ocelový plech o tloušťce 1,4 mm; šrouby
M3,5 a jiné součástky ze stavebnice Merkur; závitové tyče. Nebylo možné používat
plastových dílů, protože pro správnou funkci spojky a správné napnutí pásů, musel být
materiál pevný, neohebný. Pro ovládání pohybu robota jsem použil dva stejnosměrné
elektromotorky, jejichž základní parametry naleznete v tabulce č. 1. Převodovky pro pohon
a ovládání spojky jsou vlastní výroby. Pro jejich realizaci byly použity ozubené kola,
získána během mnoha let pravděpodobně ze starých budíků, mechanických hraček atd.
Parametr
Motor M1 – pohon
Motor M2 – ovládání spojky
6
3
Napájecí napětí [V]
4
0.6
Výkon [W]
4500
Otáčky[ot/min]
Tab. č. 1: Základní parametry stejnosměrných elektromotorků.
2.3 Realizace pohybu robota – dopředu, dozadu a do stran
Základem je motor M1 (popsán výše) s převodovkou. Podle směru otáčení robot jede
dopředu nebo dozadu. Klasická koncepce řízení pásového robota spočívá v použití dvou
identických motorů a převodovek, každý pro jeden pás. Toto je nejběžnější a nejvhodnější
řešení robotů malých rozměrů, ale i těch větších. Výhody tohoto sytému jsou: otáčení
robota na místě, vysoká manévrovatelnost, rychlá odezva. Zásadní nevýhodou je vysoká
cena kolem 2500 Kč při použiti převodovek s kovovým ozubením. Umělohmotné
převodovky nemá příliš smysl kupovat, protože se rychle opotřebovávají, jsou vhodné
opravdu jen pro malé roboty s nízkou váhou, kde by nebyly přetěžovány. Pro tento účel
jsem vyvinul vlastní systém, který potřebuje pouze jeden hlavní motor s převodovkou, a
druhý mnohem slabší motor pro ovládání spojky. Celá hnací osa je rozdělena na tři části:
1. Středová hnací osa, která je spojena natvrdo s převodovkou.
2. Levá osa spojená s levým pásem.
3. Pravá osa spojena s pravým pásem.
7
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Princip je následující: Podle nastavení spojky jsou ke středové hnací ose připojena levá,
pravá nebo oba pásy. V základní poloze jsou tedy spojeny všechny tři osy – robot pojede
rovně. V druhé poloze spojka zůstane spojená s pravou stranou, ale s levou se rozpojí –
robot se bude otáčet kolem levého pásu doleva. Velkou výhodou tohoto systému jsou malé
náklady na úkor složitosti. Pro otočení robota je zapotřebí oblast ve tvaru kruhu
s poloměrem dvojnásobku šířky robota. Jeho manévrovatelnost je značně omezena
z důvodu doby než se spojka nastaví do správné polohy. Jistý problém může nastat při
otáčení robota na hrubých podlahách, kde dochází značného opotřebování pásu, podle
něhož se robot otáčí. V další verzi spojky tento problém zkusím vyřešit, tak že
mechanicky docílím toho, aby se při otáčení robota pásy točily každý na jinou stranu.
2.4 Pásy
Jak už jsem naznačil, robot má dva pásy. Jsou vyrobeny z řetězu z kola, na kterém je
připevněn gumový pás ze stavebnice Merkur. Pro usazení řetězu jsou použita
umělohmotná ozubená kola, která se požívají do přehazovaček u horských kol. Původně
byly použity pouze gumové pásy, ale ukázalo se, že je není možné usadit tak, aby se
nevyzuly. Pásy jsou do dvou třetin délky robota a slouží pro jeho pohon, vepředu jsou
umístěna dvě pomocná kola. Pro toto uspořádání jsem se rozhodl z těchto důvodů:
- Z principu fungování spojky vyplývá, že čím by byl pás delší tím by bylo tření mezi
pásem a podlahou větší a robot by se otáčel jen s velkými obtížemi.
- V konečném důsledku je robot o několik desítek gramů lehčí.
Na obrázcích č. 2, 3 je zobrazena spojka s popisem. Na obrázcích č. 3, 4 je konstrukční
uspořádání desek elektroniky a celkové mechanické řešení robota.
Obr. č. 2: Mechanismus řízení spojky, rozmístění dorazových optozávor.
8
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 3: Mechanismus řízení spojky, rozmístění elektroniky.
Obr. č. 4: Celkový pohled na robota, rozmístění elektroniky.
9
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3. Elektrická část robota
3.1 Základní vlastnosti, výrobní procesy
Všechny plošné spoje použity v robotovi jsou realizovány pro jednodušší výrobu na
jednostranném plošném spoji. Všechny desky jsem navrhoval v Eaglu verze 4.16r2 ve
freeware verzi, která je určena pro nekomerční účely. Velikostí desek je omezena na 100 x
80 mm. Součástky jsem ve většině případů používal v klasických pouzdrech a rozměrech.
Při vývoji řídící desky jsem byl donucen použít poprvé během vývoje robota SMD
součástky, protože jsem narazil na omezení Eaglu. Montáž SMD součástek nebyla příliš
náročná, tak jsem se rozhodl jej uplatňovat i na dalších desek, čímž jsem docílil zmenšení
rozměrů desek a nákladů. Veškeré desky jsem vyráběl fotocestou za pomocí positivu 20 a
leptal ve chloridu železitém FeCl3. Desky jsou ošetřeny natřenou kalafunou.
Blokové schéma elektronické části je zobrazeno na obrázku č. 5. V následujících několika
kapitolách budou jednotlivé části podrobně popsány. Ke každému integrovanému obvodu
je připojen jeden 100n keramický blokovací kondenzátor, který eliminuje případné výkyvy
napájecího napětí vlivem spínaní IO.
PC
2x
Kompas
optosenzor
překážek
Bluetooth modul
I2C
Napájecí
jednotka
Bluetooth modul
RS232
Komunikační
jednotka
Řídicí jednotka
Tvarovač, dekodér
kvadraturního signálu
Motor pohonu –
M1
Motor spojky –
M2
Výkonový
budič ss
motorů
Inkrementální
senzor
Obr. č. 5: Blokové schéma elektroniky.
10
3x
optozávora
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.2 Řídicí jednotka
3.2.1 Základní informace
Řídicí jednotka je nejsložitější a nejdůležitější části celého robota. Zabezpečuje řízení
pohybu, vyhodnocuje signál z optosenzorů, zpracovává data poslána z PC,
zprostředkovává komunikaci s kompasem. Jelikož se jedná o nejsložitější blok. Blokové
schéma elektrické části je na obrázku č. 6, schéma zapojení je na obrázku č. 11 na konci
kapitoly řídicí jednotka.
Senzory spojky
Řízení motorů
8 x optosenzor
Připojení
senzorů
Výstupní
budič sběrnice
Rozšiřující port pro
optosenzory
I2C
Generátor
pseudonáhodných
čísel
I2C
Mikrokontrolér Atmel
RS232
RS232 - TTL
ISP/RS232
Resetovací
obvod
RS232
Manuální
reset
Generátor
modulovaného
signálu
Oscilátor
24MHz
Oscilátor
1.8432MHz
Obr. č. 6: Blokové schéma řídicí jednotky.
3.2.2 Mikrokontrolér a programátor
Srdcem řídicí jednotky je mikrokontrolér Atmel. Já jsem si vybral AT89S52, ale je možné
použití typů AT89S51, AT89S8252, AT89S8253. Hlavní rozdíly jsou uvedeny
v následující tabulce č. 2.
Parametr
Velikost
paměti
programu
Maximální
počet přepisů
Velikost
paměti dat
Taktovací
kmitočet
AT89S51
4 kB
AT89S52
8 kB
AT89S8252
8 kB
AT89S8253
12 kB
1 000
1 000
1 000
10 000
-
-
2 kB
2 kB
0Hz – 33MHz
0Hz – 33MHz
0Hz – 24MHz
0Hz – 24MHz
Tab. č. 2 : Porovnání mikrokontrolérů.
11
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Tato „S“ řada mikrokontrolérů je vybavena ISP (In System Programing) – sériovým
programováním mikrokontroléru. Většina na internetu publikovaných řešení využívá:
a) Paralelního portu PC s jednoduchou elektronikou (několika rezistory,
kondenzátory a hradly AND jako budičů). Výhody: vysoká rychlost, snadné
ovládání. Nevýhody: Nebezpečí poškození portu, omezena délka kabelu, není
k dispozici na všech PC.
b) Tento programátor již vyžaduje řídicí elektroniku. Většinou se připojuje na
sériový nebo na USB port. Program je PC odeslán do řídicí elektroniky, která si
jej zpracuje. Pomocí několika vodičů je spojen programovaný obvod s tímto
programátorem a je naprogramován. Výhodou je vysoká rychlost
programování, snadné připojení, možnost použití dlouhého kabelu. Nevýhodu
je nutnost mít programátor.
c) V tomto případě se programovaný obvod přímo připojí na RS232 k PC přes
převodník MAX232. Mcu je pak naprogramován stejně jako programátorem
v předešlém bodě. Výhodou je snadné připojení k PC, relativně rychlý 1.64kB/s, problémy nastávají až při použití USB-RS232 převodníku, kde se
rychlost u tohoto typu programátoru razantně sníží na 16B/s.
Já jsem zvolil variantu c), se kterou jsem měl zkušenosti ve firmě a naprogramoval
ovládací rozhraní. Program umožňuje zápis/čtení/verifikaci paměti programu a dat.
Převodník napěťových úrovní pro RS232 na TTL je použit obvod IC3 – MAX232
zapojený podle datasheetu výrobce. Kondenzátory C4-C7 využívá tento obvod jako
nábojovou pumpu. Zapojení pinů konektoru X2 je standardní a tudíž je možné použít
obyčejný prodlužovací kabel pro sériový port PC s devíti pinovým konektorem cannon.
3.2.3 Resetovací obvod
Mikrokontrolér má reset v log „1“, na rozdíl od většiny obvodů. K tomu musel být
přizpůsoben resetující obvod složený z hradla NAND obvod IC2B. Rezistor R6 a C3
sloužící pro reset po připojení napájení, R5 definuje logickou hodnotu „H“, tlačítko S1 pro
manuální reset. K resetovacímu obvodu je připojen reset od sériové linky, jelikož MAX232
má jen 2 vstupy a alternativní obvod s více vstupy je příliš drahý, rozhodl jsem se upravit
logické úrovně RS232 na TTL pomocí zenerovy diody D1 jako stabilizátoru napětí,
rezistorů R2, R3, hradla NAND. Rezistor R2 slouží pro omezení proudu tekoucí zenerovou
diodou, R3 určuje logickou úroveň v případě odpojení sériového kabelu a hradlo tento
signál neguje. Zapojení je sestaveno tak, aby nedošlo k resetu při připojení nebo odpojení
sériového kabelu.
3.2.4 Oscilátory
Na desce nalezneme celkem 2 oscilátory a jeden generátor modulovaného signálu, který
popíši v další podkapitole. Použitý mikrokontrolér potřebuje pro svůj chod vnějšní
taktovací kmitočet. Rozsah frekvencí je od 0Hz – 33MHz. Já jsem si zvolil 24MHz ze
dvou důvodů: Lze použít jakýkoliv výše uvedený mikrokontrolér a výpočet délky jednoho
strojového cyklu SC vyjde celé číslo – 0,5µs. Základem oscilátoru je krystal 24MHz,
kondenzátory C1, C2, rezistor R1 a dvě hradla NAND obvodu IC2C, IC2D. Oscilátor je
pak připojen k pinu XTAL1, pin XTAL2 zůstane nezapojen. Druhý oscilátor slouží jako
taktovací kmitočet pro generátor pseudonáhodných čísel. Je totožně zapojen jako oscilátor
pro mikrokontrolér. Skládá se z těchto součástek: R14, C10, C11 a dvou hradel obvodu
IC6.
12
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.2.5 Generátor pseudonáhodných čísel
Deska obsahuje 4bitový generátor pseudonáhodných čísel. Pseudonáhodný znamená, že se
sekvence generovaných čísel opakuje. Jelikož ke generátoru přistupuji v náhodném čase,
když robot narazí na překážku, tak ve výsledku dostanu náhodné číslo. Tento generátor
využívám pro výpočet stupňů, o který se má robot otočit při detekci překážky. Základem je
obvod 4006 – IC5, který obsahuje dva čtyřbitové a dva pětibitové posuvné registry. Tyto
registry mají společný hodinový vstup, vstupy a částečně výstupy. Za výstupy jsou hradla
XOR obvodu IC4, jejíž výstupy jsou vedeny na vstup obvodu IC5 a na tranzistory
zapojené ve spínacím režimu. Kolektory těchto tranzistorů jsou připojeny k
mikrokontroléru. Rezistory R10 – R13 slouží pro omezení proudu tekoucí bází a zaručují
úplné otevření tranzistorů. Rezistory R24 – R26 zapojené mezí bází a emitorem jsou
určeny pro rychlejší zavírání tranzistorů, vybitím kapacity PN přechodu. Jejich hodnota
není kritická a pohybuje se v řádech desítek kiloohmů. Generátor používá obvody CMOS,
protože k obvodu IC5 není ekvivalent v TTL logice. Zapojení je taktováno oscilátorem o
frekvenci 1,8432MHz popsaným v předešlé podkapitole. Výstup generátoru je vyveden na
pinech konektoru J4.1 – J4.4
3.2.6 Detektory překážek
Aby robot byl schopen se vyhnout překážkám, musí mít vhodné senzory, které mu oznámí
potenciální překážku. Existují tyto základní typy:
a) Mechanický – Většinou se jedná o nárazník, kterým se po nárazu sepnou spínače.
Ten by měl obsahovat každý robot, v případě selhání elektroniky.
- Výhody: Spolehlivé, jednoduché zapojení a vyhodnocení
- Nevýhody: Jedná se kontaktní detekci překážky. Robot se nic nedozví o svém
blízkém ani vzdáleném okolí.
b) Optický – Tyto senzory se používají pro zkoumání nejbližšího okolí robota.
Existuje mnoho typů optických senzorů, nejjednodušší je použití infradiody a
infratranzistoru. V tomto zapojení se dosahuje detekce ve vzdálenosti jednotky až
desítky cm. Druhou možností je použití integrovaného řešení v podobě GP2D02.
Jedná se o IR senzor , který měří vzdálenost k překážce na principu triangulace.
Jeho rozsah je 10 cm – 80 cm.
- Výhody: relativně levné řešení
- Nevýhody: Závislost vyhodnocené vzdálenosti na typu materiálu, zvláště při
čistém použití u IR diody a tranzistoru. Není vhodný pro detekci skla.
c) Ultrazvukový - Používá se pro detekce vzdálenějších překážek. Jeho rozsah je 3
cm až jednotky metrů. Typy např. SRF04, SRF08… Informaci o vzdálenosti
překážky odesílá buď po I2C, nebo délkou impulsu závislou na vzdálenosti od
překážky.
- Výhody: velký rozsah
- Nevýhody: nedokáže detekovat měkké materiály jako je záclona, hadr…
d) Kamery - Složitější roboti používají kamery. Je potřeba výkonného mikropočítače,
nebo většinou je signál z kamery zpracováván PC. Za použití dvou kamer, je pak
počítač schopen vytvořit 3D prostředí robota a dokáže se v něm navigovat.
- Výhody: Umí si vytvořit opravdový obraz o svém okolí a tím vyčnívá nad
ostáními
senzory.
- Nevýhody: Složitá analýza obrazu, velký datové toky a tím nároky na rychlý
bezdrátový přenos dat a zpracování dat.
13
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Já jsem zvolil kombinaci mechanického a optického senzoru. Nárazník je použit v případě,
že by optický senzor nedetekoval překážku. Nárazník je sestaven ze svařovacího drátu,
spojený pružinou s hlavní kostrou. V levé a v pravé poloze nárazníku jsou umístěny
tlačítka, která se sepnou, když robot narazí na překážku. Tlačítko S1 je umístěno vlevo a
S2 vpravo na nárazníku. Schéma zapojení tlačítek nárazníku je na obrázku č. 7. Propojení
tlačítek s řídicí jednotkou ukazuje tabulka č. 3.
J1
1
2
3
J4 (ŘJ)
7
8
9
Poznámka
P2.6, Levé tlačítko
P2.7, Pravé tlačítko
GND
Tab. č. 3: Propojení tlačítek nárazníku.
Obr. č. 7: Schéma zapojení tlačítek nárazníku
s řídicí jednotkou (ŘJ).
Optický senzor se skládá z obvodu SHF5110-36 a dvou vysílacích IR diod LD274, jenž se
nachází na zvláštní desce plošných spojů. Diody jsou modulovány signálem o nosné
36kHz signálem o frekvenci 5kHz viz obrázek č. 8. Generátor modulovaného signálu je
umístěn na desce řídící jednotky. Modulovaný signál je generovaný pomocí dvou časovačů
obsažených v jednom pouzdru NE556 zapojených jako astabilní klopný obvod. Výstup
časovače generující 5kHz je zapojen na reset druhého časovače, čímž vznikne na výstupu
druhého časovače modulovaný signál. Rezistory R16 – R19 a kondenzátory C13, C15
slouží pro nastavení frekvence 36kHz a 5kHz. Pro přesné nastavení kmitočtu 36kHz je
místo rezistoru R16 použit trimr.
Obr. č. 8 : Modulovaný signál pro IR LED.
Tento signál je proudově zesílen a následně emitován IR diodami. Po odražení od překážky
je zpracován obvodem IO1. Výstupem tohoto obvodu by měl být signál o frekvenci 5kHz,
ale může být mnohem nižší, záleží na kvalitě odraženého signálu od překážky.
Mikrokontrolér tyto pulsy čítá a následně je vyhodnotí. Programově lze nastavit citlivost
senzorů. Výhodou použití modulovaného signálu je, že pak senzor nereaguje na okolní
osvětlení. Jistou nevýhodou mohou být ovladače domácích spotřebičů, které způsobí
falešnou detekci překážky.
Schéma zapojení modulu senzorů je na obrázku č. 9, Všechny senzory jsou připojeny
stejně za sebou na řídící jednotce. Tabulka č. 4 zobrazuje připojení prvního senzoru.
Rezistor R2 slouží pro omezení proudu tranzistorem Q1. Tranzistor je použit PNP tak, aby
14
Praktická zkouška z odborných předmětů - Autonomní robot RX1
bylo možno spínat diody v log. „0“ (výstupní obvod, na desce řídicí jednotky pro řízení
těchto senzorů, je aktivní v log. „0“ ). Proud tekoucí IR diodami D1, D2 je omezen
rezistorem R1 na 50 mA. RC člen sloužený z R3 a C1 je určen pro filtraci napájení obvodu
IO1, tento obvod není na finální desce zapojen, protože způsoboval špatnou funkci obvodu
IO1, přestože je uveden v datasheetu. Obvod IO1 má výstup s otevřeným kolektorem bez
vnitřního pull-up rezistoru, proto je nutné ho doplnit zvnějšku jako rezistor R4 o hodnotě
10k.
Konektor
Poznámka
na ŘJ
1
J5.1
Modulovaný signál
2
J7.1
GND
3
J6.1
Výstup ze senzoru
4
J8.1
+5V
Tab. č. 4: Připojení modulu senzoru 1 k
řídicí jednotce (ŘJ).
J1
Obr. č. 9: Schéma zapojení modulu optického senzoru.
Aby bylo možné připojit více čidel, aniž bych přišel zbytečně o mnoho pinů
mikrokontrolérů (každé čidlo potřebuje linku pro jeho zapnutí a čtení pulsů), rozhodl jsem
se zapojit rozšiřující port, který umožňuje připojení až 8 optických senzorů. Pro řízení
rozšiřovacího portu je zapotřebí pouze 5 pinů mikrokontrolérů, z čehož jsou piny P0.3,
P0.4, P0.5 použity pro adresaci jednotlivých senzorů, pinem P0.6 je aktivován příslušný
senzor a pin P0.2 slouží pro čtení výstupu ze senzoru. Port je složen z 8bit multiplexeru
IC7 a z 8bit demultiplexeru IC8.
Tyto obvody mají společnou adresní sběrnici. Generátor modulovaného signálu je připojen
k demultiplexeru na povolovací pin 6, aby se tento signál dostal na výstup, je zapotřebí
také aktivovat povolovací piny 4, 5 log. „0“ mikrokontrolérem. Tento obvod má výstupy
aktivní v log. „0“, a z tohoto důvodu jsou použity tranzistory typu PNP na modulu
optických senzorů, jak jsem dříve psal.
Pro získání signálu z výstupu aktivovaného senzoru je potřeba použít multiplexer. Jeho
výstup je pak připojen k mikrokontroléru k pinu P0.2. Na pin výstupu 6 je připojena Led
LED4 s předřadným rezistorem R15 určená pro optickou signalizaci výstupního signálu ze
senzoru.
Shrnutí z ovládání přídavného portu:
- mikrokontrolér nastaví adresu požadovaného senzoru
- aktivuje senzor log. „0“ na pinu P0.6
- na pinu P0.2 je k dispozici výstup příslušného senzoru, opticky je signalizován na
LED4
- deaktivuje senzor log. „1“ na pinu P0.6
15
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.2.7 Výstupní budič sběrnice
Výstupní budič sběrnice je použit pro spínání optočlenů výkonového budiče motorů. Budič
je výjimečný tím, že je realizován na zvláštní desce, jenž je k řídící desce připájena kolmo.
Z důvodu minimální velikosti desky jsou použity SMD součástky. Schéma je na obrázku č.
10. Připojení budiče k řídící jednotce ukazuje tabulka č. 5.
J1
1
2
3
4
5
6
7
8
J1 na ŘJ
1
2
3
4
5
6
7
8
Poznámka
GND
GND
GND
+5V
P1.0
P1.1
P1.2
P1.3
Tab. č. 5: Připojení výstupního budiče
sběrnice k řídicí jednotce (ŘJ).
Obr. č. 10: Schéma zapojení výstupního budiče sběrnice.
Tranzistory Q1 až Q4 jsou zapojeny jako spínače. Před bází jsou zapojeny předřadné
rezistory R1 – R4 o hodnotě 1kΩ. Zapojení kolektorů a emitorů je takto voleno z důvodu,
aby došlo při připojení k výkonovému budiči motorů zastavení motorů. Tabulka č. 6
ukazuje propojení výkonového budiče motorů s budičem sběrnice.
J2
Pin na budiči motorů
Poznámka
1
EN2
mcu - P1.3
2
DIR2
mcu - P1.2
3
NC
GND
4
GND
GND
J3
1
EN1
mcu - P1.0
2
DIR1
mcu - P1.1
3
NC
GND
4
NC
GND
Tab. č. 6: Připojení výstupního budiče k výkonovému budiči motorů.
16
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.2.8 Další konektory a signalizace
Pro signalizaci orientačního stavu robota jsou k dispozici dvě LED diody viz. tabulka č. 7.
LED
Pin mcu
LED2
P1.4
LED3
P1.0
Tab. č. 7: Led signalizace stavu robota.
Barva
červená
oranžová
Signalizace
Kritická chyba
Manuální režim
Napájení desky je 5V připojených na konektor SL3. Na pinu 1 je zem a na pinu 2 je +Ucc.
Z důvodu ochrany desky před přepólováním byla použita dioda D2, když byla vybrána
dioda s nízkým prahovým napětím, byla raději ve finálním provedení nahrazena propojkou
z důvodu občasného resetu procesoru při aktivaci optických senzorů. Dále řídicí jednotka
disponuje RS232 sběrnicí určenou pro komunikaci na konektoru SL1 viz kapitola
komunikační jednotka. Dále lze k řídící jednotce připojit zařízení s rozhraním I2C, jenž je
k dispozici na konektoru J9, viz tabulka č. 8.
J9
1
2
3
4
Význam
+5V
SCL
SDA
GND
Tab. č. 8: Popis konektoru I2C.
Posledním konektorem na desce je J2 sloužící pro připojení čidel spojky viz kapitola
Tvarovač, dekodér kvadraturního signálu.
17
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 11: Schéma zapojení řídicí jednotky
18
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.3 Výkonový budič stejnosměrných motorů
3.3.1 Budící obvody stejnosměrného elektromotorku
Směr otáčení
Zapnutí motoru
Řídicí obvod
Pro řízení robota jsou použity dva stejnosměrné elektromotorky, které je zapotřebí zapnout
a vybrat si směr otáčení. Pro změnu smyslu otáčení motoru je nutné otočit napájení, tato
funkce se realizuje H-můstkem složeným ze čtyř výkonových tranzistorů, nejlépe
unipolárních. Tento H-můstek je znázorněn na obrázku č. 12.
Obr. č. 12: H-můstek.
Funkce H-můstku je následovná. Jak jsem již řekl, změna smyslu otáčení motoru se
provádí změnou polarity napětí. Pro otáčení motoru jedním směrem musí být sepnuty
tranzistory T1, T4, pro otáčení na druhou stranu se sepnou tranzistory T3, T2 což zapříčiní
změnu polarity napětí. Řídicí obvod nesmí dopustit sepnutí dvou tranzistorů pod sebou,
což by zapříčinilo zkrat a pravděpodobné poškození tranzistorů, případně napájecího
zdroje. Při sepnutí tranzistorů T1, T3 nebo T2, T4 zapříčiní zabrzděni motoru. Změnu
otáček motoru lze realizovat dvěma způsoby: a) Změnou napájení motoru
b) PWM signálem řídit zapínání motoru
Rychlost otáčení pásů je nízká, a proto nebylo zapotřebí regulovat rychlost otáček motoru.
Jediný případ, kdy reguluji otáčky motoru je při nastavování spojky.
3.3.2 Obvod L293D
I když jsem si sestavil H-můstek z diskrétních součástek na nepájivém poli a řídil
elektromotorky, rozhodl jsem se pro integrovanou verzi v podobě obvodu L293D, protože
verze z diskrétních součástek zabírala příliš velký prostor a byly by mnohem větší
problémy s chlazením tranzistorů. Obvod L293D obsahu v sobě 2 plnohodnotné H-můstky
viz blokové schéma na obrázku č. 13. Z každého můstku lze odebírat proud až 600 mA,
špičkově 1,2 A. V případě napájení obvodu 5 V (pin VSS) je kompatibilní s TTL logikou.
Druhé napájecí kontakty (pin VS) slouží pro napájení motorů, napětí na motorech je pak
menší o cca 1V oproti USS z důvodu napěťového úbytku na výkonových členech obvodu.
Jako každý výkonový prvek i tento vyžaduje chladič.
19
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 13: Blokové schéma L293D.
V datasheetu jsou uvedeny možné způsoby chlazení. Já jsem využil kombinaci chladicích
ploch (menších rozměrů než je uvedeno v datasheetu z důvodu zachování malých rozměrů
desky) a hliníkového chladiče připevněného na pouzdro čipu pomocí svařovacího drátku,
který je pak připájen na desce. Mezi chladič a čip jsem použil teplovodivou pastu pro lepší
odvod tepla.
3.3.3 Popis zapojení výkonového budiče stejnosměrných motorů
Celé schéma zapojení lze vidět na obrázku č. 14. Ve schématu jsou sice zakresleny motory,
ale ve skutečnosti se motory připojí kabelem s odrušovacími prvky viz. kapitola odrušení
motorů. Podle datasheetu by při stejné logické hodnotě mělo dojít ke zabrzdění motoru, ale
při testováni na nepájivém poli jsem nebyl schopný realizovat tuto funkci, pravděpodobně
bude chyba uvnitř. Z tohoto důvodu ani deska nepodporuje tuto funkci a lze řídit pouze
směr a případně otáčky motoru.
Aby možné měnit smysl otáčení motoru, je zapotřebí přivést na vstupy 1A, 2A (3A, 4A)
opačnou logickou úroveň, proto je před vstupem 2A a 3A invertor v podobě obvodu IC2
74LS14. Všechny vstupy jsou opatřeny pull-up rezistory R3, R5, R7, R9, které definují
vysokou logickou úroveň. Deska je napájena 6.5V. Z důvodu existence obvodu IC2 je
zapotřebí toto napětí stabilizovat na 5V. K tomuto účelu slouží nízkoúbytkový stabilizátor
T1 LE50cz, který potřebuje pro svou funkci pouze o 0.2V vyšší napětí než požadované
výstupní. Motor 2 je určen pro nižší napětí než motor 1, z tohoto důvodu je zde předřadný
výkonový rezistor R1.
Z důvodu rušení a nebezpečí poškození řídicí jednotky jsou řídící vodiče od ní opticky
odděleny optočlenem OK1 PC847. Na vstupech každého optočlenů je předřadný rezistor
pro omezení proudu tekoucího diodami optočlenů. Tato deska navržena mezi prvními, a
proto se zde vyskytlo několik menších chyb, které jsou popsány v závěru.
20
Praktická zkouška z odborných předmětů - Autonomní robot RX1
+
-
Obr. č. 14: Schéma zapojení výkonového budiče stejnosměrných motorů.
3.3.4 Odrušení motorů
Při testování robota jsem narazil na velmi závažný problém – rušení. Toto rušení velmi
narušovalo chod celého robota – mikrokontrolér se samovolně resetoval, špatné
vyhodnocování senzorů atd. Odrušení robota trvalo prakticky několik týdnů, než jsem
získal informace, jak robota odrušit. Asi největším problémem je celokovová kostra a tím
mnohem větší šíření rušení. Nejdříve jsem nahradil jeden kovový díl za plastový. V další
fázi jsem připájel kondenzátory k motorům. Sériovým spojením kondenzátorů vznikl střed,
který se připojí na kovový kryt motoru viz obrázek č. 15. Dále jsme musel připojit do série
s napájením motoru odrušovací tlumivku s dvojitým vynutím, díky čemuž se odruší
symetrické rušení. Tyto odrušovací prvky jsou mimo desku výkonového budiče motoru a
jsou umístěny u motorů.
Obr. č. 15: Zapojení odrušovacích prvků.
21
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.4 Tvarovač, dekodér kvadraturního signálu
3.4.1 Základní popis zapojení
Schéma zapojení je vidět na obrázku č. 16. I když na první pohled zapojení vypadá složitě,
v podstatě se jedná o 6 stejných obvodů. Tvarovač má za úkol upravit signál
z optozávory/inkrementálního signálu. Druhý obvod – dekodér kvadraturního signálu se
postará o dekódování signálu z inkrementálního snímače na získání informace o směru
otáčení. Výstupy optozávor a směr otáčení inkrementálního snímače je signalizován
pomocí LED. Optozávory a inkrementální snímače se připojují pomocí 3(4)-pinového
konektoru k desce. Při návrhu desky bylo hlavně dbáno na velikost desky a z tohoto
důvodu jsou dva konektory otočeny oproti ostatním. Z toho samého důvodu se výstupy
nenachází vedle sebe, ale jsou rozmístěny kolem jedné hrany desky. Jelikož jsem nechtěl
nechat polovinu obvodu nevyužitou rozhodl jsem se, že je využiju a tak dostanu
k dispozici další obvody tvarovačů a dekodéru, které mohu využít kdykoliv později.
3.4.2 Připojované senzory
K desce tvarovače lze připojit optozávory a inkrementální snímače. Existují dvě
kombinace připojitelných senzorů, které jsou znázorněny v tabulkách č. 9 a č. 10.
Senzor
Vstupní konektor
Výstupní piny
Pulsy:
pulsy 1
Inkrementální senzor
SL3
1
Směr:
smer 1
Optozávora 1
SL2
optozávora 1
Optozávora 2
SL1
optozávora 2
Optozávora 3
SL4
optozávora 3
Optozávora 4
SL5
optozávora 4
Tab. č. 9: Konfigurace 1 - 1x inkrementální senzor a 4x optozávora.
Senzor
Výstupní piny
Pulsy:
pulsy 1
Inkrementální senzor 1 SL3
Směr:
smer 1
Ucc, emitor1:
SL4 Pulsy:
pulsy 2
Inkrementální senzor 2
GND, emitor2: SL5 Směr:
smer 2
Optozávora 1
SL2
optozávora 1
Optozávora 2
SL1
optozávora 2
Tab. č. 10: Konfigurace 2 – 2x inkrementální senzor a 2x optozávora.
LED
D5
LED2
LED1
LED5
LED3
Konektor
LED
D5
LED3
LED4
LED2
LED1
Já jsem použil první kombinaci, z které jsem využil inkrementální senzor a 3 optozávory.
Inkrementální senzor slouží pro generování přerušení při nastavování spojky. V přerušení
je řešeno veškeré řízení spojky, aby se nezastavilo provádění programu, než se nastaví
spojka do požadované polohy. Původně byl inkrementální snímač určen pro přesné zjištění
polohy spojky, ale z důvodu spolehlivosti jsem byl donucen předělat do podoby 3
optozávor, které přímo signalizují 3 polohy: - spojka vlevo
- spojka uprostřed
- spojka vpravo
Schéma zapojení optozávory je na obrázku č. 17, inkrementální snímač na obrázku č. 18.
22
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 16: Schéma zapojení tvarovače, dekodéru kvadraturního signálu.
23
Praktická zkouška z odborných předmětů - Autonomní robot RX1
IR1
Obr. č. 17: Zapojení optozávory.
Obr. č. 18: Zapojení inkrementálního snímače.
V původním zapojením byl umístěn rezistor R1 pro omezení proudu vysílací diodou u
optozávory na desce tvarovače, ale během testování se mi stalo, že jsme optozávoru
nedopatřením zkratoval a ona shořela. Inkrementální senzor je vyseparovaný z kuličkové
myši.
3.4.3 Tvarovač signálu
Po připojení jakéhokoliv senzoru je nejdříve zapotřebí tento signál napěťově a tvarově
upravit. Popíši obvod inkrementálního senzoru 1. Rezistor R7 slouží pro definování
logické úrovně „L“. Při sepnutí fototranzistoru bude logická úroveň „H“. Kondenzátor C2
slouží pro odrušení vstupu, na výsledné desce není použit, protože se ukázalo, že není
bezpodmínečně nutný a případné rušení se šířilo jinudy. Zenerovou diodou D1 před bází
tranzistoru T4 jsem docílil strmých hran obdélníkového signálu a imunitu proti zákmitům.
Signál ze senzorů se spíše podobá sinusovce. Tato dioda zároveň omezuje proud tekoucí
bází. Signál z tranzistoru je přiveden na obvod IC2. Díky použití Schmittového klopného
obvodu se tvar signálu zlepší. Rezistor R9 slouží pro definování logické úrovně při
překlápění hradla. Stejně fungují další tvarovače na desce.
3.4.4 Dekodér kvadraturního signálu
Abych zbytečně nezatěžoval procesor zbytečnými úkony, rozhodl jsme se postavit
hardwarový dekodér kvadraturního signálu. Průběh signálu z inkrementálního senzoru lze
vidět na obrázku č. 19. Lze vidět, že signály mají posunutou fázi o +90o. Při opačném
směru otáčení by signály byly otočeny o -90o. Pro dekódování jsem použil IC3 klopný
obvod typu D, který má dva vstupy. Jeden vstup je hodinový a druhý datový. Hodinový
vstup reaguje na nástupnou hranu a při příchodu této hrany přečte data z datového vstupu a
zapíše je na jeho výstup. Přečtená data si pamatuje do další náběžné hrany.
Předpokládejme, že signál A je datový a signál B hodinový. Z grafu je jasné, že na výstupu
obvodu bude vždy log. „H“, pokud se změní směr otáčení, pak na jeho výstupu bude log.
„L“. Druhý výstup obvodu je negací prvního, tento negovaný výstup využívám pro
signalizaci směru pomocí LED.
24
U [V]
Praktická zkouška z odborných předmětů - Autonomní robot RX1
U [V]
t [ms]
t [ms]
Obr. č. 19: Průběh signálu z inkrementálního snímače.
3.4.5 Propojení s řídící jednotkou
Výše popsaný principy platí pro všechny další obvody na desce, jenž jsou totožné. Je nutné
upozornit na připojování 2. inkrementálního snímače, který musí mít do série s vysílací
diodou rezistor. Tento rezistor není na desce, jelikož připojované optozávory mají rezistor
implementovány u sebe.
Všechny výstupy z desky jsou opatřeny výstupy s otevřeným kolektorem. Pull-up rezistory
nejsou potřeba, protože jsou obsaženy v mikrokontroléru. Tabulka č. 11 ukazuje propojení
s řídící jednotkou.
Senzor
Výstupní piny
Pulsy:
pulsy 1
Inkrementální senzor 1
Směr:
smer 1
Optozávora 1
optozávora 1
Optozávora 2
optozávora 2
Optozávora 4
optozávora 4
GND
Tab. č. 11: Propojení s řídicí jednotkou (ŘJ).
25
J2 na ŘJ
7
6
2
3
5
1
Poznámka
P3.2 – přerušení
P3.4
P3.7 – levý dorazový
P3.6 – pravý dorazový
P3.3 - středový
GND
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.5 Kompas CMPS03
Jedná se specializovaný elektronický kompas CMPS03 určený přímo pro mobilní roboty.
Kompas využívá dvojici vzájemně kolmých senzorů KMZ10A založených na
magnetorezistivním jevu, tedy jejich elektrický odpor je závislý na intenzitě a směru
magnetického pole. Bohužel kompas neobsahuje třetí korekční senzor, který by korigoval
natočení kompasu v kolmém směru. Pro správnou funkci kompasu je potřeba zajistit, aby
se kompas nenakláněl. Přesnost měření je kolem 4o – 5o s rozlišením na desetiny stupně.
Spotřeba kompasu je 15mA při 5V. Popis vývodů kompasu je na obrázku č. 20.
Obr. č. 20: Zapojení pinů kompasu.
Kompas posílá údaj o azimutu dvěma způsoby:
1. Šířkově modulovaným signálem (PMW)
Šířka pulsu ve vysoké úrovni určuje azimut. Šířka se mění od 1 ms (pro azimut 0°) do
36.99 ms (pro azimut 359.9° ) – neboli 100us/° +1ms offset. Nízká úroveň signálu trvá
konstantních 65 ms. Celková perioda se může měnit od v rozmezí 66 ms až 102 ms.
Výstup PWM signálu je na pinu 4.
2. Přes sběrnici I2C
Kompas disponuje sběrnicí I2C, po které lze získat verzi firmwaru, azimut, provést
kalibraci kompasu. Sběrnice je vyvedena na pinech 2 – SDA(data), 3 – SCL(hodiny).
Kompas se vždy chová jako slave. Tyto dva vstupy nejsou opatřeny pull-up rezistory, a
proto je nutné je doplnit z vnějšku. U robota jsou implementovány na řídicí jednotce
v podobě rezistorové sítě R7 o hodnotě 10k. Kompas je navržen pro maximální rychlost
hodinového signálu 1 MHz. Při frekvenci vyšší jak 160 kHz je zapotřebí dodržovat některá
pravidla, jenž jsou popsána v datasheetu (datasheet je k dispozici na CD). Azimut kompas
odesílá buď jako 1 nebo 2 bajtovou hodnotu. Popis komunikace s kompasem bude popsán
v kapitole popisu programu pro mikrokontrolér.
Kompas je imunní proti síťovému rušení 50Hz nebo 60Hz v závislosti na nastavení pinu 7.
Jestliže je pin 7 připojen na nízkou úroveň, pak měření azimutu probíhá každých 40 ms
(50 Hz). V opačném případě se provádí měření každých 33,3 ms (60 Hz). Pin 7 je připojen
vnitřně přes rezistor na 5 V, tedy ho není třeba nijak ošetřovat, jestliže nevyžadujeme
odolnost proti síťové frekvenci 50 Hz.
26
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Kalibraci je třeba provést před nasazením robota v konkrétních podmínkách. Kalibraci lze
provést dvěma způsoby a to příkazem přes sběrnici I2C nebo manuálně. Při kalibraci je
zapotřebí, aby kompas ležel vodorovně. Můžeme si zvolit vlastní orientační bod, není
nutné ho kalibrovat podle světových stran. Kalibrace kompasu přes I2C(manuálně):
1. Kompas natočíme na sever a do registru 15 zapíšeme FFh (pin 6 krátce připojíme
na GND).
2. Kompas natočíme na východ a do registru 15 zapíšeme FFh (pin 6 krátce připojíme
na GND).
3. Kompas natočíme na jih a do registru 15 zapíšeme FFh (pin 6 krátce připojíme na
GND).
4. Kompas natočíme na západ a do registru 15 zapíšeme FFh (pin 6 krátce připojíme
na GND).
Kompas lze k řídicí jednotce připojit přímo do desky (konektor J3) nebo plochým kabelem.
Propojení těchto zařízení je znázorněno v tabulce č. 12.
Kompas
1
2
3
9
J3 na ŘJ
1
2
3
9
Význam
+5V
SCL
SDA
GND
Tab. č. 12: Propojení kompasu s řídicí jednotkou (ŘJ).
27
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.6 Komunikační jednotka
Komunikační jednotka slouží pro bezdrátový přenos sériové sběrnice RS232 a tedy
bezdrátovou komunikaci mezi robotem a počítačem. Komunikační jednotka se skládá ze
dvou částí. Hlavní částí je samotný bluetooth modul OEMSPA311i-04 od firmy
connectBlue. Pro Českou republiku jsou tyto moduly distribuovány firmou Spezial
Electronic. Druhá část slouží pro napěťovou úpravu signálů z bluetooth modulu, jehož
výstup je v 3V logice. Deska upraví tento signál pro kontabilitu s TTL obvody a
s úrovněmi sériového portu PC. Na straně počítače se nachází USB bluetooth adaptér.
3.6.1 OEMSPA311i-04
Základní parametry bluetooth modulu jsou v tabulce č. 13.
Parametr
Hodnota
Napájení
3–6V
Odběr (průměr)
17 mA
Výkon
7 dBm
Dosah
~ 150 m
Třída
Class 2
Anténa
Integrovaná SMD anténa
Tab. č. 13: Základní parametry OEMSPA311i-04.
Tyto moduly jsou primárně navrženy pro bezdrátový přenos RS232, RS422, RS485.
Nahráním firmwaru, jenž je zdarma na stránkách výrobce, lze modul nakonfigurovat jako
I/O modul, repeater atd. Možnosti těchto modulů výrobce neustále rozšiřuje. Pro nahrání
firmwaru, nebo připojení k PC se provádí přes RS232 (je třeba vložit převodník MAX232
mezi modul a PC). Nastavení modulu se provádí AT příkazy nebo pomocí softwaru od
výrobce. Stav modulu lze zobrazovat na LED, jenž se k němu připojí. Rozmístění
konektorů a význam pinů konektoru J6 jsou na obrázku č. 21 a v tabulce č. 14.
Obr. č. 21: Rozmístění konektorů.
28
Praktická zkouška z odborných předmětů - Autonomní robot RX1
J6
1
2
3
4
5
6
7
8
9
10
11
12-15
16
17
18
19-22
Funkce
GND
VCC
DTR
Red LED
Green LED/Switch1
Blue LED
Typ
vstup
výstup
výstup
vstup/výstup
výstup
Poznámka
Reset modulu, Aktivní v log „L“
GND
3 – 6V
Led svítí – navázáno spojení, Led bliká –
probíhá přenos dat
CTS
vstup
TXD
výstup
RTS
výstup
RXD
vstup
Nevyužity
DSR
vstup
SerialSelect-0
výstup
SerialSelect-1
výstup
Elektricky nepřipojeny
Tab. č. 14: Popis pinů konektoru J6.
3.6.2 Komunikační jednotka – napěťová úprava signálu
Aby bylo možné nakonfigurovat bluetooth modul připojením na RS232 v TTL úrovních, je
potřeba signál z modulu upravit. V datasheetu jsou uvedeny doporučená schéma zapojení
modulu. Na základě těchto schémat jsem sestavil schéma zapojení komunikační jednotky.
Schéma je uvedeno na obrázku č. 22. Všechny výstupy bluetooth modulu jsou přímo
připojeny na budič IC1. Před všemi vstupy bluetooth modulu, jenž jsou připojeny na budič
IC1, jsou umístěny napěťové děliče složené z rezistorů. Reset bluetooth modulu lze provést
tlačítkem S2 nebo přivedením log. „0“ na pin 1 konektoru J1. Tento vstup je s otevřeným
kolektorem. Defaultní nastavení modulu je 57600 bits/s, 8 datových bitů, bez parity, 1 stop
bit a hardware flow control. Tlačítkem S1 lze modul uvést do továrního nastavení. Tlačítko
S1 je nutné držet minimálně 500ms těsně po resetu modulu. Dále se na desce nachází 3
signalizační LED význam, jejíchž stavů je uveden v tabulce č. 15.
Označení ve
Stav
Význam
schématu
Zelená+Červená
Led2+Led4
Svítí
Modul se nachází v AT módu
Modrá+Červená
Led1+Led4
Svítí
Modul se pokouší o spojení
Modrá
Led1
Svítí
Aktivní spojení
Modrá
Led1
Bliká
Probíhá přenos dat
Červená
Led4
Bliká
Přetečení bufferu, chyba parity UARTu
Tab. č. 15: Význam signalizačních LED bluetooth modulu.
Aktivní LED
29
Praktická zkouška z odborných předmětů - Autonomní robot RX1
30
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 22: Schéma zapojení komunikační jednotky.
Všechny signály RS232, které umí bluetooth modul přenášet, jsou připojeny na konektor
J1. Dále se na konektoru J1 nachází reset, GND, pin Blue LED a pin Green LED. Všechny
signály na J1 jsou v TTL úrovni. Některé signály jsou dále připojeny k obvodu IC2
převodníku TTL/RS232, pro konfiguraci bluetooth modulu, nebo jako přijímače/vysílače
na straně počítače. Kondenzátory C5 - C8 využívá obvod IC2 jako nábojovou pumpu.
Konektor je použit J2 RJ45 pro co nejmenší rozměr desky. Popis výstupních konektorů
uvádí tabulka č. 16. Napájení je přivedeno na konektor SL1 a je signalizováno zelenou
LED. Modul je chráněn proti přepólování diodou D2.
J1
1
2
3
4
5
6
7
8
9
10
J2
Typ
Signál
vstup
Reset – aktivní v log. „0“
výstup
DTR
výstup
Blue LED
výstup
Green LED
7
vstup
CTS
6
výstup
TXD
8
výstup
RTS
5
vstup
RXD
vstup
DSR
4
GND
Tab. č. 16: Popis výstupních konektorů.
3.6.3 Bluetooth adaptér na straně PC
Tak jako robot má bluetooth modul, tak i na straně PC se musí nacházet bluetooth zařízení.
Pro tyto účely jsem pořídil USB bluetooth adaptér od firmy Edimax. V počítači se vytvoří
virtuální COM port, ke kterému softwarově přistupuji jako ke skutečnému COM portu PC.
Parametry bluetooth adaptéru jsou v tabulce č. 17
Parametr
Dosah
Třída
Připojení
Některé podporované
bluetooth profily
Podporované OS
Hodnota
~ 80 m
Class 2
USB 1.1, USB 2.0
SPP - Serial Port Profile, LAN Access,
PAN - Personal Area Network…
MS win. 98 SE, MS win. Me, MS win.
2000, MS win. xp, linux, Mac OS
Tab. č. 17: Parametry bluetooth adaptéru Edimax.
31
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.7 Napájecí jednotka
U robota je napájecí jednotka realizována pouze dvěma lineárními stabilizátory (pro
napájení elektroniky a napájení motorů). Je použit externí zdroj napětí, propojený
s robotem dvojvodičovém vedením. U tohoto robota nemohla být použita baterka z důvodu
nedostatku finančních možností a velké hmotnosti baterky dostatečné kapacity, kterou by
měl robot problém uvést. Také by docházelo by k velkému opotřebování mechanických
dílů. Schéma zapojení je obrázku č. 23.
Obr. č. 23: Schéma zapojení napájecí jednotky.
Napájecí kabel od externího zdroje napětí se připojí na konektor J1, kladným pólem na pin
2 a zem na pin 1. Na vstupu je elektrolytický kondenzátor C3, jenž vyrovnává výkyvy
napětí způsobené skokovými změnami odběru proudu (např. zapnutím/vypnutím motorů).
O napájení veškeré elektroniky, kromě budiče motorů, se stará lineární stabilizátor IC1.
Stabilizované napětí má hodnotu 5V signalizované pomocí LED1. Dále jsou zde 2 filtrační
kondenzátory C1, C2 o hodnotě 100nF.
Abych si mohl nastavit vhodné napájení pro motory (při prvotních testech jsem potřeboval
nižší napětí než u konečné verze) použil jsem lineární regulovatelný stabilizátor IC2.
Obvod jsem zapojil podle doporučení od výrobce. Kapacitu C4 není vhodné zvyšovat,
protože by mohla nepříznivě ovlivnit vlastnosti regulátoru. Dolní člen z odporového děliče
je realizován kvalitnějším trimrem. Čím je hodnota R2 větší a hodnota R1 menší tím vyšší
napětí dostaneme na výstupu regulátoru. Může se stát, že dojde ke zkratu u vstupního
vývodu stabilizátoru a vznikne okamžitý zkrat. Pak se náboj kondenzátoru C5 na výstupu
vybije přes vnitřní obvody stabilizátoru. Vstupní elektroda je v tom okamžiku na nižším
potenciálu než výstupní, protože C5 je dosud nabitý, pak proud může zničit část
integrovaného obvodu. Zničení obvodu zabrání dioda D1. Dioda D1 je v okamžiku zkratu
polována v propustném směru a téměř celý náboj kondenzátoru C4 propustí zpět na vstup,
kde je nyní nulový potenciál. Úkolem C4 je blokovat řídící vstup regulátoru, aby se tudy
nedostávaly rušivé signály, což by se mohlo projevit zvlněním výstupního napětí. Dioda
D2 odvede náboj z C4 v případě zkratu. Činnost stabilizátoru je signalizována LED3, jenž
signalizuje napětí od cca 1,5V. Připojení modulů k napájecí jednotce ukazuje tabulka č. 18.
32
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Konektor na
napájecí jednotce
J2.1
J2.2
J2.1
J2.2
J3.1
J3.2
J7.1
J7.2
Konektor napájeného
Poznámka
modulu
Řídicí jednotka
SL3.2
+5V
SL3.1
GND
Tvarovač, dekodér kvadraturního signálu
+
+5V
GND
Komunikační jednotka
SL1.1
+5V
SL2.2
GND
Výkonový budič stejnosměrných motorů
+
2-9V
GND
Tab. č. 18: Propojení modulů s napájecí jednotkou.
33
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.8. Seznam součástek
3.8.1 Tvarovač, dekodér kvadraturního signálu
Součástka
R4
R14, R20, R22,
R30, R13, R21
R1 – R3, R6, R10,
R15 – R19, R23 –
R26, R29
R5, R7, R8, R12
R9, R11, R27, R28
C1, C2, C5 – C8
C3, C4
C10
LED1 – LED5
LED6
D1 – D6
T1 – T13
IC1
IC2
SL1, SL2, SL4,
SL4
SL3
Hodnota
Kusů
Poznámka
Rezistory – velikost R0207
180R
1
Metalizovaný
330R
6
Metalizovaný
1k
15
Metalizovaný
2k2
10k
4
4
Kondenzátory
4n7
6
100n
2
100µF/16V
1
Diody
L934YD
5
L115WEGW
1
4V3
6
Tranzistory
BC337
13
Integrované obvody
74lS14
1
74LS74
1
Konektory
Metalizovaný
Metalizovaný
Keramický
Keramický
Elektrolytický
Led 3 mm
2 – barevná led, 3 mm
Zenerova dioda
NPN tranzistor
DIL14
DIL14
PSH02-03W
4
Konektor se zámkem
PSH02-04W
1
Konektor se zámkem
Hodnota
330R
H22A1
Kusů
1
1
Optozávora
Součástka
R1
IR1
34
Poznámka
Metalizovaný, velikost R0207
Optozávora
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.8.2 Řídicí jednotka
Řídící jednotka
Součástka
R20 – R22
R4, R8, R15
R17, R18
R2
R5
R3, R6, R10 – R13
R19
R23 – R26
R1, R14
R7
R19
C1, C2
C10, C11
C13
C15
C8, C9, C14,
C16 – C22
C4 – C7
C3
LED1 – LED4
D1
D2
IC1
IC2
IC3
IC4
IC5
IC6
IC7
IC8
IC9
J1 – J9
J10
SL1
SL2
Q2 – Q4
Q1
Q6
S1
Hodnota
Kusů
Poznámka
Rezistory – velikost R0207
0R0
3
Metalizovaný
330R
3
Metalizovaný
1k
2
Metalizovaný
1k5
1
Metalizovaný
4k7
1
Metalizovaný
10k
6
Metalizovaný
15k
1
Metalizovaný
47k
4
Metalizovaný
1M
2
Metalizovaný
LC9001 – 10k
Odporová síť, 8 rezistorů
PT6V
1
Trimr, lakosazový
Kondenzátory
10p
2
Keramický
33p
2
Keramický
3n3
1
Keramický
10n
1
Keramický
100n
10
Keramický
1µF/16V
3u3/16
4
1
Elektrolytický
Elektrolytický
Diody
Led 0,3 mm
4
4V7
1
1N5817
1
Integrované obvody
AT89S52
1
74HCT00
1
MAX232
1
4077
1
4006
1
4093
1
74LS138
1
74LS151
1
NE558D
1
Konektory
SIG40
2
CAN9 Z 90
1
PSH02-03W
1
PSH02-02W
1
Ostatní
BC549
4
XTAL 1.843 HC
1
XTAL 24.000 HC
1
PHAP3362A
1
35
Zenerova dioda
Schodky dioda
DIL40
DIL14
DIL16
DIL14
DIL14
DIL14
DIL16
DIL16
SMD SO14
Lámací konektorové kolíky
Konektor cannon do dps
Konektor se zámkem
Konektor se zámkem
NPN tranzistor
Krystal 1,843 MHz
Krystal 24 MHz
Tlačítko
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Výstupní budič sběrnice
Součástka
R1 – R4
Q1 – Q2
J1
J2, J3
Hodnota
1k
BC817
SIG40
SIG40W
Kusů
4
4
1
1
Poznámka
SMD R1206
SMD SOT23, NPN
Lámací konektorové kolíky
Lámací konektorové kolíky
Hodnota
40R
100R
1k
10k
4,7µF/16
LD274
BC327
SHF5110-36
REF5-M
Kusů
1
1
1
1
1
2
1
1
2
Poznámka
Metalizovaný R0207
SMD R1206
SMD R1206
SMD R1206
Elektrolytický
Vysílací infradioda
PNP
Infrapřijímač
Reflektor pro led
Modul optického senzoru
Součástka
R1
R3
R2
R4
C1
D1, D2
Q1
IO1
-
3.8.3 Výkonový budič motorů
Výkonový budič motorů
Součástka
R2, R4, R6, R8
R3, R5, R7, R9
C1, C2, C3, C5
C4
IC1
IC2
OK1
T1
Hodnota
Kusů
Poznámka
Rezistory – velikost R0207
330R
4
Metalizovaný
1k
4
Metalizovaný
Kondenzátory
100n
4
Keramický
2,2 µF/16V
1
Elektrolytický
Integrované obvody
L293D
1
DIL16
74LS14
1
DIL14
PC847
1
4x optočlen
LE50cz
1
Nízkoúbytkový stabilizátor
Odrušení motorů
Součástka
C1, C2
C3, C4
Hodnota
47nF
100nF
L1
RSD42V3020
L2
RSD42V2510
Kusů
2
2
1
1
36
Poznámka
Keramický
Keramický
Odrušovací tlumivka,
zapouzdřená
Odrušovací tlumivka,
zapouzdřená
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.8.4 Komunikační jednotka
Součástka
R15 – R17
R18
R1
R4, R13, R19
R3
R7, R9, R10
R8, R11, R12
R14
R5, R6
C1, C2, C4, C9
C3, C5 – C8
D1
D2
LED2, LED3
LED1
LED4
IC1
IC2
U1
T1
S1
SL1
J1
J2
Hodnota
Kusů
Rezistory
0R0
3
0R0
1
390R
1
680R
3
1k
1
1k8
3
2k2
3
10k
1
470k
1
Kondenzátory
100n
4
1µF/16V
5
Diody
1N5711
1
1N5817
1
L934GD
2
LED3BLU 3000
1
LED3R
1
Integrované obvody
74HCT573
1
MAX232
1
Ostatní
OEMSPA311i-04
1
BC846
1
PHAP3362A
1
PSH02-02W
1
SIG40
1
TZB463 Z P 8P8C
1
37
Poznámka
Metalizovaný, velikost R0204
SMD R1206
SMD R1206
SMD R1206
Metalizovaný, velikost R0204
SMD R1206
SMD R1206
SMD R1206
SMD R1206
SMD C1206, keramický
Elektrolytický
Rychlá usměrňovací dioda
Schottky dioda
Zelená, 3 mm
Modrá, 3 mm
Červená, 3mm
DIL20
SMD
Bluetooth modul, connectBlue
NPN, SOT23
Tlačítko
Konektor se zámkem
Lámací konektorové kolíky
RJ45 do DPS
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.8.5 Napájecí jednotka
Součástka
R3
R1
R2
R4
C1, C2
C4, C5
C3
D1, D2
LED1, LED2
IC1
IC2
J1
Hodnota
Kusů
Poznámka
Rezistory – velikost R0207
240R
1
Metalizovaný
680R
1
Metalizovaný
1k5
1
Metalizovaný
TP095 /N /N – 15k
1
Trimr, cermetový
Kondenzátory
100n
2
Keramický
10 µF/16V
1
Elektrolytický
2M2 µF/16V
1
Elektrolytický
Diody
1N4004
2
Usměrňovací dioda
LED3R
2
Led červená, 3 mm
Integrované obvody
7805
1
Stabilizátor 5V
LM317
1
Nastavitelný stabilizátor
Ostatní
SIG40
1
Lámací konektorové kolíky
3.8.6 Ostatní
Součástka
S1, S2
Hodnota
CMPS03
SM05S04A
Kusů
1
2
38
Poznámka
Kompas
Tlačítka nárazníku
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4. Programová část robota
4.1 Program mikrokontrolérů AT89S52
4.1.1 Základní informace, inicializační část programu
Program pro mikrokontrolér byl psán v editoru PSPad s kompilátorem cass51. Tyto
nástroje a veškeré programy jsou obsaženy na přiloženém CD. Logické celky programu
jsou rozděleny do samostatných souborů. Kořenovým souborem je RX1.asm. V tomto
souboru jsou uvedeny veškeré definice symbolů, pojmenování bitů.
ne
START
ORG 0
START
ORG 0Bh
START
ORG 03h
START
ORG 23h
Inicializace
programových
proměnných, přerušení
Časovač
Interval: 10ms
Řízení spojky
robota
Kompas
Návrat z přerušení
Návrat z přerušení
Tlačítko
nárazníku
aktivováno
?
Řízení sériové
linky
Vynulování RI
ano
Kontrola čidel a
inicializace
spojky
Inicializace
Hlavní programová smyčka
Čtení stavu
detektorů
překážek
Automatic
ký režim?
Návrat z přerušení
ne
ano
Automat
Nastavení spojky
Konec
Obr. č. 24: Blokové schéma inicializační části, hlavní smyčky, přerušení programu.
39
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Za definicemi symbolů se nachází obsluhy přerušení. Jsou využity tyto přerušení:
Vnější přerušení EX0 – přerušení od inkrementálního snímače.
Přerušení od časovače 0 ET0 – časovač s intervalem 10 ms.
Přerušení od sériové linky ES0 – využívá se přerušené při přijetí dat .
Za obsluhou přerušení se nachází inicializační část. V této části programu jsou
inicializovány proměnné programu, nastavení přerušení, časovačů, sériové linky. Aby bylo
možné s robotem manipulovat, je za inicializační částí umístěna smyčka, čekající na
stisknutí pravého tlačítka nárazníku. Po stisknutí tlačítka dojde ke kontrole čidel spojky a
spojka se nastaví doprostřed. Po nastavení spojky se program nachází v hlavní programové
smyčce, ve kterém se čte stav senzorů překážek. V dalším kroku se rozhoduje mezi
manuálním a automatickým režimem. V automatickém režimu se zavolá podprogram
automatiky, ve kterém se vyhodnotí stav senzorů překážek a případným překážkám se
robot vyhne. V manuálním režimu dojde pouze k nastavení spojky do správné polohy,
pokud je požadováno (zbytek řízení je realizováno přímo v přerušení sériového kanálu).
Na konci souboru se načítají ostatní části programu. Blokové schéma inicializační části je
na obrázku č. 24.
4.1.2 Systémový časovač, 16b instrukce
Mnoho podprogramů potřebuje ke své činnosti čekací smyčky v řádu desítek až stovek
milisekund. K tomuto účelu běží časovač 0 s intervalem 10 ms. Tento interval byl zvolen
jako kompromis mezi příliš častém přerušením od tohoto časovačem a mezi velkým
intervalem, který by naopak byl nevhodný pro některé podprogramy. Blokové schéma je
na obrázku č. 25. V těle časovače se inkrementuje proměnná timer1, jenž využívají některé
podprogramy. Dále se zde nachází další čtyři funkce, jež se aktivují příslušným bitem.
1) Vypršení časového limitu od RS232 – Při příjmu prvního bajtu packetu se začne
počítat čas, jestliže se nepřijme celý packet do dané doby (1s), pak se packet zahodí
a nastaví se příslušný bit označující chybu příjmu.
2) Pulsování s motorem M1 – Tato funkce se vykonává při nastavování spojky. Zapíná
motor vždy na 400 ms dopředu, a pak dozadu. Tímto dojde k bezproblémové
funkci spojky a mechanické části do sebe snadněji zapadnou.
3) Brzda motoru M2 – Brzda slouží pro zastavení motoru M2 na požadované pozici.
Díky brzdě je dosažena mnohem větší přesnost nastavení spojky. Brzda funguje
tak, že otočí směr otáčení motoru na dobu 170 ms.
4) Vypršení doby měření optickým senzorem – Tato funkce se používá při detekci
překážky optickým senzorem. V příslušném podprogramu se spustí měření, čítají se
pulsy z optického senzoru do doby, než vyprší doba měření, jež je 60 ms. Změnou
dobou měření lze změnit citlivost senzoru.
Ne vždy mi stačily 8 bitové operace, proto jsem si naprogramoval 16 bitové instrukce
sčítání, odečítání, inkrementace, dekrementace. Tyto instrukce používám například u
výpočtu CRC. Registry parametrů a návratové hodnoty příslušných instrukcí jsou uvedeny
v komentářích u každé z nich.
40
Praktická zkouška z odborných předmětů - Autonomní robot RX1
START
timer0
Záloha registrů
Vypršení
časového
limitu
RS232?
ano
Nastavení příznaku
vypršení limitu,
zahození přijatých dat
ano
Pulsování s motorem
M1
ano
Vypnutí motoru M2
ano
Ukončení měření,
nastavení pro nové
měření
ne
Pulsovat
s motorem
M1?
ne
Brzda
motoru
M2?
ne
Vypršení
doby
měření?
ne
Obnovení registrů
Ret
Obr. č. 25: Vývojový diagram těla systémového časovače (časovač 0).
41
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.1.2 Řízení spojky
Spojka je nejsložitější a jedna z nejdůležitějších částí robota. Pro snadné ovládání spojky
jsou k dispozici tyto bity: RClu (spojka doprava), LClu (spojka doleva), FClu (spojka
doprostřed). Po nastavení příslušného bitu se musí zavolat podprogram setClutch. Tento
podprogram, nejdříve zkontroluje, jestli je spojka inicializovaná. V dalším kroku se přejde
k části podprogramu podle požadavku na nastavení spojky a zkontroluje se, zda žádaná
poloha se neshoduje s aktuální, jestliže se neshodují, zapne se pulsování hlavního pohonu a
spustí motor spojky. Od teď se veškeré řízení spojky odehrává v přerušení. V přerušení se
testuje, zda se má spojka inicializovat nebo nastavit do požadované polohy. V inicializační
části se spojka nastaví doprostřed. Při normálním režimu se testuje, jestli spojka dosáhla
požadované polohy. Při dosažení žádané polohy se vypne pulsování hlavním motorem a
spustí se brzda. Jakmile je motor M2 zabrzděn, spojka je nastavena. Vývojový diagram je
na obrázku č. 26.
START
clutch
Nastavit
spojku?
ne
ano
Záloha registrů
Nastaví spojku
do požadované
polohy
ne
Opravit
polohu
spojky?
ano
Opraví polohu
spojky
Obnovení registrů
Ret
Obr. č. 26: Vývojový diagram přerušení od spojky.
42
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.1.3 Automatický režim robota
Vývojový diagram podprogramu automat je na obrázku č. 27.
START
automat
ne
Detekován
a překážka
?
ano
Zpátečka robota 1s
Překážka
vpravo?
ne
Nastavení parametrů
spojky doprava
ano
Nastavení parametrů
spojky doleva
Nastavit spojku
ne
Spojka
nastavena?
ano
Vygeneruje úhel
otočení
ne
Robot
otočen?
ano
P1
P2
P3
43
Praktická zkouška z odborných předmětů - Autonomní robot RX1
P2
P1
P3
Nastavení parametrů
spojky doprostřed
Nastavit spojku
ne
Spojka
nastavena?
ano
Test detekce
překážek
Detekován
a překážka
?
ano
ne
Ret
Obr. č. 27: Vývojový diagram automatického režimu robota.
V tomto režimu se robot nachází automaticky po resetu systému. Po stisknutí pravého
tlačítka nárazníku dojde k inicializaci spojky. Po inicializaci se program nachází v hlavní
programové smyčce, kde se otestují překážky před robotem. Pak se zavolá podprogram
automat. Nejdříve se zkontroluje, jestli byla detekována nějaká překážka, pokud ne
podprogram se ukončí. Jestliže byla detekována překážka, pak robot jede zpět přibližně 1s.
Poté se vyhodnotí, kde byla překážka detekována (vpravo nebo vlevo). Jestliže se překážka
nachází vpravo, pak se spojka nastaví doleva a robot se vyhne překážce doleva. To samé
platí pro překážku vlevo, jen s rozdílem, že se bude robot otáčet na druhou stranu. Potom
se čeká, než se spojka nastaví do žádané polohy. Po nastavení spojky se vygeneruje
náhodný čas, po který se robot otáčí. Následně se otestují překážky před robotem. Pokud se
nedetekuje žádná překážka, pak se spojka nastaví doprostřed, v opačném případě se celý
podprogram opakuje znova.
44
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.1.4 Komunikace s kompasem
Komunikace s kompasem probíhá po sběrnici I2C. I2C sběrnice je dvojvodičové propojení
dvou zařízení mezi jedním a více mikrokontrolérů - master s periferními zařízeními –
slave. Jedná se o synchronní half duplexní přenos. Všechny tyto zařízení jsou připojeny na
jednu sběrnici a výběr zařízení, se kterým se má komunikovat, je realizován jedinečnou
adresou, jenž je poslána jako 1B informace na sběrnici. Ostatní zařízení poslouchají, pokud
se jejich adresa shoduje s tou na sběrnici, pak je mezi těmito zařízeními naváže spojení.
Komunikace probíhá pouze mezi nimi.
Protokol I2C jsem musel naprogramovat. Pro příjem a pro odesílání je určen vždy 2B
buffer. Kompas se chová jako slave a mikrokontrolér je master. Na obrázku č. 28 je
protokol komunikace s kompasem po I2C.
Obr. č. 28: Protokol komunikace s kompasem po I2C.
Nejdříve je potřeba nastavit start bit, jimž se zahájí komunikace s kompasem. Dále po
každém správně přijatém bajtu zprávy kompas ho potvrdí kvintovacím bitem ACK.
V prvním bajtu je adresa kompasu s požadavkem na zápis. V druhém bajtu se nachází číslo
registru, se kterým budeme chtít pracovat. V programu se používá registr 1, v němž se
nachází 1B informace o azimutu. Popis dalších registrů a jejich význam je v datasheetu
kompasu přiloženém na CD. V dalším kroku je potřeba opětovně poslat start bit. Ve třetím
bajtu je znova adresa kompasu, ale tentokrát s požadavkem na čtení. Čtvrtý bajt odesílá
kompas a je přijat mikrokontrolérem. Údaj o azimutu je uložen do paměti. Vývojový
diagram komunikace s kompasem je na obrázku č. 29.
45
Praktická zkouška z odborných předmětů - Autonomní robot RX1
START
kompas
I2C – start bit
Příprava dat, nastavení
odesílací procedury
Odeslání 2B po
I2C
I2C – start bit
Příprava dat, nastavení
odesílací procedury
Odeslání 1B po
I2C
Nastavení přijímací
procedury
Příjem 1B po I2C
I2C – stop bit
Ret
Obr. č. 29: Vývojový diagram komunikace kompasem.
46
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.1.5 Komunikace mikrokontroléru s počítačem
Komunikace s počítačem probíhá v packetech po sériové lince RS232. Parametry sériové
linky jsou uvedeny v tabulce č. 18. Komunikace je typu dotaz, odpověď tzn. Počítač odešle
packet mikrokontroléru a mikrokontrolér musí okamžitě odpovědět packetem poslaným
počítači. Počítač odešle 9 – 10 packetů za sekundu. Struktura packetů je na obrázkách č. 30
a č. 31.
9600 b/s
8B
Bez parity
1
Tab. č. 18: Parametry sériové linky.
Přenosová rychlost
Velikost dat
Parita
Stop bit
Index
Řízení
robota
Nastav.
senzorů
Nastav.
senzorů
Rovně
Dozadu
Doleva
Doprava
2B
rezervovány
CRC
Aut /man
-
-
7. b
0. b
Obr. č. 30: Struktura přijatého packetu.
Index
Kompas
1. B
Kompas
2. B
Poloha
spojky
Chyby
1. B
Poloha
spojky
Chyby
2. B
Senzory
Stav
robota
-
-
-
7. b
2B
rezervovány
Dopředu
/dozadu
CRC
Robot v
pohybu
0. b
Obr. č. 31: Struktura odesílaného packetu.
Počítač – master začíná celou komunikaci. První bajt packetu je index, jenž je na začátku
komunikace roven nule. Mikrokontrolér je povinen index zkopírovat do svého packetu,
podle nějž počítač pozná, že se jedná o odpověď na jeho odeslaný packet. Komunikace by
sice mohla probíhat bez vážnějších důsledků bez tohoto indexu (u robota je využit jako
hlavička packetu), ale s ohledem na budoucnost, by mohl mít index své opodstatnění.
47
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Například při komunikaci s více zařízeními, nebo když je obsah odesílaného packetu
závislý na přijatém v čase např. Počítač odešle packet s indexem 0, ale od packet o
mikrokontroléru se někde ztratí. Pak počítač odešle znovu packet se stejným indexem,
jelikož mikrokontrolér zjistí, že počítač odeslal packet zase s indexem 0, odešle počítači
znovu původní packet. V dalším bajtu packetu se nachází řízení robota – směr, nastavení
spojky a bit určující manuální/automatický režim. V dalších dvou bajtech jsou parametry
nastavení optických senzorů překážek. Časem se může stát, že bude potřeba odeslat další
údaje, k tomu slouží dva rezervovány bajty.
Při přenosu se může stát, že dojde k poškození dat, aby bylo možné tuto situaci detekovat
je poslední bajt zprávy CRC (Cyclic redundancy check – kontrolní redundantní součet). Je
mnoho možností jak jej spočítat od čehož se potom odvíjí délka CRC a možnosti
automatických oprav chyb v packetu.
Kontrolní součet se vypočítá následovně:
1. Sečtou se všechny bajty zprávy o délce m (bez CRC) do dvoubajtové proměnné
součet, jejíž horní bajt označím HB a dolní bajt DB:
2. Vypočítá se samotné CRC:
3. CRC se umístí na konec packetu, jenž se odešle
Odesílaný packet z mikrokontroléru má na začátku index, jenž si zkopíroval z přijatého
packetu. Za ním následují data. V prvních dvou bajtech se odesílá azimut, v dalších dvou
chyby, které nastaly od posledního odeslaného packetu. Následuje 1B se stavem senzorů
překážek (od optických senzorů a od nárazníku). Další 1B obsahuje stav spojky, aktuální
směr robota. Pro ten samí důvod jako u přijatého bajtu jsou i zde 2 rezervovány bajty. Na
konci packetu se nachází CRC.
Komunikace na straně mikrokontroléru probíhá následovně. Po přijetí prvního bajtu
packetu se spustí časovač (Timeout), který určuje maximální dobu, do které se musí celý
packet přijmout. Jestliže se celý packet nepřijme, je zahozen a nastaví se příslušný příznak
chyby. Packet je postupně ukládán do přijímacího bufferu. Po přijetí celého packetu se
vypočítá CRC a vyhodnotí s přijatým. Pokud se neshodují, pak se nastaví příznak chyby
poškození dat při přenosu a čeká se na nový packet. Jestliže je packet v pořádku, zastaví se
časovač (timeout), separují se z data z packetu a uloží do paměti, případně nastaví pohon
robota v manuálním režimu. V dalším bodě se naplní odesílací buffer, vypočítá CRC a
odešle packet do počítače. Vývojový diagram je na obrázku č. 32.
48
Praktická zkouška z odborných předmětů - Autonomní robot RX1
START
serial
Záloha registrů
Uložení přijatého bajtu
ne
Celý
packet
přijat?
ano
Výpočet CRC
CRC se
shoduje s
přijatým?
ne
Nastavení příznaku
chyby sériové linky
ano
Separuje data z
packetu
Výpočet CRC
Naplnění odesílacího
bufferu
Odeslání packetu
Obnovení registrů
Ret
Obr. č. 32: Vývojový diagram příjmu, odeslání packetu.
49
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.2 Komunikátor – program pro počítač
Komunikátor slouží pro komunikaci mezi robotem a počítačem, zobrazení stavů a
nastavení parametrů robota. Pomocí komunikátoru lze robota přepnout do manuálního
režimu, ve kterém jej může operátor ovládat. Program je napsán v programovém prostředí
DELPHI 7. Rozhraní komunikátoru je rozděleno na tři základní části:
1) Záložka Řízení robota – Na této záložce je veškeré ovládání robota, zobrazení stavů
robota a stavu komunikace. Zobrazení hodnot z kompasu je provedeno dvěma
způsoby: Analogově rafičkou a digitálně zobrazením přímo hodnoty. Nula stupňů
označuje referenční bod. Nemusí znamenat sever, záleží, v jaké poloze se kompas
nakalibruje (Nula stupňů může třeba označovat jih, či jakýkoliv jiný směr). Popis
záložky je na obrázku č. 33.
2) Záložka Nastavení – Zde se nachází nastavení sériové linky a nastavení parametrů
robota. Popis je na obrázku č. 34
3) Záložka Log – Nachází se zde výpis přijatých packetů z komunikace s robotem a
popis chyb při přenosu.
Veškeré nastavení programu se ukládá do registru systému Windows. Pro komunikaci po
sériové lince je využita komponenta ComPort verze 3.0. Komunikaci se zahájí stiskem
tlačítka „Navázat spojení“. Tím je odeslán 1. packet s indexem 0 (struktura tohoto packetu
byla popsána výše). Do dvou sekund musí přijít odpověď z mikrokontroléru, jinak se to
vyhodnotí jako selhání komunikace s robotem. V intervalu dvou sekund se komunikátor
snaží obnovit komunikaci. V případě přijetí několika špatných packetů je problém
signalizován jako nízká kvalita přenosu dat.
Obr. č. 33: Popis obrazovky Řízení robota.
50
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 34: Popis obrazovky Nastavení.
51
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Závěr
Cílem dlouhodobé práce bylo postavit a naprogramovat robota se dvěma režimy. A to
režim automatický a manuální. V automatickém módu se robot sám vyhýbá překážkám,
které se octnou před ním. V manuálním režimu, tentokrát je bezpodmínečně nutný počítač,
lze ovládat robota pomocí příslušných tlačítek. Dále se počítač využívá pro vizualizace,
řízení a nastavování významných konstant.
Co tedy robot dokáže? Po připojení napájení a stisknutí pravého tlačítka nárazníku se robot
rozjede. Pokud narazí na překážku, otočí se o náhodný úhel a jede dál. Hlavním senzorem
pro detekci překážek je použit optický senzor na stejném principu jako ovladače u TV, jen
s tím rozdílem, že se paprsek světla musí odrazit zpět k robotovi. Pro případ, že by optický
senzor nedetekoval z nějakého důvodu překážku, má robot k dispozici nárazník
s mechanickými senzory. Optický senzor dokázal detekovat umělohmotnou PET láhev,
z blízka i sklo, předměty malých rozměrů (tyč s průměrem 1 cm), větší překážky pod
velkým úhlem. Za ideálních podmínek detekoval zrcadlo ze vzdálenosti 40 cm. Při
provozních podmínkách detekuje papírovou krabici ze vzdálenosti 12 cm – 20 cm. Dlouho
jsem hledal vhodné řešení komunikace, až jsem se rozhodl pro Bluetooth modul od firmy
connectBlue pro jeho velmi snadné ovládání, jak ze strany počítače, tak ze strany
mikrokontroléru. Pomocí tohoto modulu jsem realizoval bezdrátovou verzi sériového
portu. Po spuštění programu v počítači a navázaní spojení s robotem, lze pohodlně sledovat
všechny důležité stavy robota, čidel, azimut kompasu a nastavovat parametry robota.
Operátor může robota přepnout do manuálního režimu a v něm ho řídit.
I když jsem se sebevíc snažil, vyskytlo se několik problémů a nedostatků u robota, což je
normální jev u projektu větších rozměrů. Nejvýznamnější je, že motory bez připojené řídicí
jednotky se rozběhnou a mohou způsobit poškození robota. Z tohoto důvodu je potřeba
předělat budič stejnosměrných motorů. Velký problém byl s rušením elektroniky od
motorů. Rušení se podařilo odstranit až po menší mechanické úpravě, doplnění
odrušovacích prvků, softwarové filtraci některých vstupů.
V další verzi řídicí jednotky bych ji chtěl doplnit o další rozšiřující porty, vyvedení
konektoru pro ISP programování v TTL úrovních, který by se dal připojit ke komunikační
jednotce a programovat robota bezdrátově. Pro vizualizaci stavu robota je nutný počítač,
proto bych chtěl doplnit displej přímo na robota. Někdy se může stát, že se převodovka
zadře a tím přes motor teče zkratový proud, který způsobí nadměrné přehřívání H-můstku.
Aby nedošlo k nevratnému poškození, umístím teplotní čidla na kritické čipy. Dále co
bych chtěl zlepšit v dalších verzích je velikost desek. Na tomto robotovi jsem získal mnoho
cenných zkušeností s SMD součástkami, a proto již budu hlavně na finální výrobky
využívat dvoustranných desek s SMD součástkami. Neposledně bych chtěl vytvořit novou
verzi spojky, jenž by měla mnohem menší dobu odezvy a byla by spolehlivější a
mechanicky robustnější.
Na tomto robotovi jsem získal mnoho cenných zkušeností, které využiji v budoucnu.
Naučil jsem se jak moc je důležité kvalitně navržené schéma a deska. Získal jsem mnoho
zkušeností z různých oblastí elektrotechniky, práce s datasheety, mechaniky, programování
mikrokontroléru a neposledně komunikace po RS232 a I2C. Tyto zkušenosti zúročím na
dalším robotovi, na kterém mohu využít navržené obvody, ale již s vychytanými
nedostatky vyskytnutým na robotovy RX1.
52
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Seznam použité literatury a studijních materiálů
1) Petr Novák: Mobilní roboty, BEN, ISBN 80-7300-141-1
2) David Matoušek: Práce s mikrokontroléry ATMEL AT89C2051, BEN, ISBN 807300-094-6
3) Václav Malina: Poznáváme elektroniku I., Kopp, ISBN 80-7232-039-4
4) Václav Malina: Poznáváme elektroniku II., Kopp, ISBN 80-7232-172-2
5) Burkhard Kainka: Elektronika s podporou PC Visual Basic v praxi, HEL, ISBN 8086167-22-4
6) http://www.programujte.com
7) http://rs232.hw.cz/
8) http://www.elektroworld.info/index.php
9) http://astrotechnika.wz.cz/WWW/mysoid.htm
10) http://www.dhservis.cz/iic.htm
11) http://www.spezial.cz/apps/remote_control_bluetooth.html
12) http://sourceforge.net/projects/comport
13) Datasheety jednotlivých obvodů, jež jsou umístěny na CD
53
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Seznam příloh obsažených na CD
1)
2)
3)
4)
5)
6)
7)
8)
Schémata, obrazce plošných spojů, osazovací plánky elektroniky robota
Dokumentace a manuál robota
Prezentace
Datasheety některých integrovaných obvodů
Program pro mikrokontrolér
Program pro počítač
PSPad + Kompilátor pro mikrokontrolér
Fotky a video robota
54
Download

Dokumentace k robotovy RX1