Controlling the amplitude and frequency of a Sine wave from a web server

Thread Starter

Justin Long

Joined Dec 1, 2015
Just as a preface even though I have taken circuits classes and other EE courses, I am in Computer Engineering so I am much stronger with programming than I am with circuits, so some of the more advanced stuff is fuzzy for me.

For my senior design we are trying to generate a sine wave that is controllable over a web interface and can have its frequency and amplitude altered as needed. We are supposed to be able to achieve a variable amplitude from 1 Vpp - 60 Vpp and have an operating frequency range of 10kHz-1MHz (with more emphasis on the higher frequencies and if we can go above 1 MHz it would be even better). I have read some articles about various sine wave generation circuits, but many of them do not specifically discuss how to change/control the amplitude and frequency of the sine wave, or at least they do not put it into terms that make complete sense to me.

Currently we are using a Minigen function generator from SparkFun controlled by a Raspberry Pi (what the web server is hosted on) and then attempting to have a variable gain amplifier circuit (also controlled by the Raspberry Pi) that can take the 1 Vpp sine wave from the minigen and amplify it to the desired voltage. We are having a lot of issues with this and have tried various methods of controlling the gain of different amplifier circuits (MOSFETS, digital pots, programmable gain amplifiers) but have not had much luck. We have had some recent success using the programmable gain amplifiers but we have a lot of noise and can not amplify the wave to an adequately high frequency or amplitude. Reading articles about different sine wave generation techniques like THIS, make me think there has to be a much easier and cleaner way to do what we are trying to do. Specifically the digital methods mentioned at the end of that article seem like they would be the most ideal solution to our problem, so I was hoping someone could help me understand or point me in the direction of a better solution to our problem using .