0,0 → 1,515 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> IRFEE01A </title> |
<meta name="keywords" content="stavebnice MLAB univerzální moduly infračervený detektor infrared tykadlo"> |
<meta name="description" content="Projekt MLAB, Infračervný detektor překážek pro robota"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
</head> |
|
<body lang="cs"> |
|
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== HLAVICKA ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../../../../"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
|
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../../../../"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
|
<!-- ============== TEXT ============== --> |
<div class="Text"> |
<p class="Title"> |
Infračervené tykadlo pro robota |
</p> |
<p class=Autor> |
Milan Horkel |
</p> |
<p class="Subtitle"> |
Čidlo využívá modulované infračervené záření pro bezdotykovou detekci |
předmětů. Je určeno zejména pro menší pohyblivé roboty jako náhrada |
mechanických tykadel. Jádrem čidla je procesor řady ATtiny a přijímač |
Ir pro dálkové ovládání. Modulace a průměrování signálu zajišťuje |
zvýšenou odolnost proti rušení. |
</p> |
<p class="Subtitle"> |
<img width="327" height="105" src="IRFEE01A_files/image001.jpg" |
alt="Pohled na čidlo zhora"> |
</p> |
<p class="Subtitle"> |
<img width="328" height="162" src="IRFEE01A_files/image002.jpg" |
alt="Pohled na čidlo ze strany"> |
</p> |
<p> |
<a href="../IRFEE01A.cs.pdf"><img class="NoBorder" |
src="../../../../../Web/PIC/FileIco_PDF.ico" |
alt="Acrobat"> PDF verze</a> |
</p> |
|
<h1>Technické parametry </h1> |
|
<table> |
<tr> |
<th> Parametr </th> |
<th> Hodnota </th> |
<th> Poznámka </th> |
</tr> |
<tr> |
<td> Napájení </td> |
<td> (2.7V ..) 3.6V .. 5V (.. 5.5V) </td> |
<td> Zkontrolujte požadavky U1 a U2 </td> |
</tr> |
<tr> |
<td> Spotřeba </td> |
<td> 10mA / 15mA </td> |
<td> Při 5V v klidu a při detekci </td> |
</tr> |
<tr> |
<td> Nosný kmitočet </td> |
<td> 38kHz </td> |
<td> Obvyklé hodnoty: 30, 33, 36, 38, 40, 56kHz </td> |
</tr> |
<tr> |
<td> Dosah </td> |
<td> Cca 1m </td> |
<td> Bez stínítka proti listu papíru A4 </td> |
</tr> |
<tr> |
<td> Rychlost odezvy </td> |
<td> 20ms / 15ms </td> |
<td> Aktivace a deaktivace </td> |
</tr> |
<tr> |
<td> Rozměry </td> |
<td> 35 x 15 x 15mm </td> |
<td> Bez stínítka </td> |
</tr> |
</table> |
|
<h1> Popis konstrukce </h1> |
|
<h2> Úvodem </h2> |
|
<p> |
Aby mohl robot detekovat překážku aniž do ní narazí, potřebuje vhodné |
čidlo. Tato konstrukce popisuje čidlo, které využívá odrazu |
infračerveného záření od překážky. |
</p> |
|
<h2> Zapojení modulu </h2> |
|
<p> |
Srdcem čidla je obvod U1, přijímač infračerveného signálu a procesor |
ATtiny, který zajišťuje inteligenci čidla. |
</p> |
|
<p> |
<img width="588" height="396" src="IRFEE01A_files/image003.png" |
alt="Schéma zapojení čidla"> |
</p> |
|
<p> |
Infračervená dioda D2 vysílá modulovaný signál směrem k překážce. |
Signál se od překážky odráží do přijímače U1. Procesor U2 generuje |
vysílací signál pro diodu D2 a současně analyzuje přijímaný signál |
z přijímače U1. Pokud se přijímaný signál <i>dostatečně</i> |
shoduje s vysílaným signálem, je aktivován výstupní signál na |
výstupu J2 a rozsvítí se indikační dioda D3. |
</p> |
|
<p> |
R1 a C1 filtruje napájení pro přijímač infračerveného signálu U1, dioda |
D1 je ochranná proti nechtěnému přepólování čidla. Čidlo je vybaveno |
jedním upevňovacím šroubem. |
</p> |
|
<p> |
Konektor J3 je standardní programovací konektor ATMEL ISP 6 PIN. Je |
zapojen obvyklým způsobem. Do procesoru se musí nahrát ovládací program |
přeložený pro příslušný nosný kmitočet použitého přijímače U1. Kmitočet |
přijímače bývá uváděn v posledním dvojčíslí označení, zde tedy |
38kHz. |
</p> |
|
<h2> Přijímač IR (obvod U1) </h2> |
|
<p> |
Tyto obvody jsou vyráběny pro přijímače dálkového ovládání rádií, |
televizí a dalších komponent spotřební elektroniky. |
</p> |
|
<p> |
<img width="386" height="195" src="IRFEE01A_files/image004.png" |
alt="Blokové schéma IR přijímače"> |
</p> |
|
<p> |
Sdružují v sobě přijímací fotodiodu, selektivní zesilovač |
s proměnným ziskem a obvody pro demodulování signálu. Aby čidlo |
fungovalo nezávisle na okolním osvětlení, je jeho pouzdro z černé |
hmoty, která propouští je vybranou vlnovou délku infračerveného záření. |
</p> |
|
<p> |
<img width="222" height="212" src="IRFEE01A_files/image005.png" |
alt="Závislost citlivosti na vlnové délce záření"> |
</p> |
|
<p> |
Dálkové ovládání používá spoustu přenosových kódů, ale drtivá většina |
je založena na vysílání pulsů nosné frekvence řádu 30 až 50kHz. |
Nejkratší přenesený impuls musí obsahovat alespoň 10 period nosného |
kmitočtu. Pro optimální fungování přijímače je doporučeno, aby |
přenášené impulsy byly dlouhé mezi 10 a 70 periodami nosného kmitočtu. |
</p> |
|
<p> |
<img width="362" height="158" src="IRFEE01A_files/image006.png" |
alt="Testovací signál"> |
</p> |
|
<p> |
Čidla se vyrábějí pro různé frekvence nosného kmitočtu a mohou být lépe |
nebo méně přizpůsobené pro použití konkrétního přenosového protokolu |
(jedná se o kompromis mezi odolností vůči rušení a parametry |
jednotlivých kódů). <i>Je třeba dát pozor na zapojení vývodů, existují |
i typy, které mají prohozené napájecí vývody.</i> |
</p> |
|
<h2> Jaký použít IR přijímač? </h2> |
|
<p> |
Zdánlivě prostá otázka skrývá velkou záludnost. Záludnost spočívá |
v tom, že některé přijímače IR signálu fungují dobře, jiné |
mizerně. Platí zde že méně inteligence může být lépe. |
</p> |
|
<h3> TSOP34838 – špatná volba </h3> |
|
<p> |
Konkrétně přijímač TSOP34838 funguje tak, že s tím, jak se signál |
zeslabuje zvyšuje svou citlivost až nakonec signál ztratí. Jenže pak je |
třeba signál hodně zesílit, aby ho přijímač zase začal registrovat. |
</p> |
|
<p> |
V praxi to pak vypadá tak, že čidlo nic nevidí dokud se překážka |
velmi nepřiblíží a pak ji vidí dokud se velmi nevzdálí. Pro náš účel je |
tato řada IR přijímačů nepoužitelná. |
</p> |
|
<h3> Jaký přijímač tedy použít? </h3> |
|
<p> |
Nevím. Přijímač, který mám v šuplíku na sobě nemá žádné rozumné |
označení. Zato funguje jedna báseň. Překážku čidlo zaregistruje a zase |
ztratí v prakticky stejné vzdálenosti. Příležitostně zkusím |
nakoupit různé přijímače a otestovat jejich použitelnost. |
</p> |
|
<table> |
<tr> |
<th> Přijímač </th> |
<th> Výrobce </th> |
<th> Poznámka </th> |
</tr> |
<tr> |
<td> TSOP34828 </td> |
<td> Vishay </td> |
<td> Má obrovskou hysterezi mezi zachycením signálu a jeho ztrátou </td> |
</tr> |
<tr> |
<td> Neznámý </td> |
<td> Osram? </td> |
<td> Funguje výborně </td> |
</tr> |
</table> |
|
<h2> Inteligence čidla </h2> |
|
<p> |
Pro detekci překážky by stačilo použít střídavý signál o vhodném |
kmitočtu a přímo výstup IR přijímače. Takové řešení ale není příliš |
odolné proti rušení, a kromě toho stejně potřebujeme nějaký obvod pro |
generování nosného kmitočtu. Proto bylo zvoleno řešení s malým |
procesorem, který generuje signál a současně ho i vyhodnocuje. |
</p> |
|
<p> |
Vysílá se signál v podobě nepřetržité řady jedniček a nul. |
Jednička je představována 10 impulsy nosného kmitočtu a nula stejně |
dlouhou mezerou, během které se nevysílá žádné záření. Průběh je na |
obrázku ve stopě 1. |
</p> |
|
<p> |
<img width="320" height="240" src="IRFEE01A_files/image007.png" |
alt="Průběh vysílaného a přijímaného signálu"> |
</p> |
|
<p> |
Ve stopě 2 je signál na výstupu IR přijímače U1. Stav L indikuje |
detekovaný optický signál. Detekovaný signál na přijímači je „rozpitý“, |
protože přijímač potřebuje cca 6 až 10 period signálu pro vyhodnocení a |
změnu stavu. Na obrázku vidíme asi 10 sekund aktivity zaznamenané přes |
sebe. |
</p> |
|
<p> |
Vyhodnocování procesor provádí tak, že testuje, zda přijímač zachytil |
kombinaci 10 a pokud ano, zvýší počítadlo úspěšných detekcí. Jakmile |
toto počítadlo přeroste aktivační mez, nastaví výstup čidla do stavu H. |
Pokud se místo očekávané kombinace 10 přijme cokoli jiného, sníží se |
počítadlo. Jakmile počítadlo poklesne pod nulu, výstup čidla se |
překlopí do neaktivního stavu L. Obrázek ukazuje máchnutí rukou před |
čidlem, odezva 20ms pro zapnutí a 15ms pro vypnutí. |
</p> |
|
<p> |
<img width="320" height="240" src="IRFEE01A_files/image008.png" |
alt="Odezva čidla na máchnutí rukou"> |
</p> |
|
<p> |
Toto poměrně jednoduché řešení vede k solidní odolnosti vůči |
rušení. Ani ovladač od televize z bezprostřední blízkosti |
neovlivňuje funkci čidla. |
</p> |
|
<h2> Mechanická konstrukce </h2> |
|
<p> |
Předpokládá se, že čidlo bude připevněno na přední část robotu nebo na |
nějaký drátový nebo plechový tvarovatelný nosník. Je proto opatřeno 1 |
upevňovacím šroubem. Vysílací dioda a přijímací obvod na sebe nesmějí |
vidět a je nutné tyto komponenty doplnit vhodně tvarovanými stínítky |
tak, aby čidlo detekovalo překážky dle potřeby. Přijímač je velmi |
citlivý a vidí vysílací LED i tehdy, kdyby to člověk neřekl (například |
zezadu). Stínítko lze udělat například z černé smršťovací bužírky. |
</p> |
|
<p> |
Vysílací IR LED lze osadit jak shora desky, tak i ze spodní strany. |
V případě potřeby je možné LED umístit dál od desky a vhodně |
nasměrovat. |
</p> |
|
<h1> Osazení a oživení </h1> |
|
<h2> Osazení </h2> |
|
<p> |
<img width="567" height="241" src="IRFEE01A_files/image010.jpg" |
alt="Osazovací výkres, strana součástek"> |
</p> |
|
<p> |
<img width="563" height="240" src="IRFEE01A_files/image011.jpg" |
alt="Osazovací výkres, strana spojů"> |
</p> |
|
<table class="Soupiska"> |
<tr> |
<th> Počet </th> |
<th> Reference </th> |
<th> Název </th> |
<th> Pouzdro </th> |
</tr> |
<tr> |
<th colspan="4"> Odpory </th> |
</tr> |
<tr> |
<td> 1 </td> |
<td> R1 </td> |
<td> 100 </td> |
<td> R0805 </td> |
</tr> |
<tr> |
<td> 1 </td> |
<td> R2 </td> |
<td> 330 </td> |
<td> R0805 </td> |
</tr> |
<tr> |
<td> 1 </td> |
<td> R3 </td> |
<td> 680 </td> |
<td> R0805 </td> |
</tr> |
<tr> |
<td> 1 </td> |
<td> R4 </td> |
<td> 10k </td> |
<td> R0805 </td> |
</tr> |
<tr> |
<th colspan="4"> Keramické kondenzátory </th> |
</tr> |
<tr> |
<td> 2 </td> |
<td> C1, C2 </td> |
<td> 4u7/6.3V </td> |
<td> C0805 </td> |
</tr> |
<tr> |
<th colspan="4"> Diody </th> |
</tr> |
<tr> |
<td> 1 </td> |
<td> D1 </td> |
<td> 1N4007SMD </td> |
<td> MELF </td> |
</tr> |
<tr> |
<th colspan="4"> LED </th> |
</tr> |
<tr> |
<td> 1 </td> |
<td> D2 </td> |
<td> L-53F3BT </td> |
<td> LED5 </td> |
</tr> |
<tr> |
<td> 1 </td> |
<td> D3 </td> |
<td> LED_RED_5mm </td> |
<td> LED5 </td> |
</tr> |
<tr> |
<th colspan="4"> Integrované obvody </th> |
</tr> |
<tr> |
<td> 1 </td> |
<td> U1 </td> |
<td> IR_RECEIVER (viz text) </td> |
<td> TSOP348xx </td> |
</tr> |
<tr> |
<td> 1 </td> |
<td> U2 </td> |
<td> ATtiny13-20SU </td> |
<td> SO8_210 </td> |
</tr> |
<tr> |
<th colspan="4"> Mechanické součástky </th> |
</tr> |
<tr> |
<td> 1 </td> |
<td> J1 </td> |
<td> JUMP3 </td> |
<td> JUMP3 </td> |
</tr> |
<tr> |
<td> 1 </td> |
<td> J2 </td> |
<td> JUMP1 </td> |
<td> JUMP1 </td> |
</tr> |
<tr> |
<td> 1 </td> |
<td> J3 </td> |
<td> JUMP2x3 </td> |
<td> JUMP2x3/B </td> |
</tr> |
</table> |
|
<p> |
<img width="328" height="147" src="IRFEE01A_files/image009.jpg" |
alt="Obrázek osazené desky ze strany spojů"> |
</p> |
|
<h2> Oživení a kalibrace </h2> |
|
<p> |
Oživení spočívá v naprogramování řídícího programu do procesoru. |
Je třeba použít program, který generuje vysílací signál o stejné |
frekvenci, na jakou je naladěn přijímací obvod. Hodnoty pro |
naprogramování konfiguračních buněk procesoru jsou uvedeny na začátku |
zdrojového kódu. |
</p> |
|
<h1> Programové vybavení </h1> |
|
<h2> Popis programu </h2> |
|
<p> |
Pro generování budícího signálu vysílací IR diody se využívá časovač |
v režimu CTC. Časovač opakovaně čítá od 0 do horní meze, která je |
nastavena v registru OCR0A. Touto konstantou je dána frekvence |
generovaného signálu. |
</p> |
|
<p> |
Při každém dosažení horní meze časovače se automaticky neguje výstup |
PB1, na který je připojena vysílací dioda. Současně se vyvolá |
podprogram pro obsluhu přerušení, který čítá počet půlperiod vysílaného |
signálu. Pokud se má vysílat tma (nazvěme stav 0), vše probíhá stejně, |
jen se výstupní stav PB1 nemění. |
</p> |
|
<p> |
Po vyslání nastaveného počtu period signálu (konstanta SYMBOL_LENGTH) |
se střídá vysílání stavu 0 a 1 (střídavý signál a tma) a současně se |
vyhodnocuje, zda se přijímaný signál shoduje s vysílaným. |
Vyhodnocování se provádí po dvojici 0/1. |
</p> |
|
<p> |
Hlavní program obsahuje inicializační část a prázdnou nekonečnou |
smyčku. Za běhu se vše vyřizuje v podprogramu obsluhy přerušení od |
časovače. |
</p> |
|
<h2> Překlad programu </h2> |
|
<p> |
Pro překlad je připravený Makefile, který přeloží program |
s nastavením pro vyjmenované nosné kmitočty. |
</p> |
</div> |
|
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== PATIČKA ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../../../../"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
|
</body> |
</html> |