Jan Babjak, Petr Novák

Osmikanálový IR detektor přiblížení s I2C sběrnicí

práce ve formátu MS Word: ir.doc [985kB]
zdrojové kody programu ir_src.zip [10kB]

Obsah

1. Úvod

   Cílem této práce bylo navrhnout a realizovat hardware detektoru přiblížení a vytvořit odpovídající řídicí program, který bude provádí měření a výsledky předává na požádání nadřazenému řídícímu systému, prostřednictvím sběrnice I2C (TWI, SMBus). Modul je určen pro mobilní edukační robot, jako detektor překážek při pohybu robotu neznámým prostředím. Získaný signál může být dále zpracován například neuronovou sítí.

Název: Osmikanálový detektor příblížení
Princip měření: Detekce reflexe IR světla od překážky
Max. počet senzorů: až 8 nezávislých senzorů
Komunikační rozhraní: I2C - 7bit address
Rozměry modulu: 78 x 62mm (3" x 2.44")
Max. dosah senzoru: 20cm (8")
Počet stupňů měření: 3 úrovně vzdálenosti (Min, Mid, Max)
Napájecí napětí: +5V ss (DC)
Proudový odběr: 15 mA
Mikrokontrolér: ATMEL ATMega8 (AVR - 8MHz)
Tab. 1. - Parametry detektoru

1.1. Možnosti modulu detektoru

   Zařízení pracuje na bázi sledování odražení infračerveného světelného paprsku od případné překážky. Jako zdroj světla je použitá běžně dostupná infračervená dioda, což má rozhodující vliv na vlastnosti a schopnosti detektoru. Při běžném denním osvětlení je průměrný maximální dostah jednotlivých senzorů cca 20 cm. Použité součástky mají vliv i na velikost prostoru, ve kterém se musí nacházet překážka, aby byla senzorem detekována. Na následujícím obrázku je zachycen zjištěný dosah senzoru pro všechny tři úrovně výkonu IR diody. Jako testovací objekt byl použit plechový válec průměru 8.5cm (3.3") a výšce 11cm (4.3"). Tento tvar byl zvolen z důvodů minimalizace vlivu úhlu natočení překážky na nepřesnost výsledků.

Dosah senzoru

Obr. 1 - Rozsah senzoru

   Úspěšnost detekce případné překážky závisí na tom jak moc pohlcuje povrchu materiálu světlo o vlnové délce 940nm a jak moc ho odráží zpět k senzoru. Z toho vyplývá, že překážky z lesklým a světlým povrchem (světlý plast, kovy atd.) budou zaznamenány ve větší vzdálenosti, než materiály s nerovným tmavým povrchem (textilie, vegetace atd.). Další významný faktor ovlivňující funkci modulu je úhel pod jakým dopadá vyslané světlo na překážku. Experimentálně jsem si ověřil, že u překážky s lesklým povrchem je detekce spolehlivá až do úhlu cca 30°. U větších úhlů dochází k odrazu vyslaného světla mimo senzor což způsobí že i blízká překážka nebude zazamenána. Pokud je ale povrh této překážky členitý, k detekci dojde, protože některé plošky povrchu povrchu jsou pod takovým úhlem, že odrazí alespon část světla zpět k přímači.

2. Princip měření

   K měření je využito detekce odrazu (reflexe) infračerveného světla od případné překážky. Vlnová délka použitého světla je 940nm. Světlo je emitováno infračervenou LED. Aby se zamezilo příjmu parazitního signálu, což by mohlo způsobit falešnou detekci překážky, je vysílaný světelný paprsek tvořen pulzy o frekvencí 38kHz. Právě na tuto frekvenci je citlivý přijímač, což má za následek snížení pravděpodobnosti omylu. Tato frekvence je však používaná k přenosu povelů dálkových ovladačů domácích spotřebičů. Aby se eliminovala možnost ovlivnění měření těmito ovladači, je řídicí program navržen tak, aby reagoval pouze na impulzy, které sám generuje. Ostatní přijímané signály jsou považované za chybné a nejsou vyhodnoceny jako překážka.

   Detektor přiblížení je schopen měřit i změnu vzdálenosti překážky. Toho se dosahuje vysíláním pulzů o různé intenzitě jasu. Vzdálenost objektu je pak přímo úměrná úrovni vysílaného signálu, při kterém došlo k zaregistrování odrazu detektorem. Tento princip měření poskytuje jen orientační několikastupňovou informaci o blížící se překážce. V žádném případě se nedá použít k exaktnímu měření vzdálenosti, což vylučuje hlavně to, že úroveň signálu, při které dojde k detekci odrazu, je velmi závislá na odrazivosti materiálu, ze kterého je tvořena překážka. Tato závislost je velmi razantní a při měření může činit rozdíl i stovky procent. Dá se ale s výhodou použít k registraci změny vzdálenosti překážky. Intenzita pulzů je regulována pomocí PWM.

Měřící cyklus jednoho senzoru
Obr. 2. - Měřící cyklus jednoho senzoru

3. Popis hardware

   Detektor je tvořen základní deskou, která obsahuje řídicí mikroprocesor a konektory pro připojení až osmi čidel, které je tak možno rozmístit podle potřeby. Čidla jsou ze základní deskou propojena standardním 10ti žílovým plochým kabelem.

3. 1. Volba procesoru

   Základem detektoru je moderní mikroprocesor AT Mega8 společnosti ATMEL. Výběr tohoto typu mikorprocesoru ovlivnilo to, že rodina procesorů AVR má integrováno množství periférií, mezi jnými i hardwarový modul I2C. Díky tomu je možno realziovat funkci I2C Slave, poměrně jednoduše a nezávisle na hlavním programu. Dalším faktorem ovlivnujícím výběr tohoto typu procesoru je dostatečné množství vyvedených portů, jejich počet vyhovuje požadavkům zadání. Procesor je možno programovat přímo v aplikaci (ISP), čímž se zjednodušil vývoj modulu senzorů. Mikroprocesor je externím keramickým krystalovým oscilátorem udržován na pracovní frekvenci 8MHz, což díky AVR architektuře znamená, že za jednu sekundu vykoná 8 miliónů instrukcí programu (MIPS).

3. 2. Popis zapojení

   K vysílání signálu jsou použity diody, emitující světlo v infračervené oblasti o vlnové délce 940nm. Na tuto vlnovou délku je nejvíce citlivý přijímač, který registruje případný odraz. Proto je nutné zvolit takové LED, které svítí právě na této vlnové délce. Jako přijímač je použit integrovaný obvod SFH 5110 společnosti OSRAM. Tento obvod se hojně používá v domácí audiovizuální technice jako přijímač dálkového ovládání. Obvod je velmi citlivý na změny v napájecím napětí a proto je nutné jej pro správnou funkci vybavit filtračním kondenzátorem a odpovídajícím odporem.
   Detektor je vybaven dvěma indikačním LED umístěnými na základní desce. Zelená blikáním signalizuje správnou funkci a červená se rozsvítí v případě, že na kterémkoli vstupu byla detekována překážka. Dále je detektor vybaven konektorem umožňujícím změnu řídícího programu procesoru (ISP), aniž by ho bylo nutno vyjmout a přenést do příslušného programátoru, což je velmi výhodné hlavně při tvorbě programu pro mikroprocesor. Dalším konektorem je rozhraní pro připojení nadřazenému systému. Pomocí dvou vodičů je přivedeno napájecí napětí +5V a další dva vodiče jsou linky sériového rozhraní I2C sběrnice, která je určena pro obousměrnou komunikaci.
   Schéma zapojení a následný návrh byl zhotoven v programu CADSoft EAGLE. Jelikož zapojení je poměrně jednoduché co se týká počtů součástek, použitých vrstev plošných spojů a rozměrů desky je možné je vytvořit jej ve volně šiřitelé verzi programu.

blokové schéma detektoru přiblížení
Obr. 3. - Blokové schéma detektoru přiblížení

3. 3. Moduly senzorů

   Detektor umožňuje připojit až osm na sobě nezávislých senzorů. Jejich rozměry a uspořádání součástek se můžou měnit podle potřeby konkrétní konstrukce. Podrobné schéma zapojení je k nahlédnutí modul_schema.png a deska plošných spojů modul_pcb.png. Následuje schéma zapojení jednotlivého senzoru a příklad realizace.

Schéma modulu přiíjmače
Obr. 4. - Schéma zapojení modulu senzoru

Senzor image
Obr. 5. - Příklad realizace jednoho senzoru

3. 4. Řídicí modul detektoru

   Hlavními prvky Řídicího modulu detektoru je mikroprocesor a osm konektorů pro připojení až osmi čidel. Dále jsou ve schématu zakresleny konektory pro připojení k nadřazenému řídicímu systému (I2C) a pro připojení programátoru (ISP)a podpůrné součástky pro správnou funkci řídicího mikroporocesoru

Schéma zapojení řídicí desky
Obr. 6. - Schéma zapojení detektoru (klik pro zvětšení)

   Následující obrázek znázorňuje desku plošných spojů modulu detektoru. Při návhru rozmístění součástek a vedení plošných spojů bylo přihlednuto k optimálnímu rozmístění konektorů pro připojení modulů senzorů a k tomu aby obrazec plošných spojů svou náročností na přesnost odpovídal možnostem domácí výroby desky fotocestou. Pomocí podpůrných prostředků pro systém EAGLE a za pomocí nástroje POV-RAY je možno vytvořit i 3D model budoucí desky: visualization.png.

Deska plošných spojů řídicího modulu
Obr. 7 - Deska plošných spojů - pohled ze strany součástek

Fotografie hotového modulu
Obr. 8 - Fotografie hotového modulu

Význam pinů jednotlivých konektorů
Obr. 9 - Význam pinů jednotlivých konektorů

4. Popis programu (firmware)

   Řídící program plní dvě hlavní úlohy. První spočívá v provádění samotného měření. V hlavní programové smyčce se postupně obrací na jednotlivá čidla. Nejprve je na příslušnou LED vyslána série dvaceti mikropulzů. Poté je sledován stav příslušného detektoru. Pokud je zjištěn odraz, je to první krok k tomu aby byla detekována překážka. Následně je LED vypnuta a program zjišťuje, zda registruje nějaký odraz. Pokud ne, tak je detekce považována za úspěšnou. Pokud i po vypnutí příslušné LED je zjištěn nějaký odraz, jedná se o chybu a měření je anulováno. Za účelem zvýšení přesnosti se tento postup několikrát opakuje. Poté je tento proces zopakován pro různé poměry střídy vysílaného signálu, čímž se zjišťuje vzdálenost překážky. Naměřené hodnoty se ukládají do příslušných bitů tří datových registrů. Každý z osmi bitů příslušných registrů odpovídá jednomu z osmi čidel. Registry jsou tři, protože je program uzpůsoben pro detekci tří stupňů vzdálenosti překážky. Až proběhne toto měření pro všech osm připojených čidel, program se opakuje.
   Druhou důležitou funkci programu je sledování, vyhodnocování a sestavení příslušné reakce na dění na připojené I2C sběrnici. Detektor na sběrnici vystupuje jako SLAVE, což má za následek to, že naměřená data poskytuje nadřazenému řídícímu systému pouze na požádání. Požadavek je signalizován zasláním adresy detektoru na I2C sběrnici. Detektor požadavek vyhodnotí a zašle MASTER zařízení postupně data z tolika datových registrů o kolik projeví zájem. Maximálně však o tři. První vyslaný bajt reprezentuje detekci nejvzdálenějších překážek. Případné následující bajty upřesňují měřené hodnoty. Na následujícím obrázku je zachycen popis paketů představující jeden datagram na sběrnici I2C při čtení stavů čidel.

Popis komunikace při čtení dat z modulu
Obr. 10 - Popis komunikace při čtení dat z modulu


   Následující graf zobrazuje princip modulace výkonu svitu IR diody. Modul měří tři úrovně vzdálenosti, pro každou z nich je stanoven jiný jas diody. Sleduje se při jaké úrovni jasu dojde k detekci odrazu. Tento údaj se zaznamená. IR dioda je modulována na frekvenci 38kHz, což je pracovní frekvence IR detektoru.

Pulsně šířková modulace IR diody
Tab. 10 - Pulsně šířková modulace IR diody

   I2C sběrnice je zároveň využita i pro případné nastavení SLAVE adresy detektoru. Nastavení se provádí tak, že se na sběrnici připojí pouze tento detektor a vyšle se na obecnou adresu 00h (General Call) jeden bajt, představující novou adresu detektoru. Jakmile ji příjme, přepíše si v integrované EEPROM paměti údaj o adrese a následně odpovídá jen na tuto novou adresu.

4. 1. Stanovení maximálního času měření pro různé typy překážek

Program pro měření je navržen tak aby měření probíhalo minimální možnou dobu. Toho je docíleno hlavně tím, že se nejprve zjištují nejvzdálenější objekty (max. výkon IR diody)V případě, že v této oblasti není zjistěn objekt, je tento měřící cyklus ukončen a pokračuje se na další senzor. V případě, že je objekt zjištěn, dojde ke snížení výkonu diody a k opakování měření, což zapříčiní prodloužení doby měření. Celková doba měření se dá spočítat dle následujícího vzorce:

Výpočet minimálních časů měření
8 počet senzorů
3 počet opakování měření pro potvrzení správnosti
600 doba svitu LED (µs)
1000 doba čekání před detekcí poruchy (µs)
A počet senzorů u kterého je překážka detekována jako DALEKO
B počet senzorů u kterého je překážka detekována jako STŘEDNĚ
C počet senzorů u kterého je překážka detekována jako BLÍZKO
Tab. 3 - Významy parametrů vzorce pro stanovení doby měření


Typ překážky Čas měření
Bez překážky: 38.4ms
Překážka na jednom senzoru daleko 40.0ms
středně 41.6ms
blízko 43.2ms
Překážka na všech senzorech daleko 51.2 ms
středně 64.0 ms
blízko 76.8 ms
Tab. 4 - Příklady časů pro různé typy překážek

4. 2. Sběrnice I2C

   Sběrnice I2C (I2C-bus, Inter-IC-bus, TWI) je dvouvodičové datové propojení, mezi jedním nebo několika procesory (MASTERS) a speciálními periferními součástkami (SLAVES). Ochrannou známku na název I2C drží firma PHILIPS. Ostatní výrobci vybavují své obvody komunikující na sběrnici stejných parametrů, ale označují ji jinými názvy (např. TWI - Two Wire Interface) Všechny součástky jsou připojeny na téže sběrnici a jsou cíleně vybírány svými adresami. Adresy i data se přenášejí týmiž vodiči. Sběrnice umožňuje velmi jednoduché propojení mezi několika integrovanými obvody a bezproblémové dodatečné rozšiřování.
   Mohou být připojeny všechny integrované obvody, které zvládají speciální protokol sběrnice. Mimo integrovaných obvodů RAM, EEPROM, obvodů pro rozšíření portů, A/D a D/A převodníků a obvodů hodinových signálů existuje ještě celá řada speciálních integrovaných obvodů, jako například budiče displejů nebo integrovaných obvodů pro televizní a audio techniku. Sběrnice I2C používá sériovou datovou linku SDA a linku hodinového signálu SCL. Data a adresy se přenášejí podobně jako v posuvných registrech společně hodinovými impulsy. Obě linky je možno používat jako obousměrné. Jsou vybaveny zvyšovacím (pull-up) odporem a mohou být každým účastníkem sběrnice staženy na nízkou úroveň výstupem s otevřeným kolektorem.

Příklad zapojení I2C
Obr 11. - Popis I2C sběrnice

4. 3. Implementace I2C Slave

   Použití procesoru vybaveného hardwarovým modulem pro práci s I2C má za následek jednoduchou implementaci poměrně složitého úkolu, jakým je obsluha I2C jako slave. Architekturou procesoru je dáno, že obsluha sběrnice je programově realizována prostřednictvím přerušení (TWI - Two Wire interface Interrupt), které je generováno při detekci určité události na I2C sběrnici (napříklat rozpoznání vlastní adresy). Po vyvolání přerušení je možno programově zjistit, jaká událost k němu vedla. To se děje prostřednictvím registru TWSR (Two Wire interface Status Register) do kterého je uložen kód události. Pro přístup k přijatým datům či pro přípravu dat k odeslání se používá registr TWDR (Two Wire interface Data Register), ve kterém jsou data uložena při jejich přijetí, či do kterého program uloží data, která se budou odesílat.

4. 4. Obsluha I2C na straně MASTER

   Jako příklad implementace čtení dat z modulu IR senzorů v MASTER mikroporcesoru je použit programovací jazyk BASCOM. Bylo využito možností práce s I2C, které nám tento programovací prostředek nabízí. Následující blok programu osloví SLAVE modul jeho adresou (0111000b), postupně si vyžádá zaslání tří bajtů dat a ty si uloží do proměnných ir_sensors1ir_sensors3

I2cstart ' I2C START Condition
I2cwbyte &B01110001 ' Write Address & Read Request to I2C Bus
I2crbyte ir_sensors1, Ack ' Read DATA, Transmit Acknowledge byte
I2crbyte ir_sensors2, Ack ' Read DATA, Transmit Acknowledge byte
I2crbyte ir_sensors3, Nack ' Read DATA, Transmit Not Acknowledge byte
I2cstop ' I2C STOP Condition
Kód 1. - Příklad I2C Master (čtení dat)

4. 5. Změna I2C SLAVE adresy modulu

   Výchozí adresa modulu je 0111000b. Pokud z nějakého důvodu nevyhovuje je možné ji prostřednictvím I2C sběrnice změnit. Toho se využije například v případě, že je v zapojení použito více těchto modulů, kdy každý musí mít jinou adresu. Nastavení se provádí zasláním jednoho bajtu dat ve formátu xAAAAAAAb na adresu 00000000b (Generall Call Address). Adresa je tvořena sedmi bity (AAAAAAA). První bit adresy je ignorován. Následuje příklad změny adresy modulu z výchozí (či neznámé) na adresu 1110111b. Nastavení se po přijetí uloží do EEPROM paměti a modul s ní bude pracovat až do další změny.

I2cstart ' I2C START Condition
I2cwbyte &B00000000 ' Write Generall Call Address
I2cwbyte &B01110111 ' Write New Address
I2cstop ' I2C STOP Condition
Kód 2. - Naastavení I2C SLAVE adresy)

5. Závěr

   Zdárná realizace funkčního detektoru si vyžádala vyřešení mnoha dílčích problémů, které nejsou na první pohled a po teoretickém prostudování zadání, vůbec patrné. Mezi hlavní patřilo stanovení vhodného předřadného odporu k IR diodám. Malá hodnota způsobovala při provozu diody takové proudové odběry, které měli za následek rušení a nesprávnou funkci celého zařízení. Velká hodnota zase neumožnila detekovat vzdálenější objekty. Rovněž nalezení vhodných poměrů střídy pro generování PWM pro řízení jasu IR diody zabralo poměrně velké množství času. Můžu ale prohlásit, že všechny podstatné problémy byly vyřešeny a případné další úpravy programu budou čistě kosmetického charakteru.

5. 1. Možnosti rozšíření počtu senzorů

   Detektor je navržen pro připojení až osmi na sobě nezávislých čidel. Tomu odpovídá výběr použitého procesoru. V případě požadavku na větší počet senzorů existují dvě možnosti řešení. První spočívá v použití více těchto detektorů. Všechny jsou do nadřazeného řídicího systému připojeny prostřednictvím sběrnice, takže není problém rozšířit jejich počet na požadované množství. Absolutní teoretické maximum je dáno sedmibitovou adresou zařízení, kterou musí mít každý detektor jinou.

   Druhá možnost rozšíření spočívá v použití jiného AVR procesoru, který je vybaven dostatečným počtem I/O portů, například procesor ATMega128 jich nabízí až 53, což umožní připojit až 26 senzorů. Použití tohoto procesoru klade větší nároky na návrh a výrobu odpovídající desky plošných spojů.

5. 2. Možnosti zvýšení dosahu

Maximální dosah senzorů ovlivňuje mnoho faktorů. Mezi hlavní patří reflexní vlastnosti detekovaných překážek, což ale konstrukcí senzoru ovlivnit nemůžeme.Hlavním parametrem, který ovlivnit lze je vyzářený výkon IR diody. Zde jsme ale limitováni hlavně možnostmi použité diody a možností diodu napájet odpovídajícím proudem. V této konstrukci je vysílací dioda napájena přímo z výstupu příslušného portu mikroprocesoru. Použitý typ je schopen dodat proud maximálně 40mA na jeden port, což je pro vysocesvítivé diody poměrně málo. Z tohoto důvodu byla použita standardní IR dioda. V případě použití dodatečných zesilovacích prvků by bylo možno použít diody schopné dodávat větší zářivý výkon, či použít diod více. Výkon můžeme dále ovlivňovat vhodně zvoleným činitelem plnění pulsně-šířkové modulace jasu diody. Tím však můžeme celkový výkon jen snižovat, čehož se v konstrukci využívá pro detekci bližších překážek.

Dalšími faktory ovlivňujícími dosah je použitá vlnová délka diody, která musí odpovídat vlnové délce, na níž má přijímací prvek největší citlivost. Použitá frekvence modulace světelného paprsku je rovněž velmi důležitá, protože přijímací prvky se vyrábějí na konkrétní pracovní frekvenci. V tomto případě je touto frekvencí hodnota 38kHz.

5. 3. Příklad použití

Modul senzorů je primárně určen pro apliakce v edukačních mobilních robotech provozovaných na katedře Robototechniky Fakulty Strojní, Vysoké Školy Báňské. Předpokládá se rozmístění senzorů po obvodu robotu tak aby jeho řídící systém měl přehled o překážkách v jeho bezprostředním okolí. Další možnost použití je aplikace 'sledování podložky' kdy jsou čidla obrácena směrem k podložce, po které se robot pohybuje a v případě, že se přiblíží k hraně, je poskytnuta řídicímu systému iformace o nezpůsobilosti terénu před robotem.

Mobile robot
Obr 12. - Příklad osazení senzorů na mobilní robot

6. Použité zdroje

  1. http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf Adobe PDF
  2. http://www.gme.cz
  3. http://www.ges.cz
  4. http://www.osram.com
  5. www.hw.cz
  6. http://www.eagle.cz
  7. http://www.povray.org/
  8. Váňa, V Mikrokontroléry Atmel AVR - Bascom, BEN, 2004
  9. Váňa, V. Mikrokontroléry ATMEL AVR - popis procesoru, BEN, 2003
  10. Novák, P. Mikropočítačové řídicí systémy, Ostrava : VŠB, 2002

Valid HTML 4.01 Strict