Hallo,
ich möchte das IR Signal einer Fernbedienung aufzeichnen.
Es wird mit einem Tsop empfangen und an einen ATMEGA32 geleitet.
Ich dachte mir folgendes:
Ich initialisiere ein sehr großes Array.
Über einen Interrupt, der ausgelöst wird, wenn das erste Signal vom TSOP
kommt, lege ich eine Variable auf einen bestimmten Wert.
Diese sorgt dafür, dass in einem Timer das Signal vom TSOP abgefragt
wird, liegt eine 0 an, schreibt er eine '1' ins Array, bei einer 1 eine
'0' (weil vom TSOP invertiert).
Der Timer hat einen Vorteiler, dass er etwa 5 mal so schnell ist, wie
die Frequenz des IR Signals.
Nach einer gewissen Zeit lasse ich mir über ein Display die Werte
ausgeben, im Sinne von:
1: 1111100000
2: 0000000000
3: 1111111111
4: 1111100000
Am besten übersetze ich das ganze noch ins Hexadezimale.
Macht es Sinn, das ganze so zu machen? Oder gibt es bessere Wege?
Kann man überhaupt ein zb. 1000er Array anlegen?
Was haltet ihr von der Idee?
Mfg
Leonard schrieb:> ich möchte das IR Signal einer Fernbedienung aufzeichnen.
Du kannst Dir ja mal ansehen, wie das die Leute vom IRMP-Projekt
gelöst haben.
Gruss
Harald
Leonard schrieb:> Was haltet ihr von der Idee?
Nix.
* vom TSOP kriegst du schon ein Signal, welches von der Trägerfrequenz
befreit wurde.
* Alles was du machen musst, ist die Zeitdauer zwischen den steigenden
und fallenden Flanken zu messen.
Deine 1000 Einträge schrumpfen massiv zusammen.
(Rechne dir doch mal aus, für welchen Zeitraum dein 1000-er Array
bei deiner Idee ausreichen würde)
Karl Heinz Buchegger schrieb:> * vom TSOP kriegst du schon ein Signal, welches von der Trägerfrequenz> befreit wurde.
Trägerfrequenz im Sinne von Manchester-codiert?
> * Alles was du machen musst, ist die Zeitdauer zwischen den steigenden> und fallenden Flanken zu messen.> Deine 1000 Einträge schrumpfen massiv zusammen.
Also meinst du, dass mein Array dann zb so aussieht (Zahlen nicht
real)?:
1523, 3046, 3046, 4569, 1523, etc.
Also 1523 Zyklen auf 1, 3046 Zyklen auf 0, etc.
Das würde natürlich mehr Sinn machen, da hast du Recht!
Leonard schrieb:> Karl Heinz Buchegger schrieb:>> * vom TSOP kriegst du schon ein Signal, welches von der Trägerfrequenz>> befreit wurde.>> Trägerfrequenz im Sinne von Manchester-codiert?
Trägerfrequenz im Sinne von 38kHz, auf die das Nutzsignal aufmoduliert
wurde.
> Also meinst du, dass mein Array dann zb so aussieht (Zahlen nicht> real)?:> 1523, 3046, 3046, 4569, 1523, etc.
Genau.
Oder um bei deinem Beispiel weiter oben zu bleiben
> 1: 1111100000> 2: 0000000000> 3: 1111111111> 4: 1111100000
5 15 15 5
4 Zahlen versus 40. Nicht schlecht.
Leonard schrieb:> Trägerfrequenz im Sinne von Manchester-codiert?
Nein. Um Störeinflüsse der Umwelt auszuschalten ist das Signal
moduliert. Das heisst, die Pulse werden mit einer Trägerfrequenz (i.d.R.
30-40kHz) "gemischt". Diese Trägerfrequenz filtert der TSOP raus und Du
bekommst das reine IR-Signal.
Wenn Du das Signal aber wieder reproduzieren willst, musst Du das Signal
beim Senden wieder modulieren. Die Info hast Du aber nicht mehr, weil Du
nicht weisst, welches Protokoll da genutzt wird. Du kannst das bei
diversen Geräten aber durch Ausprobieren herausfinden. Je näher die
Trägerfrequenz am Original, desto besser wird die Reichweite.
Schau Dir mal den Artikel:
http://www.mikrocontroller.net/articles/IRMP
an, insbesondere:
http://www.mikrocontroller.net/articles/IRMP#Die_IR-Protokolle_im_Detail
Mit IRMP kannst Du ein Fernbedienungs-Signal dekodieren. Die Information
schrumpft dabei auf 5 Bytes zusammen, nämlich:
- Protokoll
- Adresse
- Kommando
Mit dem IRSND-Modul (dem Gegenstück von IRMP) kannst Du das Signal
wieder reproduzieren, indem Du diesem genau diese 3 Parameter angibst.
Da IRSND die Trägerfrequenzen der einzelnen Protokolle kennt, ist die
Modulation hier auch kein Problem.
Gruß,
Frank
Ok, vielen Dank!
Ihr habt mir wirklich weitergeholfen!
Ich denke, so lässt es sich doch um einiges besser arbeiten, als mit
meiner Idee. :)
Herzlichen Dank nochmal!
Gruß, Leonard