Addicted to microcontrollers [Debraj] decided to make his own programmable sine wave generator and was able to assemble it for less than US$40. Besides low cost, his list of requirements was:
- Dual sine wave output, synchronized
- Frequency, amplitude and phase control
- Low harmonics below 1 MHz
- Scriptable through Python
The heart of the project is Analog Devices’ AD9833, a complete on-chip Direct Digital Synthesis (DDS) waveform generation system. If you’ve ever rolled your own DDS using discrete ICs or in an FPGA, you may appreciate the advantage of squeezing the phase accumulator, sine lookup table, DAC, and control logic into a single package. ten pins. [Debraj] uses AD9833 modules from the usual online vendors for a few dollars each. It synchronizes the generators by disconnecting the reference crystal on the second module and driving it from the first. The remaining specifications are satisfied by the inherent characteristics of the DDS system, and the scriptable interface is realized with an Arduino controlling the AD9833 chips and two programmable gain amplifiers (MCP6S31). We love the confidence that [Debraj] displayed by sketching the initial circuit diagram with a ballpoint pen – check out the sketch and final pictorial diagram in the video below the break.
This is a good example of combining ready-to-use modules to quickly build a project. This approach is ideal for one-off builds or as a proof-of-concept testbed that can then be turned into a custom PCB. Another reason to use modules these days is that modules are often in stock but chips cannot be found. Although it appears [Debraj]’s only needs one of these generators, it would be an easy map to lay out and build – if you can buy the parts.