Arduino + AD9850 30MHZ DDS Signal Generator in 12$

Introduction: Arduino + AD9850 30MHZ DDS Signal Generator in 12$

About: Ideas Into Reality !

An Precession Signal generator is very easy and affordable make using an arduino and dds synthesizer (ad9850) . Its World's first smallest portable signal generator build .

You can make decent 0 -30 MHZ frequency Signal generator only in 12$ . If you are pro over clocker then 40MHZ in same price . AD9850 works on dds (direct digital synthesis ) which can generate analog waveforms with digital input , here i used arduino pro mini to control dds board and Hitachi hd 44780 lcd display (16×2 lcd) to display current frequency and chage steps.

This signal generator runs on USB 5V and consumes 270 ma max ! So you can install battery pack inside it and make it standalone system if you want.

Its great project for beginners and will give you lot of satisfaction and also save you hundreds of dollars !
You will need frequency generator if you are a amateur radio guy or hobbyist or professional electronic guy.

Step 1: Get the Parts

★☆★ Buy Parts from your online local store ★☆★

1. Arduino Pro mini

2. AD9850 (DDS Synthesizer)

3. 16×2 LCD Display ( Hitachi hd 44780 )

4. Rotary Encoder

5. cp2102 (USB to serial converter )

Step 2: Circuit Diagram

Connect all components given in above schematics

Step 3: Watch the Full Tutorial



Step 4: Output Response

Output response is the output waves you get at diffrent frequencies here are few scope shots to get idea how well it is

1. 1MHZ
2. 10MHZ
3. 20 MHZ
4. 30 MHZ



  • Metalworking Contest

    Metalworking Contest
  • Tiny Home Contest

    Tiny Home Contest
  • Fix It! Contest

    Fix It! Contest

18 Discussions

I need this very soon. I hope all of the bugs have been worked out. I have two types of encoders, one with mechanical feedback "jog" and one smooth turning and I'll try with both. I have a friend who did a similar project but without the encoder and that's important to me.

1 reply

I also wonder why you used a mini. Wouldn't a Nano be easier ?

What is the switch and 1k resistor to earth from the A5 line on the arduino for? It does not appear to do anything on my build?
David Holland G4LDT

I've assembled this generator and I'm very happy with how it works.

Only one question, there is a version of the program that provides that the data entered remain stored even after the power off ??

1. amigo es que trato de compilar y me sale error .


i have arduino nano

i like this project

thank for this project, but can do this project without the ad9850

Friend, can't just load you ino file. I have to open it in another editor, and copy paste to the Arduino compiler.

Also, getting errors with your rotary.h and .ccp library.

Would really like to get this to work.

1 reply

+guitartoys - you have possibly worked this out by now but the .ino file has too long a file name or illegal characters and the IDE doesn't like it - rename it. Enclose the rotary.h and rotary.cpp files in a folder called "rotary" and drop it in your library folder. Should compile then. Worked for me on IDE 1.8.1 Kind regards AlanGP

Well done. I was hoping I didn't have to start from scratch and
re-invent the wheel.!!! Exactly what I had in mind. With a little bit
more bells and whistles..., but hey.. Thank you. Now I can mod the code to suit.

The code refer to an I2C LCD Library but the schematic is for parallel LCD library.

Seem to be a fake.

I'm looking into using your design to provide general coverage with my Drake R-4B receiver (in place of purchasing many crystals). Can you tell me what the output level of your signal generator is? I need about 0.5 volts. I'm wondering if I'll need a buffer amplifier to make it happen. Thanks ... looks like a really neat design!

Thanks for pointing me in the right direction. I will save this like, and let you know how I did.

Your schematic shows PIN 10 to DATA and PIN11 to RESET but the source code for the sketch shows the opposite. Can you correct one of them?

This looks great! I'm waiting on the AD9850 board so I can try this out. On your schematic you do not show any outputs, just the connections to between the arduino and the DDS board, which sine wave output are you using and are you using the square wave outputs? (The board I am waiting on has a jumper to enable/disable square waves, with 2 output pins, and 2 different output pins for sin wave, as well as a pin for adjusting amplitude with a voltage divider).

Great job! What a cool project for a super low price. I would love to see an output amp and programable attenuator, but still a really nice build.

1 reply