Tip: Aufbau Transceiver, IR-Übertragungsprotokolle ...

  • Ich bin über eine schöne Abhandlung (Diplomarbeit) gestolpert, die sich ausführlich mit Lirc, der Empangs- und Sendeschaltung für die serielle Schnittstelle und vor allem mit den IR-Übertragungsprotokollen (RC5, SIRCS...) auseinandersetzt. Zur Info. für alle Interessierten.


    Nachtrag (13.9.2004):
    Anmerkungen zur Dimensionierung der Sender-Schaltung in obigem Pamphlet


    Nachtrag (29.12.2006):
    Die ultimative Sendeschaltung


    Nachtrag (06.09.2007):
    Die noch ultimativere Sendeschaltung

    yaVDR 0.5 (softhddevice); H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DVB-S S1102 / 8GB-USB-3.0-Stick (System) + 3TB SATA 6Gb/s; LIRC-Serial (Sender); LCD-TV Toshiba 42VL863G; Beamer PT-AE 700 E; AVR Yamaha RX-S600...

    Dieser Beitrag wurde bereits 4 Mal editiert, zuletzt von habichthugo ()

  • Zitat

    Original von habichthugo
    Ich bin über eine schöne Abhandlung (Diplomarbeit) gestolpert, die sich ausführlich mit Lirc, der Empangs- und Sendeschaltung für die serielle Schnittstelle und vor allem mit den IR-Übertragungsprotokollen (RC5, SIRCS...) auseinandersetzt. Zur Info. für alle Interessierten.


    Hey Klasse, vieles Danke!!!! :)


    arghgra

  • Moin,


    rockclimber
    Jo RC6 ist sauschwer (oder garnüsch) zu finden, aber gugge mal in meine Sig - selbst rausgefunden und proggimierd (naja ASM auf µC51 kann ich grad noch ;) )
    Ich versuch mal schnell ein Bild zu malen ...
    und habs als Dateianhang wenn ich mich nicht zu dumm angestellt hab ?(


    also das ganze hab ich einer Philips SBC RP520 abgerungen und es kann daher sein das ich evtl. falsch liege, aber mit der FB funzt es (logisch ;) )
    Der Start fängt mit einem 2,667 ms Pulse an (36kHz Träger =96 Pulse bei 27.7us) dann kommen 4 Prebits (Verwendung unbekannt mit je 445 / 445us Puls / Pause im bekannten Kodierschema halt nur negiert zu RC5) dann kommt das Togglebit das komischerweise wie das von RC5 ist mit 889us / 889us Puls / Pause und dann 8 Address- und 8 Datenbits mit 445us / 445us Puls Pause. Das breite Togglebit macht es etwas schwer das ganze zu Programmieren aber wenn man den Beispielcode von RC5 auf dieses Schema anwendet dann kommt man ganz gut hin (evtl. etwas Sync Code einbauen beim Togglebit - bietet sich bei den kurzen Zeiten an) Ein Probesample kann ich auch als WAV liefern (mit der Soundkarte aufgenommen) was in einem guten Editor Sample für Sample angesehen werden kann - z. B. mit dem ururalten XWave)


    Jo und das ganze gibts als mittelgut kommentiertes 8051 ASM-Listing auf Wunsch für Recieve (Autodetect RC5, enhanced RC5, RC6 - oder nur für RC6) und Transmit per EMail.


    Bei mir ergab sich halt grade die Notwendigkeit einer anderen Fernbedienung mit der Nexus (LIRC wollte ich nicht) und einem Universum TV die dummerweise beide das gleiche Proto hatten und diese d**fe Philips FB hatte zuwenig Tasten im VCR Modus die funktionierten. Ja und dann hab ich mir halt nen Transcoder RC6 <-> RC5 (inzwischen kann er bissel mehr) geschaffen. Jetzt hab ich mehr Tasten als der VDR (und der TV) erlaubt :]
    Hat aber noch einen Haken: der TV hält sich zu sehr an die Spec. von RC5 und da kann ich Programmtechnisch nichts drehen (Pausenzeit zwischen 2 Telegrammen - die ich durch das Transcoderprinzip und der damit entstehenden IR-Verseuchung nicht einhalten kann - sende sozusagen in der Pause der Fernbedienung - nur dem VDR bzw. dem DVB Treiber war das völlig egal) Und deshalb ist es leider nicht marktfähig weil man sich nen kleines Kästchen an den Fernseher kleben muss um den IR Empfänger des TV unempfindlich zu machen (Oder man verzichtet auf Auto-Reapeat was ja auch nicht so glücklich ist)

    Bilder

    Gruss miracolix


    ------------------------------------------------
    VDR1: A7N8X, XP3200, 80GB + 250GB, DVR-108B,2*Nexus S2.1, SBLive 5.1 Dig., AC Silentium T2, Mdk 10.1, 2.6.16, VDR-1.4.4
    VDR2: K6-II/550, Tyan Trinity S1590AT, 80GB, DVD-106, SBLive 5.1, TTBudget+DXR3, GraphLCD 219*60, Mdk 10.1, 2.6.11, VDR-1.4.2, NVRAM 0.90
    FB-TransCoder-Eigenbau (z.Z. RC5/RC6/NEC/Samsung-Protokoll) mit RTC/IR-WakeUp und ein teuflisches Motiv4You + Decoderstation 3

  • zu 5.5.2 Sender-Schaltung:
    - Die Aussage "Jeder Signalpin darf mit maximal 50mA belastet werden..." ist m.E. falsch. Es sind nur 5mA (worauf die Eingangsimpedanz auch ausgelegt ist: ( 15V/(1k+2,2k) ~ 4,7mA)).
    - Ordentliche Sendedioden werden von der Schaltung stark unterfordert, sprich die Sendeleistung wird nicht besonders sein. Der PNP-Transistor bildet zusammen mit den zwei Silizium-Dioden und dem 22Ohm Widerstand eine Stromquelle, die etwa 0.7V/22Ohm ~ 30mA liefert. Sendedioden wie SFH485 oder LD271 verkraften jedoch 100mA Dauerstrom. Die Strahlstärke hängt exponentiell vom Strom ab! Der Widerstand sollte m.E. auf 0.7V/If (0.7V/100mA ~ 6.8Ohm) dimensioniert werden. Der PNP-Transistor sollte dann (zumindest kurzfristig) ca. 1W Verlustleistung abkönnen.
    Parallel zu diesem Widerstand kann zusätzlich ein Reihenschaltung eines kleineren Widerstands und eines Kondensators gehägt werden, was noch höhere Impulsleistung (Sendeleistung) ermöglicht. Die beiden genannten IR-LEDs können kurzfristig 1A (100us) ab. Also: Zusatzwiderstand 0.7V/1A ~ 0.68Ohm; Kondensator C = I dt / dU =1A100us / 0.7V ~ 100uF. Der PNP-Transistor muss dann natürlich auch einen Strompeak von 1A aushalten können.
    - Die Aussage "Es ist möglich anstatt der zwei Sendedioden auch drei Infrarot-Dioden zu verwenden, allerdings muss dann der Wert des 22Ohm Widerstandes verkleinert werden." ist m.E. aufgrund des zufor gesagten auch Käse. Egal, wieviele Sendedioden man einsetzt, der Strom wird sich nicht wesentlich ändern, bis die Summe derer Duchlassspannungen (ca. 1.2V/Diode bei 100mA) die verfügbare Spannung (am 4700uF Elko - ca. 1V ~ 10V, schnell fallend!) überschreitet (bei 1A ca. 3.5V / Diode!).
    - Alle Elkos sollten 16V abkönnen.
    - Die Anzeige-LED (in Reile zum 500Ohm Widerstand) wird in der Originaldimensionierung kaum leuchten (wird nur von ca. 2mA durchflossen). Mit den 1A-Bursts bestehen bessere Chancen (6-7V Spannungsabfall an den IR-Dioden - 1V / 500Ohm ~ 10mA)


    Ich habe am Wochendende mal was aus der Grabbelkiste zusammengestrickt (siehe Anhang) und getestet. Diese Schaltung funktioniert hervorragend und hat eine Sendeleistung, die meine beste FB um ein vielfaches übertrift.
    Eine SFH485 wäre m.E. die bessere Wahl gewesen, da sie bei gleicher Ansteuerung wie LD271 eine ca. dreifach höhere Abstrahlung liefert. Ich hatte nur keine. Die beiden Transistoren können durch einen Darlington ersetzt werden (Stromverstärkung >> 1000; ca. 1W Verlustleistung). Dito. Die Referenzspannungsquelle wird so natürlich aus drei Siliziumdioden (D3..D5) gebildet. Dimensionierung ansonsten wie oben.


    So dimensioniert geht der Schaltung bei langen Sendesequenzen (rc SEND_START...) natürlich schnell die Puste aus. Wer das nicht will, kann sie entsprechend belastbar versorgen: Weg mit D6 und R2, GDN kommt an (1) und an ehemals GDN +Vcc = 5..15V. Bei 5V aber bitte nur eine Sendediode! C1 kann dann deutlich verkleinert werden (je nach Qualität der Versorgungsspannung). Extern gibts reichlich Saft (5V/>=100mA) an einem USB-Port oder dem PS2 der Tastatur...->zum Schaltplan dieser Variante


    [Edit 2005-06-22 ('ordentlicher' Schaltplan + Bestückungsliste)]
    T1 BC 548C (jede NPN-Kleinleistungstype)
    T2 BD 159 (T1+T2=Darlington BDX53B...)
    D1-2 LD271 (SFH485...)
    D3-6 1N4148 (jede SI-Kleinleistungstype)
    R1 47K (>=1/4W, <=5%)
    R2 2,7K (>=1/4W, <=5%)
    R3 6,8 (>=1/4W (Für 'statische' Einmessung 1W), <=5%)
    R4 0,68 (>=1/4W, <=5%)
    C1 ~4700uF, >=16V
    C2 10uF, >=16V

  • Hey miracolix,


    Danke für die detaillierten Infos. Ich denke, damit kann ich was anfangen.


    Bin also doch nicht zu blöd zum suchen :)
    wenn man nach RC6 sucht, dann stößt man immer wieder auf irgendwelche sinnlosen press-releases von MS media-center u.ä. - *schauder* *schauder*


    Clemens


    PS: die Idee mit der Soundkarte ist nicht schlecht.

  • Moin rockclimber,


    grins - ging mir genauso - wochenlang gesucht aber ausser Werbung und vagen Andeutungen nix gross rausgefunden (bis auf die Infos von LIRC, da stand wenigstens das Timing) - ja und dann hab ich nach ner Lösung gesucht mir das Signal anzusehen und dummerweise stand der Oszi woanders, also nicht greifbar :(
    Erst hab ichs mit dem µC gesampelt und den RAM vollaufen lassen, aber sich so die 00en und 11en ansehen und daraus nen Chart machen ging ganz schön auf die Glotzen.
    Aber das mit der Soundkarte ist brauchbar - kreischt zwar ganz schön und die Signale sind invertiert (und Gleichspannungsfrei) aber ist doch nen geiles "Digitaloszi" mit Stundenlanger Tracingzeit. Man kann relativ exakt die Bitlängen berechnen und sich wirklich fast jedes IR-Protokoll ansehen (jedenfals diese die mit TSOP und Konsorten dekodierbar sind). Hab ich auch ganz gut für meinen "Sendecode" benutzen können um die Latenz-Zeiten des doch langsamen 8051 genau ausrechnen zu können. Ich konnte dazu noch das uralte XWave (-0.6) nutzen (weiss gar nicht obs sich auf gcc3 kompilieren lässt - unter Mandrake 8.2 (gcc 2.96) hats gerade noch hingehauen) weil XWave alles in Sampeln anzeigt, d.h. Pulsbreite von 20 Sample = 20 * 1 / 44.1kHz = 0.45ms und mit Zoom konnte man das Signal komplett in den Bildschirm pressen und Vergleiche anstellen indem man mehrere Sampels übereinanderlegt. Nur die Bedienung ist typisch X, also wer pures X nicht kennt wird verzweifeln (linke Maustaste hoch, rechte runter oder doch andersrum ? und die Position im Scrollbalken bestimmt wieviel gescrollt wird - also nüx mit Scrollbalken ziehen ;) ) Obs was vergleichbares gibt kann ich z. Z. schwer sagen mein Desktop ist auf KDE 2.2 stehengeblieben (never change .... ).
    Falls Du weitere Infos brauchst meld Dich einfach - wir erfinden ohnehin das Rad jeden Tag neu, muss man bei anderen Sachen dann nicht nachmachen 8) (höchstens aus Spass an der Sache :] )

    Gruss miracolix


    ------------------------------------------------
    VDR1: A7N8X, XP3200, 80GB + 250GB, DVR-108B,2*Nexus S2.1, SBLive 5.1 Dig., AC Silentium T2, Mdk 10.1, 2.6.16, VDR-1.4.4
    VDR2: K6-II/550, Tyan Trinity S1590AT, 80GB, DVD-106, SBLive 5.1, TTBudget+DXR3, GraphLCD 219*60, Mdk 10.1, 2.6.11, VDR-1.4.2, NVRAM 0.90
    FB-TransCoder-Eigenbau (z.Z. RC5/RC6/NEC/Samsung-Protokoll) mit RTC/IR-WakeUp und ein teuflisches Motiv4You + Decoderstation 3

  • Hi miracolix,


    ich habe hier eine Loewe-Fernbedienung, die im DVD-Modus RC6 sendet. Mit lirc klappt das einwandfrei (obwohl es anfangs auch Probleme gab - ist mittlerweile aber schon 3 Jahre her...).
    Ich brauche aber für einen AVR eine Decodierroutine. RC5 klappt schon einwandfrei. Hab mir auch schon einen kleinen "Speicher - Oszi" für mein graph-lcd geschrieben, um mir die Impulse der FB anzusehen. Die genauen Zeiten kann man damit aber nicht ablesen.
    Programmiert ist das Ganze in avr-gcc. Ich werd mich dann mal demnächst ranmachen und die RC5-routine um RC6 erweitern.


    Deine Routinen sind zwar in asm und für einen völlig anderen Prozessor, vielleicht kann ich aber trotzdem was damit anfangen. Schick sie mir doch bitte mal zu.


    Danke und Gruß
    Clemens

  • Sacht ma, ihr RC6-Experten: Ihr könnt das Puls-Pausen-Verhalten der IR-Signale doch millisekunden-genau von LIRC bekommen (mode2)?! Das Ganze wenn ihr wollt doch sogar graphisch (xmode2 unter X11)....?

    yaVDR 0.5 (softhddevice); H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DVB-S S1102 / 8GB-USB-3.0-Stick (System) + 3TB SATA 6Gb/s; LIRC-Serial (Sender); LCD-TV Toshiba 42VL863G; Beamer PT-AE 700 E; AVR Yamaha RX-S600...

  • Zitat

    Originally posted by habichthugo
    Sacht ma, ihr RC6-Experten: Ihr könnt das Puls-Pausen-Verhalten der IR-Signale doch millisekunden-genau von LIRC bekommen (mode2)?! Das Ganze wenn ihr wollt doch sogar graphisch (xmode2 unter X11)....?


    huch... - jetzt wo Du's sagst, fällts mir auch wieder ein.
    Einziger Nachteil: mit putty geht's nicht. Und 'ne Linux-Kiste hab ich momentan nicht (abgesehen vom vdr, aber der ist eh ohne VGA)


    Clemens

  • Moin,


    Zitat

    Originally posted by habichthugo
    Sacht ma, ihr RC6-Experten: Ihr könnt das Puls-Pausen-Verhalten der IR-Signale doch millisekunden-genau von LIRC bekommen (mode2)?! Das Ganze wenn ihr wollt doch sogar graphisch (xmode2 unter X11)....?


    Ja hab ich gestern auch in der Abhandlung gelesen - vorher hatte ich mich mit LIRC nicht so genau beschäftigt weil für mich eh uninteressant gewesen wegen der Nexus und weil serielle Schnittstellen immer rarer werden (fang jetzt auch schon an mit USB <-> seriell Konvertern zu spielen um zu sehen was damit möglich ist :( ).


    rockclimber
    hab mal alles auf den RC6/RC5 Code reduziert und schick Dir das per PM. Das mit dem AVR wäre evtl auch eine gute Idee - evtl. werd ich mal Umsteigen. Ich hatte in meinem Bild noch nen kleinen Fehler - das Startbit fängt mit 2.667ms low an, dann folgt ein 889us high zum sync und dann kommen erst die 4 "Prebits". Falls Du Probs mit dem ASM Code des 8051 hast kann ich auch mal nen Struktogramm malen - wozu hat man das mal gelernt ;) Dann versteh ich vielleicht in 2 Jahren meinen Code wieder ?(

    Gruss miracolix


    ------------------------------------------------
    VDR1: A7N8X, XP3200, 80GB + 250GB, DVR-108B,2*Nexus S2.1, SBLive 5.1 Dig., AC Silentium T2, Mdk 10.1, 2.6.16, VDR-1.4.4
    VDR2: K6-II/550, Tyan Trinity S1590AT, 80GB, DVD-106, SBLive 5.1, TTBudget+DXR3, GraphLCD 219*60, Mdk 10.1, 2.6.11, VDR-1.4.2, NVRAM 0.90
    FB-TransCoder-Eigenbau (z.Z. RC5/RC6/NEC/Samsung-Protokoll) mit RTC/IR-WakeUp und ein teuflisches Motiv4You + Decoderstation 3

  • hallo,


    ich würde mir gerne einen IR Transciever bauen und habe mir als Ausgangspunkt die von habichthugo modifizierte Schaltung auserwählt.


    Da ich so etwas zum ersten mal mache (Schaltung bauen) bräuchte ich etwas Hilfe mit den Bauteilen.


    Ich habe folgende Bauteile besorgt (Bezeichnungen aus dem Plan von habichthugo):


    Widerstände:


    R1 1W 47K, Kohleschichtwiderstand, 5%
    R2 1W 2,7K, Kohleschichtwiderstand, 5%
    R3 1W 6,8K, Kohleschichtwiderstand, 5%
    R4 1W 680, Kohleschichtwiderstand, 5%


    Dioden:


    D1-2 SFH485
    D3-6 1N 4148


    Kondensatoren:


    C1 RAD 4.700/16
    C2 ELKO 10/16AX


    Transistoren:


    T1 BC 548C
    T2 MJE 340 MOT (gab kein BD 159)


    Kann ich mit diesen Bauteilen die Schaltung von habichthugo nachbauen? Wenn nicht, welche Teile habe ich falsch gekauft oder was muss ich an der Schaltung ändern?


    Ich habe leider keine externe Serialport Karte und will daher nicht blind rumprobieren.


    thx


    mapovi

  • mapovi
    Die Bauteile sollten so passen.
    Für den MJE 340 konnte ich kein ordentliches Datenblatt finden. Mit Pvtot~20W scheint er mir etwas überdimensioniert. Wie bist Du denn auf den gekommen?

    yaVDR 0.5 (softhddevice); H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DVB-S S1102 / 8GB-USB-3.0-Stick (System) + 3TB SATA 6Gb/s; LIRC-Serial (Sender); LCD-TV Toshiba 42VL863G; Beamer PT-AE 700 E; AVR Yamaha RX-S600...

  • mapovi
    Falls Du auf Nummer sicher gehen wills, teste die Schaltung, bevor Du sie an den Seriellen Port hängst. Dazu brauchst Du im einfachsten Fall nen einfachen Multimeter und ne 9V-Block-Batterie. Wenn Du die Batterie an GDN (+) und DTR (-) hängst, sollte die Spannung über C1 langsam auf ca. 9V steigen. Wenn Du dann DTR mit GDN verbindest (ohne Baterie), sollte sich C1 schnell gegen 0V entladen. Anschliessend die Batterie parallel zu C1 klemmen (Polung beachten).
    Strommessung parallel zu D1+D2 (am besten ohne die Dioden): Wenn Du dann DTR mit GDN verbindest sollte sich dauerhaft ein Strom von ca. 100mA einstellen. Verbindest Du DTR mit (1) darf kein Strom mehr fliessen...

    yaVDR 0.5 (softhddevice); H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DVB-S S1102 / 8GB-USB-3.0-Stick (System) + 3TB SATA 6Gb/s; LIRC-Serial (Sender); LCD-TV Toshiba 42VL863G; Beamer PT-AE 700 E; AVR Yamaha RX-S600...

  • Hi habichthugo,


    danke für deine Antwort. Den MJE 340 (stand auf der Rechnung) hat mir ein Conradverkäufer aus dem grossen Buch der Ersatzbauteile rausgesucht ;). Ich habe gerade gesehen das da BDX53B draufsteht, das Datenblatt gibt es unter BDX53B



    grüsse


    mapovi

  • mapovi
    (Leistungsmässig) Fett krass überdimensioniert das Teil (BDX53B)! Wie bereits in meinem ursprünglichen Gelaber erwähnt müsstest Du den BC 548C fast weglassen können (BDX53B ist ein Darlington; Stromverstärkung > 750 sollte reichen).
    Sach ggf. ma, ob und wie dat Ganze geklappt hat!

    yaVDR 0.5 (softhddevice); H61M/U3S3 / G530 / 4GB / GT 520 (passiv) / Cine S2 (Rev. V5.5) + DVB-S S1102 / 8GB-USB-3.0-Stick (System) + 3TB SATA 6Gb/s; LIRC-Serial (Sender); LCD-TV Toshiba 42VL863G; Beamer PT-AE 700 E; AVR Yamaha RX-S600...

  • Hallo habichthugo,


    Zitat

    Falls Du auf Nummer sicher gehen wills, teste die Schaltung, bevor Du sie an den Seriellen Port hängst. Dazu brauchst Du im einfachsten Fall nen einfachen Multimeter und ne 9V-Block-Batterie. Wenn Du die Batterie an GDN (+) und DTR (-) hängst, sollte die Spannung über C1 langsam auf ca. 9V steigen.


    Habe ich gemacht und die Spannung steigt auch auf 9V..


    Zitat

    Wenn Du dann DTR mit GDN verbindest (ohne Baterie), sollte sich C1 schnell gegen 0V entladen.


    Das geht auch..


    Zitat

    Anschliessend die Batterie parallel zu C1 klemmen (Polung beachten).
    Strommessung parallel zu D1+D2 (am besten ohne die Dioden): Wenn Du dann DTR mit GDN verbindest sollte sich dauerhaft ein Strom von ca. 100mA einstellen.


    Das weis ich nicht genau wo ich messen soll, kannst du mir das genauer beschreiben? Ich kann aber mit meiner Digicam sehen, das die IR-Dioden Leuchten.


    Zitat

    Verbindest Du DTR mit (1) darf kein Strom mehr fliessen...


    Die IR-Dioden gehen aus wenn ich DTR mit (1) verbinde, allerdings fliegen dabei ein paar Funken und es britzelt ( ist das normal? als Stromquelle hab ich ein Netzteil mit 500mA und 9V genommen, da ich keine Batterie hatte ), wenn ich die Verbindung wieder trenne gehen die IR-Dioden wieder an.


    thx


    mapovi