Pages: [1] 2 3 4
|
|
|
|
Author
|
Topic: Frequenzgenauigkeit in den verschiedenen Bändern (Read 8276 times)
|
|
dm6tt
schon länger dabei
Offline
Posts: 90
Ich liebe dieses Forum!
|
|
Frequenzgenauigkeit in den verschiedenen Bändern
« on: 05. February 2017, 21:30:28 »
|
|
Hallo OMs, ich habe die Frequenzgenauigkeit des mcHF gemessen und bin da auf etwas merkwürdiges gestoßen. Es kann auch sein, dass ich einen grundsätzlichen Fehler mache. Ich habe mir vom Funkamateur den KW-Testgenerator mit 5 Quarzen gebaut. Er gibt präzise Frequenzen mit verschiedenen Pegeln aus, von S2 - S9+60. Die Frequenzen habe ich nach warmlaufen im OV mit einem hochpräzisen Frequenzmesser auf 1Hz genau ermittelt. Als Pegel habe ich S9 auf die Antennenbuchse gegeben.
Nun habe ich die Frequenzkorrektur im 80m Band durchgeführt. Um den Träger möglichst genau zu erwischen, habe ich die Frequenz auf 1KHz genau eingestellt und dann SAM als Mode gewählt. Die SAM QRG-Anzeige hat sich dann sehr schnell auf einen Wert eingependelt. Wenn ich nun in die anderen Bänder schalte und dort mit SAM die QRG ermittele, dann stelle ich fest, dass die Abweichungen von der Quarz-QRG variieren:
80m ~ 3Hz 40m ~ 30Hz 30m ~ 80Hz 20m ~ 150Hz 15m ~ -240Hz
Mache ich was grundsätzliches falsch, oder ist die Genauigkeit so stark frequenzabhängig?
73, Marcus
|
|
Logged
|
|
|
|
DD4WH
positron alter Hase
Offline
Posts: 462
Ich liebe dieses Forum!
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #1 on: 06. February 2017, 07:59:34 »
|
|
Hallo Marcus, hallo Thomas,
hört sich für mich plausibel an.
Hängt auch von der jeweiligen Type des Si570 ab, die gibt es mit unterschiedlicher temperaturabhängiger Frequenzstabilität: 7ppm, 20ppm, 50ppm.
Das wären bezogen auf 20MHz dann im schlimmsten Fall 140Hz - 1000Hz Abweichung bei der Si570-Frequenz. Da die Oscillator-Frequenz aber durch vier geteilt wird, sollte die Abweichung zwischen 36 und 250Hz liegen, also liegen Deine Werte im Rahmen.
Ich weiß gar nicht genau, welche Type des Si570 ich drin habe, aber bei meinem mcHF stelle ich wesentlich geringere Abweichungen fest.
Versuch doch mal, nicht auf 80m zu kalibrieren, sondern auf 20m, vielleicht hilft das schon. Denn je höher die Kalibrierfrequenz ist, desto genauer kannst Du kalibrieren, und bei 80m ist der Si570 im absolut untersten Frequenzbereich, den er kann (3600 x 4 = 14.4MHz, der Si570 CMOS kann 10MHz - 160MHz erzeugen innerhalb der specs).
73 de Frank
|
« Last Edit: 06. February 2017, 08:01:23 by DD4WH » |
Logged
|
----------------------------------------- Teensy Convolution SDR https://github.com/DD4WH/Teensy-ConvolutionSDR
|
|
|
DB4PLE
positron Urgestein
Offline
Posts: 1278
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #2 on: 06. February 2017, 08:21:24 »
|
|
Hallo Marcus,
gut beobachtet. Nach einem Blick in den Code muss ich feststellen, dass die dort umgesetzte Idee der Frequenzkorrektur nicht funktionieren kann. Genauer: Sie funktioniert nur manchmal.
Es wird eine Frequenzabweichung der Ausgangsfrequenz bezogen auf die Abweichung der Ausgangsfrequenz bei 14 Mhz berechnet. D.h. wenn wir -100Hz Abweichung bei 14 Mhz haben, sind es -50Hz bei 7 MHz, -25 bei 3.5 Mhz.
Wenn alle Frequenzen durch Teilung einer festen, hohen Frequenz mit unterschiedlichen Teilerwerten erfolgen würde, würde der Ansatz funktionieren. Leider ist das aber nicht so, die hohe Frequenz (per PLL erzeugt) verändert sich brim Si570 im Bereich von 4850 bis 5670 MHz (Verhältnis 1:1.16). Und damit liegt die Korrektur eben auch je nach Eingangsfrequenz mal mehr oder minder daneben. Die Eingangsfrequenz hat nur mehr oder minder Bezug zur Ausgangsfrequenz, da sich die gleiche Ausgangsfrequenz in der Regel mit unterschiedlichen Teilerwerten aus verschiedenen Eingangsfrequenzen erzeugen läßt.
Lange Reder, kurzer Sinn: Ich denke, da müsste man nochmal nachdenken und es richtig machen und die Frequenzabweichung der Festfrequenz des Si570 Quartz (mit dem die PLL die hohe Frequenz erzeugt) direkt korrigieren, dann sollte es besser werden.
73 Danilo
|
« Last Edit: 06. February 2017, 08:22:37 by DB4PLE » |
Logged
|
|
|
|
DF8OE
Administrator
Offline
Posts: 6284
Stellvertr. OVV I40, Jugend / Nachwuchsreferent
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #3 on: 06. February 2017, 08:26:42 »
|
|
Ich habe auch mal gemessen.
Mein Messaufbau:
GPS-synchronisierter Frequenzzähler an einen der vier Teilerausgänge vom 7474. Translate OFF (damit ich nicht rechnen muss...)
Ergebnis: Abweichung besteht im Springen der 1Hz - Anzeige.
Abgeglichen hatte ich auf 6m (da sich die Abweichung des SI570 dort am stärksten bemerkbar macht). Die Frequenz stimmt nun auf allen anderen niedrigeren Bändern auch, da dort die Abweichung ja immer weiter geteilt wird (sie ist ja nicht "absolut" - sondern in ppm).
Mein Tipp: Gleicht auf die höchste Frequenz ab, die ihr erreichen könnt. Tipp (2): Um auch auf "normalen" mcHFs 6m einstellen zu können, müsst ihr im System-Info-Menü / 3. Seite im Touchscreen auf die "60" des S-Meters touchen. Dann erscheint bei "RF Bands Mod" ein "present" und ihr könnt auf 6m schalten.
vy 73 Andreas
EDIT: @Danilo Die Abweichung ist eine prozentuale Abweichung. Dementsprechend bleibt diese bei jeder Multiplikation oder Division erhalten. Wenn ich um von Frequenz x auf Frequenz y zu kommen nur teile und multipliziere (nicht mische!!) spielt es keine Rolle, wieviele Teilungs- und Multiplikationsvorgänge zwischen x und y sind. "Am Ende" kommt immer das raus, was auch durch eine direkte (fraktale) Division erzeugt worden wäre. Der prozentuale Fehler bleibt immer konstant. Anders wäre das, wenn eine zweite lineare Größe mit anderem Fehler irgendwo dazugemischt werden würde.
|
« Last Edit: 06. February 2017, 09:18:41 by DF8OE » |
Logged
|
Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen... qrz.com-Seite von DF8OE
----------------------------------------------------- >>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
|
|
|
DF8OE
Administrator
Offline
Posts: 6284
Stellvertr. OVV I40, Jugend / Nachwuchsreferent
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #4 on: 06. February 2017, 11:55:29 »
|
|
Nichtsdestotrotz hat Danilo völlig recht: hier liegt auch noch ein Denkfehler im Code vor. Das kommt davon, wenn man selbst glaubt, andere würden genauso denken und programmieren wie man selbst
Ich wäre niemals auf etwas anderes gekommen als einen Faktor (oder einen Quotienten) zu ermitteln und abzuspeichern. Der wäre universell und egal wo man den Abgleich gemacht hat würde er immer stimmen.
Das wurde aber nicht so realisiert! Es wird tatsächlich eine "Hertz-Abweichung" gespeichert und die Frequenz, bei der diese gilt, nicht
Hier müssen wir in der Tat die Firmware korrigieren. Es gibt generell zwei Lösungsansätze: 1) Wir schreiben vor, bei welcher Frequenz der Frequenzabgleich durchgeführt werden muss.
oder
2) Wir speichern nicht die Abweichung in Hertz sondern die Abweichung in ppm (mit ein paar Kommastellen damit wir genauer werden). Wir könnten als maximal denkbare Abweichung 100ppm annehmen (also die Stellen davor einfach verschlucken) damit wir mit den abgespeicherten 16 Bit für die calibration EEprom-Variable genügend genau sind. Damit würde sich auch die im Calibration-Menü angezeigte "Fehlfrequenz" dynamisch mit der jeweils eingestellten Frequenz ändern und alles wäre wieder gut.
@Danilo: Jetzt habe ich verstanden, was Du in deinem ersten Post meintest
vy 73 Andreas
|
« Last Edit: 06. February 2017, 12:26:59 by DF8OE » |
Logged
|
Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen... qrz.com-Seite von DF8OE
----------------------------------------------------- >>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
|
|
|
DD4WH
positron alter Hase
Offline
Posts: 462
Ich liebe dieses Forum!
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #5 on: 06. February 2017, 12:32:52 »
|
|
Hallo Andreas, hallo Danilo,
bei meinem Teensy SDR habe ich zwei Kalibrier-Variablen: eine Konstante und einen Faktor.
Die Konstante wird in der Si5351-Bibliothek zum offset verwendet:
si5351.init(SI5351_CRYSTAL_LOAD_10PF, Si_5351_crystal, calibration_constant);
und der Faktor bei der Anforderung der Frequenz zur (frequenzabhängigen) Korrektur:
hilfsf = hilfsf / calibration_factor; si5351.set_freq(hilfsf, Si_5351_clock);
Ich glaube, dass wir mit zwei Werten (offset und Faktor) relativ gut hinkommen müssten.
Soweit ich das überblicke, ist das beim mcHF ganz ähnlich über eine Variable definiert, die der Nutzer einstellen kann: ts.freq_cal: das ist die Abweichung in Hertz (+/-) bei 14MHz. Das wird dann aber bei der Frequenz-Anforderung beim Si570 in Si570_PrepareNextFrequency in einen Faktor umgewandelt! [calib ist ts.freq_cal]
freq_scale = (float)freq; // get frequency freq_calc = freq_scale; // copy frequency freq_scale /= 14000000; // get scaling factor since our calibrations are referenced to 14.000 MHz
temp = (float)calib; // get calibration factor temp *= (freq_scale);
D.h. im Prinzip ist das eine frequenzabhängige Kalibrierung über einen Faktor. Können wir so lassen, meine ich. Wir bräuchten nur noch einen offset zum Einstellen ;-).
UND: alle müssen bei 14MHz kalibrieren, damit es passt!
73 de Frank
|
|
Logged
|
----------------------------------------- Teensy Convolution SDR https://github.com/DD4WH/Teensy-ConvolutionSDR
|
|
|
|
DD4WH
positron alter Hase
Offline
Posts: 462
Ich liebe dieses Forum!
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #7 on: 06. February 2017, 13:05:49 »
|
|
Wir sind gar nicht weit voneinander entfernt und der Lösung dicht auf der Spur ;-).
Danilo hat es im Prinzip schon alles gesagt, mein letzter Beitrag war teilweise Blödsinn, wir sollten den code nicht so lassen:
Zur Zeit macht der code Folgendes:
f = f - (f * ts.freq_cal / 14 000 000)
D.h. ein konstanter offset mit frequenzabhängigem Faktor, der aber leider eine Steigung von 1 hat (also wie Danilo schrieb: bei halber Frequenz halben offset nimmt).
Was wir brauchen, ist ein offset wie gehabt, aber auch der Faktor (also die Steigung der Frequenzabhängigkeit) muss einstellbar sein.
73 de Frank
|
|
Logged
|
----------------------------------------- Teensy Convolution SDR https://github.com/DD4WH/Teensy-ConvolutionSDR
|
|
|
|
DD4WH
positron alter Hase
Offline
Posts: 462
Ich liebe dieses Forum!
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #9 on: 06. February 2017, 14:24:38 »
|
|
Vielleicht so:
Frequenzabgleich bei 3.5MHz und bei 28MHz und dann wird daraus der offset und die Steigung berechnet und gespeichert. (Andererseits muss man dann genau für diese Frequenzen einen Standardsender haben . . . vermutlich ist Deine Idee besser, z.B. würde ich in Ermangelung eines Referenz-Frequenz-Normals einen Rundfunksender nehmen, China Radio International ist fast immer auf der Frequenz +-1Hz ;-))
Bin im Moment etwas Zeit limitiert, da lasse ich Dir/Euch gerne den Vortritt ;-).
Beste Grüße,
Frank
|
|
Logged
|
----------------------------------------- Teensy Convolution SDR https://github.com/DD4WH/Teensy-ConvolutionSDR
|
|
|
|
DB4PLE
positron Urgestein
Offline
Posts: 1278
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #11 on: 06. February 2017, 16:06:52 »
|
|
Hallo,
so kann es gehen: ich tatsächlich mal nicht recht gehabt ( ) und trotzdem nicht ganz falsch lag ( ) .
Jetzt noch ganz von vorne für mich.
Si570 ganz einfach: Der Si570 erzeugt aus einer Fest-Frequenz per Multiplikation mit einem bestimmten Faktor die gewünschte Frequenz (dass das per PLL und nachfolgender Teilung erfolgt, können wir ignorieren, denke ich).
Wenn wir also die Fest-Frequenz genau kennen, funktioniert der Rest prima und wir bekommen immer genau die Frequenz die wir haben wollen (unter der Annahme, das die Temperaturänderung nicht stattfindet, lassen wir auch mal weg).
Und der Si570 Code kann das schon: os.fxtal ist eine Variable, in der wir die Fest-Frequenz speichern und für die Berechnung nutzen. Hier müssen wir nur den ppm-Korrekturwert drauf anwenden, dann sind wir fertig. Das entspricht dem Ansatz von Andreas, nur das nur beim Setzen des PPM Werts überhaupt Aufwand anfällt.
Und damit kann man bei jeder beliebigen Frequenz kalibrieren.
Ich würde das machen, aber kann dann erstmal nicht sehr genau messen, da ich derzeit keinen Zugriff auf meinen mit einem TCXO versehenen TRX habe. Aber das sollte kein Problem sein.
73 Danilo
|
« Last Edit: 06. February 2017, 16:07:47 by DB4PLE » |
Logged
|
|
|
|
DF8OE
Administrator
Offline
Posts: 6284
Stellvertr. OVV I40, Jugend / Nachwuchsreferent
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #12 on: 06. February 2017, 16:17:42 »
|
|
Exakt Danilo. Zuerst dachte ich, Du würdest falsch liegen. Dann habe ich mein Gehrin nochmal eingeschaltet bevor ich das nächste Mal getippert hatte und habe erkannt, dass da was nicht stimmt.
Und dein Ansatz jetzt, dass wir das gleich in die Referenzfrequenz ablegen, ist der Beste. ich kann messen - immer her mit dem Ansatz. Das ist jetzt wirklich der perfekte Ansatz!
EDIT: Ich habe jetzt nicht nachgesehen, wie die Sache mit dem Soft-TCXO geöst ist. Aber wenn ich mich richtig erinnere, ging das mit Korrekturfaktor (also richtig). Wenn nicht sollten wir da auch mal Hand anlegen.
vy 73 Andreas
|
« Last Edit: 06. February 2017, 16:20:16 by DF8OE » |
Logged
|
Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen... qrz.com-Seite von DF8OE
----------------------------------------------------- >>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
|
|
|
DB4PLE
positron Urgestein
Offline
Posts: 1278
|
|
Re:Frequenzgenauigkeit in den verschiedenen Bändern
« Reply #13 on: 06. February 2017, 16:36:10 »
|
|
Hallo,
nur noch einer: Wir haben an verschiedenen Stellen float verwendet um die gewünschte Frequenz innerhalb des Si570 Codes zu repräsentieren. Leider haben wir damit nur 23 Bit Mantisse -> 6 bis 7 Dezimalstellen Genauigkeit, d.h. bei höheren Frequenz wird dann schon mal ein etwas abweichender Wert genutzt. Ansonsten wird im mcHF uint32_t für die Frequenz in Hz verwendet. D.h. hier sind wir immer Hz genau. Und mehr ist wohl nicht nötig. Ich stelle mal auf float64_t um.
73 Danilo
|
|
Logged
|
|
|
|
|
Pages: [1] 2 3 4
|
|
|
|
|
|
|