Last edited · 2 revisions  

 



When I converted my new BITX40 to 60m I realized that my channels were several kilohertz off frequency. In this country these channels are only 2.8 Khz wide. I couldn't even hear them. I measured the Beat Frequency Oscillator frequency at C106, the blocking capacitor to the balanced modulator/product detector, and found that it was 11.999045 MHz. Other BITXs will be significantly different since the crystals are carefully selected to match those in the crystal IF filter. I wrote this value into my operating program file as the “BFO frequency” but found that I was still not on frequency. The only other reason for this discrepancy, aside from a math error, would be the reference oscillator for the Si5351 Phase Locked Loop.


I wrote my 60m operating system from scratch. It is simple since I am a novice at such things. No internal calibration routine. Instead I rely upon the accuracy of the Raduino reference oscillator value. To find what that is, without disturbing the oscillator loading with a probe, I wrote a short and simple sketch for the Raduino.

/*  Calibration program for Raduino

Don Cantrell,ND6T    v 1.2     8, Feb 2017

Compiles under etherkit Si5351 library v 2.0.1

This source file is under General Public License version 3.

Generates the reference clock frequency so that it can be

measured and substituted as the corrected frequency of the

particular oscillator.

*/

#include <si5351.h>
Si5351 si5351;

void setup() {
    
    si5351.init(SI5351_CRYSTAL_LOAD_8PF,25e6L,0);
    si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);    
    si5351.set_freq(25e8 , SI5351_CLK2);
}
void loop() {

}


The crystal frequency is assumed to be exactly 25 MHz, at least that is what the Si5351 thinks. So we ask it to generate a 25 MHz signal and then read what it actually is. Simple.

If you are comfortable with re-loading the original Raduino sketch (or whatever sketch that you have been running) and are familiar with the different versions of the libraries and procedures that are needed to do this then, and only then, you are ready to continue. If you aren't comfortable with that then stop right here! You can easily “upgrade yourself out of service” as most of us have realized, much to our chagrin. If you find yourself in that corner then you may not have anyone to rescue you.

That said, the next step is to replace the operating system with the little calibration sketch and let it run for a few minutes so that the oscillator will stabilize (it can drift 10 Hz or so while warming up). There is no display routine for the Raduino so ignore the display (I told you this was a simple program). Measure the Raduino output frequency where it feeds the “DDS1”jack at pin number 1 there on the BITX board. Record your result from the frequency counter and use that value in the setup line for the Si5351 in place of the 25000000 value. Don't forget to add the “L” (for Long integer) if the old value had it.

In the original Raduino sketch v 1.0.1 this appears at line number 589.
“ si5351.init(SI5351_CRYSTAL_LOAD_8PF,25000000l); “

Reload your revised operating sketch and enjoy. It certainly solved my problem. My 60m BITX now seems to stay within 1 Hz, or so, of where it should be (after a few minutes “warm up”, of course).

Keep this value to use whenever you use this particular reference oscillator. Your frequencies will now be as accurate as your frequency counter and component drift will allow.

Don Cantrell, ND6T