Motivation
For a long time I've been looking for a inexpensive function generator that can perform well in the MHz range. I tried getting various modules from ebay but all of them ended up with disappointment due to lacking performance.
So the only thing left to do is to design one from scratch with the specs I wanted and with the price that is on par with what can be bought from China.
The goal of the project is to make a open source function generator with features that would make it a actually useful device for hackers and makers with a price so that that anyone can afford to buy/make one. The device is meant to be very versatile, so it can be used in various applications as well as a module in a larger system (hack friendly).
Project purpose
There are a lot of function generator kits available online, but all of them some sort of problem.
Usually they are low bandwidth or just too expensive for what a beginner maker might be able to afford.
Having something that with a 20$ BOM or less makes it within reach for even the beginner makers giving them a tool that they will be able to use for quite a while.
Being open source also means that the the firmware can be modified and since all of the useful internal signals are exposed it can be used as a module without the screen and potentiometers making it hacker friendly. Another benefit is that anyone could build it from scratch and improve it contributing to the project as any other open source project.
Parts used
- AT89C51, it is good enough for the job, and also very cheap reducing the BOM
- AD9834 DDS IC, reasonably cheap and offers most of the functionality required
- AD811 opamp, also very cheap on ebay with enough bandwidth for the output amplifier, tho I will try to replace it with the AD8021 so I can reduce the dependency from sourcing parts from Chinese suppliers
- MC34063 to generate the -12V rail
- LM324 to handle the amplitude and DC offset controls
- 74HC4053 to generate the square wave signals
- 1602 LCD
Once the current design is completed, I'm maybe going into looking how to cut costs even down starting with replacing the DDS ic with a low cost FPGA which will enable many new features.
Block diagram of the current circuit:

I'm curious about the jitter, which is a big issue with a DDS.