Pfad:
Home =>
AVR-Übersicht =>
Anwendungen >
IR-Steuerung => IR-Empfänger
(This page in English:
IR-Empfänger zum Schalten und Regeln mit AVR-Prozessor ATtiny13
Haben Sie einen ollen Verstärker, bei dem noch keine IR-Fernsteuerung mit dabei war? Möchten
Sie ihn noch nicht auf den Elektronikmüll werfen, weil er seit 25 Jahren so fein mitspielt?
Und um nicht jedesmal vom Sofa aufstehen zu müssen, wenn private Fernsehsender in den Werbepausen
die Lautstärke auf "brüllend" umstellen, um die Aufmerksamkeit für
die dann folgenden wichtigen Durchsagen auch bei ihren Nachbarn zu wecken, brauchen Sie DAS hier. Es
macht aus ihrem Oldtimer ein hypermodernes Gerät, das sogar mit beliebigen vorhandenen
IR-Fernsteuerungen zusammenarbeitet, so dass sie zu den vorhandenen 12 unsichtbar blinkenden
Schächtelchen kein weiteres Eigenes hinzu basteln müssen. Und das alles ohne Eingriff in
ihren geliebten Oldtimer.
- Eigenschaften der Schaltung,
- Hardware, Funktionsweise,
- Aufbau,
- Software.
Diese Seite beschreibt einen IR-Fernsteuerempfänger mit einem ATtiny13, mit dem ein angeschlossenes
Gerät ein- und ausgeschaltet sowie eine Audio-Quelle in der Lautstärke geregelt werden kann.
Die beschriebene Schaltung hat folgende Funktion:
- Die Signale einer IR-Fernsteuerung werden empfangen, ausgewertet und
- schalten die Stromversorgung eines angeschlossenen Geräts über ein Relais ein oder
aus,
- regeln die Lautstärke eines Audio-Signals.
- Durch Umprogrammieren des Prozessors ATtiny13 kann jede beliebige Fernsteuerung und jede beliebige
Tastenkombination zum Schalten und Regeln verwendet werden. In der hier vorliegenden Fassung ist
eine Fernsteuerung für einen Beamer eingestellt, der gleichzeitig mit dem Verstärker
ein- und ausgeschaltet werden soll und dessen interner Lautstärkeregler sowieso nicht
gebraucht wird.
- Die Schaltung kann auf Prozessoren mit mehr I/O-Pins erweitert werden und kann bei entsprechender
Erweiterung der Software dann weitere Relais, digitale Schalter oder Digitalregler ansteuern.
- In der Software ist ein automatisches Abschalten des angeschlossenen Verbrauchers nach fünf
Stunden Betrieb implementiert. Durch Ändern der Software kann dies an eigenen Bedarf angepasst
oder abgeschaltet werden.
An den Seitenanfang, Zur IR-Leitseite
Der Aufbau der Hardware geht aus dem Schaltbild hervor. Es ist in die Einzelmodule Stromversorgung,
Relais-Schalteinheit, Mikrocontroller-Einheit und Analog-Regeleinheit unterteilt.
Stromversorgung
Die Stromversorgung liefert aus der Netzspannung ungeregelte 12 V für die Relaissteuerung
und geregelte 5 V für den Prozessor und die Analog-Einheit. Für den bescheidenen
Verbrauch der Schaltung reicht ein kleiner Printtrafo von 1 VA aus. Der Standby-Verbrauch wird
von den Wärmeverlusten des Trafos und der Bereitschafts-LED dominiert und ist sehr niedrig.
Relais-Schalteinheit
Das handelsübliche 12 V-Relais zum zweipoligen Schalten von 240 V/8 A Last wird
mit einem ausreichend dimensionierten Transistor geschaltet.
MC-Einheit
Der Mikroprozessor ATtiny13 läuft mit dem internen Taktgenerator von 1,2 MHz ohne Probleme
beim Timing. Für den Empfang der IR-Signale ist ein handelsüblicher IR-Empfänger vom
Typ TSOP1738 Vishay/Telefunken an Port PB0 angeschlossen. Es kann genauso gut ein Siemens SFH507 oder
Infineon SFH5110/5111 eingesetzt werden.
Zum Ansteuern des Relais ist PB2 als Ausgang konfiguriert.
PB1 ist gleichzeitig Ausgang für die Ansteuerung der LED (zeigt im normalen Betrieb die
Aktivierung des Relais an und bestätigt korrekte Fernsteuerbefehle mit einem einfachen Blinken,
im Debug-Modus zeigt die LED die empfangenen IR-Signale an) sowie Eingang für den angeschlossenen
Taster (zum Einschalten des Geräts auch ohne die Fernsteuerung, um z. B. CDs zu hören).
Der Prozessor steuert mit den Portbits PB3, PB4 und PB1 ferner die Potentiometerschaltung der
Analogregelung an.
Zum Programmieren der MCU in der Schaltung ist eine 10-polige ISP-Schnittstelle vorgesehen. Bei
angeschlossenem Programmiergerät funktioniert der IR-Empfang erfahrungsgemäß nicht.
Der Stecker zur ISP-Schnittstelle ist daher nach dem Programmieren abzuziehen.
Analogregler
Zum Regeln des Analogsignals wird ein handelsüblicher MCP42010MIC mit zwei Potentiometern
verwendet. Die Audiosignale sind sicherheitshalber mit Elkos vom Gleichstromanteil her abgetrennt. Die
Steuerung der Lautstärke erfolgt über den Prozessor für beide Kanäle gleichzeitig.
Die Lautstärke ist in 54 Stufen mit einer angenäherten Exponentialkurve einstellbar,
um die Bedienung zu erleichtern.
Die Exponentialkurve in der Tabelle zur Lautstärkeneinstellung.
An den Seitenanfang, Zur IR-Leitseite
Die Schaltung wurde auf Lochraster aufgebaut und in ein geeignetes Plastikgehäuse verfrachtet.
Der 240 V-Ausgang und die Buchsen für die Analog-Ein- und -Ausgänge sind auf der
Gehäuse-Oberseite angeordnet.
Von vorne sind der IR-Empfänger, die beiden LEDs und der Taster zu sehen.
An den Seitenanfang, Zur IR-Leitseite
Der kommentierte Assembler-Quellcode ist in HTML-Format hier und in
Assembler-Quellcode-Textformat hier zugänglich.
Der Maschinencode
- initiiert den Stapel, die Ein- und Ausgänge des ATtiny13, liest den letzten im EEPROM
gespeicherten Stand des Lautstärkerglers, wandelt diesen in einen Exponentialwert um und
gibt diesen an das Potentiometer weiter, startet den Timer 0 mit einem Vorteiler von 64
(18,75 kHz, 53,3 µs pro Tick), ermöglicht den PCINT am
IR-Empfänger-Eintrag, setzt den SLEEP-Mode und ermöglicht Interrupts,
- wertet nach PCINT-Interrupts die gesamte Zyklusdauer (von Low bis erneut Low am IR-Eingang)
aus, speichert den Timerstand und setzt die T-Flagge (die weitere Dekodierung des Signals erfolgt
außerhalb der Interrupt-Service-Routine),
- reagiert auf Überläufe des Zählers (13,65 ms), indem zwei weitere
Zählerbytes (3,49 s bzw. 14,9 s) herabgezählt und indem ein weiterer
"Viertelstundenzähler erhöht und mit dem Sollwert von 5 Stunden verglichen
wird. Ist dieser Zeitpunkt erreicht, wird der Relaisausgang und die LED abgeschaltet,
- wertet im Hauptprogramm-Loop die Dauer der IR-Fernsteuersignale aus.
- Beim ersten Signal (Startsignal) wird bei korrekter Dauer die Erkennung gestartet.Die
korrekte Dauer des Startsignals ist in der Tabelle "IrAdrTab" für die
verwendete Beamer-Fernsteuerung mit 230..245 Timerzyklen relativ breit definiert, so
dass der Sequenzstart auf jeden Fall erkannt wird.
- Danach sendet die verwendete Fernsteuerung das Bitmuster 0b00001111, wobei eine Null 17..30
und eine Eins 31..45 Zeiteinheiten lang ist. Dem folgt ein Trennsignal mit 80..95 Zeiteinheiten
Dauer.
- Die weitere Signalerkennung der folgenden acht Signale wird in einem Register rIrC
gespeichert: ein kurzes Signal schiebt eine Null, ein langes eine Eins in das Register.
- Wird das abschließende, sehr lange Signal empfangen, erfolgt nach einem Vergleich mit
dem letzten empfangenen Befehlsmuster (in rIrCL) die abschließende Auswertung.
Entsprechend des Musters wird geschaltet oder geregelt, gefolgt von einem kurzen LED-Signal.
Im Falle, dass vor dem Assembleren der Debug-Mode eingeschaltet wird, gibt die LED das empfangene
Codebyte in Dezimalform aus.
Notwendige Varianten für den Quellcode sind z. B.
- die Anpassung der Tabelle "IrAdrTab" an die Signaldauern der IR-Fernsteuerung,
z. B. kürzere oder längere Dauern, anderes Addressbyte, Fehlen des Trennsignal
zwischen Address- und Befehlsbyte, 16-bittiges Befehlswort statt eines Bytes, etc.,
- das Schalten und Regeln ohne Verifikation und schon nach Empfang des ersten Codebytes, z. B.
wenn die Fernsteuerung den Code nur ein einziges Mal sendet und diesen nicht wiederholt,
- Anpassen an eine andere Modulationsfrequenz, der TSOP1738 deckt sehr gut die Mitte zwischen 36
und 40 kHz ab und alle meine Fernsteuerungen sind lesbar, durch Anpassung an die
tatsächliche Modulationsfrequenz kann aber die Empfindlichkeit noch gesteigert werden.
Abschließend: Der Kasten leistet bei mir seit Wochen gute Dienste.
An den Seitenanfang, Zur IR-Leitseite
©2010 by http://www.avr-asm-tutorial.net