Um die Pulsweite bzw. das Tastverhältnis eines Signals genau zu messen, benötigt man einen Timer, der die Periodendauer misst und einen Timer, der die Zeit des Signals misst, die es auf '1'-Pegel liegt. Mit schnellen Timern kann man unter 10 ns Auflösung erreichen. Beschränkt man sich auf eine einzelne Periode, bekommt man bei hohen Frequenzen wegen der kleinen Zählerstände nur eine kleine Auflösung. Stehen nur 16 Bit breite Zähler zur Verfügung, bekommt man bei niedrigen Frequenzen Überläufe bei den Timern. Gut, beides kann man durch passende Programmierung kompensieren, was in der Regel allerdings den Frequenzbereich nach oben einschränkt. Benötigt man nicht exakte Messwerte mit maximal möglicher Auflösung, bietet sich eine andere Messmethode an. Ein freier Timer erzeugt dafür eine Referenzfrequenz (Referenzimpulse) im Bereich 100 kHz - einige MHz. Dabei wird für eine ganze Anzahl von Perioden die Anzahl von Referenzimpulsen gezählt und mit einem weiteren Zähler die positiven Eingangssignalzustände zeitgleich zum Referenzimpuls. Wählt man die Frequenz der Referenzimpulse zum Beispiel mit 1 MHz und läßt die Messung 1 s lang laufen, bekommt man eine Auflösung von gut 4-5 Stellen, was für viele Anwendungen ausreichend sein dürfte. Das Tastverhältnis ergibt sich aus: Anzahl der +Impulse / Anzahl der Referenzimpulse. Multipliziert mit 100% erhält man das Tastverhältnis im Bereich von 0,0 – 100,0 %. Um dieses Messverfahren zu testen, habe ich die vorhandene Schaltung eines reziproken Frequenzzählers (mit STM32H750) genommen: Beitrag "8-stelliger Frequenzzähler, reziprok, STM32F7xx" Schaltung und Funktion sind dort hinreichend beschrieben. Der Zähler macht von Hause aus eine Periodendauermessung synchron zum Eingangssignal, weshalb die Auswertung der PWM-Zählerstände besonders einfach ist. Es wird lediglich mit Timer7 eine zusätzliche Frequenz (Referenzimpulse) erzeugt, die das Eingangssignal abtastet. Siehe Programmteil "F2_messung_pwm.c". Das Messverfahren hat aber noch einen Haken. Sind Eingangsfrequenz und Abtastfrequenz in einem ganzzahligen Verhältnis nahezu synchron zueinander, kann die Abtastung wiederholt zum "falschen" Zeitpunkt stattfinden, wenn zum Beipiel immer dann gezählt wird, wenn das Eingangssignal gerade '0'-Pegel hat. Um diesen Zustand zu vermeiden, wird die Abtastfrequenz mit dem Wert eines Zufallzahlengenerators moduliert. Beim hier verwendeten STM32H750 liegt sie im Bereich 1,678 – 3,000 MHz. (Der Controller würde auch mit der doppelten Frequenz arbeiten.) Anbei noch ein Foto der Anzeige von Eingangsfrequenz nebst zugehörigem Tastverhältnis. Das Projekt in der .zip-Datei ist mit einer Demoversion von IAR EWARM 8.x verwendbar. Das Ganze als Vorschlag - viel Spaß bei eigenen Experimenten!
:
Bearbeitet durch User
Und hast Du mal geprüft, wie weit man den 8 bzw. 6 Digits überhaupt vertrauen kann? Ich krieg da immer Bauchschmerzen, wenn die untersten Digits nur Lottozahlen sind. Ich würde da lieber nur so wenig Digits anzeigen, wie auch stimmen. Bei meinem 33220A kann ich eh nur das Tastverhältnis in 0,1% Schritten einstellen.
Die 8-stellige Auflösung der Frequenzanzeige ergibt sich durch das Messverfahren; das ist ein alter Hut und an anderer Stelle hinreichend beschrieben. Für 8-stellige Genauigkeit braucht man eine entsprechend genaue 10 MHz Referenz, was auch nichts Neues ist. Als Referenzsignal für 1 Hz habe ich ein GPS-Modul EM406A. Dieses liefert an seinem 1pps-Ausgang einen 1 µs Impuls mit 1 Hz. Das war für mich der Grund, so viele Stellen anzuzeigen, damit man auch dieses extreme Tastverhältnis erkennen kann. Das Foto zeigt, daß der lokale TCXO nicht exakt abgeglichen ist. Das Tastverhältnis ist 0,0001 %. Bei Bedarf kann man die Stellenanzahl ja reduzieren; sprintf() liefert die passende Rundung der letzten Stelle. Der verwendete STM32H750 ist ein recht schneller µC. Das Messverfahren dürfte aber auch mit einem ATmega zu realisieren sein, wenn man die Abtastrate für PWM per Timer2 erzeugt und auf z.B. 100 kHz reduziert. Für die Modulation der Abtastrate wäre eine analoge Rauschquelle am ADC denkbar. Die 4. Welle kommt bestimmt ;-)
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.