Reziproke Frequenzzähler sind bekannt. Allerdings haben sie den Nachteil, dass für eine entsprechende Anzahl signifikanter Stellen vergleichsweise lange Messzeiten/Gatezeiten erforderlich sind. Schöner wäre es, wenn man die Frequenz einer jeden Periode mit hoher Auflösung (>= 8 Digit) messen könnte. So langsam kommen von immer mehr Herstellern TDC-Bausteine (Time-to-Digital Converter) mit ps-Auflösung und zum Teil auch zweistellige ps-Genauigkeiten auf dem Markt. Um nur mal einige Hersteller zu nennen: ACAM/ams, Maxim Integrated, Texas Instruments... Zudem werden diese Bausteine immer besser und günstiger, wobei zum Teil auch der Preis interessant ist. Da die Zeitmessung in ein spezielles Chip ausgelagert ist kann ein wesentlich kleinerer Mikrocontroller ausschließlich den Teil der Ansteuerung, Darstellung auf einem Display oder Kommunikation mit einem PC übernehmen. Nun frage ich mich, ob es nicht möglich ist mit solchen Bausteinen einen Frequenzzähler zu realisieren, der wesentlich schneller ist und gleichzeitig eine viel größere Anzahl signifikanter Stellen liefern kann, als das nach dem reziproken Zählverfahren der Fall ist. Dazu würde ich gern mit euch zusammen verschiedene Konzepte erarbeiten und diskutieren und später auch mal eines aufbauen und verifizieren wollen. Hiermit wäre die Diskussion eröffnet...
Simon schrieb: > Reziproke Frequenzzähler sind bekannt. Aber anscheinend nur oberflächlich. > Allerdings haben sie den > Nachteil, dass für eine entsprechende Anzahl signifikanter Stellen > vergleichsweise lange Messzeiten/Gatezeiten erforderlich sind. > Schöner wäre es, wenn man die Frequenz einer jeden Periode mit hoher > Auflösung (>= 8 Digit) messen könnte. Genau das tut ein reziproker Frequenzzähler. Er mißt die Dauer von mindestens einer Periode mit der ihm zur Verfügung stehenden Genauigkeit. Wenn man von Interpolatoren u.ä. absieht, bestimmt die Größe der Referenzfrequenz die erreichbare Zeitauflösung. Wenn man die Anforderung an die Auflösung hinreichend weit heruntersetzt, dann reicht einem reziproken Frequenzzähler auch eine einzelne Periode. > So langsam kommen von immer mehr Herstellern TDC-Bausteine > (Time-to-Digital Converter) mit ps-Auflösung und zum Teil auch > zweistellige ps-Genauigkeiten auf dem Markt. ... > Nun frage ich mich, ob es nicht möglich ist mit solchen Bausteinen einen > Frequenzzähler zu realisieren, der wesentlich schneller ist und > gleichzeitig eine viel größere Anzahl signifikanter Stellen liefern > kann, als das nach dem reziproken Zählverfahren der Fall ist. Natürlich nicht. Es ist ja das gleiche Meßverfahren. Wenn du Picosekunden Auflösung zur Verfügung hast, dann ist es vollkommen wurscht, ob die Messung in einem PLD, einem µC oder einem dezidierten TDC-Baustein passiert. Wenn man schneller mehr signifikante Stellen will, dann muß man schon über das reziproke Verfahren hinausdenken. Leseempfehlung: http://www.npl.co.uk/modern-frequency-counting-principles
Axel S. schrieb: > Genau das tut ein reziproker Frequenzzähler. Er mißt die Dauer von > mindestens einer Periode mit der ihm zur Verfügung stehenden > Genauigkeit. Wenn man von Interpolatoren u.ä. absieht, bestimmt die > Größe der Referenzfrequenz die erreichbare Zeitauflösung. Genau das ist der Punkt. Ein TDC kann pro Periode eine deutlich höhere Genauigkeit liefern als das ein reziproker Frequenzzähler kann.
Simon schrieb: > Ein TDC kann pro Periode eine deutlich höhere > Genauigkeit liefern als das ein reziproker Frequenzzähler kann. Wie das?
Simon schrieb: > Um nur mal einige > Hersteller zu nennen: ACAM/ams, Maxim Integrated, Texas Instruments... Und warum zeigst Du dann keinen Link auf einen solchen IC? Man muß nicht unnötig schwammig fragen bzw. kriegt eben nur schwammige Antworten.
Sind ja wirklich billig. http://www.aliexpress.com/store/product/100-New-original-TDC-GP22-GP22-ACAM-QFN-32/328744_1223045224.html
Simon schrieb: > Genau das ist der Punkt. Ein TDC kann pro Periode eine deutlich höhere > Genauigkeit liefern als das ein reziproker Frequenzzähler kann. Nö. Genau das ist eben nicht der Punkt und es stimmt auch sachlich nicht. Was möchtest du eigentlich messen und mit welcher Auflösung? Etwa die Breite eines einzelnen Pulses? Oder eben doch die Frequenz eine periodischen Signals? Denk mal drüber nach. W.S.
W.S. schrieb: > Simon schrieb: >> Genau das ist der Punkt. Ein TDC kann pro Periode eine deutlich höhere >> Genauigkeit liefern als das ein reziproker Frequenzzähler kann. > > Nö. Genau das ist eben nicht der Punkt und es stimmt auch sachlich > nicht. So sehe ich das auch. Ich warte auch immer noch auf einen Pointer auf ein solches IC, das beliebige Pulslängen mit einer Auflösung von vielen (der TE sprach von >=8) Dezimalstellen messen könnte. Der o.g. GP22 kann Impulse bis maximal 2.4µs Länge mit einer Auflösung von 90ps vermessen. Das sind ~26000 diskrete Schritte respektive 4 Dezimalstellen. Das ist ganz ordentlich. Er würde sich daher prima als Interpolator in einem reziproken Frequenzzähler eignen. Mit ~100ps Auflösung wäre man dann bei 10 Dezimalstellen pro Sekunde Meßzeit und ungefähr auf dem technischen Stand der 1990er Jahre angekommen. Aber für sich allein nutzt dieser TDC recht wenig.
Prinzipiell lässt sich durch Vergleich von zwei Frequenzen mit einem TDC und einer Referenzfrequenz für Start eine unbekannte Frequenz (Stop) bestimmen. Angenommen die unbekannte Frequenz ist stabil und kleiner als die Referenzfrequenz erhält man einen sägezahnförmigen Verlauf über die Zeit. Über die Ermittlung der Steigung des Sägezahns und Verrechnung mit der bekannten Referenzfrequenz lässt sich nun auf die unbekannte Frequenz rechnen. Im Anhang mal beispielhaft gezeigt ein Vergleich von zwei Frequenzen mit dem GP22 und einem 2-Kanal Funktionsgenerator, sprich beide Frequenzen haben die gleiche Taktquelle als Basis: Rechtecksignal 1 (Start) f=1.000 000 000 00MHz Rechtecksignal 2 (Stop) f=1.000 000 001 00MHz Nachteil, die beiden Frequenzen sollten möglichst nah beieinander liegen, ansonsten hat man nicht genügend Messpunkte um die Steigung zu bestimmen bis hin zu Aliasing Effekten. Die Messwiederholrate ist zudem abhängig von den Eingangsfrequenzen. Ist die unbekannte Frequenz zudem instabil wird sich auch die Steigung permanent ändern.
Es gibt auch reciproke Frequenzzähler mit Interpolator, um eine höhere Auflösung auch bei kurzer Messzeit zu erreichen. Viele der TDC Bausteine sind ähnlich dem Interpolator. Die Frage für eine besseren Frequenzzähler wäre eher wie bzw. ob man einen der TDC Bautsteine als Interpolator nutzen kann um damit dann einen reciproken Frequenzzähler zu bauen. Nicht immer geht das vernünftig. Auf der digitalen Seite gibt es das contineous time stamping verfahren um ggf. die Auflösung zu vergrößern. Ob es besser als ein reciproker Zähler wird, hängt aber von Signal ab, bzw. was für ein Frequenzrauschen man hat. Das kann eine deutliche Verbesserung geben (etwa wenn die Triggerschaltung, oder uncorreliertes Phasenrauschen die schwachstelle ist). Wenn das Limit aber das Frequenzrauschen des Oszillators selber ist (etwa ein LC Oszillator), ist die reziproke Messung schon optimal. Mit Interpolation oder der Auswertung vieler Flanken hat man in der Regel so viel theoretische Auflösung, dass diese nicht mehr das Problem ist, so ähnlich wie bei den 24 Bit Sigma delta ADCs. Das Limit ist das Rauschen und nicht die theoretische Auflösung. Da interessiert dann eher die Referenz und die Triggerschaltung und Rauchunterdrückung. Ein stark gestörtes Signal wie etwa die Netzfrequenz kann man z.B. mit einer Soundkarte und passender Software genauer messen als mit fast jedem reziproken Frequenzzähler. Es gibt da einfach nicht ein bestes Verfahren, dass für alle Fälle passt.
Beitrag "Re: 100mhz 32bit - counter ohne vorteiler?" Auch eine Art reziproke Frequenzzählung mit analogem Interpolator
Christoph K. schrieb: > Beitrag "Re: 100mhz 32bit - counter ohne vorteiler?" > Auch eine Art reziproke Frequenzzählung mit analogem Interpolator Leider auch nur eine theoretische Diskussion ohne Ergebnis. Axel S. schrieb: > Wenn man schneller mehr signifikante Stellen will, dann muß man schon > über das reziproke Verfahren hinausdenken. Leseempfehlung: > http://www.npl.co.uk/modern-frequency-counting-principles Schönes Gerät, aber das Continuous Timestamping Verfahren hat wohl noch niemand in Heimarbeit im DIY umgesetzt?
Es gibt ein Verfahren mit dem man sehr präzise, hochdynamisch und günstig über mehrere Dekaden messen kann: Messsignal auf einen Zählereingang legen. Ein weiterer interner Zähler mit hoher Frequenz läuft parallel auf einen anderen Zählereingang. Den Flankenwechsel des Signals wird zunächst einfach gepollt. Nach einem Flankenwechsel werden beide Zählerstände an zwei Variablen übergeben und die Zähler werden genullt. Jetzt kann man in aller Ruhe beide Variablen (Zählerwerte) (abzüglich eines festen Offsets nämlich der Zeit zwischen pollen und Zählerstandsübergabe) durcheinander teilen und sich wieder um andere Dinge zum Beispiel der Datenübergabe via SPI an einen Master kümmern. Ist das erledigt, wird wieder gepollt und der Zyklus beginnt von vorne. Der Referenztakt sollte (je nach Messaufgabe) recht hoch sein; am besten direkt den µC Takt (z.B 64MHz). Natürlich muss man noch eventuell auftretende Überläufe beider Zähler behandeln...
Ich habe mir einige TDC Baustein angesehen, da aber keinen vernünftigen Weg gefunden die als Erweiterung der Auflösung eines Zählers zu nutzen. Die gehen gut für kurze Zeiten, etwa Kabelrefelxionen oder so, sind aber halt nicht als Interpolator für einen Zähler gedacht. So kompliziert ist der analoge Interpolator auch nicht: Halt die Wandlung vom Triggerzeitpunkt in einen Restpuls variabler Breite und dann vom Puls in eine analoge Spannung und damit auf den ADC. Einige PIC18/24 sollen so etwas sogar schon integriert haben. So super hoch muss dabei die Zeitauflösung auch nicht sein, denn ein Komparator zum festlegen der Flanke hat auch einiges an Unsicherheit - für die meisten Signale hat man also sowieso da eine Begrenzung. Das contineous time - stamping ist nicht wirklich kompliziert von der Software. Lineare Regression klingt kompliziert, aber dafür gibt es eine geschlossene Formel. Das ließe sich auch schon mit einem relativ kleinen µC realisieren. Bei meinem Zähler mit 90S2313 (-> Tiny2313) hat der Platz im Flash nicht mehr gereicht und die Hardware sollte einen etwas feiner einstellbaren Vorteiler haben. So wirklich viel Code ist das nicht - ich würde mal auf etwa 1-4 K mehr schätzen, je nachdem was man für Funktionen haben will. Als einen Nebeneffekt kriegt man z.B. auch Werte für Jitter - wobei man aber für einen sinnvolle Auflösung da schon eine gute Interpolation haben sollte. Der Vorteil der Höheren Auflösung durch das contineous timestamping wird meiner Meinung nach aber auch oft überschätzt. Es hängt vom Signal ab, ob es wirklich besser als ein einfacher Reziprokzähler ist. Wenn schon sollte man beide Optionen haben, und ggf. auch Zwischenstufe. Gerade wenn man den Zähler im µC realisiert ist Hardware ist schließlich praktisch die selbe. Den großen Vorteil hat des Time-stamping auch mehr bei einem eher verrauschtem Signal, also nicht wenn es um super hohe Auflösung geht, sondern eine gute Messung bei einem schwierigen Signal, wie etwa der Netzfrequenz oder dem DCF77 Träger. Daher macht das auch für einen DIY low cost Zähler Sinn.
Ich habe da einen interessanten Link gefunden, der gut zum Thema passt: "The Ω counter, a frequency counter based on the Linear Regression" https://arxiv.org/pdf/1506.05009
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.