Function generators are nice to have as part of one’s test equipment collection. But, the conventional desktop function generators are in the order of few hundred dollars and is mostly out of reach for an average enthusiast. But, with the availability of DDS chips and modules, a simple signal generator could be easily built. I have one of the DDS modules based on Analog Devices AD9850 and I was able to procure that for under $4. This module cannot function on its own, and needs commands from a micro-controller. So Arduino can come in handy. I have seen quite a few example codes on the web to program Arduino to send in a control command for a specific frequency and then use that for testing. I however want to build this as a small standalone test equipment.
The idea is to have function generator with it’s own LED 7 segment display to read out the frequency setting and a small cheap rotary encoder to adjust the frequency. Of course Arduino will be the brains behind getting user inputs through the rotary encoder and provide necessary feedback by displaying the frequency selection on the LED 7 segment display. And, finally talk to our DDS module to command it to generate the appropriate frequency for display.
I have in my possession a SPI compatible 4 digit 7 segment LED display from Oasis. The display in itself is very cheap, it comes to a little over a $1 each. Since most of the heavy lifting will be taken care by the PT6961 Controller itself, we can concentrate of interfacing Ardunio to the DDS module and not get side tracked by rendering contents on the display and refreshing the display periodically. It still leaves us to handle the inputs from our cheap rotary encoder. Rotary encoders are all over ebay for under $2 each. I plan to first bread board the solution using Arduino and then downsize it to just a single chip.
So, some fun time ahead. We need to learn to do the following:
- Display frequency selection on 7 segment LED display
- Interface with rotary encoder and get user input for frequency selection
- Interface with the push switch of the rotary encoder and get Hz, kHz and MHz selection
- Interface with DDS module to send command signals to generate the appropriate frequency
- Debounce the signals from the rotary encoder (my cheap encoder will definitely need this step)
More to come on this subject after some experimentation.
Image may be NSFW.
Clik here to view.

Clik here to view.
