Difference between pages "VFO-003" and "Software Defined Radio (SDR)"

From Land Boards Wiki
(Difference between pages)
Jump to navigation Jump to search
 
 
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]]
 

Latest revision as of 00:08, 15 October 2021