mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenz Messen (1-250Hz) an uC


Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da mein letztes Topic eigentlich Titelmäßig großartiger Mist war, hier 
nochmal ein neues, mit besserer Frage ;)


Also,
ich habe ein Rechtecksignal, dessen Frequenz ich messen möchte.
Nun muss ich eine vernünftige Methode finden, um die Länge der Takte zu 
bestimmen.

Dafür habe ich mir gedacht, verwende ich einen 16-Bit Timer, der mit der 
Option Gate auf INT0 läuft.
TR0 setze ich auf eins, sodass der Timer sofort anläuft, wenn INT0 High 
ist.
INT0 (Also den Pin) setze ich auf High.
Wenn dann die erste negative Flanke erscheint, wird der Timer 
angehalten.
Während er läuft, zähle ich natürlich die Überläufe (TF0==1) mit.
Dann weiß ich z.B. das (Überlauf*65535 + aktueller Zählerstand) * Zeit 
pro 1 inkrement *2 = meiner Zählzeit ist.
Das multiplizieren mit 2 am Ende, findet deshalb statt, da ich ja nur 
die länge von positiver Flanke, zu negativer Flanke messe. Der Bereich, 
wo das Signal low ist, ist proportional dazu und zählt natürlich auch 
noch zur taktlänge.

Dann würde ich für kurze Zeit (150ms) keine Messung vornehmen.
Währenddessen den TH0 und TL0 sowie Register für das mitzählen der 
überläufe löschen.

Die gezähle Zeit teile ich dann noch durch eins und schon habe ich die 
frequenz.

Gibt es da noch eine bessere Lösung für?
Mein Prozessor ist ein AT89S52 mit einem 11,058Mhz quarz.

Autor: jose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DFT/FFT

kommt drauf an, wie sehr du wert auf echtzeit legst.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hört sich so an, als ob man dafür studiert haben muss ;)

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit dft/fft hat das garnix zu tun. Deine Variante ist schon OK. Ich 
habe es mit dem Capture Eingang gemacht, der reagiert jeweils auf eine 
Flanke und speichert automatisch start und endwert ab. Dann nur noch die 
Überläufe mitzählen und ein bisschen rechnen.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, ungefährt so habe ich mir das auch vorgestellt.
Jetzt muss ich noch ein bischen rumprobieren....
Und schauen, wie ich das alles ans laufen kriege.
(da ich ja keinen capture eingang habe)

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.