Wer eine Infrarot-Fernbedienung auslesen möchte, stößt schnell auf eine erstaunliche Vielfalt an Protokollen, Timing-Varianten und Trägerfrequenzen. Genau hier spielt ein PIC-Mikrocontroller seine Stärken aus: Timer, Interrupts und Capture-Module ermöglichen es, IR-Signale zuverlässig zu messen, zu dekodieren und als universelle Kommandos weiterzuverarbeiten. Ein PIC als Universal-Empfänger ist besonders praktisch, wenn Sie mehrere Geräte (TV, Receiver, Klimagerät, LED-Controller) mit einer eigenen Elektronik steuern wollen – etwa in Smart-Home-Projekten, bei DIY-AV-Setups oder in industriellen Bedienkonzepten, in denen eine einfache Fernbedienung als robustes Eingabegerät dient. Der Trick besteht darin, nicht das Roh-IR-Licht direkt zu „sehen“, sondern das demodulierte Digitalsignal eines IR-Empfängermoduls auszuwerten. Damit wird aus einer lichtbasierten Übertragung eine sauber getaktete Folge von High/Low-Pulsen, die sich sehr gut mit einem PIC analysieren lässt. In diesem Artikel lernen Sie, wie IR-Fernbedienungen grundsätzlich senden, welche Standards besonders häufig vorkommen, wie Sie mit einem PIC die Pulsbreiten messen und daraus Codes ableiten – und wie Sie Ihren Decoder so aufbauen, dass er flexibel bleibt, auch wenn die nächste Fernbedienung ein anderes Protokoll nutzt.
So funktioniert IR-Fernbedienung: Trägerfrequenz und Pulsfolgen
Eine klassische IR-Fernbedienung sendet keine „reine“ digitale Folge direkt als Licht an/aus, sondern moduliert eine Trägerfrequenz (meist 36–38 kHz, teils 40 kHz oder 56 kHz) mit einer Pulsfolge, die die Daten repräsentiert. Der Empfänger im Gerät nutzt schmalbandige Filter, um Umgebungslicht und Störungen zu unterdrücken. Eine gute Übersicht über das Grundprinzip bietet Infrarot-Fernbedienung.
- Trägerfrequenz: schnelle Ein/Aus-Schwingung (z. B. 38 kHz) während eines „Marks“.
- Mark/Space: „Mark“ = Träger ist aktiv (IR-LED pulst), „Space“ = aus.
- Rahmenstruktur: Start/Leader, Datenbits, ggf. Prüfsummen oder Invertierungen, ggf. Wiederholframes.
Für den PIC ist wichtig: Viele IR-Empfangsmodule liefern am Ausgang bereits ein demoduliertes Signal, bei dem die Trägerfrequenz herausgefiltert wurde. Sie messen dann nur noch die Längen der Mark- und Space-Phasen (als digitale Pulsbreiten).
Das richtige IR-Empfangsmodul: TSOP & Co. statt Fotodiode
Für DIY-Decoder ist ein integriertes IR-Empfangsmodul fast immer die beste Wahl. Es enthält Photodiode, Verstärker, Bandpass und Demodulator. So vermeiden Sie, dass Sonnenlicht, LED-Lampen oder Schaltnetzteile Ihr Signal ruinieren. Typische Module werden umgangssprachlich oft „TSOP“ genannt (als Gattungsbegriff). Eine allgemeine Einordnung von IR-Empfängern finden Sie unter Infrared receiver.
- Vorteil: saubere Digitalsignale, gute Störunterdrückung.
- Wichtig: Trägerfrequenz des Moduls passend wählen (z. B. 38 kHz).
- Ausgangspegel: häufig „active low“ (Signal wird bei Mark-Pulsen auf Low gezogen).
- Versorgung: typischerweise 3,3 V oder 5 V; Datenblatt beachten, sauber entkoppeln.
Wenn Sie unbedingt mit einer Fotodiode arbeiten, benötigen Sie einen Transimpedanzverstärker und eine eigene Filter-/Demodulationslogik – das ist deutlich aufwendiger und für einen Universal-Empfänger selten nötig.
Protokolle, die Sie als Universal-Empfänger kennen sollten
„Universal“ bedeutet in der Praxis: Sie unterstützen die häufigsten Protokollfamilien und bauen Ihre Software so, dass auch unbekannte Protokolle als Rohpulse gespeichert und wiedererkannt werden können. Besonders verbreitet sind:
- NEC-Familie: weit verbreitet bei Consumer-Geräten; gut dokumentiert, klare Pulsbreiten.
- RC5/RC6: Philips-Umfeld; nutzt Biphase/Manchester-artige Codierung.
- SONY SIRC: charakteristische Bitlängen, mehrere Varianten.
Als Einstieg in die Protokollwelt ist Consumer IR nützlich. Spezifisch zum NEC-Protokoll eignet sich NEC protocol und für RC5 RC-5.
Signalaufnahme mit PIC: Timer, Interrupts und Capture
Das Herzstück einer zuverlässigen Decodierung ist eine präzise Zeitmessung. Statt im Hauptprogramm auf Pegelwechsel zu warten, nutzen Sie Interrupts. Das spart CPU-Zeit und verbessert Robustheit, weil Sie auch während anderer Aufgaben (UART, Display, Logging) keine Pulse verpassen.
- External Interrupt (INT): reagiert auf Flanken am IR-Ausgang.
- Interrupt-on-Change (IOC): geeignet bei mehreren Eingängen oder flexiblen Pin-Wahlen.
- Capture/Compare/PWM (CCP): viele PICs haben Capture-Funktionen, die Timerstände bei Flanken automatisch „einfrieren“.
- Timer: frei laufender Timer mit bekannter Tickdauer (z. B. 1 µs oder 2 µs pro Tick).
Das Prinzip: Bei jeder Flanke speichern Sie die Zeitdifferenz seit der letzten Flanke. Daraus entsteht ein Array von Pulsdauern (Mark/Space abwechselnd). Dieser Rohdatensatz ist die Grundlage für Protokoll-Erkennung oder „Learn“-Funktionen.
Tickdauer und Auflösung sinnvoll wählen
Für gängige IR-Protokolle sind Pulsbreiten oft im Bereich von einigen hundert Mikrosekunden bis zu mehreren Millisekunden. Eine Auflösung von 1–10 µs ist für saubere Unterscheidung meist ausreichend. Rechnen Sie die Tickdauer
Wenn Ihr Timer mit 1 MHz läuft, ist ein Tick 1 µs. Bei 500 kHz sind es 2 µs. Wichtig ist, dass der Timer nicht zu schnell überläuft, bevor ein kompletter Frame aufgenommen ist. Für ein Universal-Design ist ein 16-Bit-Timer oft bequemer als 8 Bit.
Rohdaten-Ansatz: Pulse speichern und später interpretieren
Ein besonders robuster Weg zum „Universal-Empfänger“ ist ein zweistufiges System:
- Stufe 1 (Recorder): zeichnet Pulse (Dauer zwischen Flanken) in ein Buffer-Array auf.
- Stufe 2 (Decoder): versucht, anhand von Mustern ein Protokoll zu erkennen oder speichert den Rohframe als „Fingerprint“.
Das hat zwei Vorteile: Erstens können Sie unbekannte Protokolle trotzdem verwenden (z. B. zur Identifikation eines Tastendrucks). Zweitens können Sie die Protokoll-Erkennung später erweitern, ohne den Aufnahme-Teil zu ändern.
Frame-Erkennung über Timeout
IR-Frames werden üblicherweise durch eine längere Pause getrennt. Sie können ein Timeout definieren (z. B. > 20–40 ms), das das Ende des Frames signalisiert. Sobald zwischen zwei Flanken länger als dieses Timeout liegt, schließen Sie den Buffer ab und übergeben ihn an den Decoder. Dieses Vorgehen ist protokollagnostisch und funktioniert mit vielen Fernbedienungen zuverlässig.
Protokoll-Erkennung in der Praxis: NEC als Beispiel
NEC ist ein sehr gutes Einstiegsprotokoll, weil es klare „Leader“-Impulse und definierte Bitzeiten besitzt. Allgemein besteht ein Frame aus einem Startsignal (Leader) und anschließend Datenbits, die über unterschiedliche Puls-/Pausenlängen codiert werden. Details finden Sie unter NEC protocol.
- Leader: charakteristische lange Mark- und Space-Phase.
- Bits: gleiche Mark-Länge, aber unterschiedliche Space-Länge für 0 und 1 (Pulse-Distance-Encoding).
- Repeat: bei gedrückter Taste oft ein kürzerer Wiederholframe statt kompletter Daten.
In Ihrem Decoder bedeutet das: Sie prüfen zuerst, ob die ersten zwei Pulsdauern im erwarteten Fenster liegen (mit Toleranz). Danach lesen Sie bitweise aus, indem Sie pro Bit die Space-Länge klassifizieren (z. B. „kurz“ = 0, „lang“ = 1). Toleranzen sind essenziell, weil Empfangsbedingungen, Module und Taktquellen variieren.
Manchester/Biphase: RC5/RC6 anders dekodieren
RC5 und verwandte Protokolle unterscheiden sich deutlich von NEC: Sie nutzen eine Biphase-/Manchester-artige Codierung, bei der die Information in Flankenwechseln innerhalb fester Bitzeiten steckt. Das macht sie robust gegen DC-Offsets und gewisse Störungen, ist aber beim Decoding etwas anspruchsvoller. Eine gute Übersicht liefert RC-5.
Für den PIC bedeutet das: Die reine Pulsbreiten-Klassifikation „kurz/lang“ reicht nicht. Stattdessen messen Sie Übergänge und rekonstruieren Bits anhand der Position der Flanke innerhalb des Bitfensters. Viele Universal-Decoder lösen das, indem sie zunächst das Protokoll über typische Startsequenzen und Bitlängen erkennen und dann in einen spezifischen RC5-Decoder verzweigen.
Toleranzen und Filter: So wird der Empfänger alltagstauglich
Eine Fernbedienung funktioniert im Wohnzimmer, nicht im Labor. Deshalb müssen Sie Rauschen, unvollständige Frames und Timing-Streuung einkalkulieren. Gute Praxis ist eine „Fensterlogik“ statt harter Grenzwerte. Beispiel: Ein erwarteter Wert
In der Praxis arbeiten viele Decoder mit relativen Toleranzen, z. B. ±20 %. Das ist besonders nützlich, wenn die Fernbedienung schwache Batterien hat oder der Empfänger unter ungünstigem Winkel steht.
- Glitch-Filter: sehr kurze Pulse (z. B. < 50 µs) ignorieren.
- Maximallänge: extrem lange Pulse als Frame-Ende behandeln.
- Buffer-Limit: wenn zu viele Pulse, Frame verwerfen (oder abschneiden) und Fehler zählen.
- Repeat-Handling: Wiederholframes nicht als neue Taste interpretieren, sondern als „Taste gehalten“.
Universal-Mapping: Aus vielen Codes werden einheitliche Aktionen
Der entscheidende Schritt vom „Decoder“ zum „Universal-Empfänger“ ist das Mapping. Sie möchten nicht pro Fernbedienung neue Firmware bauen, sondern Codes lernen und Aktionen zuweisen.
- Learn-Modus: PIC speichert Rohpulse oder dekodierte Adresse/Command-Kombination.
- Normal-Modus: eingehende Frames werden mit gespeicherten Einträgen verglichen.
- Aktionen: Relais schalten, IR weiterleiten, UART-Befehl senden, PWM ändern, Menü steuern.
Wenn Sie dekodierte Werte verwenden (z. B. NEC-Adresse + Command), sind Vergleiche schnell und speichereffizient. Wenn Sie Rohpulse speichern, sind Sie protokollagnostisch, brauchen aber eine robuste Vergleichsstrategie (z. B. normalisierte Pulslängen, Toleranzvergleich, Hashing).
Vergleich von Rohpulsen über Normalisierung
Eine bewährte Methode ist, alle Pulslängen auf eine Basiseinheit zu skalieren. Bei vielen Protokollen gibt es eine Grundzeit
Speicher und Persistenz: Codes im EEPROM/Flash ablegen
Damit der Universal-Empfänger nach einem Reset weiterhin funktioniert, müssen gelernte Codes persistent gespeichert werden. Viele PICs bieten EEPROM oder Flash-Emulation. Planen Sie ein Datenformat mit Versionsfeld, Prüfsumme und festen Grenzen, damit Upgrades möglich bleiben.
- Eintrag: Protokolltyp (oder „RAW“), Länge, Daten/Impulse, optional Name/ID.
- Prüfsumme: einfache CRC oder Summenprüfung zur Fehlererkennung.
- Wear-Leveling (optional): bei häufigen Schreibvorgängen sinnvoll.
Gerade bei Rohpulsen ist der Speicherbedarf höher. Als Kompromiss kann man zuerst dekodieren (wenn Protokoll erkannt) und nur bei „unknown“ Rohdaten speichern.
Typische Fehlerquellen beim IR-Auslesen – und schnelle Gegenmaßnahmen
- Falsche Trägerfrequenz: Empfängermodul passt nicht zur Fernbedienung; ein 38-kHz-Modul erkennt 56 kHz schlechter.
- Fehlende Entkopplung: IR-Modul braucht saubere Versorgung; nahe am Modul einen Kondensator platzieren.
- Active-Low verwechselt: viele Module invertieren; Decoder muss Mark/Space entsprechend interpretieren.
- Zu langsame ISR: Flanken gehen verloren; ISR minimal halten, nur Zeitdifferenz speichern.
- Timer-Überlauf: Tickrate und Prescaler so wählen, dass Frames ohne Overflows messbar bleiben.
- Störungen durch LED-Beleuchtung: gewisse Leuchtmittel verursachen IR-Rauschen; Abschirmung, Abstand und gutes Modul helfen.
Debugging und Validierung: So prüfen Sie, ob Ihr Decoder korrekt arbeitet
Ein professioneller Ansatz ist, Messdaten sichtbar zu machen. Sie müssen nicht sofort ein Logic Analyzer besitzen, aber eine UART-Ausgabe (Pulse-Liste, dekodierte Bits, Fehlerzähler) ist extrem hilfreich. Wenn Sie zusätzlich eine einfache „Scope“-Ansicht via PC-Tool realisieren, können Sie schnell erkennen, ob Leader, Bitzeiten und Repeat-Frames plausibel sind.
- UART-Logging: Pulsdauern und dekodierte Werte als Text ausgeben.
- Statistik: Min/Max/Median pro Pulsart zur Toleranzkalibrierung.
- Testfälle: Taste kurz drücken, lange drücken (Repeat), verschiedene Distanzen und Winkel.
- Fehlerszenarien: Batterien schwach, helles Umgebungslicht, schnelle Tastensequenzen.
Erweiterungen: Vom Empfänger zum vollständigen IR-Gateway
Wenn der PIC zuverlässig decodiert, sind Erweiterungen naheliegend:
- IR-Transmitter: Codes nicht nur erkennen, sondern auch wieder aussenden (z. B. als „IR-Blaster“).
- Makros: eine Taste triggert mehrere Aktionen (z. B. „AV an“: TV + Receiver + Licht).
- Mehrere IR-Zonen: unterschiedliche Empfängerpositionen, um Räume abzudecken.
- Gateway zu Funk/Bus: IR-Kommandos in BLE/WLAN/MQTT oder RS485/Modbus übersetzen.
Wer eine systematische Übersicht über IR-Standards und Protokolle sucht, findet in Consumer IR weitere Begriffe und Verweise. Damit haben Sie eine solide Grundlage, um Ihren PIC als universellen IR-Empfänger so zu gestalten, dass er nicht nur eine Fernbedienung versteht, sondern viele – zuverlässig, erweiterbar und alltagstauglich.
Outbound-Ressourcen für vertiefendes Verständnis
- Infrarot-Fernbedienung: Grundlagen und Funktionsweise
- Consumer IR: Übersicht über Protokolle und Ansätze
- NEC protocol: Leader, Bits und Repeat-Frames
- RC-5: Biphase/Manchester-Logik verstehen
- Infrared receiver: Empfängerprinzip und Demodulation
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

