April
2006, Issue 189
Low-Cost
2.4-GHz Spectrum Analyzer
PUT
IT All TOGETHER
The
PCB layout for this design is trickier than those for
low-frequency circuits. Pay special attention to the
layout of the RF section containing the CC2500 chip.
Chipcon
provides a useful reference design on its web site.
I adapted Chipcon’s layout into a PCB that also incorporates
the USB and microcontroller functionality. The RF portion
of the board has topside and bottom-side ground planes
for a solid RF ground. This enabled me to use a conventional
two-layer PCB. Like many other modern circuits, most
of the chips I used were only available in surface-mount
packages. No wire-wrapping allowed in this project!
The
CC2500 is configured for a 200-W
balanced antenna interface. This can be directly connected
to a suitable PCB loop antenna. For better performance,
I used a whip antenna. In conjunction with my 50-W
whip antenna, my circuit includes a 200- to 50-W
balun to couple it to the CC2500.
The
simple software that runs on the ATmega48 passes commands
from the PC to the CC2500 and sends responses back to
the PC. This code, written in C, compiles to just 1
KB, well within the 4-KB flash memory size in the microcontroller.
I used an ImageCraft ICCAVR compiler along with Atmel’s
AVR Studio programming tool, although other vendors’
tools would work too. There is a six-pin header on the
board that’s configured to use Atmel’s standard ISP
programming interface. This allows the ATmega48’s flash
memory to be programmed in-circuit with a tool like
the STK500 or the AVRISP, both of which are available
from Atmel.
To
help deal with the somewhat complex 60-plus registers
in the CC2500, Chipcon offers free SmartRF configuration
software, which helps determine the settings to program
into its registers. For this project, I fixed the receiver
bandwidth at 843 kHz (the maximum that is supported).
The CC2500 allows the center frequency of its receiver
to be set easily by defining channel spacing and channel
registers. The center frequency is equal to the base
frequency plus the channel number multiplied by the
channel spacing. For this application, I set the base
frequency to 2,400 MHz and the channel spacing to 333
kHz. By setting the channel to a value between 0 and
255, I can tune the CC2500 over the range of 2,400 to
2,485 MHz. This covers the entire range of the 2.4-GHz
ISM band.
Slightly
complicating things is the fact that you must recalibrate
the CC2500’s signal-processing path each time you change
frequencies in your sweep. Rather than take the time
to do this during the sweep, my software pre-calibrates
and stores the calibration constants. Later, during
the actual measurement sweep, the software transfers
the calibration settings back to the CC2500. This enables
the system to jump from one frequency to the next in
as little as 100 µs. A complete sweep of 250 measurements
can be done in 25 ms. In many cases, it’s preferable
to sweep more slowly than this so you don’t miss intermittent
signals.
The
CP2102 USB interface has drivers that make it look like
a built-in serial port to any PC it is plugged into.
Any PC-based software that can connect to a serial port
can connect to the CP2102 just by pointing it to the
correct COM port number. You need software on the PC
side to control this serial port and graph the results.
I
used Microsoft Visual C++ 6.0 to create this PC software.
Like its more expensive test equipment counterpart,
my spectrum analyzer software enables control of the
sweep speed, center frequency, frequency span, and peak
hold modes. There is also a way to export captured spectra
to a spreadsheet for further analysis or plotting. You
can also write serial port code in Excel or some other
data collection software instead of using the PC application
I designed.