R909-DSP1のパネル基板 (Arduinoとスイッチ、表示部搭載)を利用したGPS corrected VFOを試作しています。表示部がLCDのものとOLEDのものを試作しました。数年前のQEX記事をベースに、Si5351a較正周波数の取得機能を盛り込みました。
Si5351aモジュールを使われた方はお気づきと思いますが、25MHz(あるいは27MHz)の水晶発振器の周波数精度が良くありません。ArduinoのSi5351aライブラリーでは、10MHz設定にして、高精度周波数カウンタで周波数を測り、差分をppmに換算しcorrection値として設定するようにと指示されています。
GITHUBのSi5351aライブラリーから引用
*****************************
基準発振器の実周波数には、ある程度の固有誤差があります。キャリブレーションされていない実際の出力周波数と公称出力周波数の差を測定し、その差をライブラリの補正係数として使用することで、これを補正できます。init() メソッドと set_correction() メソッドは、ppm単位で測定された符号付き整数のキャリブレーション定数を使用します。この補正係数を取得する最も簡単な方法は、クロック出力のどれか 1 つを 10 MHzに設定し、出力信号を測定し (Hz 単位、または測定できる場合はより高分解能)、それをppm にスケーリングし、該当の基準発振器を今後使用するときに set_correction() メソッドを使い補正することです。この補正係数が決定されたら、キャリブレーションをやり直す場合を除き、同じ基準発振器/Si5351 ペアで再度測定する必要はありません。1 つの周波数で正確な測定ができれば、このキャリブレーションはチューニング範囲全体にわたって適切であるはずです。 キャリブレーション メソッドは次のように呼び出されます。
si5351.set_correction(-6190, SI5351_PLL_INPUT_XO);
*****************************
10MHz設定にし、高精度周波数カウンタで較正周波数を測り取る代わりに、このGPS corrected VFOに較正値取得機能を入れました。手持ちのモジュールでは1kHz@10MHz以上ずれています。
まずはLCD1602版ですが、基板やスケッチの情報をGITHUBにアップロードしたので参照してみてください。



