Forum: Mikrocontroller und Digitale Elektronik IR Signal ausgeben


von Leonard (Gast)


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

von Harald W. (wilhelms)


Lesenswert?

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

von Karl H. (kbuchegg)


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)

von Leonard (Gast)


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!

von Karl H. (kbuchegg)


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.

von Frank M. (ukw) (Moderator) Benutzerseite


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

von Leonard (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.