
Tuomas designed a simple function generator controlled via USB. It’s capable of generating sine, square, and triangle waveforms up 3 MHz. The device uses the AD9833 SPI programmable waveform generator IC and a USB-enabled AVR to control it.
One tool that I’ve been missing at my lab at home is function generator. They tend to be a bit expensive, so I haven’t bought one. I thought this might be a good opportunity to try and make one myself. I found a pretty common DDS (direct digital synthesis) chip, called AD9833. Then just strap a USB-enabled AVR micro there and maybe some analog electronics.
Designed some test gear for your workbench? Share it with us in the forum.
Via the forum.

Love this! DDS is such an enabler, and love seeing what folks come up with. I am a little biased though, having previously worked with the design and manufacturing of these products first hand. :)
Just out of topic question, PCB looks very prety did this home made? if yes then i would like to know secret behind PTH holes.
don’t think they are plated trough, but a good fixed drill press will make pretty holes like that..
Made the board with a PCB router at my university. Model of the router is LPKF S63. I’m afraid of the day I’m going to finish my studies and have to make boards by etching. I’m spoiled.
The holes are not plated. The holes are drilled by the machine and then I riveted each one of them with a PCB rivet.
Nice little board Tuomas…
By the way; I’ve been wondering if anyone has done a simple DDS function generator using the CPLD breakout boards from Dangerous Prototypes?
I’m doing a similar project.I’m building the PCB now and researching how to control mcu and dds via USB.
How did you deal with the USB Suspend Mode; when no bus activity occurs for 3ms, power down device?
I’ve looked through your work, but can’t seem to see how you avoid this issue.
In your video that problem does not even occur for you?
PS: Cool work. Thanks for sharing.
Hello Beginner
You just send a ‘Keep Alive’ signal, before the suspend mode is activated, e.g. every 1 ms.