Bislang bieten sich für kostengünstige reziproke Frequenzzähler AVR-Prozessoren an, die mit max. 20MHz Taktfrequenz bei einer Messrate von 2 Mess./s 7-stellige Ergebnisse liefern können. Dazu gibt es in diesem Forum diverse Schaltungs- und Programmbeispiele. Eine Beschreibung der Funktionsweise findet sich hier: http://www.mino-elektronik.de/fmeter/fmeter.htm#funk Folgt man den angegebenen Links, finden sich weitere Schaltungen und Beispielprogramme für unterschiedliche Anwendungen. Die µC STM32F4xx bieten mit 168MHz eine sehr hohe Rechenleistung. Zudem sind einige der internen Timer in der Lage mit dieser hohen Frequenz ohne einschränkende Vorteiler umzugehen. Gegenüber einem 20MHz AVR läßt sich eine um grob Faktor 10 höhere Auflösung der Messung erreichen – bei gleicher Messzeit von 2 Mess./s. Genau genommen müßte man die max. Meßrate auf 1,68Mess./s einstellen, was anzupassen jedem Anwender freisteht. Ein 'runder' Faktor 10 im Vergleich zum AVR ist allerdings werbewirksamer :-) Das STM32F4-Discovery-Board bietet in Verbindung mit einem IAR Kickstart-Embedded-Workbench eine kostengünstige Möglichkeit, Schaltung und Programm zu erproben. Für die Messwertausgabe wird hier ein 4,3" TFT-Display verwendet, was auch noch Platz für die Anzeige der internen Zählerstände bietet. Für eigene Versuche muß die Ausgabe auf die vorhandene Anzeige angepaßt werden. Oder man übergibt die Werte per RS232/USB an einen Rechner, um sie dort anzuzeigen. Das angehängte Programm 'f_mess.c' wertet die Frequenz an PE5 aus, wobei die Eingangsimpulse per Interrupt gezählt und die exakten Zeitpunkte über das Capture-Register1 vom Timer9 erfasst werden. Timer9 läuft dazu mit den maximalen 168MHz. Ohne weiteren Vorteiler lassen sich direkt an PE5 Frequenzen von 0,05Hz – 2,5MHz messen. Verwendet man den internen Vorteiler /8 der Capture-Einheit, verschiebt sich der Meßbereich auf 0,4Hz – 20MHz. Da durch den Vorteiler mindestens 8 Eingangsimpulse für einen Capture-Impuls eintreffen müssen, eignet sich der Vorteiler erst ab >= 20Hz Eingangsfrequenz. Für ein 8-stelliges Ergebnis ist eine hinreichend konstante HSE-Frequenz notwendig. Die Testschaltung verwendet einen 20MHz TCXO, eine konstantere Taktquelle wäre besser. Für erste Versuche reicht aber auch der vorhandene 8MHz Quarz, wobei allerdings R68 (auf der Platinenunterseite) entfernt werden aollte. Timer9 hat eine 2. Capture-Einheit, die mit PE6 getriggert werden kann. Hier könnte man ein externes, hochgenaues GPS-Signal auswerten und einen Korrekturwert zum TCXO ermitteln, wie dies auch hier gemacht wird: Beitrag "reziproker Frequenzzähler, GPS-stabilisiert, ATmega162" Das angehängte Foto der TFT-Anzeige zeigt neben Frequenz und Periodendauer auch die Zählerstände Nin und Nref bei der Taktfrequenz von 168MHz, sowie die Dauer der Messung. Ein buntes Bild animiert vermutlich eher zum Nachbau als die nüchterne Beschreibung :-)
m.n. schrieb: > Für ein 8-stelliges Ergebnis ist eine hinreichend konstante HSE-Frequenz > notwendig. Es wäre mal interessant, wie sich der Jitter der PLL auf die Meßgenauigkeit auswirkt. D.h. wie konstant die 168Mhz sind, die aus den 20MHz erzeugt werden. Peter
Peter Dannegger schrieb: > Es wäre mal interessant, wie sich der Jitter der PLL auf die > Meßgenauigkeit auswirkt. Das hat mich natürlich auch sehr interessiert. Die ersten Versuche hatte ich mit dem vorhandenen 8MHz Quarz gemacht, wobei sich herausstellte, dass R68 unbedingt entfernt werden muß. Zyklische Schwankungen der Ergebnisse (ca. 1ppm) im ca. 10 Sekundentakt waren nach dem Auslöten verschwunden. R68 hat wohl garkeine Funtkion und ist absoluter Müll für stabiles Timing! Dann hatte ich einen GPS-Empfänger EM-406 mit 1pps-Ausgang angeschlossen und hatte Aussetzer von rund 60ns alle 2-10 Sekunden. Nachdem ich vergeblich die störenden 10 Befehlszyklen (10 x 6ns = 60ns), die ich vermutete, im Programm nicht finden konnte, nahm ich Jitter des Oszillators/des Controllers als Ursache an. Also, 20MHz TCXO angebaut, Faktor M auf 10 eingestellt (PLL mit 2MHz Basistakt) und - die Schwankungen waren immer noch vorhanden. Das wäre fast das vorzeitige Ende des Experimentes gewesen. Erst ein angelegtes 1kHz Signal, heruntergeteilt von einem OCXO, lieferte ein sehr überzeugendes Ergebnis. Nach ein paar Minuten Aufwärmzeit wurde die Periodendauer mit 999.99983ms angezeigt (Messrate temporär auf 1 Mess./s reduziert), wobei die letzte Ziffer über Minuten hinweg '3' oder '4' anzeigte. Da kam dann Freude auf :-) Fazit: beim beschriebenen Meßverfahren ist kein Jitter des µC festzustellen; GPS dagegen jittert sehr, was man auch vielfach im I-net nachlesen kann. Es gibt noch mehr Erfahrungswerte aus meiner Spielerei, aber das würde hier zu weit führen.
Um die Messwerte auch mit einem einfachen LCD-Modul 2x16 anzuzeigen, habe ich das Programm angepaßt und als 'f_mess_lcd.c' angefügt. Damit das Anzeigeformat paßt, ist die Anzahl der Stellen auf 7 reduziert und die Messrate auf 5 Mess./s erhöht. Die Ansteuerung der LC-Anzeige ist hier zu finden: Beitrag "LCD-Modul 2x16 am STM32F4Discovery-Board" Bevor die Meßfunktion 'f_mess()' aufgerufen wird, muß mit 'lcd_init()' die LCD-Ausgabe vorbereitet werden. Ich hoffe, die Programmteile lassen sich auch mit anderen Compilern (!= IAR-Kickstart) problemlos verwenden.
m.n. schrieb: > R68 hat wohl garkeine Funtkion und > ist absoluter Müll für stabiles Timing! Bin ich auch schon drauf reingefallen: Beitrag "stm32f4discovery: HSE-XO frequenzmoduliert?" Peter Dannegger schrieb: > Es wäre mal interessant, wie sich der Jitter der PLL auf die > Meßgenauigkeit auswirkt. > D.h. wie konstant die 168Mhz sind, die aus den 20MHz erzeugt werden. Ich verwende mein F4-Discovery-Board als VFO für einen I/Q-Kurzwellenmischer, und war nach der genannten Anpassung positiv überrascht. Bei anderen PLLs aus der Bastelkiste wurde es um 0Hz herum meist ziemlich hässlich, oder sie "rülpsten" gelegentlich. Bei der PLL im stm32f4 konnte ich bisher keinen Unterschied zum Quarzbetrieb feststellen.
ansel schrieb: > Bei der PLL > im stm32f4 konnte ich bisher keinen Unterschied zum Quarzbetrieb > feststellen. Normalerweise überschlage ich Seiten im Datenblatt, wo interne Daten aufgeführt sind, die durch eine äußere Beschaltung eh nicht zu verändern sind. Eher zufällig bin ich daher im Datenblatt des STM32F407 auf nähere Angaben zur PLL gestoßen, die in Bezug auf die Taktgüte doch sehr hilfreich sind. In Tabelle 32 auf Seite 90 wird der max. Jitter der PLL mit +/- 0,2ns angegeben. Bei HF-Anwendungen, die den Prozessortakt als Referenz einbeziehen, kann man sicherlich irgendein Rauschen darauf zurückführen. Hier jedoch sind 0,2ns bezogen auf die ca. 6ns Periodendauer (und hier der Auflösung der Messung) ein vernachlässigbarer Wert. Ich denke, die Angabe im Datenblatt schafft abschließende Klarheit.
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.