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


von Oliver D. (smasher)


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.

von jose (Gast)


Lesenswert?

DFT/FFT

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

von Oliver D. (smasher)


Lesenswert?

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

von Martin (Gast)


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.

von Oliver D. (smasher)


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)

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.