Hi,
kann ich mit einem IR empfänger die fernbediehnung aufnehmen und dann per ir-Diode wieder ausgeben?
Was brauch ich dafür und wie kann ich die aufzeichung programmieren?
Hi,
kann ich mit einem IR empfänger die fernbediehnung aufnehmen und dann per ir-Diode wieder ausgeben?
Was brauch ich dafür und wie kann ich die aufzeichung programmieren?
Klar geht das, wenn es sich um einen gewöhnlichen FB Code handelt.
Die kannst du mit einem TSOP... empfangen. Die meisten Trägerfrequenzen liegen im Bereich 36 - 40KHz, sodass die alle mit einem 38KHz Typ empfangen werden können.
Wenn es sich um einen RC5 Code handelt, hat Bascom für die Auswertung schon fertige Routinen (RC5Send und GetRC5) an Bord.
Bei anderen Codes musst du die Pulslängen aufzeichnen und dann wieder ausgeben.
Es gibt hier im Forum einen Thread zum universellen FB-Empfang. Kann fast alle Protokolle.
https://www.roboternetz.de/phpBB2/viewtopic.php?t=34497
habe einen tsop1736 aber meine fernbedienung hat kein RC5, wie kann ich denn das gesendete der fernbedienung mit Bascom aufzeichnen oder in den EEPROM schreiben?
Wieviele Tasten willst du denn aufzeichnen?
Wenn es viele sind dann wäre es sinnvoll zu wissen, welchen Code die FB sendet. Dann brauch man nicht die ganze Folge für jede Taste abzuspeichern, sondern nur die Adresse und den Befehl und generiert dann den Code.
na eine taste würde mir reichen wenn ich die aufzeichnen und dann am besten per ir-led wieder senden kann das währe top
Der Empfänger filtert die Frequenz automatisch raus. diese musst Du beim senden aber wieder erzeugen. Auf Lochraster.org gibt es eine Beispielschaltung um die Frequenz mit einem ne555 zu erzeugen. Diese setze ich auch ein. Zu Anfang hatte ich alles selbst mit dem Atmega erzeugt, was sehr zeitkritisch war. Mit dem 36khz Sender ist es etwas toleranter.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Hallo
Bei einem völlig unbekannten Fernbedienungscode muss nicht nur die Information sondern auch die Trägerfrequenz aufgezeichnet werden. Dazu reicht ein IR-Lichtempfindlicher Spannungsteiler, mit einem TSOP kann man die Trägerfrequenz nicht auswerten. Bei erwarteten 36 bis 40 kHz kommt man hierbei schon weit in den Samplebereich von Sprachaufzeichnungen. Hier würde ich auch ansetzten und irgendwas in der Richtung in Bascom suchen. In C wäre vielleicht das ein vielversprechender Ansatz:
https://www.roboternetz.de/phpBB2/vi...=339495#339495
Mit TSOP ist es natürlich viel einfacher. Bitlänge messen bei RC5 (auch in C):
https://www.roboternetz.de/phpBB2/ze...=403101#403101
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Da sehe ich überhaupt kein Problem.Zitat von peterfido
Man erzeugt das Signal mit einem Timer im CTC Mode. Dazu ist keine Software nötig, daher auch nicht zeitkritisch.
Mit dem Nutzsignal wird das Verhalten beim Überlauf von Toggle (ein) auf Set (aus) umgeschaltet. Hier ist wesentlich mehr Zeit, sodass man das Setzen des Registers sogar mit normalen Waitus machen kann.
Halte ich auch nicht für notwendig.Zitat von radbruch
99% aller FBs arbeiten im Frequenzbereich von 36-40KHz. Ich habe die Erfahrung gemacht, dass ein Sender mit einer festen Frequenz von 38KHz alle Signale fast ebenso weit überträgt wie mit der korrekten Trägerfrequenz.
Mein Ansatz wäre das IR Signal zu scannen und versuchen, das Protokoll festzustellen. Hierzu scannt man die High-Low Zeiten und gibt diese aus. Programm könnte z.B. dieses hier sein:
http://bascom-forum.de/index.php/top....html#msg17044
Stellt sich dabei heraus, dass es eins der bekannten ist, kann man ja dessen Trägerfrequenz benutzen.
also bei dem code einfach an Int0 den Tsop1736 anschließen und dann per terminal die ausgaben anschauen?
Wie kann ich dann die empfangenen daten wieder sende per IR-Led?Code:$crystal = 8000000 $regfile = "m8def.dat" $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default use 40 for the frame space $baud = 38400 Ddrd.2 = 0 Portd.2 = 1 'PullUp wenn nötig Dim Flanke As Byte Dim Flanken_index As Byte Dim Befehl As Word Dim I As Byte 'Word sollte reichen, da nur 12 bit relevant sind Dim Ausgabe_flag As Byte Dim Flanken_array(40) As Byte Config Timer0 = Timer , Prescale = 8 'hier den Timer eintragen (8-bit) On Ovf0 Tim0_isr Enable Timer0 Const Timer0_reload = 100 '8000000/8/(100) entspricht 10Khz Load Timer0 , Timer0_reload 'Auflösung reicht und gefundene Werte entsprechen immer 100µs Config Int0 = Change 'externer interrupt, z.B. Int0 auf portd.2 oder ein PCInt On Int0 Int0_isr Enable Int0 Enable Interrupts Do If Ausgabe_flag = 1 Then Ausgabe_flag = 0 Print Befehl ; " " ; Bin(befehl) ; " " ; Flanken_index; For I = 1 To Flanken_index Print " " ; Flanken_array(i); Next I Print "" End If Loop End Tim0_isr: Load Timer0 , Timer0_reload If Flanke = 199 Then Ausgabe_flag = 1 'If Flanke = 199 And Flanken_index = 25 Then Ausgabe_flag = 1 If Flanke < 200 Then 'Kein Impuls für 20ms Incr Flanke 'bei jedem Überlauf um 1 erhöhen End If Return Int0_isr: 'RC Impuls erkannt If Flanke = 200 Then Flanken_index = 1 'start eines neuen Befehls Befehl = 0 Else Flanken_array(flanken_index) = Flanke If Flanken_index.0 = 0 Then 'speichert nur bei gerader Anzahl, also die Werte ~18 und ~42 Shift Befehl , Left If Flanke > 30 Then Befehl.0 = 1 'dann war es eine 1 End If If Flanken_index < 31 Then Incr Flanken_index End If Flanke = 0 Return
Lesezeichen