Infračervené tykadlo pro robota
Milan Horkel
Č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í.
Parametr | Hodnota | Poznámka |
---|---|---|
Napájení | (2.7V ..) 3.6V .. 5V (.. 5.5V) | Zkontrolujte požadavky U1 a U2 |
Spotřeba | 10mA / 15mA | Při 5V v klidu a při detekci |
Nosný kmitočet | 38kHz | Obvyklé hodnoty: 30, 33, 36, 38, 40, 56kHz |
Dosah | Cca 1m | Bez stínítka proti listu papíru A4 |
Rychlost odezvy | 20ms / 15ms | Aktivace a deaktivace |
Rozměry | 35 x 15 x 15mm | Bez stínítka |
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.
Srdcem čidla je obvod U1, přijímač infračerveného signálu a procesor ATtiny U2, který zajišťuje inteligenci čidla.
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 dostatečně 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.
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.
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í, například 38 znamená 38kHz.
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.
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í.
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.
Č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ů). Je třeba dát pozor na zapojení vývodů, existují i typy, které mají prohozené napájecí vývody.
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.
Konkrétně přijímač TSOP348xx 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.
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řijímače OSRAM řady SFH5110-xx pracují správně. Překážku čidlo zaregistruje a zase ztratí v prakticky stejné vzdálenosti. Další typy je třeba ověřit.
Přijímač | Výrobce | Poznámka |
---|---|---|
TSOP348xx | VISHAY | Má obrovskou hysterezi mezi zachycením signálu a jeho ztrátou |
SFH5110-33 SFH5110-36 SFH5110-38 SFH5110-40 |
OSRAM | Funguje výborně |
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.
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.
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.
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í.
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ř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.
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.
Počet | Reference | Název | Pouzdro |
---|---|---|---|
Odpory | |||
1 | R1 | 100 | R0805 |
1 | R2 | 330 | R0805 |
1 | R3 | 680 | R0805 |
1 | R4 | 10k | R0805 |
Keramické kondenzátory | |||
2 | C1, C2 | 4u7/6.3V | C0805 |
Diody | |||
1 | D1 | 1N4007SMD | MELF |
LED | |||
1 | D2 | L-53F3BT | LED5 |
1 | D3 | LED_RED_5mm | LED5 |
Integrované obvody | |||
1 | U1 | IR_RECEIVER (viz text) | TSOP348xx |
1 | U2 | ATtiny13-20SU | SO8_210 |
Mechanické součástky | |||
1 | J1 | JUMP3 | JUMP3 |
1 | J2 | JUMP1 | JUMP1 |
1 | J3 | JUMP2x3 | JUMP2x3/B |
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.
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ř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í.
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.
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.
Pro překlad je připravený Makefile, který přeloží program s nastavením pro vyjmenované nosné kmitočty.