Forum: Mikrocontroller und Digitale Elektronik Frage zur Signal-Abtastung


von Manfred Schneider (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte die Signale einer IR-Fernbedienung (für DVD-Player)
dekodieren (nicht RC5 oder ähnl., mir unbekannter Code), und mit einem
Mikrocontroller (hier SAB80C517A) dann die gedrückte Taste seriell an
ein Terminal-Prog. ausgegben.
Im ersten Versuch habe ich die Impulszüge mit einem Dig. Oszi
ausgerduckt und dann dann die Zeiten markanter Stellen markiert, die
bei allen 24 Tasten verschieden waren. Mittels ext. Interrupts erkenne
ich den Start des IR-Signals und habe dann mit einem Timer zu den
bestimmten Zeiten den Port abgefragt. Waren 12 Meßwerte in einem
Impulszug. Hat aber nicht richtig geklappt, da viele Tasten die
gleichen 12 Meßwerte hatten. Nun bakem ich den Tip, mehr Abtastwerte zu
nehmen.
Ich Taste das Signal nun 512 mal nach dessen Start ab, und schiebe die
jeweiligen Bits des Impulszuges nun in ein Feld vom Typ long. Ich
erhalte also 16 Felder zu je 32 Bit = 512 Werte. Das klappt auch und
ich kann mir die einzelnen Felder auch am PC anzeigen lassen. Leider
mußte ich aber feststellen, das z.B. für die Taste1 die einzelnen
Felder jedsmal unterschiedliche Werte beinhalten, d.h. Wenn ich 10 mal
die Taste1 drücke, dann haben die Felder jedesmal andere Werte. Wie
kann das IR-Signal für eine Taste jedesmal anders sein? Wie soll ich
nun durch die Abtastung jemals zuverlässig eine gerdückte Taste
erkennen können. if-Abfragen oder switch-case hat ja keinen Erfolg, da
eine Taste jedesmal anders aussieht.
Im Anhang mal ein paar Bilder des IR-Signals.

Ich bin für jede Hilfe dankbar.
Manfred

von peter (Gast)


Lesenswert?

hi,
such mal nach Abtasttheorem,du mußt ein Signal mit x Hz mit y Hz
abtastem um ordentlich ergebnisse zu erhalten.
gruß
peter

von Andreas Jäger (Gast)


Lesenswert?

Dass bei der Betätigung derselben Taste unterschiedliche Werte gesentet
werden, ist möglich. Das sogenannte Toggle-Bit wechselt dann nach jedem
Tastendruck. Daran erkennt der Empfänger, ob eine Taste wieder
gedrückt wurde, oder ob sie immer noch gedrückt wird. Allerdings
sollte sich nur 1 Bit ändern.

Andreas

von Markus (Gast)


Lesenswert?

Wenn ein Highpegel z.B. 1,5ms lang ist und Du mißt jede ms, dann hast Du
da eben ein oder zwei Messungen - abhängig davon, wann Du mit der
Messung beginnst. Aber das ist ja Zufall. Eine Lösung dafür ist z.B.,
daß Du z.B. mit der 10fachen Geschwindigkeit abtastet und dann alles
zwischen 1,3 und 1,7ms als als gültigen Wert zulässt.

Markus

von Peter D. (peda)


Lesenswert?

Miß doch einfach immer die Zeiten der Low und High-Pegel mit einem
Timer.


Peter

von Dirk (Gast)


Lesenswert?

Herr Shannon sagte mal was von
      abtastfrequenz > 2*signalfrequenz
so ab 2,2 mal bekommt man einigermaßen brauchbares...

das mit dem toggle bit stimmt natürlich, druck dir doch noch einmal den
signalverlauf für eine bestimmte taste aus, aber für zwei betätigungen
hintereinander, dann weißt du welches bit beim drücken kippt.
oder halt die taste einfach gedrückt und drucke aus, wenn du weißt,
dass ein "wort" z.b. 24 bit lang ist, weißt du ja auch wann es sich
wiederholt und wo das togglebit sitzt.

dirk

von Matthias (Gast)


Lesenswert?

ich glaub, das mit dem Shannonschen Abtasttheorem kann man aber nicht so
ohne weiteres auf die Frequenz des Rechtecksignals anwenden. So wie ich
das verstanden habe, sollte man vorher eine Fourier-Transformation
durchführen und dann mal schauen, welche Frequenzen vorkommen. So ein
Rechteck beinhaltet dann ein ganzes Band an Sinusfrequenzen, wo man
dann schauen muss, welche man filtert, damit trotzdem noch was
sinnvolles rauskommt. Aber gefiltert muss auf alle Fälle werden, damit
kein Quatsch rauskommt.

von ---- (Gast)


Lesenswert?

Ich verstehe die Aufregung um Shannon nicht. Der interessiert doch nur,
wenn die Signalform nicht bekannt ist. Hier ist die Signalform
(Rechteck) aber schon bekannt - und noch dazu ganz einfach mit einem
binären Eingang eines µC einzulesen. Zeit ausmessen (wie von Peter
Danegger vorgeschlagen) und fertig.

----, (QuadDash).

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.