Skip to main content

Frequency adjustment of uBITX (Si5351) - How to calibration

Frequency adjustment of uBITX (Si5351)
How to calibration for Frequency fine adjusting

This document describes how to precisely adjust the frequency of the Si5351 module
Applies to all devices that use the Si5351 module, such as uBITX
I used a very old instrument to show the difference in frequency for verification of this post.
Advanced instruments are not required if there is a way to check the frequency. You only need a calculator.

Be sure to read the following two articles before calibrating uBITX.
http://www.hamskey.com/2018/05/how-to-calibration-ubitx.html
http://www.hamskey.com/2018/05/introducing-ubitxs-invalid-calibration.html

An example of calibration is performed using uBITX Manager

1.This document is for anyone who knows the frequency error of uBITX
There are many ways to figure out how wrong your uBITX frequency is
There are quite a few other ways to use the frequency counter, signal generator, oscillater the frequency with the VCO, use programs such as Wsjt-x, use different HF transceivers, WWV, already known popular beacon signal.
I will not discuss how to measure frequency error here

2.PLL Frequency
(also called VCO in uBITX source code, called PLLA  in Si5351 Manual,
Exactly, PLL stands for Phase Locked Loop, For compatibility with the Si5351 manual and uBITX source code, I will call it PLLA here)


(https://www.silabs.com/documents/public/data-sheets/Si5351-B.pdf)

Clock generators such as the Si5351 have a  PLLA or PLLB frequency (Referecnce frequency). For uBITX, if you have not made any modifications, it will be 850Mhz
In order to make your radio more precise than a commercial product, you must remember the PLL Frequency.
The PLL frequency is used to create the desired frequency.

3.About Calibration value
It is not a necessary this part to adjust the frequency of uBITX.
You can skip this part and read 4 only

uBITX used a 25Mhz crystal to operate the Si5351's PLLA at 875Mhz.
However, 875Mhz is not generated correctly due to X-tal error.

Let's take a simple example.

There are devices that generate frequencies.
The device manual states that the PLLA operates at 10000 Hz.
The programmer wrote a program to generate one clock per 1000Hz to create 10Hz.
ex)
PLLA (10000Hz) / Output (10Hz) = 1000 (div)
PLLA (10000Hz) / 1000 (div) = Output (10Hz)

The programmer thought the PLLA was operating at 10000Hz.
But what happens when the PLLA runs at 15000Hz?
If a PLLA running at 15000Hz generated 1Clock every 1000Hz, then perhaps 15Hz would have been generated.
ex)
PLLA (10000Hz) / Output (10Hz) = 1000 (div) (Programmer's predictions)
PLLA Real Freq (15000Hz) / 1000 (div) = Output (15Hz), error : 5Hz (Real)

An error has occurred as much as the difference between the PLLA operation of the programmer and the PLLA actually operating.

So what do we do here?

There are two ways
The first way is to fix the PLLA.
The PLLA is modified to operate at 10000 Hz.

Second way.
But there is a little easier way.
The programmer is changing the predicted 10000Hz to 15000Hz.
Perhaps firmware then generates 1 clock every 1500hz to generate 10Hz.

The second method allows you to generate the correct frequency without modifying the hardware.

Do I have to program each of the devices by measuring the actual frequency of the PLLA on every device?
No. We can use EEProm

The difference between the frequency of the PLLA that the programmer thinks and the frequency at which the actual PLLA operates is put into the EEProm.

In the above example, the value stored in EEProm is 5000.
As the device boots, it gets the value in EEProm and adds it to the programmer's thought PLLA frequency.

ex)
5000 (from eeprom) + 10000 (Values from the manual)  / 10Hz = 1500 (div)
PLLA Real Freq (15000Hz) / 1500 (div) = 10Hz

Yes, that's right. Here, the value of eeprom is the calibration value

Final summary.
The firmware is written assuming that the PLLA operates at 10000hz.
Actually, the PLLA operates at 15000hz, The result is 15hz.
To do that, we put 5000 in the EEProm (Calibration value), 15hz -> 10hz

Important Points Increasing the Calibration value has lowered the frequency

4.How to adjust the frequency in uBITX
Describe any unmodified uBITX based on (use 25Mhz x-tal)
The PLLA frequency of uBITX is 875Mhz (875000000Hz)

As the calibration value increases, the output frequency of uBITX decreases.
Decreasing the calibration value increases the output frequency of uBITX.

What should you do if your uBITX is below 100Hz?
Yes. I need to increase the calibration value.
So how much should we increase it?

Here we must think of one more.
What frequency did you test?

If you test at 7Mhz and the actual frequency is below 100Hz, test at 14Mhz,
Perhaps the result is that the actual frequency will be transmitted below 200Hz.
That is, as the frequency to be tested increases, the error range will also increase.

The formula for obtaining Master Calibration from uBITX is shown below.

875000000 / Test Frequency * Error Hz => Calibration value

EX1 - for Si5351)
  Current status :
  Master calibration value : 0
  Test Frequency       : 14,001,000
  Frequency Counter  : 14,000,900
  875000000 / 14001000 * (14,000,900 - 14,001,000) => -6250

EX2 - for uBITX (or SSB Transceiver))
  Current status :
  Master calibration value : 150000
  VFO Frequency       : 7,050,000
  VFO Mode             : USB
  CW Tone               : 1000
  CW-Straight Key Send => : 7,051,000 Send
  Frequency Counter  : 7,051,650
  875000000 / 7050000* (7051650 - 7051000) => 80674

  Adjust calibration : 150000 + 80674 = 230674
(Before Calibration Value + Adjust Calibration value = new Calibration value)

5.Test
This is experiment with my uBITX, I removed the calibration value of my uBITX for the experiment.

Set Master Calibration value to 0 for test


CW transmission at 14.000.000 Mhz
(CW Tone : 1000 => Send 14.001.000 Mhz)



Measured frequency : 14003460
Error : 2460hz


Calibration value :
875000000 / 14001000 * (14003460- 14001000) => 153,739
PLLA        /  Test Freq * (Measured Freq - Send Freq) => Adjust value

Set Calibration value : Before Calibration Value + Adjust value (0 + 153739 = 153739)


Perfect calibrated



Ian KD8CEC

Comments

  1. Replies
    1. Enjoy Ham with uBITX :)
      Thanks for comment

      Delete
  2. Thank you for this post. It finally gave me the missing piece to get my unit calibrated. Tests now show that I am on frequency down to 1 hz. Perfect tones on WWV, tested with tone output on another rig and fed the Ubitx into an audio analyzer. got the WWV 1000 hz tone right at 1000 hz USB and LSB, checked it outputting cw from my other rig at 800hz. got it nailed down.

    ReplyDelete
    Replies
    1. Great!!!

      I knew you would do it nicely. Because your uBITX is better than mine :)
      I sometimes use my smartphone's audio spectrum to check the LSB, USB's tone.

      Thank you for freedback.

      Ian KD8CEC

      Delete
  3. I also have to thank you for this great post.

    This made my uBITX functional at last. After building it and playing around with the menu my alignement (Frequency and BFO) was off so much that using it was not possible. And I just could not reconstruct it.

    I tried to do the calibration with the method described by Farhan - without success.

    Your instruction gave me the way how to do it with my calibration equipment. And this little thing works like a charm now

    Sascha, DL5SMB

    ReplyDelete

Post a Comment

Popular posts from this blog

How to upgrade uBITX Firmware

uBITX is based on Arduino Nano. So uBITX's firmware upgrade method is the same as Arduino.
There are two ways to upgrade the firmware of uBITX.

The first is to compile the source from the Arduino IDE, and the second is to upload the compiled hex file using the Firmware Upgrade Tool.

I'll show you how to upload a compiled hex file as a second method.

1.Connect the uBITX's USB cable to the computer.


2.Run Device Manager on your computer.
  The way to open the Device Manager for each OS Version differs slightly.
  In most Windows, you can easily launch the Device Manager by running.

  On your computer, press the Windows key + R.



 Type devmgmt.msc and press OK Button.




On most operating systems, there will be a serial port named Ports with CH340. If so, the next step is skipped.

If the serial port is not installed as below, you need to install the driver.



Included in uBITX is the Adonano, which uses the CH340 USB To UART part.

Download the latest CH340 driver from the Internet.

CAT Support uBITX Firmware CEC Version 1.06 Release (Added WSPR)

uBITX Firmware CEC Version v1.06 (changed v1.061)

I deployed 1.06 and received feedback from WSPR's beta tester, Philip (G7JUR).
It was a problem that the LPF was not automatically selected according to band selection during WSPR transmission.

Version 1.08 has been released.
http://www.hamskey.com/2018/05/ubitx-firmware-cec-version-108-release.html

I modified it soon and changed uBITX Firmware CEC Version to 1.061.
uBITX Manager also changed Version to 1.01.

-----------------------------------------------------------------------------------

I released version 1.06 which added WSPR function to uBITX.
Beta testers have been very helpful when embedding WSPR functionality. WSPR will continue to improve in the future.

By using WSPR before and after QSO, you can check where your uBITX is spreading all over the world.  If uBITX Manager is used to put WSPR information into uBITX, uBITX no longer needs any external device to transmit WSPR.

The uBITX group's excellent tester also shared a …

CAT Support uBITX Firmware CEC Version 1.01 Release(Changed from v1.0)

CAT Support uBITX Firmware CEC Version 1.01  Release (Changed from v1.0)

uBITX Firmware CEC Version 1.06 has been released.
Please click the link below.
http://www.hamskey.com/2018/03/cat-support-ubitx-firmware-cec-version_24.html

This version of the concept is an upgrade without hardware modifications. No hardware modifications are required to use this firmware. Continuous release and testing has been done in the uBITX group. I tried to put only the basic functions that an HF transceiver should have. The features have been upgraded with the advice of people who have great ideas in the uBITX group.
It was a project that started to contribute to the original source in github. The project was intended to fix some simple bugs and request merge to the original source. And I was planning to delete the project. At the beginning of the project there was a bit of discussion about this in the uBITX group.
Since then, I've keeping the original source type to allow code share with any user fork…