|
|
Line 1: |
Line 1: |
− | [[fILE:VFO-003_P1861_720px.jpg]]
| + | * [http://www.rtl-sdr.com/rtl-sdr-quick-start-guide/ RTL-SDR Quick Start Guide] |
− | | + | * [http://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/ RTL-SDR Dongles (RTL2832U)] |
− | == Features ==
| + | * [[FM-NOTCH]] Filter |
− | | + | * [http://k6jca.blogspot.com/2017/02/an-fpga-sdr-hf-transceiver-part-1.html An FPGA SDR HF Transceiver] |
− | Software controlled VFO
| + | ** [https://github.com/k6jca/fpga-sdr-rev-2.5 GitHub repo] |
− | | + | * [https://github.com/AlexandreRouma/SDRPlusPlus/releases SDR++ v1.0.3] - SDR++, The bloat-free SDR software |
− | * Arduino Pro Mini Microprocessor
| + | * [https://www.gnuradio.org/ GNU Radio] - free & open-source software development toolkit that provides signal processing blocks to implement software radios |
− | ** 8-bit ATMEGA328 CPU
| + | * [https://www.g4ifb.com/FT8_Hinson_tips_for_HF_DXers.pdf FT8 docs] |
− | ** 8 MHz
| + | ** [https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html WSJT-XX FT8 Software] |
− | ** 3.3V I/O
| + | * [https://github.com/pavelmc/FT857d Arduino CAT control software] |
− | * Detachable Rotary Encoder/OLED card
| + | * [[WA3TFS SDR Upverter Design]] |
− | ** SSD1306 OLED Display
| |
− | *** I2C Interface
| |
− | ** Rotary encoder
| |
− | * Menu options
| |
− | ** Select between 3 VFOs
| |
− | ** Adjust frequency
| |
− | ** Step sizes: 1Hz, 10 Hz, 100 Hz, 1 KHz, 10 KHz, 100 KHz, 1 MHz, 10 MHz steps (software controllable)
| |
− | ** Adjust frequency accuracy to 0.01 Hz precision
| |
− | ** Turn VFO Off/On (Off = 3.3V)
| |
− | ** Save default values which are loaded at power up
| |
− | * Si5351A Oscillator
| |
− | ** 3 Outputs
| |
− | ** [https://www.mouser.com/ProductDetail/Fox-Abracon/FOX924B-27?qs=%2Fha2pyFaduhq6kU%252Bi5vLrAGjqnvi7J8gxS%252BDxofzmrc%3D 27 MHz TCXO crystal oscillator]
| |
− | ** I2C Interface
| |
− | ** [http://www.relmon.com/en/mobile/index.php/list/detail/347.html MS5351M Data Sheet] - Alternate part for Si5351A
| |
− | *** [http://qrp-labs.com/synth/ms5351m.html MS5351M Evaluation Report by QRP-Labs]
| |
− | * 3.3V, 50 Ohm outputs
| |
− | ** +12.6 dBm output
| |
− | * Power
| |
− | ** [[Mini360_Buck_Converter|MINI-360 DC/DC Buck regulator]]
| |
− | ** 5-24 VDC
| |
− | ** 30mA at 12VDC
| |
− | * Fits in standard extruded enclosures
| |
− | | |
− | === Arduino Pro Mini ===
| |
− | | |
− | * [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2510209.m570.l1313&_nkw=Arduino+Pro+Mini+3.3V&_sacat=0 Ebay search for Arduino Pro Mini 3.3V] | |
− | * [https://www.amazon.com/s?k=arduino+pro+mini+3.3v&crid=32353SO1QC57M&ref=nb_sb_ss_ts-doa-p_4_16 Amazon search for Arduino Pro Mini 3.3V]
| |
− | | |
− | [[File:ArdruinoProMini-EBAY_PART-720px.png]]
| |
− | | |
− | === Power ===
| |
− | | |
− | * 5-24 VDC
| |
− | * 30mA at 12VDC | |
− | * 55mA at 5V
| |
− | * 35mA at 9V
| |
− | * 28mA at 14V
| |
− | * 33mA at 23V
| |
− | | |
− | === TCXO ===
| |
− | | |
− | * TXCO requires very little frequency correction
| |
− | * [https://www.mouser.com/ProductDetail/Fox-Abracon/FOX924B-27?qs=%2Fha2pyFaduhq6kU%252Bi5vLrAGjqnvi7J8gxS%252BDxofzmrc%3D 27 MHz TCXO crystal oscillator] | |
− | ** Package / Case: 5 mm x 3.2 mm
| |
− | ** Frequency: 27 MHz
| |
− | ** Frequency Stability: 2.5 PPM
| |
− | ** Supply Voltage - Max: 3.3 V
| |
− | * [https://www.mouser.com/ProductDetail/Fox-Abracon/FOX924B-25?qs=%2Fha2pyFadui2wJvSeJUfy4U6zwGkGxGt0HiIeYtjWowmwSAvVs76ZA%3D%3D 25 MHz] - Alternate would require software changes | |
− | | |
− | == Connectors ==
| |
− | | |
− | === J1 - OLED ===
| |
− | | |
− | * Located on display/encoder board
| |
− | | |
− | # SDA
| |
− | # SCL
| |
− | # Vcc
| |
− | # GND
| |
− | | |
− | [[file:VFO-003_J1.PNG]]
| |
− | | |
− | === J2 - Display Encoder/OLED (Display card) ===
| |
− | | |
− | * Connect via cable to display/encoder board
| |
− | | |
− | # Encoder A
| |
− | # Encoder B
| |
− | # Encoder Switch
| |
− | # SCL
| |
− | # SDA
| |
− | # Vcc
| |
− | # GND
| |
− | | |
− | [[file:VFO-003_J2.PNG]]
| |
− | | |
− | === J3 - Display Encoder/OLED (Main card) ===
| |
− | | |
− | * Connect via cable to display/encoder board
| |
− | | |
− | # Encoder A
| |
− | # Encoder B
| |
− | # Encoder Switch
| |
− | # SCL
| |
− | # SDA
| |
− | # Vcc
| |
− | # GND
| |
− | | |
− | [[file:VFO-003_J3.PNG]]
| |
− | | |
− | === J4 - FTDI ===
| |
− | | |
− | * Can install 1x6 header on the Arduino Pro Mini and not install this
| |
− | | |
− | # GND
| |
− | # GND
| |
− | # Vcc
| |
− | # RX
| |
− | # Tx
| |
− | # DTR
| |
− | | |
− | [[file:VFO-003_J4.PNG]]
| |
− | | |
− | === J5 - Arduino A0-A3/C10-D13 ===
| |
− | | |
− | # A3
| |
− | # A2
| |
− | # A0
| |
− | # D13
| |
− | # D12
| |
− | # D11
| |
− | # D10
| |
− | # Vcc (not connected on Rev 1 PCB)
| |
− | # GND (not connected on Rev 1 PCB)
| |
− | | |
− | [[file:VFO-003_J5.PNG]]
| |
− | | |
− | === J6 - Disconnect for Mini-360 Power Supply ===
| |
− | | |
− | * The [[Mini360 Buck Converter]] comes adjusted for a very high output voltage
| |
− | * Remove jumper to adjust the output voltage to 3.3V without powering the rest of the card
| |
− | * Install to power the card from the power supply only after adjusting output
| |
− | | |
− | [[file:VFO-003_J6.PNG]]
| |
− | | |
− | [[file:Mini-360-004.jpg]]
| |
− | | |
− | === J7 - Output disconnects ===
| |
− | | |
− | * Cut rear side trace to disconnect
| |
− | * Can be used to install external LP filters
| |
− | * Limited use due to 74AC14 drivers
| |
− | | |
− | [[file:VFO-003_J7.PNG]]
| |
− | | |
− | === J8 - Arduino P5-P9 ===
| |
− | | |
− | # P5
| |
− | # P6
| |
− | # P7
| |
− | # P8
| |
− | # P9
| |
− | # Vcc
| |
− | # GND
| |
− | | |
− | [[file:VFO-003_J8.PNG]]
| |
− | | |
− | === J12 - I2C ===
| |
− | | |
− | [[file:VFO-003_J12.PNG]]
| |
− | | |
− | === P1-P3 - Outputs (BNCs) ===
| |
− | | |
− | == Measurements ==
| |
− | | |
− | * [[NanoVNA]]
| |
− | * 10 Mhz signal from the VFO-003
| |
− | * 1-100 MHz
| |
− | | |
− | [[file:tinysa_LOGMAG_S11_2021-10-12_12-29-43.png]]
| |
− | | |
− | [[file:tinysa_LOGMAG_S11_2021-10-12_12-09-58.png]]
| |
− | | |
− | === 1-350 MHz scan ===
| |
− | | |
− | [[file:tinysa_LOGMAG_S11_2021-10-12_12-27-58.png]]
| |
− | | |
− | === Harmonic content ===
| |
− | | |
− | * 10MHz fundamental = +12.25 dBm
| |
− | * 20MHz harmonic = -16.75 dBm
| |
− | * 30MHz harmonic = +2.4 dBm
| |
− | * 50MHz harmonic = -2.1 dBm
| |
− | | |
− | [[file:tinysa_LOGMAG_S11_2021-10-12_12-19-33.png]]
| |
− | | |
− | == Schematic ==
| |
− | | |
− | * [https://github.com/land-boards/lb-boards/blob/master/HamRadio/VFO-003/Documents/Schematics/VFO-003_Rev3_Schematic.pdf Rev 3 schematic] | |
− | | |
− | == Software ==
| |
− | | |
− | * [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/VFO-003 GitHub Repository] | |
− | | |
− | [[file:VFO-003_P1867-720pxV.jpg]]
| |
− | | |
− | === Memory Usage ===
| |
− | | |
− | * Total Memory usage | |
− | | |
− | <pre>
| |
− | Sketch uses 25970 bytes (84%) of program storage space. Maximum is 30720 bytes. Global variables use 1503 bytes (73%) of dynamic memory, leaving 545 bytes for local variables. Maximum is 2048 bytes.
| |
− | </pre>
| |
− | | |
− | * Display code: 10260 | |
− | * Si5351 code: 12076
| |
− | | |
− | ==== Minimal u8g2 code ====
| |
− | | |
− | <pre>
| |
− | Sketch uses 10260 bytes (33%) of program storage space. Maximum is 30720 bytes. Global variables use 1033 bytes (50%) of dynamic memory, leaving 1015 bytes for local variables. Maximum is 2048 bytes.
| |
− | </pre>
| |
− | | |
− | * Code
| |
− | | |
− | <pre>
| |
− | void setup(void)
| |
− | {
| |
− | u8g2.begin();
| |
− | | |
− | }
| |
− | | |
− | void loop(void)
| |
− | {
| |
− | printStringToOLED("VFO-003");
| |
− | }
| |
− | | |
− | void printStringToOLED(char * charStr)
| |
− | {
| |
− | u8g2.clearBuffer();
| |
− | u8g2_prepare();
| |
− | u8g2.drawStr( 0, 0, charStr);
| |
− | u8g2.sendBuffer();
| |
− | }
| |
− | | |
− | // u8g2_prepare()
| |
− | // Setup the screen font, etc
| |
− | // List of fonts
| |
− | // https://github.com/olikraus/u8g2/wiki/fntlist8#u8g2-fonts-capital-a-height-38
| |
− | void u8g2_prepare(void)
| |
− | {
| |
− | u8g2.setFont(u8g2_font_t0_11b_tf); // 8 Pixel tall font
| |
− | u8g2.setFontRefHeightExtendedText();
| |
− | u8g2.setDrawColor(1);
| |
− | u8g2.setFontPosTop();
| |
− | u8g2.setFontDirection(0);
| |
− | }
| |
− | </pre>
| |
− | | |
− | ==== Minimal Si5351 code ====
| |
− | | |
− | <pre>
| |
− | Sketch uses 12076 bytes (39%) of program storage space. Maximum is 30720 bytes. Global variables use 378 bytes (18%) of dynamic memory, leaving 1670 bytes for local variables. Maximum is 2048 bytes.
| |
− | </pre>
| |
− | | |
− | <pre>
| |
− | #include <Arduino.h>
| |
− | #include "si5351.h"
| |
− | | |
− | // Constructors | |
− | Si5351 si5351;
| |
− | // End of constructor list
| |
− | | |
− | void setup(void)
| |
− | {
| |
− | unsigned long VFO_0_Freq;
| |
− | unsigned long VFO_1_Freq;
| |
− | unsigned long VFO_2_Freq;
| |
− | bool i2c_found;
| |
− | VFO_0_Freq = 14000000;
| |
− | VFO_0_Freq = 14000000;
| |
− | VFO_0_Freq = 14000000;
| |
− | // Si8351 initialiation
| |
− | si5351.init(SI5351_CRYSTAL_LOAD_6PF, 27000000, 0);
| |
− | si5351.set_freq(VFO_0_Freq, SI5351_CLK0);
| |
− | si5351.set_freq(VFO_1_Freq, SI5351_CLK1);
| |
− | si5351.set_freq(VFO_2_Freq, SI5351_CLK2);
| |
− | si5351.update_status();
| |
− | si5351.set_correction(0, SI5351_PLL_INPUT_XO);
| |
− | si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_8MA);
| |
− | si5351.drive_strength(SI5351_CLK1,SI5351_DRIVE_8MA);
| |
− | si5351.drive_strength(SI5351_CLK2,SI5351_DRIVE_8MA);
| |
− | }
| |
− | | |
− | void loop(void)
| |
− | {
| |
− | }
| |
− | </pre>
| |
− | | |
− | === Feature Adds ===
| |
− | | |
− | * [https://github.com/pavelmc/FT857d CAT control] | |
− | | |
− | == Mechanicals/Enclosure ==
| |
− | | |
− | * Detachable Front Panel OLED with Rotary Encoder
| |
− | | |
− | [[file:VFO-003_P1871_720px.jpg]]
| |
− | | |
− | * Designed to fit into Aluminum Project Box Enclosure DIY 100*76*35mm - [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=100*76*35mm+aluminum&_sacat=0&LH_TitleDesc=0&_odkw=100*76*35mm+Aluminum+PCB+Instrument+Box+Enclosure+Electronic+Project+Case+Set&_id=174408274566 ebay search]
| |
− | | |
− | [[file:VFO-003_CAD_Dimensioned.PNG]]
| |
− | | |
− | [[file:VFO-003_FrontPanel_Holes.PNG]]
| |
− | | |
− | [[file:VFO-003_RearPanel_Holes.PNG]]
| |
− | | |
− | == Rev 1 Board Issues List ==
| |
− | | |
− | No major issues
| |
− | | |
− | * J5-9 and J5-10 are missing connections
| |
− | ** Add wires on reverse side of the PCB if needed | |
− | * Note orientation of I2C termination resistors
| |
− | ** Installed sideways by accident on first build
| |
− | | |
− | [[file:Rev1-Rework_R10,R11.PNG]] | |
− | | |
− | * Note orientation of Mini360
| |
− | ** Put on backwards on first build
| |
− | ** Always use a current limited power supply (I did, no damage)
| |
− | ** Always adjust Mini360 with 3.3V SEL jumper removed
| |
− | ** Solder in with short leads - space up a bit to allow rework
| |
− | ** Orientation is with inductor towards edge of card
| |
− | | |
− | [[file:Rev1-Rework_Mini360_Oientation.PNG]]
| |
− | | |
− | == Rev 3 Design ==
| |
− | | |
− | * Adds J12, I2C connector
| |
− | ** Use with I2C Peripheral like port expanders
| |
− | | |
− | [[file:Rev3-_J12_I2C.PNG]]
| |
− | | |
− | * Add silkscreen, "VADJ>" pointing to the adjustment pot on Mini360
| |
− | | |
− | [[file:Rev2-Rework_Mini360_VADJ.PNG]]
| |
− | | |
− | * Add breakaways for Front Panel to make it easier to separate
| |
− | | |
− | [[file:Rev3-_OLED_Breakaways.PNG]]
| |
− | | |
− | * Switch to 0.1" pitch SMA edge launch connectors
| |
− | | |
− | [[file:Rev3-_SMA_Smaller.PNG]]
| |
− | | |
− | == Assembly Sheet / Parts List ==
| |
− | | |
− | [[VFO-003 Assembly Sheet - Rev 1]]
| |