-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: IR-Record und Send

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ripper121
    Registriert seit
    27.10.2009
    Beiträge
    206

    IR-Record und Send

    Anzeige

    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?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Es gibt hier im Forum einen Thread zum universellen FB-Empfang. Kann fast alle Protokolle.

    http://www.roboternetz.de/phpBB2/viewtopic.php?t=34497

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ripper121
    Registriert seit
    27.10.2009
    Beiträge
    206
    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?

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ripper121
    Registriert seit
    27.10.2009
    Beiträge
    206
    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

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    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! \/

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    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:
    http://www.roboternetz.de/phpBB2/vie...=339495#339495

    Mit TSOP ist es natürlich viel einfacher. Bitlänge messen bei RC5 (auch in C):
    http://www.roboternetz.de/phpBB2/zei...=403101#403101

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von peterfido
    Zu Anfang hatte ich alles selbst mit dem Atmega erzeugt, was sehr zeitkritisch war. Mit dem 36khz Sender ist es etwas toleranter.
    Da sehe ich überhaupt kein Problem.
    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.

    Zitat Zitat von radbruch
    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.
    Halte ich auch nicht für notwendig.
    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.

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ripper121
    Registriert seit
    27.10.2009
    Beiträge
    206
    also bei dem code einfach an Int0 den Tsop1736 anschließen und dann per terminal die ausgaben anschauen?
    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
    Wie kann ich dann die empfangenen daten wieder sende per IR-Led?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •