7MHZ VFO with Arduino and AD9850

A little while ago I picked up an AD9850 DDS board.  Basically, these are little boards you can pickup on eBay for about $10 shipped that can be programmed to output a sinusoidal wave from 1hz to about 40mhz.  The output is about 1Vp-p and is fairly clean.

To drive these little boards you have to program them using either a serial interface or a parallel interface.  You send over a couple of bits according to a code specified in the spec sheet and the AD9850 outputs the appropriate frequency.

AD7C DDS VFOI used an Arduino UNO board, LCD 16×2 display, and a rotary encoder to create a little all-in-one VFO.  It can output the full range available to the AD9850 but I simply limited it to only 7.0-7.3Mhz in the Arduino code.  I will be using the VFO as part of a DC receiver I am putting together for fun.

You can see a video of it in action here: http://youtu.be/r6nRMikOOmI

The code to drive the AD9850 is fairly simple, however, the hardest part I found was getting the large integer (frequency) split up into the appropriate numbers to display on the LCD screen.  Some creative code fixed that problem. Full documents and discussion on this item is on the permanent page located here.

3 thoughts on “7MHZ VFO with Arduino and AD9850

  1. I would like to thank you for a lot of hard work, I was able to modify the code for my use easily. this is a great start for my 40 meter qrp cw transceiver.

    Thank you for putting this together.

    N5ZKZ

  2. I am building the AD9850 DDS VFO. I just got all the parts together.
    I have seen other AD9850 VFOs with two 1k resistors on switches to ground.
    Why do you use a 1k and a 100 ohm resistor? The 100 ohm resistor is a problem for me but I have a lot of 1k s.
    Thanks Rich w6du

    • 100ohm was only because it was next to me on the bench. 100ohm, 470ohm, 1k, 1.8k, and other similar values will all work. It is just important that you use one so you do not pull to much current through the Arduino when you set the switch to ground. 10K is probably the highest I would use. It’s all about sensing the voltage drop (to 0v) and not the current.

      Rich
      AD7C

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>