Forum: Mikrocontroller und Digitale Elektronik Frequenz mit Torzeit und Impulszählung messen


von Michael (Gast)


Lesenswert?

Halli Hallo

Ich möchte mit meinem uC (ATMEGA88) eine Frequenz im Bereich von 10kHz 
bis 500kHz messen. Es ist ein Rechtecksignal mit DC 50%.

Habs schon mit Periodendauermessung ausprobiert, hat auch gut geklappt, 
nur denke ich, dass es bei so hohen Frequenzen nicht gerade genau ist.
Darum hab ich ans Flankenzählen gedacht. Ich würde mit Timer0 eine 
Torzeit von ca. 500ms erzeugen und dann die Flanken mit Timer1 Zählen.

Nur wenn ich ja diese Torzeit immer Fix lasse, dann hab ich ja nur ne 
Aulfösung von 1Hz, also nichts mit Kommazahlen. Oder mach ich da einen 
überlegungsfehler?

Meiner Meinung nach müssten nicht die Flanken, sondern die ganze 
Periodenanzahl gemessen werden. Also beim ersten positiven Flanke wird 
die Torzeit gestartet, die Perioden werden gezählt, und wenn die Torzeit 
vorbei ist, wird gewartet, bis die nächste positive Flanke kommt. So hat 
man ganze Perioden drauf und nicht noch eine angefangene.
Mit der Zeit der "erweiterten" Torzeit und den Anzahl Perioden kann man 
dann die Frequenz berechnen.

Nun lese ich aber überall von fixen Torzeiten. Sehe ich das richtig, 
dass die alle nur auf 1Hz Auflösung genau messen wollen/können?

Grüsse Michl

von holger (Gast)


Lesenswert?

>Nun lese ich aber überall von fixen Torzeiten. Sehe ich das richtig,
>dass die alle nur auf 1Hz Auflösung genau messen wollen/können?

Wenn du eine Torzeit von 1s hast misst du mit 1Hz Auflösung.
Bei 10s Torzeit mit 0.1Hz Auflösung. Bei kleinen Frequenzen
ist deshalb die Periodendauermessung günstiger. Musst halt sehen
wo du von Frequenz- auf Periodendauermessung umschaltest.

von Anja (Gast)


Lesenswert?

Michael schrieb:
> Nun lese ich aber überall von fixen Torzeiten. Sehe ich das richtig,
> dass die alle nur auf 1Hz Auflösung genau messen wollen/können?

Es gibt auch Frequenzzähler mit 10/100 Sekunden Torzeit, da hat man dann 
0,1/0,01 Hz Auflösung.

von Anja (Gast)


Lesenswert?

Holger war schneller

von fhdbv (Gast)


Lesenswert?

Wieviel Prozent Messfehler sind denn 1Hz bei einer Messgroesse von 500 
kHz?
Um Deine Referenz so genau zu bekommen, dass das was Du da misst, 
verlaesslich ist, musst Du Aufwand treiben, den Du nicht bezahlen 
kannst/willst.

Gast

von Purzel H. (hacky)


Lesenswert?

Aeh. Ja. ein normaler Quarzoszillator (5Euro)  hat 100ppm, dann geht's 
hoch... TCXO, ...  Einen Ofenquarzoszillator mit 0.01ppm gibt's fuer 500 
Euro.

von Ulrich (Gast)


Lesenswert?

In der Regel ist die Messung über die Zeit besser. Bei hohen Frequenzen 
muß man nur die Periodendauer nicht aus einer Periode, sondern aus mehr 
Perioden (z.B. 256 oder 1000) machen.  Für wirklich hohe Frequenzen 
(über etwa 100 kHz) muß der Vorteiler in Hardware sein, den Feinabgleich 
und den Rest kann man auch in Software machen.

Schon damit wäre man mit der relativen Auflösung immer so gut wie bei 
den niedreigen Frequenzen.


Wenn mehr als 2 Perioden hat, kann man auch noch die Flanken im inneren 
Nutzen (nicht nur die 1. und letzte) damit läßt sich dann das Rauschen 
nochmal etwas reduzieren. Ideal wäre eine Lineare regression der 
gemessenen Zeiten für die Flanken.  Für höhere Frequenzen wird das aber 
recht Recehnzeitaufwendig (vermutlich bis etwa 10 kHz mit dem Mega8 in 
Echtzeit) und man muß was nicht ganz optimales nutzen, z.B. indem man 
nur je 50 Flanken am Start und Stop nutzt, oder je 2...32 Zeiten erstmal 
mittelt.


Bei allem muß man aber auch bedenken das auch ein Quarz Fehler hat. Es 
macht aber durchaus Sinn die Auflösung deutlich höher als die 
Absolutgenauigkeit zu haben. Nur besser als die Stabilität macht keinen 
Sinn. Die Grenze liegt aber auch für einen einfachen Quarz im bereich 
0.01 ppm über ein paar Sekunden.

von holger (Gast)


Lesenswert?

>Wenn mehr als 2 Perioden hat, kann man auch noch die Flanken im inneren
>Nutzen (nicht nur die 1. und letzte) damit läßt sich dann das Rauschen
>nochmal etwas reduzieren. Ideal wäre eine Lineare regression der
>gemessenen Zeiten für die Flanken.  Für höhere Frequenzen wird das aber
>recht Recehnzeitaufwendig (vermutlich bis etwa 10 kHz mit dem Mega8 in
>Echtzeit) und man muß was nicht ganz optimales nutzen, z.B. indem man
>nur je 50 Flanken am Start und Stop nutzt, oder je 2...32 Zeiten erstmal
>mittelt.

Hä?

Frequenzmessung für Dummies:
Torzeit ist die Zeitbasis z.B. 10s, 1s, 0.1s.
Gezählt werden die Perioden der Frequenz.
Je länger die Zeitbasis desto größer die Auflösung.

Periodendauermessung für Dummies:
Torzeit ist die Periodendauer der Frequenz.
Gezählt werden die Perioden der Zeitbasis.
Je höher die Frequenz der Zeitbasis desto besser die Auflösung.
Da muss man nix mitteln.

von Hc Z. (mizch)


Lesenswert?

Du kannst tatsächlich die Zeitdauer von der ersten z.B. positiven Flanke 
nach dem Öffnen des Tors bis zur ersten positiven Flanke direkt nach 
Torende zählen und durch die Anzahl der positiven Flanken dazwischen 
teilen.  Dann hast Du eine Kombination von Periodendauer- und 
Frequenzmessung mit einer im Schnitt höhere Genauigkeit als jede 
einzelne daven.

An den Grenzen degeneriert es zu einer der beiden Messarten:  Ist die 
Periodendauer des Messobjekts in der Gegend der Torzeit, hast Du reine 
Periodendauermessung (der Divisor ist dann 1), bei sehr hohen Frequenzen 
hast Du praktisch reine Frequenzmessung (der Divisor ist sehr hoch).

Ich habe so etwas mal zur optischen Messung der Rotorblattfrequenz eines 
Flugobjekts mit dem Butterfly und einer kleinen Fotodiodenschaltung 
realisiert.  Bei 100 Hz (Glühlampe) und 1 Hz Torzeit war die Auflösung 2 
Nachkommastellen, die zuverlässig waren.

von Thilo M. (Gast)


Lesenswert?

Ich habe das bisher so gelöst, dass ich bei meiner 
Wunsch-Mindestauflösung zwischen Periodendauermessung (für kleine 
Frequenzen) und Torzeitmessung (für hohe Frequenzen umgeschaltet habe. 
Damit ist gewährleistet, dass ich immer eine Mindestauflösung habe.

von Hc Z. (mizch)


Lesenswert?

> Damit ist gewährleistet, dass ich immer eine Mindestauflösung habe.

Mit der von mir geschilderten Methode hast Du immer mindestens die 
Auflösung der jeweiligen Methode.

von Thilo M. (Gast)


Lesenswert?

Hc Zimmerer schrieb:
> Mit der von mir geschilderten Methode hast Du immer mindestens die
> Auflösung der jeweiligen Methode.

Sag' ich doch. ;)
Diese Mindestauflösung kann man mittels Hardware (Teiler) einstellen und 
nach Bedarf wählen.

von Ulrich (Gast)


Lesenswert?

Die Messung der Zeit über mehrere Perioden ist schon eine gute Lösung.
Damit hat man auch bei höheren Frequenzen die Hohe Auflösung die man mit 
der einfachen Periodenmessung bei niedrigen Frequenzen hat auch bei 
hohen Frequenzen. Die zahl der Perioden könnte man vorher festlegen, 
oder man zählt halt mit, bis man genug hat.

Eine einfache Version davon ist ein einstellbarer Teiler, um immer eine 
relativ niedrige Frequenz zu messen.

Bei einer Messzeit von 0,5 s und einer Zeitmessung mit z.B. 50 ns 
Auflösung hat man so knapp 7 Stellen Auflösung.


Die Umschaltung zwischen einfacher Periodenmessung und klassischen 
Frequenzzählen ist dagegen nicht so gut. Im mittleren Bereich (z.B. 10 
kHz) ist weder das eine noch das andere Verfahren wirklich gut - nicht 
ganz 4 Stellen Auflösung.


Wenn man noch mehr Auflösung haben will (oder weniger Messzeit), kann 
man halt mehr als nur die Position der ersten und letzten Flanke in der 
Messzeit auswerten. Da braucht es dann aber etwas mehr Mathematik, um 
noch mal etwa 1-3 Stellen mehr an Auflösung zu gewinnen. Man kann es 
also noch besser machen, muß es aber nicht - 7 Stellen reichen meistens.

von Tauwetter (Gast)


Lesenswert?

Im Netz gibt es ein Programm für einen Frequenzzähler der mit der 
Periodendauermessung arbeitet.
http://www.mino-elektronik.de/fmeter/fm_software.htm

Da werden bei einem AT90S2313 mit 10MHz Takt bis zu 140kHz direkt 
gemessen (6-stell. Auflösung). Mit einem Mega88 und 20MHz käme man dann 
auf 280kHz und mit ein wenig Optimierung sicherlich auch auf 500kHz 
Eingangsfrequenz.
Vielleicht hilft Dir dies weiter.

von Peter D. (peda)


Lesenswert?

Ulrich schrieb:
> Die Messung der Zeit über mehrere Perioden ist schon eine gute Lösung.
> Damit hat man auch bei höheren Frequenzen die Hohe Auflösung die man mit
> der einfachen Periodenmessung bei niedrigen Frequenzen hat auch bei
> hohen Frequenzen. Die zahl der Perioden könnte man vorher festlegen,
> oder man zählt halt mit, bis man genug hat.

So isses.
Auf ne Flanke warten, dann für z.B. 0,5s die Perioden zählen (z.B. mit 
T0) und dann bei der nächsten Flanke stoppen.
Damit erspart man sich die Umschalterei und hat immer die gleiche 
minimale Auflösung (CPU-Quarz * 0,5s).

f_unbekannt = f_CPU * Periodenzahl / Capture_Wert


Peter

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.