www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zur Signal-Abtastung


Autor: Manfred Schneider (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.