Építsünk számítógép-vezérelt univerzális távirányítót 1. rész

Vishay TSOP1838

Arduino-s kísérletezéseim során találkoztam az IRremote programkönyvtárral. Meg is építettem hozzá az áramkört a TSOP1838-as segítségével, de nekem több kellett: azt akartam, hogy számítógéppel fel tudjam fogni a távirányító-jeleket, valamint reprodukálni is tudjam őket. Ez vezetett az univerzális távirányító-projekthez, vagy kódnevén az IR.ino-hoz.

Hogyan működnek a távirányítók

Ahhoz, hogy ilyen léptékű projektbe foghassunk, először meg kell értenünk, hogyan működik az a fajta kommunikáció, amit végezni szeretnénk. Az infravörös távirányítók modulációjának alapvetően három rétege van. A legalapvetőbb réteg az infravörös LED által kibocsátott, tipikusan 950 nm-es közeli infravörös fény. Ugyanakkor fontos megjegyezni, hogy az ilyen hullámhosszú fény gyakorlatilag mindenütt ott van: nemcsak a napsugárzásban és az izzólámpák hőmérsékleti sugárzásában található meg, hanem még az energiatakarékos fénycsövekben is, ráadásul változatos frekvenciákon villódzva.

A következő szint az úgynevezett hordozójel. Ez a hordozójel nem más mint egy 38 kHz-es négyszögjel (előfordul ezen kívül még a 40 és a 36 kHz). Ez a hordozójel felelős azért, hogy a környezet hasonló jeleli közül kitűnjön az jel.

A harmadik szint maga a hasznos moduláció: ennek a kódolása protokollonként változik, ezért igazán részletekbe menően itt nem is tárgyalnám. A mostani diszkusszióhoz elég az, hogy ez a moduláció csupán annyiból áll, hogy ki és be kapcsoljuk a hordozójelet, így elég felvenni, hogy ez mikor történik meg. Fontos még megjegyezni, hogy a legtöbb protokoll előírja, hogy a jelet a távirányító bizonyos időközönként ismételje mind hibajavítás céljából, mind azért, hogy tudni lehessen, milyen hosszan volt lenyomva a gomb. Ha a kedves olvasót részletekbe menően érdekli a távirányító-protokollok világa, akkor itt többet is megtudhat.

A demodulátor

Vishay TSOP1838
Így néz ki a Vishay TSOP1838

Mivel a jelet el kell választani mind a háttérsugárzástól, mind hordozójelre potenciálisan emlékeztető zavaroktól, a fotodiódán felül is egy elég bonyolult áramkörre lesz szükségünk. Az ilyesmit általában nem egyszerű megépíteni, és anyagilag is érdemesebb készen beszerezni. Az egyik legkönnyebben hozzáférhető infravörös vevő a Vishay TSOP1838, de rokonai, mint a TSOP38438 vagy a TSOP38238 hasonlóan jó választás. A Siemens-től esetleg választhatjuk a SFH506-38-ast, bár ez jelentősen nehezebben hozzáférhető. A TSOP1838-ban a 38 a 38 kHz-es hordozójelre utal, de ez a modell 36-tól 40 kHz-ig aránylag érzékeny.

Mindezen érzékelőknek közös tulajdonsága, hogy mind az impulzusok, mind az impulzussorozatok hosszára (és a közötte hagyott szünetekre) érzékeny, mivel így szűri ki a sok zaj közül a tényleges jelet.

Az adó

Az adónak messze nem kell ilyen bonyolultnak lennie, ugyanis elég négyszögjelek sokaságát leadni. Ha nem mikrokontrollert használnánk, valószínűleg akkor se lenne nehéz összerakni egy áramkört egy astabil multivibrátorral (NE555) és egy frekvenciaosztóval (például 74HC161), de mivel mikrokontrollert használunk, az áramkör triviális: elég egy-két 950 nm-es infravörös LED és egy soros ellenállás a mikrokontroller egyik lábára. (Az Arduino-ban használatos ATMega 328P lábanként 60mA-t elvisel.) Ha nagyobb fényerőt (és így nagyobb hatótávolságot) akarunk, berakhatunk egy egyszerű NPN bipoláris tranzisztort is kapcsolaótranzisztorként, és ennek a kollektorára köthetjük a LED-eket, de vigyázni kell, nehogy elégessük a LED-jeinket. (Elméletben a LED-eknél ezenkél a frekvenciáknál elég az átlagos teljesítményt nézni, de lehet hogy valami hiba folytán a program folyamatosan égve hagyja a LED-eket?)

A kész áramkör

Az alábbiakban az elkészült áramkör kapcsolási rajza látható. Az ábra Eagle CAD Light verziójának segítségével készült.

Az IR.ino kapcsolási rajza
Az IR.ino kapcsolási rajza

Vegyük észre, hogy a TSOP1838 tápellátásánál egy egyszerű RC-szűrőt alkalmaztam, mivel problémáim voltak azzal, hogy a tápellátásként szolgáló USB kábelt ha megérintem, az érzékelő hamisan jelez. A méretezés az adattábla által javasolt. A soros ellenállást úgy választottam meg, hogy az USB által megengedett legnagyobb, 5.25 V-os feszültség mellett, a három LED-en kevesebb, mint 60 mA folyjon. Mivel ezt a projektet beforrasztásra terveztem, a rajzon nem is Arduino hanem már egy Atmega 328P szerepel, és egy kapcsolat egy SiLabs CP2102 alapú USB-UART átalakítóval.

Hogyan tovább?

Most, hogy készen van a hardver terve, ideje a szoftverrel is egy picit foglalkozni. A következő cikkben le fogok menni az Atmega 328P programozásának mélyebb szintjeire, és megmutatom, hogyan lehet nagyon jól megoldani az ezzel a feladattal kapcsolatos problémákat.

Az oldal használatával elfogadja, hogy az sütiket használ További információ

A sütik használatát érdemes engedélyezni a böngészőben.
The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Bezár