Thursday, July 30, 2015

Constructing a simple browser controlled RF synthesizer (Part1)

Now that I had a set of modules lying around that have served their initial purpose I had to figure out another boondoggle (or just send them to the recycling center - if you are the kind of person reading this type of material you need no explanation regarding the value of boondoggles versus putting something on the shelf...)

Existing modules with a BeagleBone Black were assembled to produce a frequency synthesizer. The frequency range is 37 – 2000 MHz (CW, square wave) with at least a few kHz of resolution. The level is controllable 0dBm to -30dBm with an accuracy of +/-2 dBm.  For simplicity it uses an external 5V power supply with 100Mb/s Ethernet and web browser user interface.  You can purchase instruments like this on eBay for $200 - $600 from a few sources.  They generally have wider output level ranges and support the full frequency range of the ADF4351, come in smaller packages, and are USB only.  You won’t save yourself any money by building your own (but you’ll have more fun and learn a lot more…).

The idea is to have an  “instrument like” device – something you can plug in, turn on, use, and then turn off.  I did not want to have to spend lots of time drudging up utilities on the PC or worry about shutting the device down properly.  This is part of the reason for focusing on a web browser based control approach (and I wanted to get some hands on experience with embedded web techniques and technologies).

The basic aspects of this project are:
a) Digital and RF Hardware
b) BBB Linux Configuration
c) User Interface Software
d) Packaging

The notes are broken into multiple posts focusing on each of the steps above. The hardware involved was developed in pieces over time and is described in this entry.  In short, an ADF4351 is used as the synthesizer source and the level is controlled using an amplifier with digital step attenuator and a LTC5587 power meter. The basic control software adjusts the attenuator and synthesizer output until the final output is at the desired level.

Sunday, July 12, 2015

Single stage SDR experiment

After spending a lot of time trying to understand and evaluate the ADC distortion and noise artifacts I decided to try something different with the ADC board.  Previously I built a 1MSPS serial ADC board and mixer, amplifier and filter board.  These could be arranged in various configurations. One of those was a single IF SDR.  I wanted to try the same setup with the new ADC and some of the other mixer and amplifier boards constructed. The following is a picture of that setup.
Single IF SDR using various boards with Beaglebone Black.  See text for description of boards and links.
While it may appear somewhat rubegoldberg-esqe it is actually pretty rewarding to be able to build a set of modules and software and connect them together with a few cables and make something work.

The setup is for a FM broadcast receiver.  The signal enters at the bottom center board on its left input.  This is a Prj133 synthesizer with mixer board controlled via an SPI interface.  There are no image rejection filters for simplicity.  The output is a 10.7MHz IF exiting the board at the right. The IF is amplified in the upper right board which is a Prj135 amplifier, attenuator, power meter board, again controlled via SPI.  The amplified output (exiting the top of the board) is passed through a 10.7MHz bandpass filter using two cascaded ceramic filters.  A single filter is sufficient, however, all of the filters I have built use a 2x cascade for ADC harmonic rejection testing.  This creates a little more loss than I need or like but it was sitting there ready ... Having it hanging there in mid air also creates the appearance of putting the "rube" with the "goldberg"... but it was good enough for a quick test.  The filtered signal enters the ADC board on the center left.  You can see the SMA input but nothing else as the board is mounted on top of a Beaglebone Black but under another board (if you look at the stand offs you see 3 sets high).  The board on top of the ADC is a Prj136 interface board which provides 3 ports of discrete IO (which can be software configured for SPI control) and +5V of power.

The software on the BBB is the same as used in previous projects (single stage IF two stage IF).  It supports an amature radio control protocol interface which allows multiple PC SDR packages to be used.  The only difference is that the 10MSPS ADC stream is downsampled to 2.5MSPS (the ethernet bandwidth does not support the full 10MSPS nor does the BBB processing).  This is still larger than the serial ADC sample rate of 1MSPS so it is a little different and the distortion is better.

The clip below is a screen capture of using the SDR to move around the dial.  A VHF set of rabbit ears was used for the antenna, however, it was below ground (i.e. in a basement).  The NOAA NBFM signal takes a few seconds for the software to lock well (I believe this is an issue with my software configuration, not the hardware).

video