IR Signal ausgeben

Gast #2542773
Lesenswert?

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
#2542810
Lesenswert?

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)
Gast #2542844
Lesenswert?

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!
#2542853
Lesenswert?

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.
Moderator Persönliche Seite #2542861
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren