Difference between revisions of "VFO-001"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) (Created page with "'''This is a work in process - Gathering pieces.''' File:HW-9.PNG == Features == Replace HW-9 internal VFO with a digital VFO * HW-9 VFO has legendary issues ** Mechan...") |
Blwikiadmin (talk | contribs) |
||
(112 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[File:VFO-001_P132-720px.jpg]] | |
− | |||
− | [[File: | ||
== Features == | == Features == | ||
− | + | * [[SDD1306 OLED Display]] | |
− | |||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
** I2C Interface | ** I2C Interface | ||
− | ** | + | ** OLED runs from 3.3V (can run from 5V but this use has 3.3V) |
− | * | + | * [[RotaryEnc|Rotary Encoder Break Out Board]] |
− | * | + | * [[Arduino Pro Mini]] |
− | |||
** Arduino compatible | ** Arduino compatible | ||
** 3.3V | ** 3.3V | ||
− | * | + | ** 8 MHz |
− | * Si5351 Oscillator | + | ** Programmed via Arduino IDE |
+ | *** Download via serial | ||
+ | ** Store configuration in EEPROM | ||
+ | * [[Si5351 Oscillator Breakout Board]] | ||
+ | ** 10 KHz - 40 MHz tuning range | ||
+ | *** 1Hz/10Hz/100Hz/1KHz/10KHz/100KHz/1MHz/10MHz steps | ||
** I2C Interface | ** I2C Interface | ||
** 3 Outputs | ** 3 Outputs | ||
− | |||
− | |||
− | |||
− | |||
** 27 MHz crystal | ** 27 MHz crystal | ||
+ | ** 3.3V operation works without level shifters for I2C* | ||
+ | ** Si5351 can only run from 3.3V | ||
+ | ** Used right angle headers and Dupont cables for low profile | ||
+ | * [[Mini360_Buck_Converter|Mini-360 Buck Regulator]] | ||
+ | ** 5V-23V input | ||
+ | ** 3.3V output | ||
+ | * [https://www.adafruit.com/product/2230 Extruded Aluminum Enclosure Box - 94mm x 83mm x 30mm] | ||
== Schematic == | == Schematic == | ||
− | [[File:VFO-001-SCHEMATIC.PNG]] | + | [[File:VFO-001-SCHEMATIC-V2A.PNG]] |
− | + | * PWR* - connect only when no Mini-360 Buck Regulator is used | |
+ | * [[PD01]] - Power Distribution card (not shown) | ||
− | + | == Build == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * [https://www.adafruit.com/product/2230 Extruded Aluminum Enclosure Box - 94mm x 83mm x 30mm] - Out of stock | |
− | + | * BNC/Power Jack placement | |
− | + | [[File:VFO-001-Nibbler-BNCs_Placement-720px.jpg]] | |
− | + | * Rear panel BNCs and power jack | |
− | + | [[File:VFO-001-Rear_Panel-720px.jpg]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * Drill holes and nibble out for OLED cutout | |
+ | ** A bit rough | ||
+ | ** Better to undercut nibble and file to size | ||
− | [[File: | + | [[File:VFO-001-Nibbler-01-720px.jpg]] |
− | * | + | * OLED fitted |
− | [[File: | + | [[File:VFO-001-Nibbler-OLED-Fitted-720px.jpg]] |
− | + | * Final | |
− | + | [[File:VFO-001_P132-720px.jpg]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | == Libraries/Example Code == |
− | + | === Land Boards Code === | |
− | |||
− | + | * [https://github.com/land-boards/lb-Arduino-Code/tree/master/STM32/VFO_Si5351 Land Boards Application] | |
− | |||
− | |||
− | + | ==== VFO Menu ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * Set Step Size | |
+ | ** 1Hz, 10 Hz, 100 Hz, 1KHz, 10KHz, 100 KHz, 1 MHz, 10 MHz | ||
+ | * Set frequency | ||
+ | ** 10 KHz to 40 MHz in step size steps | ||
+ | * Select VFO | ||
+ | ** VFO0, VFO1, VFO2 | ||
+ | * VFO On/Off | ||
+ | ** On, Off | ||
+ | * Drive Level | ||
+ | ** 2 mA, 4 mA, 6 mA, 8 mA | ||
+ | * Set Calibration Value | ||
+ | ** In step size steps (down to 1 Hz) | ||
+ | * Save (power-on) defaults | ||
− | + | === Libraries used in this app === | |
+ | * [https://github.com/olikraus/u8g2 U8g2: Library for monochrome displays, version 2] | ||
+ | * [https://github.com/etherkit/Si5351Arduino Si5351 Library for Arduino] | ||
+ | * [https://www.best-microcontroller-projects.com/rotary-encoder.html Rotary Encoder] - Software debounced | ||
+ | === Other Si5351 Libraries === | ||
− | [ | + | * [https://github.com/andrey-belokon/Syntez_Si5351_Si570 Universal Digital VFO Si570/Si5351] |
− | + | * [https://github.com/adafruit/Adafruit_Si5351_Library Adafruit_Si5351] | |
− | * | + | * [https://github.com/NT7S/Si5351 Si5351 Library for avr-gcc] |
− | * | + | * [https://github.com/prt459/Arduino_si5351_VFO_Controller_Keyer vk3hn_VFO_controller] |
− | + | * [https://github.com/pu2clr/BFO Simple BFO with si5351 controlled by Arduino] | |
− | * [https:// | + | * [https://github.com/pu2clr/VFO_BFO_OLED_ARDUINO VFO and BFO with Si5351A, OLED and Arduino] |
− | * [https://github.com/ | ||
− | * [ | ||
− | == | + | == Calbration Using WWV == |
− | + | * Good method that doesn't require a frequency counter | |
+ | * Tune via ear and S meter | ||
+ | * Requires shortwave (or ham) receiver that can receive 5/10/15 MHz | ||
+ | * Rough tune calibration factor on scope or frequency counter | ||
+ | * Fine tune to 1 Hz using WWV | ||
+ | * 15 MHz WWV midday has better resolution | ||
− | + | <video type="youtube">QCJ4cQGOQLI</video> | |
− | + | == Output Drive Level == | |
− | |||
− | |||
− | |||
− | |||
− | + | * First, calculate the "theoretical" drive level and then measure the actual drive level into a 50 ohm load | |
− | === | + | === Si5351A Drive Level === |
− | + | * Si5351A drives 3.3V square waves | |
+ | * Si5351A datasheet lists 50 Ohm source impedance | ||
+ | ** Half of the power would be dissipated in the source and half in a 50 ohm load | ||
+ | * The RMS value for square-wave voltages whose pulse duration (ti) and pause (tp) have the same length: | ||
− | + | [[file:RMS-SquareWave.PNG]] | |
− | |||
− | = | + | * [https://www.redcrab-software.com/en/Calculator/Electrics/Rectangular-Voltage-RMS-Value#:~:text=The%20rms%20value%20is%20for%20square-wave%20voltages%20whose,rms%20value%20is%20equal%20to%20the%20peak%20value Square Wave Calculator] |
− | + | [[file:RMS-SquareWave-2.PNG]] | |
− | + | * Using a "theoretical" drive level of 3.3V | |
− | + | [[file:Si5351_Drive-Level_dBm.PNG]] | |
− | |||
− | |||
− | === | + | * [https://www.calculatorology.com/mw-to-dbm-conversion/ 54 mW is 17.3 dBm total power] |
+ | * Half delivered to load = 27 mW | ||
+ | ** 14.3 dBm "theoretical" drive level | ||
+ | * [[Kits_and_Parts_Mixers#VFO-001_drive|ADE-1]] needs +7 dBm drive level | ||
+ | * Would in theory need a 7 dB attenuator between the Si5351A and the [[Kits_and_Parts_Mixers#VFO-001_drive|ADE-1]] | ||
+ | * Reality, the output drive in the Si5351A is controlled by the output drive control register | ||
+ | * Si5351A outputs as measured with [[tinySA]] | ||
+ | ** Drive Level 2 mA = 0.2 dBm | ||
+ | ** Drive Level 4 mA = 6.2 dBm < Best choice for driving +7 dBm mixers like the [[Kits_and_Parts_Mixers#VFO-001_drive|ADE-1]] | ||
+ | ** Drive Level 6 mA = 9.7 dBm | ||
+ | ** Drive Level 8 mA = 11.7 dBm | ||
− | + | === Measured === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * Channel CLK0 | |
+ | * 10 Mhz | ||
+ | * 30 dB external attenuator (gain set in tinySA to -30dB) | ||
+ | * Output level at 2 mA | ||
+ | * Scan 1MHz to 300MHz | ||
− | [[ | + | [[file:tinySA_VFO-001_10MHz-Signal_1MHz-to-300MHz.png]] |
− | * | + | * Zoom into 10 MHz fundamental |
− | + | * Approx. 1 dBm signal level | |
− | * | ||
− | |||
− | |||
− | |||
− | + | [[file:tinySA_VFO-001_10MHz-Signal_Narrow-10MHz.png]] | |
− | [[ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Videos == | == Videos == |
Latest revision as of 13:42, 1 November 2021
Contents
Features
- SDD1306 OLED Display
- I2C Interface
- OLED runs from 3.3V (can run from 5V but this use has 3.3V)
- Rotary Encoder Break Out Board
- Arduino Pro Mini
- Arduino compatible
- 3.3V
- 8 MHz
- Programmed via Arduino IDE
- Download via serial
- Store configuration in EEPROM
- Si5351 Oscillator Breakout Board
- 10 KHz - 40 MHz tuning range
- 1Hz/10Hz/100Hz/1KHz/10KHz/100KHz/1MHz/10MHz steps
- I2C Interface
- 3 Outputs
- 27 MHz crystal
- 3.3V operation works without level shifters for I2C*
- Si5351 can only run from 3.3V
- Used right angle headers and Dupont cables for low profile
- 10 KHz - 40 MHz tuning range
- Mini-360 Buck Regulator
- 5V-23V input
- 3.3V output
- Extruded Aluminum Enclosure Box - 94mm x 83mm x 30mm
Schematic
- PWR* - connect only when no Mini-360 Buck Regulator is used
- PD01 - Power Distribution card (not shown)
Build
- Extruded Aluminum Enclosure Box - 94mm x 83mm x 30mm - Out of stock
- BNC/Power Jack placement
- Rear panel BNCs and power jack
- Drill holes and nibble out for OLED cutout
- A bit rough
- Better to undercut nibble and file to size
- OLED fitted
- Final
Libraries/Example Code
Land Boards Code
VFO Menu
- Set Step Size
- 1Hz, 10 Hz, 100 Hz, 1KHz, 10KHz, 100 KHz, 1 MHz, 10 MHz
- Set frequency
- 10 KHz to 40 MHz in step size steps
- Select VFO
- VFO0, VFO1, VFO2
- VFO On/Off
- On, Off
- Drive Level
- 2 mA, 4 mA, 6 mA, 8 mA
- Set Calibration Value
- In step size steps (down to 1 Hz)
- Save (power-on) defaults
Libraries used in this app
- U8g2: Library for monochrome displays, version 2
- Si5351 Library for Arduino
- Rotary Encoder - Software debounced
Other Si5351 Libraries
- Universal Digital VFO Si570/Si5351
- Adafruit_Si5351
- Si5351 Library for avr-gcc
- vk3hn_VFO_controller
- Simple BFO with si5351 controlled by Arduino
- VFO and BFO with Si5351A, OLED and Arduino
Calbration Using WWV
- Good method that doesn't require a frequency counter
- Tune via ear and S meter
- Requires shortwave (or ham) receiver that can receive 5/10/15 MHz
- Rough tune calibration factor on scope or frequency counter
- Fine tune to 1 Hz using WWV
- 15 MHz WWV midday has better resolution
Output Drive Level
- First, calculate the "theoretical" drive level and then measure the actual drive level into a 50 ohm load
Si5351A Drive Level
- Si5351A drives 3.3V square waves
- Si5351A datasheet lists 50 Ohm source impedance
- Half of the power would be dissipated in the source and half in a 50 ohm load
- The RMS value for square-wave voltages whose pulse duration (ti) and pause (tp) have the same length:
- Using a "theoretical" drive level of 3.3V
- 54 mW is 17.3 dBm total power
- Half delivered to load = 27 mW
- 14.3 dBm "theoretical" drive level
- ADE-1 needs +7 dBm drive level
- Would in theory need a 7 dB attenuator between the Si5351A and the ADE-1
- Reality, the output drive in the Si5351A is controlled by the output drive control register
- Si5351A outputs as measured with tinySA
- Drive Level 2 mA = 0.2 dBm
- Drive Level 4 mA = 6.2 dBm < Best choice for driving +7 dBm mixers like the ADE-1
- Drive Level 6 mA = 9.7 dBm
- Drive Level 8 mA = 11.7 dBm
Measured
- Channel CLK0
- 10 Mhz
- 30 dB external attenuator (gain set in tinySA to -30dB)
- Output level at 2 mA
- Scan 1MHz to 300MHz
- Zoom into 10 MHz fundamental
- Approx. 1 dBm signal level
Videos