The BITX and Raduino combination can be used as shipped without calibration as long as you do not operate right at the boundaries of the assigned frequency allocations. The old saw “Good 'nuff fer gum'mit work” applies for most use. Certainly it is more accurate (and stable) than the stuff we old geezers used “back in the day”. But what if you want all of the accuracy that the equipment is capable of producing? That digital readout is tempting.
Ashhar Farhan composed a brilliant solution in his Raduino sketch. He included a software calibration that uses a push button press to enable the operator to tune a known frequency signal “by ear” to establish an offset to be applied to the VFO frequency. This puts it very close, much better than the uncalibrated result, since it accounts for both BFO and Si5351 reference variations. There remains a small intrinsic error (insignificant in a single band application) in that the correction is frequency proportional. If you were to use the scheme for wide frequency ranges it could be a small problem.
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.0 7 Feb 2017
Compiles under etherkit Si5351 library v 2.0.6
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.output_enable(SI5351_CLK2,1);
si5351.set_freq(25e8 ,SI5351_CLK2);
}
void loop() {
}
You can download it by clicking HERE.
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 a few 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.
de ND6T