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.
Lesezeichen