AD-9850 DDS Synthesizer

For this exercise I wanted to finally get the DDS Daughterboard from NJQRP working. My dad (W6SJV) built the board as an introduction to building surface mount kits, and it didn't go so well. With the aid of a stereo microscope I was able to isolate and fix the solder bridges which should have fixed the board. However, we got distracted and never got around to interfacing the board to a computer for testing.

Now I'm using an Arduino UNO to drive the DDS Daughterboard serial interface. A simple sketch was written based on the ElecFreaks library for the AD9850. The sketch toggles the RF output between two frequencies (7.101 MHz and 7.1009 MHz) every second.

Hardware

I also took the opportunity to try out the Fritzing software. This is a pretty neat package that tries to provide simple to use tools to cover your design from prototype to product. It includes schematic tools, PCB layout, and a nifty editor for documenting your breadboard connections. Here is the what the breadboard for this exercise looks like:

Breadboard connections

The associated schematic is:

Schematic

Creating these drawings took only a few minutes (aside from the AD-9850 part).

The LEDs are simple diagnostic aids. I wrote some quick, throw away sketches to turn the signal lines on one at a time in order to verify my connections. They are also a good place to connect an oscilloscope probe. Don't expect to see them flash when control codes are written to the AD9850; the pulses are just too short to see with the naked eye.

Yes, there is a discrepancy between the breadboard and the schematic. The breadboard shows a 9v battery, but it is labelled +12v on the schematic. I actually used a 13.5v bench supply. The DDS daughter board is configured to properly bias the final amplifier based on a +12v supply, so that is what I documented on the schematic. The breadboard symbols do not include a general purpose power supply, so I used the 9v battery as a stand-in (and the circuit does actually work at 9v, though the output waveform is to a pure sine wave).

Software

The sketch is quite simple due to the use of the EF_AD9850 library:

/*

* Control the AD-9850 DDS daughter card by NJQRP

*/

#include <EF_AD9850.h>

int LED = 13;

int load = 8;

int clock = 9;

int data = 10;

int delay_ms = 1000;

EF_AD9850 AD9850(clock, load, 11, data);

void setup() {

AD9850.init();

AD9850.wr_serial(0x00,7000900);

pinMode(LED, OUTPUT);

}

void loop() {

digitalWrite(LED, HIGH);

AD9850.wr_serial(0x00,7100900);

delay(delay_ms);

AD9850.wr_serial(0x00,7101000);

digitalWrite(LED, LOW);

delay(delay_ms);

}

LED is the Arduino UNO on-board LED. Pin 11 is used in the AD9850() definition as the reset signal, but is not used by, or connected to, the DDS Daughterboard.

After the AD9850.init(), the three LEDs on the breadboard will be on.

The loop toggles the Arduino UNO on-board LED and the frequency every second.

Library

ElecFreaks provides a GPLv2 licensed Arduino library that supports the AD-9850. The library is specifically designed to work with their DDS Module, but it did not require any changes, other than pin numbers, to work with the DDS Daughterboard.

The library code did need to be updated for Arduino v1.0. The modified version is included in the attached zip file.

Sketchbook Setup

The attached zip file includes the Arduino sketch, the modified ElecFreaks library, and the Fritzing file (AD9850_control.fzz). If you do not have a ~/sketchbook/ directory, then just unzip the file in your home directory.

If you have been developing Arduino code, then the ~/sketchbook/ directory probably exists, so unzip the attached file in a temporary location and move the files into matching locations in your existing ~/sketchbook/ directory. Once you get them in the correct locations, they will show up in the Arduino menus:

ad9850 in menu
EF_AD9850 library in menu

The included library demo sketch (LXARDOSCOPE) from ElecFreaks, wasn't tested, looks interesting. A more complete presentation is available.

Testing

Signal

An oscilloscope should show a sine wave on the RF out pin. Then using a Softrock Ensemble II (with a piece of wire for an antenna) and Quisk, you should be able to get a display like the one show above. The image above is cropped from the full window and I did use the Z-slider to zoom in a bit:

Feedback

I now have a group on Google+, join up and let me know what you think about this exercise.