Möchte gerne Frequenzen im Bereich von 40kHz-60kHz messen und hab mich schon mal ein bisschen durchs Forum gewurschtelt. Meine Idee, die auch durchs Forum bestätigt wurde war folgende: Die zu messende Taktfrequenz an T0 oder T1 und somit einen Zähler über diese Frequenz zu takten. Gleichzeitig einen zweiten Zähler über den CPU-Takt (16Mhz) takten lassen um somit eine genaue Torzeit zu erzielen. Der erste Zähler zählt also die Flankenwechsel nach oben und der zweite Zähler generiert die Torzeit und einen Interrupt, der den Zählerstand des ersten in CaptureRegister schreibt, welches ich dann über f=1/Torzeit auswerten kann und somit die Frequenz bekomme. Gibts bessere, genauere Lösungen? Kann man bei den Zählern die Taktflanke wählen? mfg, Schorsch
Oder man benutzt die ICP-Einheit (sofern vorhanden) und lässt den Controller etwas rechnen.
@ Schorsch
> Gibts bessere, genauere Lösungen?
Was ist daran ungenau und schlecht? Jeder Frequenzzähler arbeitet so.
Jetzt kannst du dir noch um Details den Kopf zerbrechen. Generiere ich
die Torzeit mittels Delay (Jehova, Jehova ;-) oder zweitem Timer.
MFG
Falk
@Falk Also wie ich es vorgeschlagen habe quasi ;), wenn ich das deinem Post richtig entnehmen konnte. MFG; Schorsch
Gibts irgendwelche Erfahrungswerte was die Torzeit betrifft, wahrscheinlich je länger desto besser. Bei mir gehts in dem Fall um nen Frequenzbereich wie oben beschrieben von 40kHz-60kHz. Die Applikation sind immer noch die Feuchtesensoren, also muss nicht so sauschnell gehen ;). mfg, Schorsch
Miss doch einfach von einer steigenden Flanke zur nächsten. Also erste Flanke: Zähler nullen. Nächste Flanke: Wert auslesen. Die Genauigkeit dürfte doch für einen Feuchtesensor ausreichen. Gruss Axel
Das ist eine Periode, hätte schon gerne mehr als eine Periode gewählt wegen der Genauigkeit. Schnell muss es ja nicht gehen.
@Axel Was heisst bei dir dürfte reichen? Hast du das mal wenigstens überschlagen? 60 kHz => 16,6 us Bei 20 MHz Oszillatortakt sind das 332 Takte, also etwas mehr als 8 Bit Auflösung. Nun das reicht sicher für nen Feuchtesensor. Wenn man allerdings mit einem geringeren Takt arbeiten will (Stromsparen) wirds schon schlechter, bei 1 MHz sind es nur noch 16,6 Takte -> Essig. Für nen Feuchtesensor sollte selbst 1s Messzeit sehr schnell sein -> macht bei 1 MHz 60000 Takte -> fast 16 Bit Auflösung. MfG Falk
Ich werds jetzt mal mit nem 16Mhz Quarz versuchen, da ich eventuell auch noch ein paar knifflige Rechnung durchführen will. Wenn ich dann nur mit nem Takt von 1MHz messen will kann ich ja immer noch "prescalen". Normalerweise dürfte so ein 2-Pin Quarz wohl das vernünftigste sein nehm ich an, oder? Habt ihr da irgendwelche Erfahrungen welche man da nehmen kann/sollte? mfg, Schorsch
Nim einfach einen 16 MHz Quarz und gut. In dem Frequenzbereich gibt es AFAIK noch keine Oberwellenquarze mit denen man sich schön ins Knie schiessen kann. MFG Falk
@Falk Alles klar, Danke. Das heißt jetzt für mich also dass ich über den Pin T1 den 16bit Zähler hochzählen lasse, das Ganze über 1 Sekunde (getriggert durch nen 8bit Zähler). Womit ich bei sagen wir 50-60kHz auf einen Zählerstand von 50k-60k kommen dürft, also passend für nen 16bit Zähler. mfg, Schorsch
Es geht genauer, wenn man reziprok zählt und als Taktfrequenz wesentlich mehr als den Prozessortakt benutzt. Das geht nur mit externen schnellen Zählern, also entweder ein FPGA mit mehreren hundert MHz oder schnelle Zähler z.B. aus der 74 AC-Reihe bis über 100 MHz. Noch schneller wären ECL-Teiler 10E131 10E151 die zählen bis 1,4 GHz. Ich bin zur Zeit dabei, einen einfachen Reziprokzähler zu entwerfen, mit 74AC161 oder 163 und AVR. Es ist noch nicht weit gediehen, wie man sieht. Die Teilerkette links teilt die Eingangsfrequenz durch 8 einstellbare Teiler bis max 16 Millionen, das reicht um 100 MHz auf etwa 100 Millisekunden herunterzuteilen, damit ich etwa 5-10 Messungen pro Sekunde erhalte. Eine Autoranging -Funktion wählt den passenden Teiler aus. Der Vorteiler rechts oben teilt eine 100MHz-Taktfrequenz soweit herunter, dass der AVR die restlichen Zählstufen übernehmen kann. Er stellt zunächst die Teilerkette links auf max. Zählerstand FFFFFF und gibt dann den LD-Eingang frei. Die nächste pos. Flanke des Eingangssignals stellt den Zähler auf Null, der ausgewählte Ausgang gibt damit den rechten Zähler frei. Nach 2hochirgendwas Eingangsperioden geht das Tor wieder zu, ein INT-Eingang am AVR löst dann die Verarbeitung und Anzeige aus. Das ist vor allem eine Division zur Kehrwertbildung und eine Umrechnung in die Dezimalstellen.
Man muß es nicht gleich mit riesen extra Hardware machen, um ne hohe Genauigkeit zu erzielen. Man kann ja einfach über mehrere Perioden messen, bis man einen genügend hohen Zeitwert hat für die gewünschte Genauigkeit. Das einzige, was man z.B. für einen Frequenzmesser 0,5Hz ... 150MHz braucht, ist nur ein schneller Vorteiler 1/256 (74AC393). Ich hab das mal mit nem AT89C2051 gemacht, die Genauigkeit ist 5-stellig über den gesamten Bereich. Sensoren haben außerdem oft nen starken Jitter, d.h. es ist sogar besser über mehrere Perioden zu messen. Führe einfach die zu messende Frequenz an Timer0 und ICP. Der Timer zählt dann einfach die gewünschte Anzahl Perioden zwischen den 2 Capturewerten. Peter
@ Christoph Kessler @ Peter Musses immer die eierlegende Wollmilchsau sein, die auch fliegen kann? Peter, hast du den Thread gelesen, bevor du geschrieben hast? Ich denke nein. MFG Falk
@Falk Ich denke, daß Peter sehr wohl verstanden hat, worum es geht. Und was er vorschlägt ist keine eierlegende Wollmilchsau, sondern die einfachste und eleganteste Möglichkeit das Problem zu lösen. Eine weitere Möglichkeit bestünde darin, nach 'reziproker Frequenzzähler' zu suchen.
@Michael Du hast den Thread also auch nicht gelesen oder nicht verstanden. Schade. MfG Falk
Ich habe schon nach Reziprokzähler gegoogled, aber da gibts nicht viele Bauanleitungen. Ein Holländer hat auf der UKW-Tagung 2005 eine Möglichkeit mit FPGA vorgetragen, 100 MHz Takt und den in 22,5 Grad Stufen auf effektiv 1,6 GHz Zähltakt gebracht. Wieweit er das schon realisuiert hat weiß ich nicht, im Internet ist seither keine neuere Meldung von ihm zu finden. Von PIC-Spezialisten Lacoste gibts auch einen preisgekrönten Entwurf, aber wenig Einzelheiten.
> Möchte gerne Frequenzen im Bereich von 40kHz-60kHz messen und hab mich > schon mal ein bisschen durchs Forum gewurschtelt. ... > Gibts bessere, genauere Lösungen? Das war die Vorgabe und die Frage, bevor Du mich weiter bedauerst.
@ Michael Ja, richtg, das war die Vorgabe. Und was wurde in den Antworten dazu geschrieben? VOR Peter und Christoph? MFG Falk
Falk wrote: > Peter, hast du den Thread gelesen, bevor du geschrieben hast? Ich denke > nein. Da irrst Du. Es ist vollkommen schnurz, ob Du die Periodendauer oder die Frequenz ausmißt, beides läßt sich ineinander umrechnen. Die reine Periodendauermessung liefert schlechte Auflösung bei hohen Frequenzen und die reine Frequenzmessung liefert schlechte Auflösung und lange Meßzeit bei niedrigen Freqenzen. Die Messung über n Perioden liefert dagegen immer eine hohe Auflösung ohne komplizierte Bereichsumschaltung. Der Faktor n ergibt sich automatisch durch die gewünschte Meßzeit. Peter
Ich gebe gern zu, dass meine Schaltung für den hier gefragten Einsatz völlig überdimensioniert ist. Es geht um die Frage, wie kann man einen Frequenzzähler "genauer machen". Erste Vorraussetzung ist natürlich eine Referenzfrequenz mit ausreichend kleinem Fehler ( Messtechniker sind Pessimisten und sehen den "Fehler", nicht die "Genauigkeit"). Dann muß man die gewünschte Messzeit festlegen, hier für einen Feuchtesensor völlig unkritisch. Wenn das nicht ausreicht, kann man vom direkten Zählen, mit oder ohne Vorteiler, auf "bessere" Verfahren zurückgreifen. Das ist vor allem der reziporke Frequenzzähler, wie er in professionellen Messgeräten heute üblich ist. Eine weitere Methode wäre noch das Heruntermischen der Eingangsfrequenz in den NF-Bereich und die Weiterverarbeiztung mit der PC-Soundkarte. Wenn der Eingangsfrequenzbereich genau zwischen 40 und 60 kHz liegt, könnte man mit 40 kHz in einem EXOR-Gatter mischen und die Differenzfrequenz 0-20kHz mit der Soundkarte auswerten.
Hiermit würde ich den Thread gerne schließen ;) .. Kampfhähne mfg, Schorsch
>die auch fliegen kann?
Fliegen kann so ziemlich alles (auch "wie Spucke durch ne Trompete").
40-60kHz zu messen sollte nicht wirklich ein Problem sein.
Die Möglichkeiten, die Peter und Christoph aufgezeigt haben, sind doch
nur Ergänzungen zum Thema "Frequenzmessung mit einem Mikrocontroller".
Dass das für diese Aufgabe notwendig ist, hat niemand geschrieben.
Nur zur Ergänzung ein Literaturverweis auf einen Fall von "extreme frequency counting". Der Verfasser möchte bei der geplanten Marsmission eines Amateursatelliten den Eintritt in die Marsumlaufbahn auf einige 10 Meter genau bestimmen, und das mit Hobbymitteln: http://www.ulrich-bangert.de/AMSAT-Journal.pdf Zitat: ...der viel beschworene +/- 1 Digit-Fehler, der angeblich so typisch für jeden Frequenzzähler ist. Wer so argumentiert, hat ungefähr 30 Jahre Entwicklung im Bereich der Frequenzmesstechnik verschlafen. Heutige Zähler arbeiten nicht nur prinzipiell immer nach dem Reziprok-Verfahren, sondern sie sind durch raffinierte „Sub-Clock-Interpolation“-Mechanismen auch in der Lage, mit höherer Auflösung zu messen, als sich mancher denkt.
@Christoph Kessler Super Dokument, Danke! (habs erstmal nur überflogen). MFG Falk
> Heutige Zähler arbeiten nicht nur prinzipiell immer nach dem
Reziprok-Verfahren...
Für einen Frequenzbereich von 0 - 10MHz stimmt das. Oberhalb 10 MHz
schalten moderne Counter in den Standardmode um, also feste
Referenztorzeit von 1sec(10sec; 0,1sec; 0,01sec).
@Kunz von Kaufungen >> Heutige Zähler arbeiten nicht nur prinzipiell immer nach dem Reziprok-Verfahren... > Für einen Frequenzbereich von 0 - 10MHz stimmt das. Oberhalb 10 MHz > schalten moderne Counter in den Standardmode um, also feste > Referenztorzeit von 1sec(10sec; 0,1sec; 0,01sec). Die Frage ist ganz einfach, welche Frequenz höher ist. Signalfrequenz höher als die Referenzfrequenz -> Frequenzmessung Signalfrequenz niedriger als die Referenzfrequenz -> Periodendauermessung, ggf. über mehrere Perioden MFG Falk
Und die Referenzfrequenz kann ja mehrere GHz betragen mit heutigen Teilern. so allmählich sind alle Oberlehrer hier eingetroffen denn siehe oh Herr, du weißt alles, ich hingegen weiß alles besser...
Falk wrote: > Die Frage ist ganz einfach, welche Frequenz höher ist. > > Signalfrequenz höher als die Referenzfrequenz -> Frequenzmessung > Signalfrequenz niedriger als die Referenzfrequenz -> > Periodendauermessung, ggf. über mehrere Perioden Nö, die Frage ist, welche Auflösung will ich haben. Wenn die Auflösung bei Zählung der Referenzfrequenz schon groß genug ist, besteht überhaupt kein Grund, bei hohen Frequenzen ein anderes Verfahren zu nehmen. Man schaltet höchstens noch nen Vorteiler ein, wenn der Zähler im MC nicht mehr mitkommt. Peter
Du kannst auch den T1 (externen Timereingang), wie ganz oben schon gesagt, benutzen und den Output-Compare-INT benutzen. Mit diesem lässt sich dann mittels 2. Timer die Zeit messen, die für z.B. 1000 Impulse benötigt werden. Wird im unteren Frequenzbereich natürlich langsamer, aber auf die Zeit kommts ja nicht so an.
> so allmählich sind alle Oberlehrer hier eingetroffen
aber aber, Herr Christoph Kessler!
Ich habe in der Vergangeheit Ihre Beiträge immer mit Begeisterung
gelesen.
Sie zählen zu den wenigen, kompetenten HF-Spezialisten hier im Forum.
Das sollte Sie aber nicht davon abhalten, etwas Neues zu lernen.
Das was Falk und Peter Dannegger schreiben ist richtig.
Mit der Frequenzmessung erreiche ich bei einer Torzeit von 1sec eine
Auflösung von 1Hz. Und das ist unabhängig von der Höhe der Messfrequenz.
Für den Hochfrequenzbereich ist diese Methode die einzig
wirtschaftliche.
Von Hewlett-Packard / Agilent gibt es mehrere Applikationsschriften zum Thema: 5965-7660E.pdf Fundamentals of the Electronic Counters Application Note 200 5965-7664E.pdf Understanding Frequency Counter Specifications Application Note 200-4 5967-6038E.pdf 8 Hints for Making Better RF Counter Measurements Aus der ersten stammt dieses Diagramm. Es besagt, solange die Referenzfrequenz höher als die zu messende ist, ist der Reziprokzähler höher auflösend. Der beste HP-Zähler hat laut dem genannten Text von U.Bangert eine single-shot-Auflösung ( =1/Referenzfrequenz) von 150 Picosekunden.
> Aus der ersten stammt dieses Diagramm. Es besagt, solange die Referenzfrequenz höher als die zu messende ist, ist der Reziprokzähler höher auflösend. Das ist die Bestätigung meiner Ansicht und der von Falk/Peter. > Der beste HP-Zähler hat laut dem genannten Text von U.Bangert eine single-shot-Auflösung ( =1/Referenzfrequenz) von 150 Picosekunden. Das sind 6,6 GHz-Referenz. Das es für spezielle Forschungszwecke div. Abarten von Zählern gibt, ist bekannt. Die gängigsten und bezahlbaren Zähler haben 10 MHz-, 25 MHz- oder 100 MHZ-Referenzfrequenz. Und die preisgünstigsten(billigen) arbeiten nur nach der Reziprokmessung, mit der folge, daß bei Fx > Fref hinten die Stellen weniger werden. Bessere Geräte vermeiden diesen Nachteil mit einer Umschaltung zur reinen Frequenzmessung.
Kunz von Kaufungen wrote: > Und die preisgünstigsten(billigen) arbeiten nur nach der > Reziprokmessung, mit der folge, daß bei Fx > Fref hinten die Stellen > weniger werden. Die signifikanten Stellen werden nicht weniger, sie bleiben konstant. > Bessere Geräte vermeiden diesen Nachteil mit einer Umschaltung zur > reinen Frequenzmessung. Wobei wir wieder beim Thema Genauigkeit v.s. Auflösung sind. Es nützt weniger als einen Entenscheiß, wenn ich 100MHz mit 1Hz anzeige, solange meine Referenz nicht entsprechend genau und stabil ist. Mit nem normalen Quarzsozillator lohnen sich einfach nicht mehr als 6-7 Stellen. Wenn man noch nen alten stromfresser TTL-Oszillator nimmt, kann man schon bei nur 6 Stellen sehr schön die Eigenerwärmung beim Einschalten sehen. Peter
>Mit der Frequenzmessung erreiche ich bei einer Torzeit von 1sec eine
Auflösung von 1Hz.
Nicht so ganz. Mit zunehmender Frequenz wird die Auflösung immer gröber,
da sich der Zählerstand des Timers immer weiter verringert. Bei einem
Zählergebnis von 2000 bei einer Torzeit von einer Sekunde beträgt die
Auflösung 1/2000 Sekunde, bei einem Zählerstand von 10 wäre es nur noch
1/10 Sekunde.
> Die signifikanten Stellen werden nicht weniger, sie bleiben konstant. Meinetwegen bleiben sie konstant. Klar ist aber, das die Gerätehersteller diese Stellen nicht anzeigen, weil unbrauchbar. Apropo "Entenscheiß": In unserer Produktionskontrolle messen wir Frequenzen von 125 MHz(Auflösung 1Hz), bei einer Fref von 25 MHz(+/-1ppm, +/-1ppm@0-60°C). Uns interessiert hierbei nicht die Absolutfrequenz sondern nur der Relativwert innerhalb einer Produktionscharge. Insofern haben Zähler mit Ref-Quarz~1ppm sehr wohl eine Berechtigung, und nicht nur in unserem Betrieb. Wer Referenzfrequenzen von 100ppm-Quarzen ableitet ist selber schuld! @sonic >Mit der Frequenzmessung erreiche ich bei einer Torzeit von 1sec eine Auflösung von 1Hz. Diese Zeile von mir bezog sich, wie nachzulesen ist, auf den Hochfrequenzbereich.
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.