Forum: Mikrocontroller und Digitale Elektronik Frequenzzähler mit TDC-Baustein, wie?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Simon (Gast)


Lesenswert?

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...

von Axel S. (a-za-z0-9)


Lesenswert?

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

von Simon (Gast)


Lesenswert?

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.

von Axel S. (a-za-z0-9)


Lesenswert?

Simon schrieb:
> Ein TDC kann pro Periode eine deutlich höhere
> Genauigkeit liefern als das ein reziproker Frequenzzähler kann.

Wie das?

von Peter D. (peda)


Lesenswert?

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.

von chris_ (Gast)


Lesenswert?


von pea counter (Gast)


Lesenswert?


von W.S. (Gast)


Lesenswert?

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.

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von branadic (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Lurchi (Gast)


Lesenswert?

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.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Beitrag "Re: 100mhz 32bit - counter ohne vorteiler?"
Auch eine Art reziproke Frequenzzählung mit analogem Interpolator

von Daniel T. (Gast)


Lesenswert?

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?

von Michael D. (Firma: indEAS) (indeas)


Lesenswert?

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...

von Lurchi (Gast)


Lesenswert?

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.

von Tobi T. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.