MMIA: IR dekodér/kodér, komunikace

Bc. Miroslav Skopal, UREL, FEEC, VUT Brno
skopalmseznam.cz

MIRA Logo

Obsah:

  1. Úvod
  2. Realizace
  3. IR Transceiver modul (TFDU4100)
  4. Protokol Philips RC-5
  5. Struktura RC-5 paketu
  6. Obslužný software MIRA
  7. MIRA - Nastavení
  8. Závěr
  9. Literatura

Úvod

Původní požadavek zadání tohoto projektu bylo realizovat aplikaci pro mikrokontroler na platformě AVR například ATMega16 dle zapojení z aplikační poznámky of firmy Atmel AVR410. Toto zapojení, ale využívá obvod SFH 506-36, který je hardwarově přizpůsobený pro příjem pouze protokolu RC5 (36kHz). Toto omezení pouze na protokol od firmy Philips RC-5 jsem ale vyhodnotil jako velký nedostatek, a tak jsem se rozhodl vytvořit vlastní zapojení s obvodem TFDU4100. Jedná se obvod navržený pro IrDA komunikaci a v jednom pouzdru tedy je obsažen jak pijímač tak i vysílač infračerveného záření(IR transceiver).

Realizace

Jak již bylo nastíněno v úvodu je celý modul IR přijímače/vysílače postaven na obvodu od firmy Vishay Telefunken TFDU4100. Tento obvod je primárně navržen jako fyzická vrstva IrDA protokolu verze 1.2. Tedy umožňuje přenášet data až do rychlosti definované standardem SIR (115.2kbit/s). Schopnost obvodu TFDU4100 zpracovávat signály s rychlosti 115.2kbit/s proto také umožňuje zachytit i mnohem pomalejší signály protokolů používaných v domáctnostech v IR dálkových ovladačích.

IR Transceiver modul (TFDU4100)

Zapojení tohoto modulu vychází z doporučeného zapojení z datasheetu součástky TFD4100. Jedná se pouze malou desku plošného spoje s povrchovou montáží SMD ve velikost 1206. Deska obsahuje pouze 2 rezistory 6k8 zapojené v sérii jako proudové omezení vysílací IR diody, jeden rezistor 47R, jeden rezistor 0R jako konstrukční můstek a tantalový kondenzátor 4.7uF pro vykrití proudových špiček při vysílání. K tantalovému kondenzátoru je paralelně připojen ještě blokovací kapacitor 100nF. Samotný IR transceiver je v plastovém pouzdře s 8 vývody(viz obrázek č.1). Pro snadné připojení k mikroprocesoru jsem na desku přidělal 5 pinovou lištu, na kterou jsou vyvedeny všechny potřebné pinu. (viz obrázek č.2)
IR Transceiver TFDU4100
Obrázek č.1 - IR Transceiver TFDU4100

Podrobnější informace o této součastce najdete zde.
Schéma zapojení
Obrázek č.2 - Schéma zapojení
Deska plošného spoje
Obrázek č.3 - Deska plošného spoje
Osazení součástek
Obrázek č.4 - Deska plošného spoje
Seznam součástek Popis pinové lišty pro připojení modulu Schéma a návrh plošné desky jsou ke stažení zde:
Soubory Eagle: [sch] [brd]
Deska plošných spojů: [ps] [pdf]

Protokol Philips RC-5


Pro demonstraci funkčnosti vytvořeného IR modulu jsem si vybral asi jeden z nejrozšířenějších protokolů RC-5. Jedná se o protokol vyvinutý firmou Philips právě pro domácí elektroniku. Protokol je definován jako 14 bitový paket s rychlostí cca 563 bit/s. Protokol používá bi-fázové kódování (Manchester coding). Komunikace je zahájena dvěma start bity s hodnotou "1". 3. vysílaný bit je toggle bit, 4 až 8 bit je adresa zařízení a nakonec 9 až 14 bit pak určuje příkaz. Jednotlivé bity jsou pak vysílány jako série impulsů o frekvenci 36kHz, a v závislosti jestli je bit uvozen pauzou 889us nebo ne se rozhoduje o logickém významu bitu. Trvání impulsů o frekvenci 36 kHz po dobu 889us pak tedy odpovídá zhruba 32 impulsům s periodou 27.77us. Jestliže před vysláním těchto 32 pulsů byla detekována mezera u délce 889us jedná se o logickou 1. V případě že byly přijaty nejprve tyto pulsy a pak následné pauza 889us jedná se logickou 0. Na následujícím obrázku je vyznačeno uspořádání impulsů a mezery vzhledem k logickému významu bitu.
Modulace RC5
Obrázek č.5 - RC-5 logická "1" a "0"

Struktura RC-5 paketu


Z obrázku č.6 je patrné jak jsou jednotlivé bity vysílány. Snad jen pro úplnost popíši význam jednotlivých bitů:
Struktura RC5
Obrázek č.6 - Struktura RC-5 paketu

Podrobnější popis v anglickém jazyce protokolu RC-5 a jiných můžete naleznout na stránkách SB-Project.

Obslužný software MIRA - Multiple Infra Red Application


Při vytváření obslužného software jsem si kladl za hlavní požadavek transparentnost využití IR modulu vůči libovolnému komunikačnímu protokolu. V praxi tato vlastnost znamená, že řídící software MIRA může automaticky detekovat různé komunikační protokoly(samozřejmě pouze ty které má implementovány). Detekce a rozpoznání jednotlivých komunikačních protokolů probíhá paralelně v rámci přerušení od čítače/časovače 1 v režimu INPUT CAPTURE. Přerušení je nastaveno tak, aby reagovalo na sestupnou hranu na pinu ICP1/PD6, a měří dobu v mikrosekundách mezi jednotlivými IR impulzi. Na sestupnou hranu právě proto, že obvod TFDU4100 generuje při detekci začátku IR impulsu krátký cca 8us impuls z klidové úrovně 1 do úrovně 0. Pro větší názornost přikládám obrazovku osciloskopu, kde horní signál prezentuje vysílání IR diody a dolní signál pak výstupní signál na pinu RXD z obvodu TFDU4100.
Průběh při přijímání IR signálu
Obrázek č.7 - Průběh při přijímání IR signálu

Samotná detekce a dekódování paketu RC-5 protokolu je řešena v jediné funkci s jedním vstupním parametrem us, který právě udává dobu mezi jednotlivými pulsy mikrosekundách. Prototyp funkce je tedy následující.
    void RC5(unsigned short int us)
  
Funkce pak pracuje jako stavový automat, který postupně dekóduje celý RC-5 paket. Výsledný paket je pak oznámen zavoláním stanového funkce ve tvaru
    void PrijatRC5(char Toogle, ,char Address, char Command)
  
Pro implementaci jiného protokolu je tedy nezbytně nutné aby detekující rutina obsahovala svou detekční funkci v tomto tvaru.

MIRA - Nastavení


Pro možnost jednoduché konfigurace celého systému MIRA jsou všechny důležité parametry systému jako je popis zapojení pinů k mikrokontroleru nebo určení ,které protokoly se mají v signálu detekovat, sdruženy do jediného hlavičkového souboru MIRA.h
Tento soubor je dostatečně okomentován a možné nastavení je v něm naznačeno, proto zde není nutné konfiguraci podrobně rozepisovat.

Závěr

IR modul s implementací protokolu RC-5 byl vyzkoušen na mikrokotroleru ATMega16 s taktem 8MHz a 16MHz. Testování probíhalo automatickým odesláním RC-5 paketů pro všechny možné adresy a všechny možné příkazy. Všechny takto odeslané pakety byly v pořádku detekovány a správně dekódovány. Další test probíhal příjímáním RC-5 paketů z dálkového ovladače od televizoru Sencor. Přijímač opět detekovat a rozkódoval všechny odeslané příkazy. Poslední zkouška funkčnosti proběhla odesláním příkazů na televizi Sencor, která jsem získal čtením příkázu v předchozím testu. I poslední test proběhl v pořádku.
Upozornění: V průběhu ladění a testování jsem si všimnul jednoho nedostatku konstrukce a to, že při trvalém svícení IR diodou se výrazně zahřívají rezistory R1 a R3, přes které při konstantním svícení teče proud až 500mA. Aby se zamezilo trvalému svícení IR diody je ve funkci MIRA_Init() obsažen příkaz pro její zhasnutí. Nevýhodou je fakt, že mikrokontroler v režimu programování přepíná všechny I/O piny do stavu vysoké impedance a tento stav je na pinu TXD, obvodu TFDU4100, vyhodnocen jako logická 1, tedy IR diody trvale svítí při programování mikrokotroleru. Tuto vlastnost by bylo možné vyřešit přidáním odporu cca 1000R mezi zem a pin TXD.
MIRA Modul
Obrázek č.8 - Fotografie hotového modulu
Testovací zapojení
Obrázek č.9 - Fotografie testovacího zapojení

Zdrojové kódy systému MIRA jsou ke stažení zde

Literatura

[1] MATOUŠEK, D. Práce s mikrokontroléry Atmel AVR. Praha: BEN - technická literatura, 2003.
[2] MANN, B. C pro mikrokontroléry. Praha: BEN - technická literatura, 2003.
[3] BERGMANS, S Philips RC-5 Protocol . Nizozemsko, 2008.http://www.sbprojects.com/knowledge/ir/rc5.htm
[4] ATMEL Datasheet ATMega16 . USA, 2008. www.atmel.com/dyn/resources/prod_documents/doc2466.pdf