USB function generator

in project logs, tools by DP | 7 comments

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.

This entry was posted in project logs, tools and tagged , , .


  1. engineerbynight says:

    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. :)

  2. Mahesh says:

    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.

    • Filip says:

      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.

  3. Drone says:

    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?

  4. Dragon Driver - Beginner says:

    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.

    • Sam says:

      Hello Beginner
      You just send a ‘Keep Alive’ signal, before the suspend mode is activated, e.g. every 1 ms.

Leave a Comment

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>

Notify me of followup comments via e-mail. You can also subscribe without commenting.