A multi-band direct conversion receiver #mbdc


vk7ian@...
 

Hi Guys

 

I built this receiver to test out some ideas for another project and it worked so well I thought I’d share it.

 

The design elements I wanted to verify included:

 

  • Learning to use a 4 layer board to reduce interference (eg, from I2C control)
  • MS5351M clocked by TCXO
  • SMD band pass filter response
  • Low cost relay switching
  • A simple AGC circuit
  • How well the MMG3H21NT1 works at HF

 

Features of the circuit:

 

  • 5 bands 80, 40, 20, 15, 10
  • Sampling detector
  • Analog tuning of digital oscillator (MS5351M)
  • TCXO reference oscillator (calibration not needed)
  • Morse code frequency display
  • SSB and CW filter
  • AGC
  • Pi Pico uC

 

I used an Elecraft XG1 signal source to measure MDS. I was amazed to find it better than -140db. I’m not sure if that’s correct, but that’s what I measured. With no antenna connected I measured 3 mV RMS noise at the speaker. With -107dbm signal I measured 180 mV (RMS). So that’s a SN ratio of 35db from a -107dbm signal or -142dbm MDS.


Details here: https://github.com/ianm8/MBDC

73, VK7IAN


Nils Young <nilsyoung@...>
 

DCRs are sweet. Nanotech microcomputing makes ‘em smaller with more finesse than a Ten-Tec PM2 (my first DCR experience). So yeah, why not? 

Nice work, this’n. 

--
Nils / W8IJN


Michael Maiorana
 

That looks like a really interesting design. I have a Pi Pico in the parts-box, so this might be a fun summer project. Thanks for sharing!
Mike M.
KU4QO


On Mon, Jan 31, 2022 at 12:50 AM <vk7ian@...> wrote:

Hi Guys

 

I built this receiver to test out some ideas for another project and it worked so well I thought I’d share it.

 

The design elements I wanted to verify included:

 

  • Learning to use a 4 layer board to reduce interference (eg, from I2C control)
  • MS5351M clocked by TCXO
  • SMD band pass filter response
  • Low cost relay switching
  • A simple AGC circuit
  • How well the MMG3H21NT1 works at HF

 

Features of the circuit:

 

  • 5 bands 80, 40, 20, 15, 10
  • Sampling detector
  • Analog tuning of digital oscillator (MS5351M)
  • TCXO reference oscillator (calibration not needed)
  • Morse code frequency display
  • SSB and CW filter
  • AGC
  • Pi Pico uC

 

I used an Elecraft XG1 signal source to measure MDS. I was amazed to find it better than -140db. I’m not sure if that’s correct, but that’s what I measured. With no antenna connected I measured 3 mV RMS noise at the speaker. With -107dbm signal I measured 180 mV (RMS). So that’s a SN ratio of 35db from a -107dbm signal or -142dbm MDS.


Details here: https://github.com/ianm8/MBDC

73, VK7IAN


vk7ian@...
 

Thanks Nils and Mike.

I love the Pi Pico. I used core 0 to read the pots and set the frequency, and core 1 to check if the frequency has changed and flash the frequency on the LED in Morse code. Also it's a great price!


Michael Maiorana
 

Hi Ian,
I was looking at your code and it looks like you used the Arduino environment for the Pi Pico. What software did you use to add Pi Pico support to the Arduino environment? How do you define which processes run on each core?

I like the "analog" tuning. How does it work in practice?

Nice work
Mike M.
KU4QO

On Tue, Feb 1, 2022 at 10:14 PM <vk7ian@...> wrote:
Thanks Nils and Mike.

I love the Pi Pico. I used core 0 to read the pots and set the frequency, and core 1 to check if the frequency has changed and flash the frequency on the LED in Morse code. Also it's a great price!


vbifyz
 

Thanks a lot for sharing the design!
One suggestion for improvement is to add a phasing SSB demodulator.
A couple of examples:
http://www.cqham.ru/forum/attachment.php?attachmentid=275513&d=1511385820
https://oshwlab.com/3ym3ym/Phasing-SSB-receiver

73, Mike AF7KR


vk7ian@...
 

Hi Mike M

I've updated the readme.md file on github with the build environment, libraries, and a description of the program (very high level). Basically it uses the Arduino build environment by Earle F. Philhower, III. This makes it easy to set things up on core 0 or core 1. setup() and loop() run on core 0 and setup1() and loop1() run on core 1. setup1() isn't needed.

The tuning feels quite analog. The main tuning is a ten turn pot with 1 KHz resolution (although there are several digital steps between each KHz). There are no clicks or buzzes as the tuning is rotated. The main difference is that an SSB signal nicely pops into intelligibility and is easy to tune. Maximum and minimum frequencies depend on the band. The 5 bands are segmented into 11 frequency ranges to reduce the span of the main tuning. The fine tuning is -500 to +500 with 200 steps of 5 Hz. This makes it easy to put a CW signal in the middle of the CW filter. The band "switch" is actually a pot with 11 detents. It's much cheaper and easier to work with than a rotary switch.

Cheers, Ian


vbifyz
 

Another suggestion is to replace the BPF with a different configuration. You can have better skirts using 3 coils instead of 4.
One example is Tasa YU1LM article (can be found online):
"Input Hf-6m Bp-lp Filters for Sdr Transceivers - Yu1lm"

73, Mike AF7KR


vk7ian@...
 

Hi Mike

I had a look at these filters but they are quite sensitive to component variations. Also the values of L2 can get really small, 91nH for 20m and 68nH for 10m. I'm happy with the filter as it stands. 51db down at the 3rd harmonic. That means 60db down if you take the -9db response of the sampling detector on the 3rd harmonic. Also the filters I'm using are more than 20db better on the low side compared to the 3 inductor filters. This is great for keeping out local broadcast station interference.

Cheers, Ian