Pfad: Home =>
AVR-Übersicht =>
IR-Steuerung => IR-Transmitter
IR-Fernsteuersender mit AVR-Prozessor ATtiny45
- Eigenschaften der Fernsteuerung
- Hardware und Funktionsweise
- Aufbau der Fernsteuerung
- Software
Die hier beschriebene Fernsteuerung bietet folgende Möglichkeiten:
- Sie ist für jedes beliebige Gerät programmierbar. Dazu sind die Fernsteuercodes
- Angesteuert werden können alle Geräte, die sich im Empfangsbereich des IR-Senders
befinden und deren Code bekannt und programmiert ist. Mit einem Tastendruck lassen sich daher
gleichzeitig mehrere Geräte beliebig schalten.
- Ausgewählt und gestartet wird die IR-Sende-Sequenz mit der eingebauten Zehnertastatur.
- Beginn und Ende des Sendevorganges sind über eine LED kontrollierbar.
- Die Stromversorgung erfolgt aus zwei Batterien und kann stromsparend mit einem Schalter
ausgeschaltet werden (keinerlei Standby-Verbrauch).
- Bei Gerätewechsel, defekter oder verlorener Original-Fernsteuerung, lässt sich
diese Steuerung bequem umrüsten (vorausgesetzt, die Messprotokolle der Steuerung sind
noch vorhanden).
Das Schaltbild der Fernsteuerung:
Im Zentrum steht der Prozessor ATtiny45. Er wurde ausgewählt, weil er mit einem Quarz
getaktet werden kann (hier: mit 2,4576 MHz). Die Taktfuse des Prozessors ist entsprechend auf
den externen Quarz mit mittlerer Frequenz umzustellen. Von dieser Quarzfrequenz abgeleitet ist
die Modulationsfrequenz der IR-Leuchtdiode LD271 mit 38,4 kHz, kann aber softwaremässig
auf Werte zwischen 36 und 40 kHz umgestellt werden.
Die IR-Leuchtdiode LD271 wird nicht direkt von einem Portpin sondern mit einer
Konstantstromquelle angetrieben. Diese ist mit zwei Dioden, dem Leistungstransistor BD439 und den
Emitterwiderständen aufgebaut und auf 93 mA (= 0,7 V / 7,5 Ω)
eingestellt. Dadurch kann die Betriebsspannung der Schaltung beliebig zwischen 2,7 und 5 V
schwanken, ohne dass es zu Leistungsschwankungen oder Zerstörung der LED kommt.
Die Stromversorgung mit zwei Batterien oder Akkus ist hier nicht mit dem Schalter eingezeichnet.
Die Prozessorsignale SCK, MISO, MOSI und RESET sind an einen Standard-10-pin-ISP-Stecker
geführt, über den der Prozessor jederzeit umprogrammiert werden kann. Beim Programmieren
über das Studio und ein STK500 sollte die Batterieversorgung abgeschaltet sein, die Schaltung
aus dem Studio/STK versorgt werden und VTG auf 3 V eingestellt sein. Damit die Schaltung
korrekt funktioniert, sollte der ISP-Stecker nach dem Programmieren abgezogen (Störung des
AD-Eingangs) und auf Batterieversorgung umgeschaltet werden.
Nicht eingezeichnet ist eine LED, die Beginn und Ende des Sendens anzeigt. Diese ist an den
Portpin anzuschließen, der als MISO bezeichnet ist. Die Anode der LED geht über
einen Strombegrenzungswiderstand von z. B. 220 Ω an die positive Betriebsspannung
(Ausgang ist active low).
Am Eingang ADC1 des Prozessors ist eine Zehnertastatur angeschlossen, die über eine
Widerstandsmatrix eine tastenspezifische Analogspannung erzeugt. Die Matrix ist so dimensioniert,
dass sie mit handelsüblichen 5%-Widerständen auskommt, beim Auslesen die obersten
8 Bits des AD-Wandlers ausreichend genau sind und eine weitgehend lineare Zuordnung von
Taste und Spannung ermöglicht wird. Die Berechnungsroutinen sind
im Open-Office-Format oder als
Excelsheet verfügbar und können damit leicht umdimensioniert werden.
An den Seitenanfang, Zur IR-Leitseite
Schaltung, Batterien, Zehnertastatur, Widerstandsmatrix und die beiden LEDs passen in ein kleines
Plastikgehäuse ...
... der Einbau der Einzelteile ...
... der Prozessorteil ...
... und die Widerstandsmatrix im Detail.
An den Seitenanfang, Zur IR-Leitseite
Der Assembler-Quellcode ist in HTML-Format hier oder als
Assembler-Textdatei hier verfügbar.
Das Programm arbeitet ohne Timer, das Timing wird durch exakte Schleifenlängen erledigt. Alle
Schleifen sind 64 Takte lang, entsprechend einer Zyklusdauer von 26,04 µs. Nur
die AD-Wandlung erfolgt interruptgesteuert.
Die Tabellen sind folgendermaßen organisiert:
- Die Sendecodes für die einzelnen Tasten (pStar, pNmbr, p0 bis p9) kommen unter die
entsprechenden Labels, sie enden mit einem oder zwei Null-Bytes.
- Aktive Signale mit eingeschalteter und modulierter IR-LED beginnen mit gesetztem Bit 6 und
der Anzahl Wiederholungen (Beispiel: 1+cH). Ist zusätzlich Bit 7 gesetzt (Beispiel:
1+cHW), dann folgen die aktive und passive Zeit mit je zwei Bytes. Ist Bit 7 nicht gesetzt,
folgen diese mit je einem Byte. Wiederholt sich die Folge mehrfach, wird die Zahl der
Wiederholungen im ersten Byte angegeben (Beispiel: 4+cH für vierfach). Die vier bzw.
zwei folgenden Bytes geben die Anzahl Zyklen an, also die Anzahl gesendeter IR-Signale zu
je 26,04 µs Dauer (bei Pausen derselbe Ablauf mit ausgeschalteter LED).
- Jede Zeile muss eine gerade Zahl an Fünfer- bzw. Dreier-Paketen enthalten, da es
sonst zum Einfügen einer Null und damit in dieser Zeile zum Abbruch der Sendefolge
käme. Die Warnung des Assemblers, dass die Anzahl Bytes in einer Zeile nicht geradzahlig
sei und dass eine Null eingefügt wurde, ist daher bei den Tabellen sehr ernst zu
nehmen.
An den Seitenanfang, Zur IR-Leitseite
©2010 by http://www.avr-asm-tutorial.net