6

Click here to load reader

praxis mikrocontroller Unsichtbare Kommandos - cczwei.de CC2-AVR.pdf · ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von geladen werden, sodass jeder den Code genau

  • Upload
    vodang

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: praxis mikrocontroller Unsichtbare Kommandos - cczwei.de CC2-AVR.pdf · ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von geladen werden, sodass jeder den Code genau

praxis mikrocontroller

elektor - 6/2008

Unsichtbare KommandosMega88 liest InfrarotsignaleVon Udo Jürß und Wolfgang Rudolph

Nachdem in der letzten Folge des ATM18-Projekts ein LC-Display an das Testbord angeschlossen wurde und der Controller sich nun der Welt mitteilen kann, wollen wir uns dieses Mal mit einer Fernbedienung beschäftigen, wie sie bei jedem Zuhause herumliegen wird. Wir benutzen eine Ausführung mit RC-5-Code und wollen die übertragenen Informationen auf dem LC-Display darstellen.

Unser ATM18-Projekt wird in diesem Schritt ein Analysegerät zur Darstel-lung der von der Infrarot-Fernbedie-nung übermittelten Informationen, die für unsere Augen unsichtbar sind und in ihrer Folge auch zu schnell wären,

um ein Muster erkennen zu können. Dennoch ist es möglich, etwas zu er-kennen. Wenn wir eine Fernbedienung vor eine Digitalkamera halten, können wir das Aufleuchten der Infrarot-Sen-de-LED auf dem Monitor sehen, da

viele dieser Kameras Bildsensoren ha-ben, die infrarotempfindlich sind. Mit einer Photodiode und einem Os-zilloskop kann das ganze Impulste-legramm untersucht werden (Bild 1). In der echten Anwendung ersetzt ein

Page 2: praxis mikrocontroller Unsichtbare Kommandos - cczwei.de CC2-AVR.pdf · ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von geladen werden, sodass jeder den Code genau

6/2008 - elektor

integrierter Infrarotempfänger die Fotodiode.

InfrarotempfängerWir haben uns für den Infrarotempfän-ger TSOP1736 von Vishay Semicon-ductors (früher Vishay Telefunken) ent-schieden (Bild 2). Wie man im Block-schema (Bild 3) erkennt, enthält der Baustein eine Fotodiode, deren Signal zuerst verstärkt, dann gefiltert und an-schließend demoduliert wird. Der Aus-gang liefert Rechteckimpulse, wie sie in Bild 1 zu sehen sind. Den TSOP-Bau-stein gibt es in verschiedenen Ausfüh-rungen, die sich nur durch die Mitten-frequenz des integrierten Bandpass-Fil-ters unterscheiden. Wir verwenden die 36-kHz-Version, da die meisten Fernbe-dienungen auf dieser Frequenz arbei-ten. Es gibt auch Versionen für andere Frequenzen zwischen 30 und 40 kHz. Die richtige Frequenz ist aber nicht sehr kritisch, da die internen Bandpass-Filter relativ breitbandig sind. Der Empfänger funktioniert auch mit der falschen Fre-quenz, nur die Empfindlichkeit ist dann etwas geringer. Der TSOP-Baustein kann einfach an die Betriebsspannung und den ent-sprechenden Portpin des ATM18-Mo-duls angeschlossen werden. Wir ver-wenden den Portpin PB0. Direkt an GND und Vs des Bausteins liegt ein Tiefpassfilter mit 100 Ω und 100 nF zur Sicherstellung einer sauberen Ver-sorgungsspannung. Bild 4 zeigt diese Verbindungen.Sinnvoll ist es, ein flexibles Kabel mit drei Adern herzustellen, mit rot/blau oder rot/schwarz für die Stromversor-gung und einer Signalader mit einer anderen Farbe (Bild 5). Am Ende sollte eine zweipolige Pfostenbuchse angelö-tet werden. Die kann man dann einfach auf dem Testboard auf K4 (die externe 5-V-Stromversorgung) stecken. Aber

Achtung: Masse ist am Platinenrand! An dem Infrarotsensor TSOP1736 ist der Pin mit dem größeren Abstand zu den anderen Pins der Signalausgang (Vo, Pin 3). In der Mitte wird der posi-tive Pol der Versorgungsspannung (Vs, Pin 2) und außen, also dem Signalpin gegenüber, die Masse (GND, Pin 1) an-geschlossen (siehe Bild 2). Auch das Signalkabel sollte auf der Boardseite steckbar ausgeführt werden.

SignaleViele Infrarot-Fernbedienungen für Fernsehgeräte, Videorecorder und an-dere Geräte der Unterhaltungselektro-nik arbeiten mit dem von Philips de-finierten RC5-Standard. Man verwen-det dabei ein mit einer Frequenz im Bereich zwischen 30 kHz und etwa 50 kHz moduliertes Infrarotlichtsignal. Die Fernbedienung sendet einzelne Bursts, also Impulspakete mit einer Länge von

0,888 ms oder 1,776 ms. Bei einer Mo-dulationsfrequenz von 36 kHz enthält ein kurzer Burst 32 Einzelimpulse, ein langer 64. Das gesamte Datenpaket dauert etwa 25 ms und wird alle 100 ms wiederholt, solange eine Taste ge-drückt wird.Das Protokoll verwendet ein Bi-Pha-sen-Signal. Ein Bit hat eine Länge von 1,776 ms. Die Hälfte dieser Zeit ist ak-tiv, die andere Hälfte inaktiv. Wenn der 36-kHz-Puls in der ersten Hälfte liegt, bedeutet das eine logische Null, eine logische Eins wird durch einen Impuls in der zweiten Hälfte dargestellt. Das Signal wird mit einer immer gleich blei-benden Startsequenz eingeleitet. Dann folgen drei Datenbereiche. Bild 6 zeigt das empfangene Signal einer Fernbe-dienung am Ausgang des TSOP1736:

•Das Control-Bit (Ctl) wechselt bei jeder Tastenbetätigung zwischen 0 und 1. Der Empfänger kann auf die-

Bild 1. Oszillogramm eines RC5-Signals.

GND VS OUT

Bild 2. Bauform und Anschlussbelegung des TSOP1736.

PIN

Input

AGC

ControlCircuit

BandPass

Demodu-lator

80 k

1

071149 - 14

2

3

VS

OUT

GND

Bild 3. Blockschaltbild des Infrarotempfängers.

Page 3: praxis mikrocontroller Unsichtbare Kommandos - cczwei.de CC2-AVR.pdf · ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von geladen werden, sodass jeder den Code genau

praxis mikrocontroller

elektor - 6/2008

se Weise unterscheiden, ob eine Tas-te einmal lange oder mehrmals kurz gedrückt wird.

•Die Geräte-Adresse (Adr) enthält 5 Bits, wobei höherwertige Bits zuerst übertragen werden. Übliche Geräte-adressen sind 0 für Fernsehgeräte und 5 für Videorecorder. Auf diese Weise können mehrere Fernbedie-nungen im selben Raum eingesetzt werden.

•Der Datenbereich (Dat) enthält 6 Bits für bis zu 64 unterschiedliche Tasten. Die Nummerntasten 0 bis 9 erzeugen Kodes von 0 bis 9. Auch hier wer-den die höchstwertigen Bits zuerst gesendet.

Infrarot-Steuerungen können immer durch andere Lichtquellen gestört wer-den. Typische Störer sind Leuchtstoff-röhren, die impulsförmige Störungen

nur das vorliegende Hex-File zu laden und die Anwendung damit zu testen. Folgende Verbindungen müssen herge-stellt werden:

•LEDs 1…6 an PC0…PC5.•LCD-Erweiterung (optional) wie im

letzten Heft beschrieben.•Serielle Schnittstelle (optional) über

FTDI-USB-Seriell-Konverterkabel oder Pegelwandler.

Nach einem Neustart oder Reset lässt das Programm die LEDs drei mal blin-ken, und nach diesem digitalen „Hallo“ wartet es auf den Befehl einer RC-5-Fernbedienung. Die Tasten 1 bis 6 wer-den erkannt und schalten die entspre-chenden LEDs ein beziehungsweise wieder aus. Mit der Taste 0 werden alle Ausgänge abgeschaltet. An den ent-sprechenden Ausgangstreibern könnte schon sechs externe Verbraucher ange-schlossen werden. Die Open-collector-Ausgänge des ULN2003 schalten ma-ximal 500 mA und eine Spannung von maximal 50 V.

Wenn ein LCD oder eine serielle Schnitt-stelle angeschlossen wurde, erhält man völlig unzensiert alle Informationen, die von der Fernbedienung gesendet wer-den. Mit einem Terminalprogramm emp-fängt man zum Beispiel dies:

Bits: 0,1111100000000001, Ctrl:1, Addr: 0, Cmd: 1, Err:0

Die Geräteadresse war 0 (TV-Gerät) und es wurde die Taste 1 gedrückt. So lässt sich sehr gut testen, ob eine vorhandene Fernbedienung über-haupt den RC5-Code verwendet und welche Geräteadresse sie sendet. Da-mit hat man zugleich ein vielseitiges RC5-Testgerät.

Wie dies realisiert wurde, zeigt der Quelltext. Der 16-bit-Timer1 des ATme-ga88 wird benutzt, um die vom Infra-rotmodul kommenden Daten zu deko-dieren. Die an PB0 ankommenden Im-pulse lösen mit jeder steigenden oder fallenden Flanke ein Input Capture In-terrupt aus, und der momentane Wert des Timers1 wird im Input Capture Register (ICR1) zwischengespeichert. Die Signaldauer wird ausgewertet und Störungen im Signal werden durch ei-nen Vergleich mit den Minimum- und Maximumwerten der Signaltoleranz er-kannt. Die Signaltoleranz kann in „ap-plication.h“ eingestellt werden. Jeder Input Capture Interrupt startet eine Timeout Erkennung mittels eines Out-

verursachen. Die RC5-Software über-prüft daher die Startsequenz eines empfangenen Signals auf den korrekten Verlauf. Falls ein Signal von der erwar-teten Impulsfolge abweicht, muss es sich um einen Störimpuls handeln.

Beispielanwendung in CodeVisionAVR Auf der Elektor-Homepage findet man ein fertiges Anwendungsbeispiel für CodeVisionAVR. Eine freie „Elektor/CC²-Version“ des C-Compilers spezi-ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von www.elek-tor.de geladen werden, sodass jeder den Code genau studieren und Erwei-terungen entwickeln kann. Wer noch nicht so fit in C ist, kann alternativ mit dem im nächsten Abschnitt ge-zeigten BASCOM-Programm arbeiten. Es reicht aber auch, zunächst einmal

100n PB0/ICP

OUTGND

VS

071149 - 12

TSOP1736

100Ω

Bild 4. Die Verbindungen zum Anschluss des Infrarot-Empfängers.

Bild 5. TSOP mit RC-Filter (Widerstand und Kondensator) und Anschlussdrähten.

1

Start Ctl Address Data

0 0 1 0 1 0 0 0 1 1 1

Bild 6. Ein RC5-Beispielsignal mit Adresse 5 und Taste 7.

Page 4: praxis mikrocontroller Unsichtbare Kommandos - cczwei.de CC2-AVR.pdf · ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von geladen werden, sodass jeder den Code genau

6/2008 - elektor

put Compare Interrupts. Wenn die hier eingestellte maximale Zeit (5 * RC3_DOUBLE_TIME) abgelaufen ist, dann wird ein Output Compare Interrupt ausgelöst und die „rc5_ready“ Flag gesetzt. Nun wird mit der Funktion „rc5_decode( )“ die Anzahl der empfangenen Bits er-mittelt und das Timing des Si-gnals überprüft. Wenn zu wenige oder zu viele Bits erkannt wurden oder wenn das Signaltiming nicht stimmt, wird die Flag „rc5_error“ gesetzt. Diese beiden Flags kön-nen zur weiteren Programmsteu-erung verwendet werden. Die empfangenen Daten mit Errorflag werden auf dem LC-Display an-gezeigt. Dies soll als Hilfestellung zum Verstehen des Programms dienen und es ermöglichen, die Routinen an eigene Vorstellungen anzupassen.

Beispielprogramm in BASCOM-AVRIn BASCOM ist der Empfang von RC5-Signalen sehr einfach, weil dafür schon fertige Befehle vorhanden sind. Listing 1 zeigt eine kleine Anwendung. Hier werden am Eingang PB0 emp-fangene Daten an die Ausgänge des Ports C übergeben. Bei glei-chem Anschluss wie im C-Beispiel sieht man an den LEDs direkt die Bitmuster der gesendeten Kom-mandos. Voraussetzung ist, dass die Geräteadresse 0 verwendet wird, die Fernbedienung also zu einem TV-Gerät gehört. Mit dem Programm lassen sich ganz einfach drei oder vier Verbraucher steuern, die dann über die Zifferntasten fernbedient werden: 0 = alle Ver-braucher aus, 1 = nur erstes Gerät an, 2 = nur zweites Gerät an, 3 = Gerät 1 und 2 an und so weiter.Der entscheidende Befehl in Lis-ting 1 ist GETRC5 (address, com-

mand). Zuvor muss aber CONFIG RC5 verwendet werden, wobei der gewünschte Eingangspin (hier PB0) anzugeben ist. Die Byte-Variablen Address und Command müssen dekla-

riert werden. Außerdem muss der Interrupt freigegeben werden. Der RC5-Empfang arbeitet dann inter-ruptgesteuert im Hintergrund und verwendet den Timer 0. Jeder Auf-ruf von GETRC5 liefert die zuletzt empfangenen Daten. Ohne ein gül-tiges Empfangssignal erhält man Address = 255 und Command = 255. Wenn aber etwas empfan-gen wurde, erkennt man dies an der Adresse. Eine If-Abfrage für Adresse = 0 lässt also nur solche Nachrichten durch, die fehlerfrei empfangen wurden und die Ge-räteasdresse 0 (TV) enthalten. Ge-hört die Fernbedienung zu einem Videorecorder, muss entspre-chend auf Address = 5 abgefragt werden. Sobald die gewünschte Adresse auftaucht, sind auch die Daten in Command gültig. In Bit 7 bekommt man das Toggle-Bit, das im Beispiel abgeschnitten wird. Die anderen sieben Bits werden

am Port C ausgegeben. BASCOM verwendet die Routine aus der Application Note AVR410, die man auf der ATMEL-Homepage fin-det und die den RC5-Empfang mit As-

sembler realisiert. Im Hintergrund läuft also ein Assembler-Unterpro-gramm. Wenn man sich das As-sembler-Programm von ATMEL genauer ansieht, erkennt man, was genau abläuft. Aber vielleicht ist man dann auch ganz froh, dass es in BASCOM auch dann funkti-oniert, wenn man es nicht genau versteht. Der wichtigste Teil der Arbeit ist schon getan, und des-halb kann man sich ganz auf die Anwendung konzentrieren. Auf dieser Basis kann man sehr viele Vorgänge mit minimalem Aufwand schalten oder steuern. Da der RC5-Empfang im Hintergrund abläuft, lassen sich gleichzeitig beliebige andere Dinge erledigen.

(071149e)

Listing 1RC-Empfang mit BASCOM

‚RC5 receiver, input B.0‚Potputs port C

$regfile = “m88def.dat”$crystal = 16000000

Dim Address As Byte , Command As ByteConfig Portc = OutputConfig Rc5 = Pinb.0Enable Interrupts

Do Getrc5(address , Command) If Address = 0 Then Command = Command And &B01111111 Portc = Command End IfLoop

End

Eine MinianwendungMit dem SMD-bestückten ATM18-Controllermodul ist es möglich, einen selbständig funktionie-renden RC5-Empfänger aufzubauen. Mit nur 3 Bauteilen kann diese 0,8 Gramm wiegende Pla-tine eine LED ein- und ausschalten, wenn sie RC5-Kommandos übermittelt bekommt.

Ein kleiner Infrarotempfänger TSOP4436 von Vishay befindet sich in der Mitte über dem Prozes-sor und wird am unteren Rand mit PB0, PB1 und Masse verbunden. Rechts befindet sich ein Wi-derstand mit 390 Ω, der auf die Massefläche gelötet ist und eine LED die vom Widerstand aus an PC1_ADC1 angelötet wurde. Links kann man den Anschluss für die Betriebsspannung sehen.

Controller mit IR-Modul und LED

Das ATM18-Projekt im Computer:club

ATM18 ist ein gemeinsames Projekt von Elektor und dem Computer:club2 (www.cczwei.de) in Zusammen-arbeit mit Udo Jürß, dem Chefentwickler von www.microdrones.de. Die neuesten Entwicklungen und Anwendungen des ATM18-Systems stellt Wolfgang Ru-dolph vom Computer:club2 jeden Monat in der Sen-dung CC2-tv bei NRW-TV vor. Die hier beschriebene RC5-Dekodierung mit dem ATM18-AVR-Board ist in der Sendung 11 von CC2-tv zu sehen, die am 22. Mai erstmals gesendet wird.

CC2-tv wird von NRW-TV als Kabelprogramm in NRW und als Livestream im Internet gesendet (www.nrw.tv/home/cc2). Als Podcast gibt es CC2-tv bei www.cczwei.de und – ein paar Tage später – auch bei sevenload.de .

Page 5: praxis mikrocontroller Unsichtbare Kommandos - cczwei.de CC2-AVR.pdf · ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von geladen werden, sodass jeder den Code genau

praxis mikrocontroller

elektor - 6/2008

Fernbedienungs-HistorieWie es anfing - ein Blick zurück in die Anfangszeit der Fernbedienungen: Bereits im Jahr 1948 wurde in Amerika eine erste Fernbedienung auf den Markt gebracht. Diese war selbstverständlich kabelgebunden. In Deutschland wurden die ersten Fernbedienungen für Fernsehgeräte Anfang der 60er Jahre von verschiedenen Herstellern als Zubehör angeboten. Sie besaßen ein dickes und langes Kabel und wurden an der Rückseite der Geräte mit einem klobigen Stecker angeschlossen. Mit ihnen konnten nur Lautstärke, Helligkeit und Kontrast in einem gewissen Maße beeinflusst werden. Das Kabel lag immer im Weg und war eine Stolperfalle. Doch schon bald kamen die ersten schnurlosen Fernbedienungen – allerdings arbeiteten diese mit Ultraschall- und ohne Elektronik:

In dem Fernbedienungsgehäuse befanden sich zwei Metallstäbe, auf die mit vorgespannten kleinen Hämmern geschlagen wurde. Neben dem deutlich hörbaren Schall wurde auch ein gewisser Ultraschallanteil erzeugt. Dieser wurde in einem Röhrenverstärker im Fernsehgerät verstärkt, über Schwingkreise selektiert und zum Ein- und Ausschalten genutzt. Aber auch die Straßenbahn, welche damals in Kurven ein höllisches Ge-quietsche und Gekreische erzeugte, schaltete mit ihren Ultraschallanteilen öfter ein Fernsehgerät ein oder auch an der spannendsten Stelle des Krimis einfach aus. Mit den Fortschritten in der Halbleitertechnik konnte man bald Fernbedienungen bauen, die den Schall elektronisch erzeugten und mehrere Befehle übermitteln konnten.

Aber die Elektronik-Entwicklung ließ sich nicht aufhalten und der große Innovationsschritt hin zur Infrarot-Fernbedienung kam bald. Am Anfang hatte jeder Hersteller sein eigenes Verfahren zur Übermittlung der Befehle, aber dann entwickelte Philips einen RC5 genannten Standard, der wei-te Verbreitung fand. Allerdings haben viele Hersteller aus der Unterhaltungselektronik andere Protokolle entwickelt, die aber nicht die Verbreitung von RC5 fanden.

Page 6: praxis mikrocontroller Unsichtbare Kommandos - cczwei.de CC2-AVR.pdf · ell für unsere AVR-Artikelserie kann ebenfalls (kostenlos) von geladen werden, sodass jeder den Code genau

6/2008 - elektor