Hallo
Ich bin neu hier im Forum. Vielen Dank schon einmal für eure
Unterstützung. Soeben habe ich mein Steckbord verdrahtet für einen
ersten Versuchsaufbau. RS232 für die Terminalausgabe und das Debugging
läuft. Nun habe ich an Pind2 einen TSOP4836 angeschlossen. Mit meinem
Logik-Prüfer sehe ich das wenn ich auf eine X-beliebige Taste der
Fernbedienung drücke das dieser auf LOW pulsiert. Leider wird mir die
Adresse bzw. das Commando nicht angezeigt. Ich sitze jetzt seit ein paar
Stunden davor und komme leider nicht weiter. Das Manchesterverfahren
etc. habe ich alles verstanden. Was noch offen ist, kann ich für einen
Test jede beliebige Fernbedienung benutzen oder muss ich dafür eine
Universalfernbediehnung besorgen? Das habe ich noch nicht
herausgefunden. Aber jenes würde einiges erklären :-). Ärgerlich wärs
jedenfalls. Den Code poste ich mit dazu. Ich danke jedem der mir hier
ein paar wertvolle Tipps geben kann, damit ich mein Projekt zu Ende
führe. Danke für Eure Mithilfe und ein schönes Wochenende.
Liebe Grüße
Falkner
--Code Abschnitt--
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 2400
Config Rc5 = Pind.2
Portd.2 = 1
Enable Interrupts
Dim Address As Byte
Dim Command As Byte
Dim Flag As Word
Flag = 1
Do
Getrc5(address , Command)
Print Address
Print Command
If Flag = 1 Then
Print "Wait for Command"
Flag = 0
End If
If Address <> 255 Then
Reset Command.7
Cls
Print "Addresse: " ; Address ; " Commando: " ; Command
Flag = 1
End If
Loop
End 'end program
Meine Bascom-Zeiten sind schon länger vorbei, aber ich meine zu wissen, dass der Befehl Getrc5 nur das RC5-Protokoll decodieren kann. Das verwenden aber längst nicht alle IR-Fernbedienungen. Hast du das überprüft? Zeig uns zusätzlich vielleicht auch ein Sample deiner Fernbedienung am TSOP, dann sind genauere Angaben möglich. MfG
Das ging jetzt aber Flott. Vielen Dank dafür. Ich habe mich an das Beispiel der Hilfe gehalten. Keine der aufgeführten Fernbedienungen ging. Doch sie gehen eigentlich so wie ich das messen kann mit dem Logikprüfer. Da sehe ich das die LED am Prüfer blinkt. Dann gehe ich mal davon aus, dass der TSOP auch das macht was er soll. Ich denke auch das es an der Funktion liegt. Gibt es den einen eleganteren Weg? Der Versuchsaufbau ist jetzt mit einem Atmega8 soll aber später durch einen Attiny ersetzt werden. Was will ich machen? Ich will wenn das auslesen klappt genau auf eine Taste abfragen und damit später eine Last schalten über ein Relais. Danke für eure Mithilfe. Liebe Grüße Falkner
Solange du nicht sicher weißt, ob eine der Fernbedienungen RC5 sendet, ist das stochern im Nebel. Hat du nur einen Logiktester oder auch ein Oszilloskop? Wenn Oszilloskop, dann poste ein Screenshot von dem , was der TSOP ausgibt. Anhand der im Netzt verfügbaren Beschreibungen des RC5 Protokolls kann man dann entscheiden, ob es wirklich RC5 ist. Es gibt auch eine rc5send Kommando. Damit kannst du dir selbst eine FB aufbauen und mit dem Atmega empfangen. Würde ich als weiteren Test empfehlen.
Der TSOP decodiert nichts. Solange die Trägerfrequenz der Pakete im Rahmen liegt, gibt der (fast) alles aus, was reinkommt. Bei deinen Fernbedienungen kann ich schonmal sagen: die beiden von Samsung habe ich auch, die verwenden nicht das RC5-Protokoll. Falls du kein Oszilloskop/Logikanalysator hast oder keinen zweiten µC, um einen Sender zu bauen, dann wird es schwierig. Alternativ decodiere doch "zu Fuß", d.h. ohne der Bascom-Funktion. Da wäre es aber auch von Vorteil, das Protokoll zu kennen. MfG
Hi Du hast recht die getrc5(address,command) Funktion blockiert alles. Kommentiere ich die aus ist alles gut. Sobald ich diese wieder einzementieren geht nichts mehr. Irgendwie scheint er mit dem Signal nicht zurecht zu kommen. Die Fragen ist halt wenn ich das mit PWM machen oder AC/DC Wandler auf was ich dann prüfen soll? Ich habe soeben eine alte Schweiger Universalfernbedienung gefunden. Geht leider auch nix. Hast du ne Idee ob ich das mit der getadc() Funktion mal einlesen soll und der soll mir dann mal auspacken was er damit decodiert? Oh je was habe ich mir da nur angetan? Danke für deinen Support. Liebe Grüße Falkner
Falkner F. schrieb: Das Bild zeigt kein RC5. Nach http://www.sprut.de/electronic/ir/rc5.htm#2 sieht das anders aus.
Du hast Recht. Das Signal wird oben auch bisschen überlagert. Ich habe für solche Fälle 4 von der Sorte gekauft. Das jetzt alle defekt sind kann ich fast nicht glauben. Das Kennbild aller ist ähnlich. Ich hab es jetzt noch einwenig feiner hinbekommen. Aber wenn man auf einer Taste dauer drauf bleibt dann kommt oben ein vertikaler Stick im Rechteck. In der Zwischenzeit habe ich versucht das Signal einzulesen via ADC. Und das geht einwanfrei. Drücke ein paar Tasten dann kommen unterschiedliche Werte von 0-1023. Aber wie gesagt das ist dann eher nach dem Zufallsprinzip. Sauberer wäre die andere Funktion wenn es den mal klappen würde. Ich habe auch TSOP4838er gekauft. Die haben ein ähnliches Bild allerdings auf einer 38KHZ Frequenz. Es ist zum Mäusemelken. Aber das hast du mir ja schon einwenig angedeutet. Scheint wohl ich baue mir das nach allbewerter Manier mit Sender Empfänger mit der alten guten TTL Technik. Nix mit flexibler Programmierung diesmal. Ok. Danke dir für deinen Support. Und nochmal ein schönes Wochenende. Liebe Grüße Falkner
Naja, so schnell würde ich persönlich nicht die Flinte ins Korn werfen. Dein Oszi-Bild zeigt leider nicht die ganze Wahrheit. Kriegst du das besser hin? Also mit definierten Pegeln (etwas mit den Triggereinstellungen spielen) und mit einer ausreichenden Zeit für die Horizontalablenkung, sodass mindestens ein ganzer Block zu sehen ist. Mit diesen Infos könntest du dann das entsprechende Protokoll decodieren. Aber die Methode per ADC ist Unfug. Kreativ aber nicht zielführend ;-) MfG
Falkner F. schrieb: > Scheint wohl ich baue mir das nach allbewerter Manier mit Sender > Empfänger mit der alten guten TTL Technik Stephan S. schrieb: > er TSOP decodiert nichts. Solange die Trägerfrequenz der Pakete im > Rahmen liegt, gibt der (fast) alles aus, was reinkommt. Die TSOP machen nur die Pegelanpassung und filtern den 36..38kHz Hilfsträger wieder raus. Die Datenbits kommen am Empfänger ziemlich genau so raus, wie man sie beim Sender auf den 38kHz-Träger draufmoduliert hat. Das Übertragungsprotokoll ist im OSI Modell über der Bitübertragungsschicht angesiedelt. Warum willst du da mit TTL-Gräbern rummachen? Das ist alles so langsam, dass du das gut einem µC überlassen kannst.
Falkner F. schrieb: > Du hast Recht. Das Signal wird oben auch bisschen überlagert. Das sieht so aus weil das Signal nicht periodisch ist, mit dem einfachen Oszi kommst du da nicht weit. Ideal wäre ein Speicheroszi oder min ein Logic Analyzer. Als McGyver Lösung gibt es noch die Soundkarte zu missbrauchen, suche mal nach 'Soundkarte Oszilloskop'. Dann gibt es hier in der Artikelsammlung noch den IRMP Artikel. Ist ein Universal IR Empfänger, zwar in C aber in dem Artikel stehen viele brauchbare Infos. ZB das die meisten FB heute den NEC Code verwenden. In Bascom kannst du versuchen das Signal mit konstanter Rate abzutasten, die Nullen und Einsen in einem Array zu speichern und das auf der seriellen ausgeben. Da hast du allerdings nicht viel Speicher im Mega8.
Jojo S. schrieb: > Ideal wäre ein Speicheroszi oder min ein Logic Analyzer. Einen brauchbaren Logikanalysator für soetwas gibt es mittlerweile für unter 7€ bei ebay (z.B. 141803548716). Das kann doch nicht das Problem sein.
Forengast schrieb: > Einen brauchbaren Logikanalysator für soetwas gibt es mittlerweile für > unter 7€ bei ebay (z.B. 141803548716). Das kann doch nicht das Problem > sein. Nur wenn man Samstag Abend da sitzt und etwas machen möchte... Außer Dschungelcamp gucken meine ich.
Jojo S. schrieb: > In Bascom kannst du versuchen das Signal mit konstanter Rate abzutasten, > die Nullen und Einsen in einem Array zu speichern und das auf der > seriellen ausgeben. Da hast du allerdings nicht viel Speicher im Mega8. So ähnlich habe ich das gerade in einem Kommunikationssystem gemacht (ohne serielle Schnittstelle...). Statt eines Arrays aber ein Integer, der reicht völlig mit etwas Bitschubserei. Acht MSP430 mit je 1kB Flash kommunizieren so mittels IR und einer macht sogar noch ein paar Dinge nebenher. Also sollte der ATmega8 mit seinen 8kB das alles locker in den Speicher bekommen ;-) MfG
Hallo Falkner,
dieser Sketch läuft bei mir für RC5 auf einem 2313 inclusive RS232
Ausgabe und dürfte auf einem MEGA8 auch fehlerfrei laufen.
Gruß Rudi
'******************** RC5 Code Fernbedienungs-Empfänger für 8
Kanäle*******************************
' 1111.1111 bin
' 255 dec
' Lockbit
' | 0110.1111 bin
' | 111 dec
' | Fusebit
' | | 1101.1111 bin
' | | 223 dec
' | | Fusebit High
' | | | 1111.1111 bin
' | | | 255 dec
' | | | Extended Fusebit
' | | | |
$prog &HFF , &H6F , &HDF , &HFF ' Fusebits
einstellen für attiny2313 und 12MHz Quarz
$lib "mcsbyte.lbx"
$regfile = "attiny2313.dat"
'$crystal = 3579545
$crystal = 12000000
$hwstack = 20
$swstack = 20
$framesize = 5
$baud = 4800
Config Rc5 = Pind.2 ' Eingang
Sensor
Config Portb = Output ' PortB als
Ausgang
Enable Interrupts ' Interrupts
zulassen
Portb.0 = 0 ' PortB auf
High
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Portb.4 = 0
Portb.5 = 0
Portb.6 = 0
Portb.7 = 0
Dim Addr As Byte 'Variablen
festlegen
Dim Comm As Byte
'Command- Zielports bestimmen
A1 Alias Portb.0 ' Ziffer1
Pin12 Port B.0
A2 Alias Portb.1 ' Ziffer2
Pin13 Port B.1
A3 Alias Portb.2 ' Ziffer3
Pin14 Port B.2
A4 Alias Portb.3 ' Ziffer4
Pin15 Port B.3
A5 Alias Portb.4 ' Ziffer5
Pin16 Port B.4
A6 Alias Portb.5 ' Ziffer6
Pin17 Port B.5
A7 Alias Portb.6 ' Ziffer7
Pin18 Port B.6
A8 Alias Portb.7 ' Ziffer8
Pin19 Port B.7
Do 'Rc5 Empfang
starten
Getrc5(addr , Comm)
If Addr <> 255 Then
Reset Comm.7
Select Case Comm
Case 1 : Toggle A1 ' Wird 1
gedrückt, schalte Ausgang 1
Waitms 100 ' Sicherheit
zum Schalten wegen toggle Befehl
Case 2 : Toggle A2
Waitms 100
Case 3 : Toggle A3
Waitms 100
Case 4 : Toggle A4
Waitms 100
Case 5 : Toggle A5
Waitms 100
Case 6 : Toggle A6
Waitms 100
Case 7 : Toggle A7
Waitms 100
Case 8 : Toggle A8
Waitms 100
End Select
Print "Taste: " ; Comm ; " empfangen" ; Chr(13)
End If
Loop
End
Waren wir nicht schon soweit, dass der RC5-Code nicht funktioniert? MfG
Hallo Vielen herzlichen Dank für eure Bemühungen das ist ja weltklasse. Da weiss ich ja gar nicht wie ich das danken soll? Danke Danke Danke. Mir ist gestern noch eine Idee in den Sinn gekommen. Nein nicht vor TV Dschungelkiste. Solche Dinge schaue ich nicht. Und zwar muss ich ja meiner Universalfernbediehnung erst mal den RC5 Code beibringen. Und das schaffe ich erst wenn ich noch ein altes Geräte finde z.B. einen alten Philips TV. Dann lerne ich sie dort an dann kann sie auch RC5 Signale senden. Und dann sollte mein TSOP Pegelwandler das richtige Signal rausspucken. Ich bin mir sicher das danach meine Schaltung rocken wird. Bin ich mir sogar sehr sicher. Manchmal sieht man eben vor lauter Bäumen den Wald nicht mehr. Das teste ich und poste es dann hier rein. Ich wünsche allen einen schönen Sonntag. Liebe Grüße Falkner
Falkner F. schrieb: > Mir ist gestern noch eine Idee in den Sinn gekommen. Nein nicht vor TV > Dschungelkiste. Solche Dinge schaue ich nicht. Und zwar muss ich ja > meiner Universalfernbediehnung erst mal den RC5 Code beibringen. Ja, das wäre eine Möglichkeit, denn keine Deiner im Foto abgebildeten Fernbedienungen verwendet RC5. Und ich kann Dir versichern, dass heutzutage auch keine aktuelle Fernbedienung mehr RC5 benutzt, denn Rc5 ist mangels Flexibilität längst ausgestorben. Hinzu kommt, dass die fernöstliche Unterhaltungsindustrie noch nie RC5 benutzt hat. RC5 wurde von Philips entwickelt und wurde gern von anderen europäischen (auch deutschen) Herstellern dann auch verwendet. Aber das ist Jahrzehnte her. Du findest RC5 mit viel Glück noch auf einer Universalfernbedienung, die alte Philips-Geräte unterstützt. Alternativ steigst Du von Bascom auf C um und benutzt die IRMP-Bibliothek. Diese erkennt alle Fernbedienungen, die Du oben im Foto abgelichtet hast - und mehr. P.S. Mit dieser Behauptung lehne ich mich auch nicht weit aus dem Fenster. Die FBs auf Deinem Foto nutzen das NEC-, SAMSUNG32- und evtl. eine noch das Kaseikyo-Protoll. Diese werden von IRMP neben weiteren 40 Protokollen erkannt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.


