Generic Crystal Replacement Test VFO

VK3ZYZ

Moderator
Staff member
As I did not get the Si5351 boards in the order, A thought struck me. Why not get some made? And a mod would be to replace the crystal osc with a TCXO module. So, a search found the KiCAD files and I started to mod it.
But I cannot figure out how to drive the program. It will not let me add tracks to connect the TCXO.
1753251638716.png
 

Attachments

VK3ZYZ

Moderator
Staff member
I had a track on pin 2 of the Si5351 that would not delete, then I managed to find how to edit the length to run it onto the TCXO out pin so it looks to be connected now.
1753253611036.png

I do doubt this is all correct enough to get boards made.
This is quite different to drive compared to my McCAD PCB program.
 

Attachments

BillC

Active member
I had a track on pin 2 of the Si5351 that would not delete, then I managed to find how to edit the length to run it onto the TCXO out pin so it looks to be connected now.
View attachment 3366
I do doubt this is all correct enough to get boards made.
This is quite different to drive compared to my McCAD PCB program.
I reckon you might be on a winner designing your own boards, good luck.
 

VK3ZYZ

Moderator
Staff member
The next version of the software has some presets for each band to typical settings. Also, pushing the down button turns the third clock on at the signal frequency to test the target's receiver. In this VFO mode, the tuning steps are set at 1khz.

Note: on 70cm, the signal clock (and RX and TX injection clocks) are all limited to 1/3 the signal frequency .
Photo on 24-7-2025 at 5.44 pm.jpg


EDIT: Here is an updated manual. There may still be errors.
The code is now modded to limit the Si5351 frequencies to those it can handle.
 

Attachments

Last edited:

VK3ZYZ

Moderator
Staff member
I've assembled the first PCB. And of course, there are errors! The battery charger board pin spacing is 0.125, not 0.1 as I had drawn it.
Also, the spacing of the ESP8266 board was wrong as I had drawn it so one side of the pins hangs over the end of the PCB that has a bit cut out to fit.

PCB_Btm.jpg

The RHS pins are in mid air and only one is used so it has a wire link to the main PCB pad. That can be seen below, as are the flying pins.
PCB_Top.jpg

I was intending to use smaller switches but I have quite a few with the large thread so one of those has been pressed into service. Also, I have socket-ed the display board. This Si5351 board has the TCXO mod.
DisplayPins.jpg

Then I found the ESP8266 boards are USBC so a suitable USB lead had to be found.
The new display boards are suitable for 3.3V and 5V, so that is a bonus. Note the top board has a voltage regulator.
DisplayBoards.jpg

But they would not work :(
It took me ages, trying other working code, until one lot I loaded did work. On inspection of the code, it was a different chip!
The original display was based on a H1106G while this one is the SSD1306. Once I found that, and modified the code, it is alive :)
The next thing found was the layout of the BNC connectors is swapped around but that is because I mounted the Si5351 board on the other side of the PCB. It can be changed in the code.
So, I will upload the code when I have it worked out and tested.
Also the new .stl file for the case top.
 
Last edited:

VK3ZYZ

Moderator
Staff member
I have decided to do a second version of the PCB, but this time, as well as fixing the spacing errors, add the Si5351 and TCXO to it. It struck me I do not need the level translation stuff as the system is 3.3V and it saves me the fiddly TCXO modding of the Si5351 boards. As a bonus, it will actually cost me less than buying those boards.

The cover for the box is printing. This will be about #7 so I hope it is ok this time.
 

VK3ZYZ

Moderator
Staff member
The first board is alive :)
Photo on 1-8-2025 at 9.15 pm.jpg
,
Photo on 1-8-2025 at 9.14 pm.jpg


The calibration factor is working ok and so I calibrate each unit at 33.825Mhz to within a couple of cycles.
I have some working code below:)
EDIT: fixed a bug in the code 20250803
It now works on either type of display as selected in the code.
 

Attachments

Last edited:

VK3ZYZ

Moderator
Staff member
Version 2 PCBs have been ordered. That will allow the Si5351 modules or just the Si5351 IC and TCXO to be used.
Plus a couple of fixes and relocating things to fit better.
 

VK3ZYZ

Moderator
Staff member
While making the code posted above, I tried to have a compile option for the 2 displays.

I could not get it to work for both displays, and it came up with compile error. Of course the error message was not where the problem actually was.

The following allows the selection.
Having the line active selects the SSD1306 display...
Code:
#define SSD1306_used      // comment out if the older SH110X OLED driver is used
Having the line commented out selects the SH110X display...
Code:
//#define SSD1306_used      // comment out if the older SH110X OLED driver is used
Then, the appropriate library is installed. But it (and similar entries that control the display operation) did not work for the SH110X version, but came up with an error, even though the SSD1306 version that used the same code worked!
Code:
#ifdef SSD1306_used
  #include <Adafruit_SSD1306.h>
#else   #include <Adafruit_SH110X.h>
#endif
.
It turns out to be pretty simple, but I did not know the syntax needed.
The fix is...

Code:
#ifdef SSD1306_used
  #include <Adafruit_SSD1306.h>
#else 
#include <Adafruit_SH110X.h>
#endif
Can you spot the difference?
This only took me quite a few hours to find!
.
 
Last edited:

BillC

Active member
While making the code posted above, I tried to have a compile option for the 2 displays.

I could not get it to work for both displays, and it came up with compile error. Of course the error message was not where the problem actually was.

The following allows the selection.
Having the line active selects the SSD1306 display...
Code:
#define SSD1306_used      // comment out if the older SH110X OLED driver is used
Having the line commented out selects the SH110X display...
Code:
//#define SSD1306_used      // comment out if the older SH110X OLED driver is used
Then, the appropriate library is installed. But it (and similar entries that control the display operation) did not work for the SH110X version, but came up with an error, even though the SSD1306 version that used the same code worked!
Code:
#ifdef SSD1306_used
  #include <Adafruit_SSD1306.h>
#else   #include <Adafruit_SH110X.h>
#endif
.
It turns out to be pretty simple, but I did not know the syntax needed.
The fix is...

Code:
#ifdef SSD1306_used
  #include <Adafruit_SSD1306.h>
#else
#include <Adafruit_SH110X.h>
#endif
Can you spot the difference?
This only took me quite a few hours to find!
.
Subtle difference , line by line instruction??
 

VK3ZYZ

Moderator
Staff member
Version 2 PCB has a build option with either the Si5351 board or the Si5351 on the main PCB.
1754542618862.png
 

VK3ZYZ

Moderator
Staff member
The version 2 VFO PCB works :)
Photo on 20-8-25 at 12.28 pm.jpg

This has the Si5351 IC soldered onto the main PCB, along with the TCXO in place of just a crystal, so no calibration is needed now.


Photo on 20-8-25 at 12.29 pm.jpg
 
Last edited:

VK3ZYZ

Moderator
Staff member
FrontLabled.jpg

I printed a front with labels, and swapped the Si and RX around from the original, Oops! So the code has been changed to suit.
The prints are not as good as I would like but will probably do for now.
Smhow I have lost the setting that calibrates the hole size so that is something I need to fix again!
 

Attachments

Josh

Member
I had a track on pin 2 of the Si5351 that would not delete, then I managed to find how to edit the length to run it onto the TCXO out pin so it looks to be connected now.
View attachment 3366
I do doubt this is all correct enough to get boards made.
This is quite different to drive compared to my McCAD PCB program.
probably too late now, but come around, happy to give you some time one on one to learn KICAD enough to edit.
but if not, its always
1. Edit schematic,
2. Assign any missing footprints, (and manu data if getting assembled).
3. Update PCB,
4. Set design rules,
5. Route traces,
6. Run DRC(desgin rules check),
7. Export Gerber, (pos and bom if getting assembled).

the errors you are experiencing are due to that the constant design rule checks do not let you do things that disagree with the net list or desgin rules.
You can turn off that feature. Route>Interactive Route Settings>Allow DRC violations. but use with caution, its almost always better to update the schematic and or the design constraints.
screen04.png
 

VK3ZYZ

Moderator
Staff member
To date, there have been a number of direct SMT builds of the Si5351 and TCXO that work well.
Photo on 28-8-25 at 4.44 pm #2.jpg

To test them, I've made up a double ended I2C lead so the new board's Si5351 runs in parallel with that of the running board.
Photo on 28-8-25 at 4.49 pm.jpg

So far, 100% success rate.

There are some Si5351 chips taken off boards that may not actually be faulty so I think I'll test them too, later!
 

VK3ZYZ

Moderator
Staff member
Here are the stl files for the case.
Screw holes in the base need to be tapped M3 after printing.
 

Attachments

Top