Inexpensive AD9850 DDS boards on eBay

Hi everyone.

No updates for a while. We're getting ready to move house so I've been busy with lots of things around that.

Thanks to those who have emailed me reporting that they've built the Arduino DDS-60 controller.

Bob, N9KR pointed out that there are inexpensive DDS boards on eBay that work with my software with minor changes. These use an AD9850 chip which is very similar to the AD9851 in the DDS-60. Search eBay for AD9850. Most are "Buy it now" for about $18.99 with free shipping to the US from Hong Kong. These are not kits but assembled modules ready to go.

Bob reports that to cope with the difference between the AD9851 and AD9850, he only had to change the WriteByteToDDS(0x09) in WriteToDDS to WriteByteToDDS(0x08).

The clock frequency on these boards is 125 MHz whereas the DDS-60 uses 180 MHz. That requires the following changes.

const long CLOCK_BASE = 180000000 & 0xFFFF0000;
change to
const long CLOCK_BASE = 125000000 & 0xFFFF0000;

and to make the calibration provide the + or - 100 ppm:

const unsigned long CLOCK_LSB_MIN = 0x4EB0;
const unsigned long CLOCK_LSB_MAX = 0xDB50;
change to
const unsigned long CLOCK_LSB_MIN = 0x286C;
const unsigned long CLOCK_LSB_MAX = 0x8A14;

I haven't tried one of these myself but it sounds like a very inexpensive way of building a DDS. I don't know what they're like in terms of spectral purity or stability.

73
Ross

Comments

Unreliable AD9850 DDS boards

I have got a bunch of these on ebay from different suppliers. I have noticed that a few do not work properly, from the ones I have tested. What happens is sometimes they produce a nice sine wave output at the desired frequency, and sometimes they do not. Flicking the Vcc line sometimes fixes the problem (if you can call that a fix). To explain further, when I flick the Vcc line, the AD9850 module does not power down completely as it is being kept half-powered by the 4 wires connecting it to the Arduino board. But it seems doing this "nudges" something and then the AD9850 starts, even though the Arduino was doing nothing at the time, which further means that the frequency was already transmitted properly but the AD9850 was refusing to produce it, until I flicked the Vcc line. If anyone has any ideas please let me know. Many thanks

Extremely versatile code --

Extremely versatile code -- I've used it for multiple applications (e.g. VFO+/-IF offset, BFO, I2C) with only slight tweaks or additions to the code. The original code has also been an excellent teaching/learning tool, for sure. Now, how about a version of the code for the Silicon Labs Si570? While a few examples of Si570/Arduino code exist, the original code here would provide the same excellent features with an extended frequency range. The AD9851 is excellent up to about 60 MHz (?), while the Si570 goes up much higher and can be used for VFO+IF freq mixing for 50 or 144 MHz work...

More on the AD9850 DDS VFO

Just to update:

I've built 3 of these AD9850 VFOs since my original note to Ross & they're now down to $4 or $5 bucks on eBay. Due to Ross's amazing arduino code they make terrific homebrew & boatanchor rig VFO's as well as bench test signal generators to 40Mhz. If anyone's interested I've posted a youtube video --> http://youtu.be/W_dlocgMEpI

73, Bob N9KR

Great stuff Bob.

I just watched the video. Very impressive. It makes me want to get back and do some more with it.

Thanks

Thanks, Ross. Yea, funny how that homebrew/experimenters bug keeps biting... If you do actually decide to do any more with it -- keep us all posted. Great stuff. You the man.

DDS60 ext.VFO for old Yaesu 101B

Thanks Ross.
Using a Arduino Duemilanove and DDS60 I now have a stable, easily tuned external VFO for the old 101B.

I added a band change switch for all bands 80-10 m and modified your code to generate and display the 500 KHz needed for the 101B.
Also added a switch so that the DDS can cover to 60MHz as a sig. gen.

I am now experimenting with the cheap AD9850 DDS board and thank you for the info re code for the CLOCK_LSB_MIN and Max etc from Bob N9KR.

This all works fine with the pins on the DDS board connected as per the DDS60 schematic.

DDS module works!

Hi Ross,

thanks for this awesome piece of software!
I got one of those modules a few days ago. It´s not actually from Ebay. It is this module: http://iteadstudio.com/store/index.php?main_page=product_info&cPath=18&p...
I did the mentioned changes in the software and it worked right out of the box!
But after a few minutes I noticed that the AD9850 chip got really hot. I measured the current and found out that the module draws 129mA with the Arduino connected and 113mA without the Arduino. That would be 650mW at 5,05V. The data sheet says 380mW at 5V...
Did you measure the drawn current on your DDS-60?
I would be interested to know if the chip on the DDS-60 is getting warm too.

Thanks again for this great program and for sharing it!

vy 73 de Hermann DL8MCP / AJ4ZS

DDS AD9850 module

Sorry to bump an old thread, but I recently got one of these and had a play. I, too, noticed things getting a bit warm so I checked around. The 125MHz oscillator is a 3.3v spec device. If you look carefully at some of the ebay adverts, you can see that some versions of the board actually say 3v3 on the oscillator itself.
To help counter the 5v/3.3v issue, I added two 1n4001 diodes in series with the supply, from the arduino to the DDS board and things seemed a lot happier. It isn't quite as low as 3v3 but at least the oscillator runs a lot cooler. I later replaced the arduino supply to the AD9850 with its own 7805, but I left the diodes in. I suppose I could have ordered a proper 3v3 regulator, but life's too short and I already had 5v regulators lying around.
I haven't had a problem with speed, so I guess it is happy at its supply level.

Ian G0OTO

DDS-60 temperature

I operate two DDS-60 boards. The DDS chip runs hot to the touch, without any perceptible problems, although I have not yet measured the current.

73s

Andries Pretorius ZR6ABS

...AD9850 DDS modules

Nov 09 2011

Hi...

I discovered REALLY CHEAP AD9850 DDS modules on eBay...

Simply goto EBAY and type: DDS module

There ate PLENTY of them !!!!

There are more expensive COMPLETE signal generators at around 60 $ but the modules i talk about are the ones with a square blue pot, a square 125 MHz quartz oscillator and an LED close to the oscillator. Those modules can be bought for less than 12 $. I bought one of them, breadboarded it with a PIC12F1840 for initial tests (serial access) and it works great !

The only problem is that documentation on the modules is inexistent. I examined the module and found this pinout (quartz oscillator on the LEFT)

Top and bottom rows:

Vdd D0 D1 D2 D3 D4 D5 D6 D7 GND

Vdd CLK Latch DATA RST GND SQW SQW SinA SinB

Vdd is +5V (chip can work at 3v3 but not guaranteed to work at 125MHz)

D0 - D7 = Parallel programming bits

GND = Ground (obvious); Vss

CLK = Serial programming clock
Latch = Serial programming latch (FQ_UD pin on 9850)
DATA = Serial programming DATA (internally tied to D7)
RST = Reset. Keep tied to GND
SQW = Square wave outputs (complementary) Duty cycle adjustable with blue pot.
SINA = Raw unfiltered AD9850 sine output
SINB = 70 MHz LPF filtered AD9850 output.

I only tried serial programming. For that purpose, D0 and D1 should be tied to Vdd and D2, to Vss. Keep D7 open, I left D2 - D6 open, but note sure about recommended pin status.

The format is:

W0 W1 W2 W3 W4 W5 ------------- W28 W29 W30 W31 0 0 0 0 0 0 0 0

The frequency word has 32 bits, W0 is the LSB and W31, the MSB. W0 is sent first.

The last 8 zeroes are for the two control bitys (keep at "0"), the powerdown bit (keep also at "0") and the five phase bits that i keet at "0" for now.

The frequency word calculation is:

WORD = Frequency * 4 294 967 296 / 125 000 000

I used 125 000 000 for the nominal quartz frequency. The quartz oscillator in not a TCXO and is NOT adjustable. For greater accuracy, you shall read the actual quartz frequency and use it in the formula.

Example: for 3750 kHz: WORD = 3 750 000 * 4 294 967 296 / 125 000 000 = 128 849 019

in HEX: 07 AE 14 7B.

The frequency resolution is 0,03492 Hz, so you can build a really smooth VFO with the AD9850.

Remember: This is a DDS. While the signal is not bad (use the filtered SinB signal), it is not perfect. If you want to get on the air, you will need a lowpass filter for your band to prevent interference.

Just got mine working

Your post was helpful to me in getting my AD9850 module working.

I have the other type found on eBay in China. The header pins
are on the sides instead of the ends. eBay #260968742502

I'm driving it with a Freescale 9S08SH8 micro.

Bill

RE: 9850 E-Bay DDS

Hello,

Just got the same unit from E-bay. Didn't get any additional information on it. How do you power it up and how can I just write a frequency to it and then change later, possibly via a serial or parallel port?

Where can I get set up with a PIC that will allow me to tune the frequency via an encoder or a keypad?

DDS-Modul aus China bzw. Hong Kong

Hallo!

Ich habe diesen VFO mit dem 9850-Fertigmodul nachgebaut und er funktioniert prima.

Hier:

https://sites.google.com/a/hamradio.in/hamradio-in-1-/Home/dds4v0.zip?at...

73`

Heinz dl9ydk