Universal VFO based on the Si5351

 

 

https://www.silabs.com/Support%20Documents/TechnicalDocs/Si5351-B.pdf
https://www.microchip.com/wwwproducts/Devices.aspx?product=PIC16F1825 
https://ak2b.blogspot.nl/2015/04/multi-featured-vfo.html

 

PIC version

Downloads:  Hex file for the 16F1825 click for 25MHz version or 27MHz version. For control board schematic click here and for the Si5351 board click here .

**** Please scroll down for the Arduino version! ****

This VFO is based on the popular Si5351. It consists of two parts: the controller board and the Si5351 board. Both designed by Joris (KTH rf-Design).

The control board is using a PIC16F1825 and the popular OLED SSD1306 display.
Because there are two versions of the Si5351 with different I2C addresses and different x-tal frequencies, I made two versions of the software, for 25MHz and 27 MHz x-tal frequency. The KTH-Si5351 board is using the Mouser Si5351 and a x-tal of 27 MHz, the Adafruit board is using a 25 MHz x-tal. The software accepts both versions of the Si5351.

There are 3 clock outputs available having the following outputs:
CLK0:   Tx Output frequency from 1 – 125 MHz (same frequency as on the display).
CLK1:    First Rx LO calculated from CLK0 + or – CLK2.
CLK2:
  Rx IF frequency.  For instance 9 or 10.7 MHz. Every frequency is possible.

Si5351 board

The two push buttons are for Calibration and selecting (and tune) the IF frequency.
The toggle switch is for selecting RIT. With this function you can tune the Rx frequency separate from the Tx frequency.

Below you see a test setup.

Si5351 VFO test setup

Si5351 VFO test setup (PIC version)

 

Functions:
– Output of 3 different frequencies (Tx, Rx, BFO/LO) on CLK0-CLK2
– Select and tune BFO/LO to any IF frequency
– Rx frequency based on Tx +/- BFO/LO
– Calibration function (see below)
– RIT function (only the Rx frequency is tuned with 100 Hz step size)
Calibration:
– Push the calibration button
– The frequency will be set to the X-tal frequency
– Measure the frequency at CLK0
– Tune to the measured frequency and push again the calibration button
– Calibration is ready.

Note:  If calibration will not succeed: You can reset the calibration by pressing the Calibration button twice without tuning. Then try again to calibrate.

 

Arduino version

Due to the popularity of the Arduino, I rewrite the PIC software for using an Arduino-Nano.
The software has the same functionality as the PIC version. The Arduino version is partly based on the original MultiFeaturedVFO software of Jason Mildrum, NT7S and Przemek Sadowski, SQ9NJE.
You find the settings (x-tal frequency and I2C address) for the used Si5351 board in the RWE_si5351.h file.

Notes:

  • Because the newest version of Jason’s Si5351 is not compatible with my sketch,  I’m using the 2015 version of the Si5351 library and renamed the source files to RWE_si5351).
    For that reason you can download this updated library from here.  (This zip file also includes the Rotary library).
  • Note about the OLED display resolution: From builders I understand that the default resolution in the Adafruit SSD1306 library is set to an incorrect value. You must change the resolution in the Adafruit_SSD1306.h file to 128×64. It is a #define statement at the beginning of the file.

Modifications
I have modified the sketch so the lowest frequency is now 10 KHz. I modified the display routine as well because it crashed when the frequency was below 100 KHz ;-).
The maximum tunable frequency is set to 100 MHz.

Update to Version 2.0 (june 2020) 
Due to comments from builders, I made the following improvements to the sketch:
–  Changed text BFO to IF
–  Make it possible to use the vfo for upper or lower mixing by using a #define statement (upper or lower)
–  Store of actual frequency after 5 seconds of not tuning
–  Set Hz digit of frequency at start to zero (0)
–  Stepsize was not saved. Repaired

For downloading the latest Arduino sketch version 2.0  click here.  For the schematic click here.

Tx on CLK0 (KHz)

Tx on CLK0

Tx on CLK0 (MHz)

Tx on CLK0

IF / BFO on CLK2

IF / BFO on CLK2

Calibration X-tal frequency

Calibration X-tal frequency

 

VFO used by other amateurs
A lot of amateurs already build the VFO.  Norbert, DG1KPN has build a VLF receiver using this VFO.