Difference between pages "VFO-003" and "QRP Labs High Performance SDR Receiver"

From Land Boards Wiki
(Difference between pages)
Jump to navigation Jump to search
 
 
Line 1: Line 1:
[[fILE:VFO-003_P1861_720px.jpg]]
+
[[file:QRP-Labs_P1956-720px.jpg]]
  
 
== Features ==
 
== Features ==
  
Software controlled VFO
+
* Three modules
 +
** [http://qrp-labs.com/receiver QRP Labs High Performance Receiver Module]
 +
*** Direct Conversion Receiver
 +
*** Uses a Quadrature Sampling Detector (QSD), also known as a Tayloe Detector
 +
*** [https://www.onsemi.com/pdf/datasheet/fst3253-d.pdf FST3253] Mixer is arranged as a double-balanced mixer for maximum performance
 +
*** Circuit to mute receiver during transmit
 +
*** [https://www.ti.com/lit/ds/symlink/lm4562.pdf Low noise LM4562 op-amps] are used in instrumentation amplifier configuration to provide excellent common mode noise rejection
 +
*** The audio output of the module is isolated using two 600:600-ohm transformers to reduce or eliminate the ground loop problems which can easily occur in SDR systems
 +
*** The module is designed to directly drive a stereo input sound-card or with a polyphase filter card
 +
*** Receiver board has a socket for the standard QRP Labs Band Pass Filter kit which can be routed to an external bandpass filter switch card
 +
*** The receiver requires a local oscillator (LO) input at 4x the receive frequency
 +
*** [http://qrp-labs.com/images/receiver/receiver2.pdf Receiver Build instructions]
 +
** [[RF Band Pass Filters|QRP Labs Band Pass Filter]]
 +
*** Can be used with a [https://qrp-labs.com/ultimatelpf.html Switched Bandpass filter board] for multiband operation
 +
*** [http://qrp-labs.com/bpfkit.html 10/15/20/40/80M QRP Labs Band Pass Filter Kits]
 +
*** [https://qrp-labs.com/images/bpfkit/bpf2.pdf Band Pass Filter Build instructions]
 +
** [https://qrp-labs.com/polyphase QRP Labs Polyphase filter]
 +
*** Polyphase network plug-in module kit cancels the unwanted sideband and produces a single sideband (SSB) output
 +
*** [http://qrp-labs.com/images/polyphase/polyphase2a.pdf Polyphase Filter Build instructions]
 +
* Band Pass Filter and Polyphase filter mount on Receiver Module
 +
* Current draw - measured total 70 mA (5V regulator
 +
* The receiver module is sized 80 x 37mm
  
* Arduino Pro Mini Microprocessor
+
=== Build / Assembly ===
** 8-bit ATMEGA328 CPU
 
** 8 MHz
 
** 3.3V I/O
 
* Detachable Rotary Encoder/OLED card
 
** 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 ===
+
* Power supply + 12V in
 +
** Distribute 12V using [[TinyGrid85]] card with caps
 +
** Needs 5V supply
 +
*** Partly populated [[TinyGrid85]] card with caps and 5V regulator (no ATTiny85 chip)
 +
** Opamps can be powered from 5V or 12-14V (for higher dynamic range)
 +
* [[AudioAmp386|Audio Amplifier]]
 +
* The receiver requires a local oscillator (LO) input at 4x the receive frequency
 +
** Using [[VFO-003]] with [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/VFO-003_4X 4x output software option]
 +
** [https://github.com/etherkit/Si5351Arduino/tree/master/src Si5351 Driver]
  
* [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]
+
== Silkscreen / Pinout ==
* [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]]
+
[[file:IQ_RX_PCB.PNG]]
  
=== Power ===
+
=== Pins ===
  
* 5-24 VDC
+
* IQ pins
* 30mA at 12VDC
+
* I, GND, Q outputs
* 55mA at 5V
+
* Power pins
* 35mA at 9V
+
* GND, +5V, +5V or +12V to +14V
* 28mA at 14V
+
* Tx Mute Input
* 33mA at 23V
+
** 5V mutes inputs
 +
* LO input
 +
** 3.3V from Si5351A oscillators
 +
* IF input
 +
** From external Bandpass Filter Switch
  
=== TCXO ===
+
== Receiver Module ==
  
* TXCO requires very little frequency correction
+
[[file:QRP-Labs_Receiver-Base_P1969-720px.jpg]]
* [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 ==
+
== Polyphase Module ==
  
=== J1 - OLED ===
+
*  Important to observe part outlines
 +
** Adjacent resistors can be put in "sideways"
  
* Located on display/encoder board
+
[[file:QRP-Labs_Polyphase-Filter_P1966-500px.jpg]] [[file:Polyphase-pcb.PNG]]
  
# SDA
+
[[file:Polyphase-pcb-2.png]]
# SCL
 
# Vcc
 
# GND
 
  
[[file:VFO-003_J1.PNG]]
+
[[file:Polyphase-Schematic.PNG]]
  
=== J2 - Display Encoder/OLED (Display card) ===
+
* USB/LSB select jumpers
 +
** Set to USB in the above picture
  
* Connect via cable to display/encoder board
+
[[file:Polyphase_LSB-USB-Jumpers.PNG]]
  
# Encoder A
+
== Bandpass Module ==
# Encoder B
 
# Encoder Switch
 
# SCL
 
# SDA
 
# Vcc
 
# GND
 
  
[[file:VFO-003_J2.PNG]]
+
* 20M - 14 MHz Filter
  
=== J3 - Display Encoder/OLED (Main card) ===
+
[[file:QRP-Labs_BandPass-Filter_P1963-720px.jpg]]
  
* Connect via cable to display/encoder board
+
[[file:Bandpass_Filter_Schematic.PNG]]
  
# Encoder A
+
* NanoVNA
# Encoder B
+
** 12-16 MHz
# Encoder Switch
 
# SCL
 
# SDA
 
# Vcc
 
# GND
 
  
[[file:VFO-003_J3.PNG]]
+
[[FILE:14MHz_12-16MHz_Band_Pass_Filter-2.png]]
  
=== J4 - FTDI ===
+
* Data
  
* Can install 1x6 header on the Arduino Pro Mini and not install this
+
[[FILE:14MHz_12-16MHz_Band_Pass_Filter-Data.png]]
  
# GND
+
[[FILE:  14MHz_12-16MHz_Band_Pass_Filter-Analysis.png]]
# GND
 
# Vcc
 
# RX
 
# Tx
 
# DTR
 
  
[[file:VFO-003_J4.PNG]]
+
== Build Issues ==
  
=== J5 - Arduino A0-A3/C10-D13 ===
+
* Transformers don't fit well and crowd parts around them
 +
* QRP Labs polyphase module pics are for older revision card
 +
* One of the two variable caps on the Bandpass filter was very hard to turn even after the first turn
  
# A3
+
== Reference Documents ==
# 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]]
+
* [https://wparc.us/presentations/SDR-2-19-2013/Tayloe_mixer_x3a.pdf Ultra Low Noise, High Performance, Zero IF Quadrature Product Detector and Preamplifier]
 
+
* [http://antennoloog.nl/data/documents/Understanding_and_designing_Polyphase_networks_V4.0.pdf Understanding and Designing Sequence Asymmetric Polyphase Networks]
=== J6 - Disconnect for Mini-360 Power Supply ===
+
* [https://www.robkalmeijer.nl/techniek/electronica/radiotechniek/hambladen/qst/1991/12/page29/ The double-tuned Circuit: An experimenter's tutorial]
 
+
* [http://hanssummers.com/polyphase 40/80m CW/SSB receiver]
* The [[Mini360 Buck Converter]] comes adjusted for a very high output voltage
+
* [http://hanssummers.com/images/stories/polyphase/polyphase.pdf Experimental Polyphase Receiver]
* Remove jumper to adjust the output voltage to 3.3V without powering the rest of the card
+
* [http://www.arrl.org/files/file/Technology/tis/info/pdf/030304qex020.pdf A Software Defined Radio for the Masses]
* Install to power the card from the power supply only after adjusting output
+
* [http://norcalqrp.org/files/AustinNC2030Presentation.pdf Very High Performance Image Rejecting Direct Conversion Receivers] - NC2030 Radio
 
 
[[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 with u8g2 Library ===
 
 
 
<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>
 
 
 
* Arduino bootloader 2048 of Flash
 
* Display code: 10260 of Flash and 1033 of SRAM using u8g2
 
* Alternate display code: 6198 of Flash and 446 of SRAM using u8x8
 
* Si5351 code: 12076 of Flash and 378 of SRAM
 
 
 
==== 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 u8x8 code ====
 
 
 
* [https://github.com/olikraus/u8g2/wiki/u8x8reference#c-example Minimal code]
 
 
 
<pre>
 
Sketch uses 6198 bytes (20%) of program storage space. Maximum is 30720 bytes. Global variables use 446 bytes (21%) of dynamic memory, leaving 1602 bytes for local variables. Maximum is 2048 bytes.
 
</pre>
 
 
 
* Code
 
 
 
<pre>
 
// https://github.com/olikraus/u8g2/wiki/u8x8reference#c-example
 
 
 
#include <Arduino.h>
 
#include <SPI.h>
 
#include <U8x8lib.h>
 
 
 
#define U8X8_HAVE_HW_I2C
 
 
 
U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(U8X8_PIN_NONE);
 
 
 
void setup() {
 
  // put your setup code here, to run once:
 
  u8x8.begin();
 
}
 
 
 
void loop() {
 
  // put your main code here, to run repeatedly:
 
  u8x8.setFont(u8x8_font_victoriabold8_r);
 
  u8x8.drawString(0,0,"Hello World!");
 
  delay(1000);
 
 
 
}
 
</pre>
 
 
 
==== Minimal Si5351 code ====
 
 
 
* [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/Si5351_Test/Si5351_Test.ino Test code]
 
 
 
<pre>
 
Sketch uses 12072 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]]
 

Revision as of 00:02, 22 November 2021

QRP-Labs P1956-720px.jpg

Features

Build / Assembly

Silkscreen / Pinout

IQ RX PCB.PNG

Pins

  • IQ pins
  • I, GND, Q outputs
  • Power pins
  • GND, +5V, +5V or +12V to +14V
  • Tx Mute Input
    • 5V mutes inputs
  • LO input
    • 3.3V from Si5351A oscillators
  • IF input
    • From external Bandpass Filter Switch

Receiver Module

QRP-Labs Receiver-Base P1969-720px.jpg

Polyphase Module

  • Important to observe part outlines
    • Adjacent resistors can be put in "sideways"

QRP-Labs Polyphase-Filter P1966-500px.jpg Polyphase-pcb.PNG

Polyphase-pcb-2.png

Polyphase-Schematic.PNG

  • USB/LSB select jumpers
    • Set to USB in the above picture

Polyphase LSB-USB-Jumpers.PNG

Bandpass Module

  • 20M - 14 MHz Filter

QRP-Labs BandPass-Filter P1963-720px.jpg

Bandpass Filter Schematic.PNG

  • NanoVNA
    • 12-16 MHz

14MHz 12-16MHz Band Pass Filter-2.png

  • Data

14MHz 12-16MHz Band Pass Filter-Data.png

14MHz 12-16MHz Band Pass Filter-Analysis.png

Build Issues

  • Transformers don't fit well and crowd parts around them
  • QRP Labs polyphase module pics are for older revision card
  • One of the two variable caps on the Bandpass filter was very hard to turn even after the first turn

Reference Documents