Ein paar Schräubchen gedreht an der IR-Fernsteuerung (Schlechtwetterbeschäftigung).

Seit meinen ersten Robotern – Dottie über WALL R und archie – erfolgt deren Steuerung mit ner alten TV-Fernbedienung von einem längst entsorgten Fernseher. Dessen IR-Code ist Philips RC-5, siehe z.B. Unterlagen von San Bergmans hier – mit den Feinheiten zum Manchestercode auf 36 kHz-Basis.

Code:
/* ============================================================================= =
   ============================================================================= =
        Beispiele für RC-5-Signalgang/Manchester-Codierung
 
  |       |  |       |  Bitdauer 2x889 µs (2*17,78 tupsi) => 1,778 ms/35,56 tupsi
  +---+   |  |   +---+  Für den Wert des Bits ist Übergang in Bitmitte massgebend
  |HHH|   |  |   |HHH|  
  |HHH+---+  +---+HHH|  ==> Übergang von 1 nach Null <=> Bitwert 0
  |Logic 0|  |Logic 1|  ==> Übergang von 0 nach 1    <=> Bitwert 1
                       
  Beispiel (Graphik zeigt neun Bits) :     
     |   |   |   |   |   |   |   |   |   | 
     | +-+-+ | +-+-+ | +-+ +-+-+ +-+ +-+ |  1 Bit   1,778 ms /  35,56 tupsi < s.u.
     | | | | | | | | | | | | | | | | | | | 14 Bit  24,892 ms / 497,84 tupsi
     +-+ | +-+-+ | +-+-+ +-+ | +-+ +-+ +-+    Gap 114     ms / 2800   tupsi
Bit- |   |   |   |   |   |   |   |   |   | 
Wert   1   0   1   0   1   1   0   0   0   
// - - - - - - - - - - - - - - -
    Der Rest der RC-Variablen (die folgenden) ist im Prinzip unnötiger Schotter
    und wurde am 08 Nov 2013 entfernt (bis Rev. ~x30 enthalten)
>>>>    Messung (26.6.2020) mit DISCOVERY_2 am Steckbrett mit zwei parallel     <<
>>>>    geschalteten SFH5110 zeigt eine Varianz der Pulse zwischen              <<
>>>>    ca. 850 µs und 980 µs  >>  entsprechend 17 (34) und 19,6 (39) tupsi     <<
    tupsi sind 50µs-Zeitscheiben einer Interruptroutine für heartbeat etc.
   ============================================================================= =
   =============================================================================*/
Die Bedienung ist ab archie angepasst an die übliche TV-Fernbedienung: es gibt einerseits Ein-Tasten-Befehle (mute, START/STOP, vor(auf), zurück(ab), links, rechts, swap uvm). Implementiert ist aber auch die übliche 3-Ziffern-Kombination, die ich RC5-3 nenne. RC5-3 läuft bei archie wie beim Fernseher – wird eine Ziffer gedrückt, wartet der (Befehls-) Empfänger ne Weile auf eine zweite, danach ne Weile auf ne dritte Ziffer. Wird statt einer Ziffer eine andere Taste gedrückt, wird die laufende 3-Ziffern-Eingabe abgebrochen. Ist der 3ziffrige Befehl eingetippt, wird er sofort angesteuert/eingeleitet. Dauert die Pause nach einer Zifferneingabe zu lange, wird die laufende Eingabe abgebrochen. Als optische Eingabekontrolle dient eine grobpixelige LED-anzeige (12x10-Matrix – ne ehemalige PingPongPlatine), die auch in der untersten LED-Reihe einen kleinen „Strich“ als Busymarke beim RC5-3 zeigt.

Zusätzlich ist bei archie natürlich zu wünschen, dass Befehle aus beliebigen Richtungen (rundum) empfangen werden. Es ist daher auf einen zuverlässigen Rundum-Empfang der Steuercodes zu achten. Dies erfolgt durch mehrere IR-Empfängerplatinchen. Verwendet werden die ICs SFH5110 oder nach dessen Abkündigung TL1838.

Weiter soll der Decoder das Doppeln von Tasten verhindern.

Grobskizze des Decoders:
- IR-Decoding vom IR-Empfänger auf einem PCINT
- Start Timer sobald ein Signal (LOW) erkannt wird nach einer Pause von mind. 4,95 ms.
..Durch diese Pause ist sichergestellt, dass kein Zeichen "kurz vorher" akzeptiert wird.
- Decodieren der 14 Bits des Manchestercodes
- Wird danach ein Zifferncode erkannt –
..weiter zu RC5-3 Abschnitt, sonst Befehlsaufruf je nach Codewert.
Probleme machte mir bisher z.B. das Doppeln – wenn man zu lange drückt oder die Fernsteuertasten „doppeln“. Der Code wurde dahin überarbeitet. Dazu wurden einige längst beabsichtigte Messungen mit zwei verschiedenen IR-Empfängertypen durchgeführt. Der Signalausgang dieser Empfänger wurde am Eingangsport des Controllers zusammengeschlossen.

Die Messungen (ANALOG-DIGILENT2) zeigen Signalgänge:
1. Zwei TL1838 an EINEM Controllerport – Abgriff am Porteingang; 1 ms/DIV.

2. Zwei TL1838 an EINEM Controllerport – Abgriff am Porteingang; 100 µs/DIV.

3. High-Low-Übergang von TL1838-bl und SFH5110-ge; 1 µs/Div. Der modernere
..…TL1838 (blaue Linie) schaltet viel sauberer.

4. IR-Sendediode (in der Fernbedienung) und TL1838. Der IR-Empfänger schaltet
…..nach ca. 8 36-kHz-Pulsen auf low. 100 µs/DIV.

5. IR-Sendediode (in der Fernbedienung) und SFH5110. Der IR-Empfänger schaltet
..…nach ca. 6 36-kHz-Pulsen auf low. 100 µs/DIV.

Schaltung des IR-Empfängers :
. . . . . Vcc . . . . > . . 100R . . - . . > . .SFH5110/Vcc . . . sinngemäß mit TL1838
. . . . . GND . . . . > . . SFH5110/GND . . . . . . . . . . . . . . sinngemäß mit TL1838
. . . . . SigOut . . .> . .SFJ5110/SigOut < 22k>Vcc-in . . .. sinngemäß mit TL1838
=>=>=> Diese Schaltung mit dem kleinen Vorschaltwiderstand und dem 22k-PullUp bietet eine sehr sichere Funktion.
Kondensatoren (z.B. lt. Datenblatt) stören ! ! !

Vielleicht interessiert´s.