Great instructional video!!! I am actually building a 20m rig using some of the code. I was able to add a correction factor to the code so the frequency is spot on. However i was testing it using the original code and anything above 11mhz there looks like an error causing the frequency to be 5mhz off. Once I track down the error I’ll be able to have an awesome VCO.!!!
I know I've had a few bugs in that code. I did so some fixes to the ESP32 C++ code which you can find here github.com/thaaraak/ESP32-Transmitter/blob/master/main/main.cpp Honestly it might be easier to generate the quadrature signals with a pair of D-type flip flops than using the si5351s inbuilt functionality. Heres an example if you want to try that www.newioit.com.au/archives/34 I'll have to check that python code out and see if I can find the problem
Thanks for your kind explanation, can this board generate below 180 kHz (25MHz X15/2050)? i think it stucks with a limitation under the python adafruit software
Hi Jungsu. The datasheet says that the output can go all the way down to 2.5KHz. I have never tried that low myself and its quite possible there's some bugs in the library as it attempts to guess the multiplier, numerator and denominator from the desired frequency. What I would suggest is to determine the multiplier, numerator and denominator yourself to get 180KHz and then manually call "configure_registers_bulk". I hope this helps and thank you for the comment
Great video! Just two questions: - Can this board be made to output frequency in 1 Hz increments? - can the phase difference between the two channels be made to be any other value except quadrature? Like, can it be any arbitrary angle?
To answer - Yes the board has sub-hz precision - Yes - setting the phase difference is a little counter intuitive. The phase is set in terms of the multiplier ("mult" below) passed to the "set_frequency" call where passing in "mult" to "set_phase" results in a 90 phase shift. So to do a 45 degrees phase shift you pass in mult/2 to the "set_phase" self._si5351.set_frequency( self._frequency, self._si5351.clock_0, self._si5351.pll_a, self._mult ) self._si5351.set_frequency( self._frequency, self._si5351.clock_2, self._si5351.pll_a, self._mult ) if ( self._mult != self._old_mult ): self._si5351.set_phase( self._si5351.clock_2, self._si5351.pll_a, self._mult ) Note that "mult" is an integer so you don't have great control over the phase. I hope this answers your question and thank you for the comment
Interesting! When setting the PLL using the fractional method you didn't seem to get any jitter on the clock signal. The 5351a boards that I have been playing around with have some pretty noticeable jitter on the signal unless I use the even integer mode of setting up the part.
The version I have are the Hiletgo brand off of Amazon. I ordered an Adafruit one that just came today to do some comparisons. Should be the same IC. I just wonder if one of them has a register set differently that isn't getting set in the software. The datasheet for the part does mention the jitter being worse for non integer dividers.
@@na5y VERY interesting! Looks like exactly the problem I ran into. Here is a video I made (on my other channel) of what I was seeing. ruclips.net/video/d2LE_-31kL8/видео.html
Davide, do you mean use it as a timebase to drive a real time clock? It will hold a frequency pretty well (depending on the stability of its own crystal source of course - which you have to provide externally). You could use it like that. Its generally intended to be emit a programmable variable frequency though (as a local oscillator for a radio for instance). Thank you for the question - I hope this helps!
Hi Ian, I just replicated your set-up with an si5351 and Teensy4.0 with circuitpython and mu-editor, works fine! Would it be possible to post your circuit diagrams for the complete set-up somewhere together with a component list please? I would like to replicate your complete project. Very interesting and educational stuff overhere:) Best 73, Pascal,Belgium
You bet Pascal. I use kicad at the moment - would kicad projects work or do you need an image? For the kicad projects the main board is here: github.com/thaaraak/Tinypico-Radio/tree/master/kicad/Radio The phase shifter is here: github.com/thaaraak/Tinypico-Radio/tree/master/kicad/Phase%20and%20Filter
@@na5y Well, I have no experience with kicad software for the moment, but I very much like your oldschool handwritten schematics:) But I could figure out how to use Kicad of course.
No worries - I have put the schematic in the Radio directory above as "Radio.pdf". There is also a BOM in the directory in the file "Radio". Let me know if you can see them. If thats what you are after I will do the same in the Phase directory
Cool. Let me know how you get on! Something not spelled out in the schematic is the toroids are 2 x T37-6 and 1 x FT50-75 (marked T50 splitter). The turns ratio on the T37-6 are 6:31 in input and 31:6 on the output. The FT50 is wound trifilar with 11 turns
Came here when I was trying to learn about LMR SDR! 73 Jon, VU2JO
Great instructional video!!! I am actually building a 20m rig using some of the code. I was able to add a correction factor to the code so the frequency is spot on. However i was testing it using the original code and anything above 11mhz there looks like an error causing the frequency to be 5mhz off. Once I track down the error I’ll be able to have an awesome VCO.!!!
I know I've had a few bugs in that code. I did so some fixes to the ESP32 C++ code which you can find here
github.com/thaaraak/ESP32-Transmitter/blob/master/main/main.cpp
Honestly it might be easier to generate the quadrature signals with a pair of D-type flip flops than using the si5351s inbuilt functionality. Heres an example if you want to try that
www.newioit.com.au/archives/34
I'll have to check that python code out and see if I can find the problem
Very interesting
keep up the good work
Thank you. I've done si5351 programming for Micropython, Arduino, STM32 and ESP32 now - its a great little board
Nice video.i wandering have you seen a very significant negative temp.coefficient within the 5351 boards.
I didn't see that - but I didn't really do any measurement of temperature sensitivity. Thank you for the comment
Thanks for your kind explanation,
can this board generate below 180 kHz (25MHz X15/2050)? i think it stucks with a limitation under the python adafruit software
Hi Jungsu. The datasheet says that the output can go all the way down to 2.5KHz. I have never tried that low myself and its quite possible there's some bugs in the library as it attempts to guess the multiplier, numerator and denominator from the desired frequency. What I would suggest is to determine the multiplier, numerator and denominator yourself to get 180KHz and then manually call "configure_registers_bulk". I hope this helps and thank you for the comment
Have a look here for how you go about calculating the multiplier, numerator and denominator for any frequency
ruclips.net/video/2cb1LLoeT-Y/видео.html
Great video!
Just two questions:
- Can this board be made to output frequency in 1 Hz increments?
- can the phase difference between the two channels be made to be any other value except quadrature? Like, can it be any arbitrary angle?
To answer
- Yes the board has sub-hz precision
- Yes - setting the phase difference is a little counter intuitive. The phase is set in terms of the multiplier ("mult" below) passed to the "set_frequency" call where passing in "mult" to "set_phase" results in a 90 phase shift. So to do a 45 degrees phase shift you pass in mult/2 to the "set_phase"
self._si5351.set_frequency( self._frequency, self._si5351.clock_0, self._si5351.pll_a, self._mult )
self._si5351.set_frequency( self._frequency, self._si5351.clock_2, self._si5351.pll_a, self._mult )
if ( self._mult != self._old_mult ):
self._si5351.set_phase( self._si5351.clock_2, self._si5351.pll_a, self._mult )
Note that "mult" is an integer so you don't have great control over the phase. I hope this answers your question and thank you for the comment
Interesting! When setting the PLL using the fractional method you didn't seem to get any jitter on the clock signal. The 5351a boards that I have been playing around with have some pretty noticeable jitter on the signal unless I use the even integer mode of setting up the part.
Thank you for the comment Nate - which version of the boards were you using?
Just came across this video from Kevin Loughlin BTW: ruclips.net/video/7_rd3Pw-gFs/видео.html
The version I have are the Hiletgo brand off of Amazon. I ordered an Adafruit one that just came today to do some comparisons. Should be the same IC. I just wonder if one of them has a register set differently that isn't getting set in the software. The datasheet for the part does mention the jitter being worse for non integer dividers.
@@na5y VERY interesting! Looks like exactly the problem I ran into. Here is a video I made (on my other channel) of what I was seeing. ruclips.net/video/d2LE_-31kL8/видео.html
Stupid question....I can program and it hold the programmed frequency so i can use in a computer like a ttl clock ?
Davide, do you mean use it as a timebase to drive a real time clock? It will hold a frequency pretty well (depending on the stability of its own crystal source of course - which you have to provide externally). You could use it like that. Its generally intended to be emit a programmable variable frequency though (as a local oscillator for a radio for instance). Thank you for the question - I hope this helps!
Will this work with uPython ? Planning to emulate this code on RPi PICO using uPython
This code was written for micropython - should be no problem with a different board although GPIO numbers will be definitely different
Hi Ian, I just replicated your set-up with an si5351 and Teensy4.0 with circuitpython and mu-editor, works fine! Would it be possible to post your circuit diagrams for the complete set-up somewhere together with a component list please? I would like to replicate your complete project. Very interesting and educational stuff overhere:) Best 73, Pascal,Belgium
You bet Pascal. I use kicad at the moment - would kicad projects work or do you need an image? For the kicad projects the main board is here:
github.com/thaaraak/Tinypico-Radio/tree/master/kicad/Radio
The phase shifter is here:
github.com/thaaraak/Tinypico-Radio/tree/master/kicad/Phase%20and%20Filter
@@na5y Well, I have no experience with kicad software for the moment, but I very much like your oldschool handwritten schematics:) But I could figure out how to use Kicad of course.
No worries - I have put the schematic in the Radio directory above as "Radio.pdf". There is also a BOM in the directory in the file "Radio". Let me know if you can see them. If thats what you are after I will do the same in the Phase directory
@@na5y yes, I can see them on your github page, thanks! Will start ordering parts:) Best 73, Pascal
Cool. Let me know how you get on! Something not spelled out in the schematic is the toroids are 2 x T37-6 and 1 x FT50-75 (marked T50 splitter). The turns ratio on the T37-6 are 6:31 in input and 31:6 on the output. The FT50 is wound trifilar with 11 turns
Hey, which connector did you use to connect the clock output to Oscilloscope?
That is a male to male SMA cable with an SMA to BNC adapter at the oscilloscope end
@@na5y Thanks for the reply
I need the software, please
Code is in my github repo - github.com/thaaraak/Tinypico-Radio
@@na5y thanks you so much