{"id":804,"date":"2015-11-11T12:16:56","date_gmt":"2015-11-11T11:16:56","guid":{"rendered":"http:\/\/pa0rwe.nl\/?page_id=804"},"modified":"2025-04-24T10:05:33","modified_gmt":"2025-04-24T08:05:33","slug":"universal-vfo-based-on-the-si5351","status":"publish","type":"page","link":"https:\/\/pa0rwe.nl\/?page_id=804","title":{"rendered":"Universal VFO based on the Si5351"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><em><a href=\"https:\/\/www.silabs.com\/Support%20Documents\/TechnicalDocs\/Si5351-B.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0000ff;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1086\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-1.jpg\" alt=\"\" width=\"825\" height=\"402\" srcset=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-1.jpg 1076w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-1-600x292.jpg 600w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-1-768x374.jpg 768w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-1-1024x499.jpg 1024w\" sizes=\"auto, (max-width: 825px) 100vw, 825px\" \/><\/span><\/a><\/em><\/p>\n<p>&nbsp;<\/p>\n<p><em><a href=\"https:\/\/www.silabs.com\/Support%20Documents\/TechnicalDocs\/Si5351-B.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0000ff;\">https:\/\/www.silabs.com\/Support%20Documents\/TechnicalDocs\/Si5351-B.pdf<br \/>\n<\/span><\/a><\/em><em><a href=\"https:\/\/www.microchip.com\/wwwproducts\/Devices.aspx?product=PIC16F1825\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0000ff;\"> https:\/\/www.microchip.com\/wwwproducts\/Devices.aspx?product=PIC16F1825\u00a0<\/span><\/a><\/em><em><a href=\"https:\/\/ak2b.blogspot.nl\/2015\/04\/multi-featured-vfo.html\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0000ff;\"><br \/>\nhttps:\/\/ak2b.blogspot.nl\/2015\/04\/multi-featured-vfo.html<\/span><\/a><\/em><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"text-decoration: underline;\"><strong>PIC version<br \/>\n<\/strong><\/span><\/h2>\n<p><strong><em>Note: This version is obsolete and will no longer be maintained.<br \/>\n<\/em><\/strong><em><strong>Please scroll down for the Arduino version.<\/strong><\/em><\/p>\n<p><em><span style=\"color: #0000ff;\">Downloads:<\/span><\/em>\u00a0 Hex file for the 16F1825 click for <a href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2023\/10\/SI5351_TRx_VFO_25MHz_V3.0.zip\"><em><span style=\"color: #0000ff;\">25MHz <\/span><\/em><\/a>version. For control board schematic click <em><span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/S-9210-02-Si5351A-MCU-SYNTH-CONTROLER-SCHEMA-res.gif\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a><\/span><\/em> and for the Si5351 board click <em><span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/S-1005-02-Si5351A-VFO-SCHEMA.gif\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a><\/span><\/em> .<br \/>\n<span style=\"text-decoration: underline;\"><strong>Update v.3.0 october 2023:<\/strong><\/span> Due to this version was not working properly, it has been updated.<\/p>\n<p>This VFO is based on the popular Si5351. It consists of two parts: the controller board and the Si5351 board.<\/p>\n<p>The control board is using a PIC16F1825 and the popular OLED SSD1306 display.<br \/>\nThe Adafruit board is using a 25 MHz x-tal and I2C address = 0xc0.<\/p>\n<p>There are 3 clock outputs available having the following outputs:<br \/>\n<strong>CLK0:<\/strong>\u00a0\u00a0 Tx Output frequency from 1 &#8211; 125 MHz (same frequency as on the display).<br \/>\n<strong>CLK1:<\/strong>\u00a0\u00a0\u00a0 First Rx LO calculated from <strong>CLK0<\/strong> + or &#8211; <strong>CLK2.<br \/>\nCLK2:<\/strong> \u00a0 Rx IF frequency.\u00a0 For instance 9 or 10.7 MHz. Every frequency is possible.<\/p>\n<div id=\"attachment_808\" style=\"width: 614px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-808\" class=\" wp-image-808\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO1.jpg\" alt=\"\" width=\"604\" height=\"429\" srcset=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO1.jpg 751w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO1-600x426.jpg 600w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><p id=\"caption-attachment-808\" class=\"wp-caption-text\">Si5351 board<\/p><\/div>\n<p>The two push buttons are for Calibration and selecting (and tune) the IF frequency.<br \/>\nThe toggle switch is for selecting RIT. With this function you can tune the Rx frequency separate from the Tx frequency.<\/p>\n<p>Below you see a test setup.<\/p>\n<div id=\"attachment_806\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/100_2612.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-806\" class=\"wp-image-806 size-medium\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/100_2612-600x400.jpg\" alt=\"Si5351 VFO test setup\" width=\"600\" height=\"400\" srcset=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/100_2612-600x400.jpg 600w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/100_2612-1024x683.jpg 1024w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-806\" class=\"wp-caption-text\">Si5351 VFO test setup (PIC version)<\/p><\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\">Functions:<\/span><br \/>\n&#8211; Output of 3 different frequencies (Tx, Rx, BFO\/LO) on CLK0-CLK2<br \/>\n&#8211; Select and tune BFO\/LO to any IF frequency<br \/>\n&#8211; Rx frequency based on Tx +\/- BFO\/LO<br \/>\n&#8211; Calibration function (see below)<br \/>\n&#8211; RIT function (only the Rx frequency is tuned with 100 Hz step size)<\/p>\n<p><span style=\"text-decoration: underline;\">Calibration:<\/span><br \/>\n&#8211; Push the calibration button<br \/>\n&#8211; The frequency will be set to the X-tal frequency<br \/>\n&#8211; Measure the frequency at CLK0<br \/>\n&#8211; Tune to the <span style=\"text-decoration: underline;\">measured<\/span> frequency and push again the calibration button<br \/>\n&#8211; Calibration is ready.<\/p>\n<p><strong>Note:<\/strong>\u00a0 If calibration will not succeed: You can reset the calibration by pressing the Calibration button twice <strong>without<\/strong> tuning. Then try again to calibrate.<\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"text-decoration: underline;\"><strong>Arduino version<\/strong><\/span><\/h2>\n<p>Due to the popularity of the Arduino, I rewrite the PIC software for using an Arduino-Nano.<br \/>\nThe software has the same functionality as the PIC version. The Arduino version is partly based on the original <em>MultiFeaturedVFO<\/em> software of Jason Mildrum, NT7S and Przemek Sadowski, SQ9NJE.<br \/>\nYou find the settings (x-tal frequency and I2C address) for the used Si5351 board in the RWE_si5351.h file.<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Notes:<\/strong><\/span><\/p>\n<ul>\n<li><strong>Note about the OLED display resolution:<\/strong> 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&#215;64. It is a #define statement at the beginning of the file.<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\"><strong>Modifications<br \/>\n<\/strong><\/span>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 ;-).<br \/>\nThe maximum tunable frequency is set to 100 MHz.<\/p>\n<p><span style=\"text-decoration: underline;\">Update to Version 2.0 (June 2020)<br \/>\n<\/span>Due to comments from builders, I made the following improvements to the sketch:<span style=\"text-decoration: underline;\"><br \/>\n<\/span>&#8211;\u00a0 Changed text BFO to IF<br \/>\n&#8211;\u00a0 Make it possible to use the vfo for upper or lower mixing by using a #define statement (upper or lower)<br \/>\n&#8211;\u00a0 Store of actual frequency after 5 seconds of not tuning<br \/>\n&#8211;\u00a0 Set Hz digit of frequency at start to zero (0)<br \/>\n&#8211;\u00a0 Step size was not saved. Repaired<span style=\"text-decoration: underline;\"><br \/>\n<\/span><\/p>\n<p>Update to Version 3.0 (april 2021)<br \/>\n&#8211;\u00a0 I added the option of stepping back to the step size in the software. By holding down the step size push button a little longer you can step backwards.<\/p>\n<p>Update to Version 3.2 (april 2023)<br \/>\n&#8211; I fixed a persistent error. A variable was filled incorrectly, causing strange errors.<\/p>\n<p><strong>Note:<\/strong> Because the newest version of Jason&#8217;s Si5351 is not compatible with my sketch,\u00a0 I&#8217;m using the 2015 version of the Si5351 library and renamed the source files to RWE_si5351).<br \/>\nI also make some changes for using the Arduino on FreeBSD compiler (Thanks to Joerg, DL8DTL).<br \/>\nFor that reason you can download this updated library from <em><a href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2023\/06\/Si5351-VFO-Libraries.zip\"><span style=\"color: #3366ff;\"><span style=\"color: #0000ff;\">here<\/span><\/span><\/a><\/em>.\u00a0 (This zip file also includes the Rotary library).<\/p>\n<p>For<span style=\"color: #000000;\"> downloading <\/span>the latest Arduino sketch version 3.2\u00a0 <a href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2023\/06\/Si5351_RxTx_VFO_V32.zip\"><span style=\"color: #0000ff;\"><em>click here<\/em><\/span><\/a>.\u00a0 For the schematic <a href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2017\/05\/Si5351-VFO-5.jpg\"><span style=\"color: #0000ff;\"><em>click here.<\/em><\/span><\/a><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Special version for the PA3EPQ Taurus 20<br \/>\n<\/strong><\/span>On request of Ben, PA3EPQ I made a special version for the Taurus 20. Click <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2023\/06\/Si5351_RxTx_VFO_EPQ.zip\"><em>here<\/em><\/a> <\/span>for downloading this version. <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-21\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/07\/updated.gif\" alt=\"\" width=\"44\" height=\"12\" \/><br \/>\nFor more info see the BQC Nieuwsbrief #185 and #186.<\/p>\n<p style=\"text-align: center;\">\n<table id=\"tablepress-10\" class=\"tablepress tablepress-id-10\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\"><div id=\"attachment_884\" style=\"width: 160px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-884\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2019\/06\/Si5351-VFO-7.jpg\" alt=\"Tx on CLK0 (KHz)\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-884\" \/><p id=\"caption-attachment-884\" class=\"wp-caption-text\">Tx on CLK0<\/p><\/div><\/th><th class=\"column-2\"><div id=\"attachment_882\" style=\"width: 160px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-882\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2019\/06\/Si5351-VFO-6.jpg\" alt=\"Tx on CLK0 (MHz)\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-882\" \/><p id=\"caption-attachment-882\" class=\"wp-caption-text\">Tx on CLK0<\/p><\/div><\/th><th class=\"column-3\"><div id=\"attachment_882\" style=\"width: 160px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-882\" src=\"http:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-2-150x150.jpg\" alt=\"IF \/ BFO on CLK2\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-882\" srcset=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-2-150x150.jpg 150w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-2-600x598.jpg 600w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-2.jpg 660w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><p id=\"caption-attachment-882\" class=\"wp-caption-text\">IF \/ BFO on CLK2<\/p><\/div><\/th><th class=\"column-4\"><div id=\"attachment_883\" style=\"width: 160px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-883\" src=\"http:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/11\/Si5351-VFO-3-150x150.jpg\" alt=\"Calibration X-tal frequency\" width=\"150\" height=\"150\" class=\"size-thumbnail wp-image-883\" \/><p id=\"caption-attachment-883\" class=\"wp-caption-text\">Calibration X-tal frequency<\/p><\/div><\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<\/tbody>\n<\/table>\n<!-- #tablepress-10 from cache --><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"text-decoration: underline;\"><strong>VHF Version of the vfo.\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/07\/new.gif\" alt=\"\" width=\"42\" height=\"13\" \/><br \/>\n<\/strong><\/span><\/h2>\n<p>I was asked by several amateurs about a VHF version of the VFO. I have adapted the software for this so that it can reach a maximum of 150 MHz. However, this frequency is only available on CLK0 due to the internal organization of the Si5351. The capabilities of this VFO are similar to those of the VFO described above, e<span class=\"Y2IQFc\" lang=\"en\">xcept that only CLK0 is activated.<\/span><\/p>\n<p>For downloading the latest Arduino sketch of this VHF VFO version 3.0 (September 2022)\u00a0 <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2022\/09\/Si5351_RxTx_VHF_VFO_V30.zip\"><em>click here<\/em><\/a><\/span>\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2015\/07\/new.gif\" alt=\"\" width=\"42\" height=\"13\" \/>.\u00a0 For the schematic <a href=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2017\/05\/Si5351-VFO-5.jpg\"><em><span style=\"color: #0000ff;\">click here<\/span>.<\/em><\/a><\/p>\n<p><strong>Notes:<\/strong><\/p>\n<ul>\n<li>This version of the Si5351 VFO is using the Si5351 library of Ethertkit version 2.1.3!<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2><span style=\"text-decoration: underline;\"><strong>VFO build by other amateurs <\/strong><\/span><\/h2>\n<p>A lot of amateurs already build the VFO.\u00a0 Norbert, DG1KPN has build a VLF receiver using this VFO.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-1584 aligncenter\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2019\/06\/VLF-RX-e1561467177346-600x338.jpg\" alt=\"\" width=\"870\" height=\"490\" srcset=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2019\/06\/VLF-RX-e1561467177346-600x338.jpg 600w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2019\/06\/VLF-RX-e1561467177346-768x432.jpg 768w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2019\/06\/VLF-RX-e1561467177346-1024x576.jpg 1024w\" sizes=\"auto, (max-width: 870px) 100vw, 870px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>This is my VFO used in the 8020 CW tranceiver build by Hubert, F6DUK.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-1816 aligncenter\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2021\/03\/Si5351-VFO-8-600x338.jpg\" alt=\"\" width=\"699\" height=\"394\" srcset=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2021\/03\/Si5351-VFO-8-600x338.jpg 600w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2021\/03\/Si5351-VFO-8-1024x576.jpg 1024w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2021\/03\/Si5351-VFO-8-768x432.jpg 768w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2021\/03\/Si5351-VFO-8-1536x864.jpg 1536w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2021\/03\/Si5351-VFO-8-2048x1152.jpg 2048w\" sizes=\"auto, (max-width: 699px) 100vw, 699px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Hubert, F6DUK also uses my <strong>VHF VFO<\/strong> for his 144 MHz project&#8230;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1924 aligncenter\" src=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2022\/09\/Si5351-VHF-VFO-600x427.jpg\" alt=\"\" width=\"600\" height=\"427\" srcset=\"https:\/\/pa0rwe.nl\/wp-content\/uploads\/2022\/09\/Si5351-VHF-VFO-600x427.jpg 600w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2022\/09\/Si5351-VHF-VFO-768x546.jpg 768w, https:\/\/pa0rwe.nl\/wp-content\/uploads\/2022\/09\/Si5351-VHF-VFO.jpg 1024w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; &nbsp; https:\/\/www.silabs.com\/Support%20Documents\/TechnicalDocs\/Si5351-B.pdf https:\/\/www.microchip.com\/wwwproducts\/Devices.aspx?product=PIC16F1825\u00a0 https:\/\/ak2b.blogspot.nl\/2015\/04\/multi-featured-vfo.html &nbsp; PIC version Note: This version is obsolete and will no longer be maintained. Please scroll down for the Arduino version. Downloads:\u00a0 Hex file for the 16F1825 click for 25MHz version. For control board schematic click here and for the Si5351 board click here . Update v.3.0 october 2023: Due [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-804","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=\/wp\/v2\/pages\/804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=804"}],"version-history":[{"count":81,"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=\/wp\/v2\/pages\/804\/revisions"}],"predecessor-version":[{"id":2113,"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=\/wp\/v2\/pages\/804\/revisions\/2113"}],"wp:attachment":[{"href":"https:\/\/pa0rwe.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}