DDS Sine Sweeper

Al's picture

DDS Sine SweeperIt's about time for some hardware, so here is the DDS Sine Sweeper, a sine source which outputs a sine wave from 1Hz-40MHz.  It's cheap and easy to build and all the plans and software are freely available.

From time to time I found myself needing  a separate signal generator.  In the back of my head I was thinking of just something simple but I also wanted to play about with DDS (Direct Digital Synthesis), a method of creating a waveform digitally.  This allows precise control over the frequency from a microcontroller, allowing you to set the frequency and even jump to another very quickly.  Although it does have drawbacks the simplicity was a winner for me.

Now comes the problem; DDS chips don't tend to come cheap, at least not with the specifications I wanted.  That was until I stumbled across some cheap AD9850 modules on eBay, apparently they've been around for ages and I'd completely missed them.  I've looked at the AD9850 before but at £16 (about $25) it seemed a little on the expensive side for what I wanted to be a cheap project for hackers and hobbyists.  So at £8 for two I bought them from a reputable seller, waited less than a week and got to work.

I wanted it to be simple to build, using only basic skills I built the whole project on breadboard and used off the shelf cheap parts.  Using a STM8S-Discovery, HD47780 LCD 2x16 module and some tactile switches that we're gathering dust, I built it on breadboard with jumper leads.  The firmware is available as a hex file and can be flashed to the STM8S using the ST Visual Programmer.

I haven't completed it yet, I intend to add a variable output buffer to it (it's currently fixed at 1Vpp) and upload a PCB design as well.  I've hit a bit of a limit both with the 2k RAM and the speed of the STM8S which have stopped some features dead in their tracks, but any input is welcome.  I am wondering about using a STM32F4-Discovery, I've got one on my workbench and open source programming tools are available (Yagarto, OpenOCD and Eclipse).  If I do I'll maintain it as a separate project to this.

Hope you find it useful.


Click to view comments

Click to add a comment