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
>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.
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.
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
Aeh. Ja. ein normaler Quarzoszillator (5Euro) hat 100ppm, dann geht's hoch... TCXO, ... Einen Ofenquarzoszillator mit 0.01ppm gibt's fuer 500 Euro.
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.
>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.
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.
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.
> 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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.