Rev Author Line No. Line
1391 miho 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title> IRFEE01A </title>
6 <meta name="keywords" content="stavebnice MLAB univerzální moduly infračervený detektor infrared tykadlo">
7 <meta name="description" content="Projekt MLAB, Infračervný detektor překážek pro robota">
8 <!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
9 <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
10 <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
11 <link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
12 <script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
13 <!-- AUTOINCLUDE END -->
14 </head>
15  
16 <body lang="cs">
17  
18 <!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
19 <!-- ============== HLAVICKA ============== -->
20 <div class="Header">
21 <script type="text/javascript">
22 <!--
23 SetRelativePath("../../../../../");
24 DrawHeader();
25 // -->
26 </script>
27 <noscript>
28 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
29 </noscript>
30 </div>
31 <!-- AUTOINCLUDE END -->
32  
33 <!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
34 <!-- ============== MENU ============== -->
35 <div class="Menu">
36 <script type="text/javascript">
37 <!--
38 SetRelativePath("../../../../../");
39 DrawMenu();
40 // -->
41 </script>
42 <noscript>
43 <p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
44 </noscript>
45 </div>
46 <!-- AUTOINCLUDE END -->
47  
48 <!-- ============== TEXT ============== -->
49 <div class="Text">
50 <p class="Title">
51 Infračervené tykadlo pro robota
52 </p>
53 <p class=Autor>
54 Milan Horkel
55 </p>
56 <p class="Subtitle">
57 Čidlo využívá modulované infračervené záření pro bezdotykovou detekci
58 předmětů. Je určeno zejména pro menší pohyblivé roboty jako náhrada
59 mechanických tykadel. Jádrem čidla je procesor řady ATtiny a přijímač
60 Ir pro dálkové ovládání. Modulace a průměrování signálu zajišťuje
61 zvýšenou odolnost proti rušení.
62 </p>
63 <p class="Subtitle">
1392 miho 64 <img width="327" height="105" src="IRFEE01A_Files/image001.jpg"
1391 miho 65 alt="Pohled na čidlo zhora">
66 </p>
67 <p class="Subtitle">
1392 miho 68 <img width="328" height="162" src="IRFEE01A_Files/image002.jpg"
1391 miho 69 alt="Pohled na čidlo ze strany">
70 </p>
71 <p>
72 <a href="../IRFEE01A.cs.pdf"><img class="NoBorder"
73 src="../../../../../Web/PIC/FileIco_PDF.ico"
74 alt="Acrobat">&nbsp;PDF verze</a>
75 </p>
76  
77 <h1>Technické parametry </h1>
78  
79 <table>
80 <tr>
81 <th> Parametr </th>
82 <th> Hodnota </th>
83 <th> Poznámka </th>
84 </tr>
85 <tr>
86 <td> Napájení </td>
87 <td> (2.7V&nbsp;..)&nbsp;3.6V&nbsp;..&nbsp;5V&nbsp;(..&nbsp;5.5V) </td>
88 <td> Zkontrolujte požadavky U1 a U2 </td>
89 </tr>
90 <tr>
91 <td> Spotřeba </td>
92 <td> 10mA&nbsp;/&nbsp;15mA </td>
93 <td> Při 5V v&nbsp;klidu a při detekci </td>
94 </tr>
95 <tr>
96 <td> Nosný kmitočet </td>
97 <td> 38kHz </td>
98 <td> Obvyklé hodnoty: 30, 33, 36, 38, 40, 56kHz </td>
99 </tr>
100 <tr>
101 <td> Dosah </td>
102 <td> Cca&nbsp;1m </td>
103 <td> Bez stínítka proti listu papíru A4 </td>
104 </tr>
105 <tr>
106 <td> Rychlost odezvy </td>
107 <td> 20ms&nbsp;/&nbsp;15ms </td>
108 <td> Aktivace a deaktivace </td>
109 </tr>
110 <tr>
111 <td> Rozměry </td>
112 <td> 35&nbsp;x&nbsp;15&nbsp;x&nbsp;15mm </td>
113 <td> Bez stínítka </td>
114 </tr>
115 </table>
116  
117 <h1> Popis konstrukce </h1>
118  
119 <h2> Úvodem </h2>
120  
121 <p>
122 Aby mohl robot detekovat překážku aniž do ní narazí, potřebuje vhodné
123 čidlo. Tato konstrukce popisuje čidlo, které využívá odrazu
124 infračerveného záření od překážky.
125 </p>
126  
127 <h2> Zapojení modulu </h2>
128  
129 <p>
130 Srdcem čidla je obvod U1, přijímač infračerveného signálu a procesor
131 ATtiny, který zajišťuje inteligenci čidla.
132 </p>
133  
134 <p>
1392 miho 135 <img width="588" height="396" src="IRFEE01A_Files/image003.png"
1391 miho 136 alt="Schéma zapojení čidla">
137 </p>
138  
139 <p>
140 Infračervená dioda D2 vysílá modulovaný signál směrem k&nbsp;překážce.
141 Signál se od překážky odráží do přijímače U1. Procesor U2 generuje
142 vysílací signál pro diodu D2 a současně analyzuje přijímaný signál
143 z&nbsp;přijímače U1. Pokud se přijímaný signál <i>dostatečně</i>
144 shoduje s&nbsp;vysílaným signálem, je aktivován výstupní signál na
145 výstupu J2 a rozsvítí se indikační dioda D3.
146 </p>
147  
148 <p>
149 R1 a C1 filtruje napájení pro přijímač infračerveného signálu U1, dioda
150 D1 je ochranná proti nechtěnému přepólování čidla. Čidlo je vybaveno
151 jedním upevňovacím šroubem.
152 </p>
153  
154 <p>
155 Konektor J3 je standardní programovací konektor ATMEL ISP 6 PIN. Je
156 zapojen obvyklým způsobem. Do procesoru se musí nahrát ovládací program
157 přeložený pro příslušný nosný kmitočet použitého přijímače U1. Kmitočet
158 přijímače bývá uváděn v&nbsp;posledním dvojčíslí označení, zde tedy
159 38kHz.
160 </p>
161  
162 <h2> Přijímač IR (obvod U1) </h2>
163  
164 <p>
165 Tyto obvody jsou vyráběny pro přijímače dálkového ovládání rádií,
166 televizí a dalších komponent spotřební elektroniky.
167 </p>
168  
169 <p>
1392 miho 170 <img width="386" height="195" src="IRFEE01A_Files/image004.png"
1391 miho 171 alt="Blokové schéma IR přijímače">
172 </p>
173  
174 <p>
175 Sdružují v&nbsp;sobě přijímací fotodiodu, selektivní zesilovač
176 s&nbsp;proměnným ziskem a obvody pro demodulování signálu. Aby čidlo
177 fungovalo nezávisle na okolním osvětlení, je jeho pouzdro z&nbsp;černé
178 hmoty, která propouští je vybranou vlnovou délku infračerveného záření.
179 </p>
180  
181 <p>
1392 miho 182 <img width="222" height="212" src="IRFEE01A_Files/image005.png"
1391 miho 183 alt="Závislost citlivosti na vlnové délce záření">
184 </p>
185  
186 <p>
187 Dálkové ovládání používá spoustu přenosových kódů, ale drtivá většina
188 je založena na vysílání pulsů nosné frekvence řádu 30 až 50kHz.
189 Nejkratší přenesený impuls musí obsahovat alespoň 10 period nosného
190 kmitočtu. Pro optimální fungování přijímače je doporučeno, aby
191 přenášené impulsy byly dlouhé mezi 10 a 70 periodami nosného kmitočtu.
192 </p>
193  
194 <p>
1392 miho 195 <img width="362" height="158" src="IRFEE01A_Files/image006.png"
1391 miho 196 alt="Testovací signál">
197 </p>
198  
199 <p>
200 Čidla se vyrábějí pro různé frekvence nosného kmitočtu a mohou být lépe
201 nebo méně přizpůsobené pro použití konkrétního přenosového protokolu
202 (jedná se o kompromis mezi odolností vůči rušení a parametry
203 jednotlivých kódů). <i>Je třeba dát pozor na zapojení vývodů, existují
204 i typy, které mají prohozené napájecí vývody.</i>
205 </p>
206  
207 <h2> Jaký použít IR přijímač? </h2>
208  
209 <p>
210 Zdánlivě prostá otázka skrývá velkou záludnost. Záludnost spočívá
211 v&nbsp;tom, že některé přijímače IR signálu fungují dobře, jiné
212 mizerně. Platí zde že méně inteligence může být lépe.
213 </p>
214  
215 <h3> TSOP34838 – špatná volba </h3>
216  
217 <p>
218 Konkrétně přijímač TSOP34838 funguje tak, že s&nbsp;tím, jak se signál
219 zeslabuje zvyšuje svou citlivost až nakonec signál ztratí. Jenže pak je
220 třeba signál hodně zesílit, aby ho přijímač zase začal registrovat.
221 </p>
222  
223 <p>
224 V&nbsp;praxi to pak vypadá tak, že čidlo nic nevidí dokud se překážka
225 velmi nepřiblíží a pak ji vidí dokud se velmi nevzdálí. Pro náš účel je
226 tato řada IR přijímačů nepoužitelná.
227 </p>
228  
229 <h3> Jaký přijímač tedy použít? </h3>
230  
231 <p>
232 Nevím. Přijímač, který mám v&nbsp;šuplíku na sobě nemá žádné rozumné
233 označení. Zato funguje jedna báseň. Překážku čidlo zaregistruje a zase
234 ztratí v&nbsp;prakticky stejné vzdálenosti. Příležitostně zkusím
235 nakoupit různé přijímače a otestovat jejich použitelnost.
236 </p>
237  
238 <table>
239 <tr>
240 <th> Přijímač </th>
241 <th> Výrobce </th>
242 <th> Poznámka </th>
243 </tr>
244 <tr>
245 <td> TSOP34828 </td>
246 <td> Vishay </td>
247 <td> Má obrovskou hysterezi mezi zachycením signálu a jeho ztrátou </td>
248 </tr>
249 <tr>
250 <td> Neznámý </td>
251 <td> Osram? </td>
252 <td> Funguje výborně </td>
253 </tr>
254 </table>
255  
256 <h2> Inteligence čidla </h2>
257  
258 <p>
259 Pro detekci překážky by stačilo použít střídavý signál o vhodném
260 kmitočtu a přímo výstup IR přijímače. Takové řešení ale není příliš
261 odolné proti rušení, a kromě toho stejně potřebujeme nějaký obvod pro
262 generování nosného kmitočtu. Proto bylo zvoleno řešení s&nbsp;malým
263 procesorem, který generuje signál a současně ho i vyhodnocuje.
264 </p>
265  
266 <p>
267 Vysílá se signál v&nbsp;podobě nepřetržité řady jedniček a nul.
268 Jednička je představována 10 impulsy nosného kmitočtu a nula stejně
269 dlouhou mezerou, během které se nevysílá žádné záření. Průběh je na
270 obrázku ve stopě 1.
271 </p>
272  
273 <p>
1392 miho 274 <img width="320" height="240" src="IRFEE01A_Files/image007.png"
1391 miho 275 alt="Průběh vysílaného a přijímaného signálu">
276 </p>
277  
278 <p>
279 Ve stopě 2 je signál na výstupu IR přijímače U1. Stav L indikuje
280 detekovaný optický signál. Detekovaný signál na přijímači je „rozpitý“,
281 protože přijímač potřebuje cca 6 až 10 period signálu pro vyhodnocení a
282 změnu stavu. Na obrázku vidíme asi 10 sekund aktivity zaznamenané přes
283 sebe.
284 </p>
285  
286 <p>
287 Vyhodnocování procesor provádí tak, že testuje, zda přijímač zachytil
288 kombinaci 10 a pokud ano, zvýší počítadlo úspěšných detekcí. Jakmile
289 toto počítadlo přeroste aktivační mez, nastaví výstup čidla do stavu H.
290 Pokud se místo očekávané kombinace 10 přijme cokoli jiného, sníží se
291 počítadlo. Jakmile počítadlo poklesne pod nulu, výstup čidla se
292 překlopí do neaktivního stavu L. Obrázek ukazuje máchnutí rukou před
293 čidlem, odezva 20ms pro zapnutí a 15ms pro vypnutí.
294 </p>
295  
296 <p>
1392 miho 297 <img width="320" height="240" src="IRFEE01A_Files/image008.png"
1391 miho 298 alt="Odezva čidla na máchnutí rukou">
299 </p>
300  
301 <p>
302 Toto poměrně jednoduché řešení vede k&nbsp;solidní odolnosti vůči
303 rušení. Ani ovladač od televize z&nbsp;bezprostřední blízkosti
304 neovlivňuje funkci čidla.
305 </p>
306  
307 <h2> Mechanická konstrukce </h2>
308  
309 <p>
310 Předpokládá se, že čidlo bude připevněno na přední část robotu nebo na
311 nějaký drátový nebo plechový tvarovatelný nosník. Je proto opatřeno 1
312 upevňovacím šroubem. Vysílací dioda a přijímací obvod na sebe nesmějí
313 vidět a je nutné tyto komponenty doplnit vhodně tvarovanými stínítky
314 tak, aby čidlo detekovalo překážky dle potřeby. Přijímač je velmi
315 citlivý a vidí vysílací LED i tehdy, kdyby to člověk neřekl (například
316 zezadu). Stínítko lze udělat například z&nbsp;černé smršťovací bužírky.
317 </p>
318  
319 <p>
320 Vysílací IR LED lze osadit jak shora desky, tak i ze spodní strany.
321 V&nbsp;případě potřeby je možné LED umístit dál od desky a vhodně
322 nasměrovat.
323 </p>
324  
325 <h1> Osazení a oživení </h1>
326  
327 <h2> Osazení </h2>
328  
329 <p>
1392 miho 330 <img width="567" height="241" src="IRFEE01A_Files/image010.jpg"
1391 miho 331 alt="Osazovací výkres, strana součástek">
332 </p>
333  
334 <p>
1392 miho 335 <img width="563" height="240" src="IRFEE01A_Files/image011.jpg"
1391 miho 336 alt="Osazovací výkres, strana spojů">
337 </p>
338  
339 <table class="Soupiska">
340 <tr>
341 <th> Počet </th>
342 <th> Reference </th>
343 <th> Název </th>
344 <th> Pouzdro </th>
345 </tr>
346 <tr>
347 <th colspan="4"> Odpory </th>
348 </tr>
349 <tr>
350 <td> 1 </td>
351 <td> R1 </td>
352 <td> 100 </td>
353 <td> R0805 </td>
354 </tr>
355 <tr>
356 <td> 1 </td>
357 <td> R2 </td>
358 <td> 330 </td>
359 <td> R0805 </td>
360 </tr>
361 <tr>
362 <td> 1 </td>
363 <td> R3 </td>
364 <td> 680 </td>
365 <td> R0805 </td>
366 </tr>
367 <tr>
368 <td> 1 </td>
369 <td> R4 </td>
370 <td> 10k </td>
371 <td> R0805 </td>
372 </tr>
373 <tr>
374 <th colspan="4"> Keramické kondenzátory </th>
375 </tr>
376 <tr>
377 <td> 2 </td>
378 <td> C1, C2 </td>
379 <td> 4u7/6.3V </td>
380 <td> C0805 </td>
381 </tr>
382 <tr>
383 <th colspan="4"> Diody </th>
384 </tr>
385 <tr>
386 <td> 1 </td>
387 <td> D1 </td>
388 <td> 1N4007SMD </td>
389 <td> MELF </td>
390 </tr>
391 <tr>
392 <th colspan="4"> LED </th>
393 </tr>
394 <tr>
395 <td> 1 </td>
396 <td> D2 </td>
397 <td> L-53F3BT </td>
398 <td> LED5 </td>
399 </tr>
400 <tr>
401 <td> 1 </td>
402 <td> D3 </td>
403 <td> LED_RED_5mm </td>
404 <td> LED5 </td>
405 </tr>
406 <tr>
407 <th colspan="4"> Integrované obvody </th>
408 </tr>
409 <tr>
410 <td> 1 </td>
411 <td> U1 </td>
412 <td> IR_RECEIVER (viz text) </td>
413 <td> TSOP348xx </td>
414 </tr>
415 <tr>
416 <td> 1 </td>
417 <td> U2 </td>
418 <td> ATtiny13-20SU </td>
419 <td> SO8_210 </td>
420 </tr>
421 <tr>
422 <th colspan="4"> Mechanické součástky </th>
423 </tr>
424 <tr>
425 <td> 1 </td>
426 <td> J1 </td>
427 <td> JUMP3 </td>
428 <td> JUMP3 </td>
429 </tr>
430 <tr>
431 <td> 1 </td>
432 <td> J2 </td>
433 <td> JUMP1 </td>
434 <td> JUMP1 </td>
435 </tr>
436 <tr>
437 <td> 1 </td>
438 <td> J3 </td>
439 <td> JUMP2x3 </td>
440 <td> JUMP2x3/B </td>
441 </tr>
442 </table>
443  
444 <p>
1392 miho 445 <img width="328" height="147" src="IRFEE01A_Files/image009.jpg"
1391 miho 446 alt="Obrázek osazené desky ze strany spojů">
447 </p>
448  
449 <h2> Oživení a kalibrace </h2>
450  
451 <p>
452 Oživení spočívá v&nbsp;naprogramování řídícího programu do procesoru.
453 Je třeba použít program, který generuje vysílací signál o stejné
454 frekvenci, na jakou je naladěn přijímací obvod. Hodnoty pro
455 naprogramování konfiguračních buněk procesoru jsou uvedeny na začátku
456 zdrojového kódu.
457 </p>
458  
459 <h1> Programové vybavení </h1>
460  
461 <h2> Popis programu </h2>
462  
463 <p>
464 Pro generování budícího signálu vysílací IR diody se využívá časovač
465 v&nbsp;režimu CTC. Časovač opakovaně čítá od 0 do horní meze, která je
466 nastavena v&nbsp;registru OCR0A. Touto konstantou je dána frekvence
467 generovaného signálu.
468 </p>
469  
470 <p>
471 Při každém dosažení horní meze časovače se automaticky neguje výstup
472 PB1, na který je připojena vysílací dioda. Současně se vyvolá
473 podprogram pro obsluhu přerušení, který čítá počet půlperiod vysílaného
474 signálu. Pokud se má vysílat tma (nazvěme stav 0), vše probíhá stejně,
475 jen se výstupní stav PB1 nemění.
476 </p>
477  
478 <p>
479 Po vyslání nastaveného počtu period signálu (konstanta SYMBOL_LENGTH)
480 se střídá vysílání stavu 0 a 1 (střídavý signál a tma) a současně se
481 vyhodnocuje, zda se přijímaný signál shoduje s&nbsp;vysílaným.
482 Vyhodnocování se provádí po dvojici 0/1.
483 </p>
484  
485 <p>
486 Hlavní program obsahuje inicializační část a prázdnou nekonečnou
487 smyčku. Za běhu se vše vyřizuje v&nbsp;podprogramu obsluhy přerušení od
488 časovače.
489 </p>
490  
491 <h2> Překlad programu </h2>
492  
493 <p>
494 Pro překlad je připravený Makefile, který přeloží program
495 s&nbsp;nastavením pro vyjmenované nosné kmitočty.
496 </p>
497 </div>
498  
499 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
500 <!-- ============== PATIČKA ============== -->
501 <div class="Footer">
502 <script type="text/javascript">
503 <!--
504 SetRelativePath("../../../../../");
505 DrawFooter();
506 // -->
507 </script>
508 <noscript>
509 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
510 </noscript>
511 </div>
512 <!-- AUTOINCLUDE END -->
513  
514 </body>
515 </html>