I want to create sine waves from 0.1Hz to 10Hz which are controlled from a software. For that I thought I can use micro controller as an interface between the PC and the sine wave signal.

But if I can be able to change the uC's frequency of the pulse train, how then I can convert those pulses to sines? Im not after high precision.

Is using RC filter recommended for such range and what RC values would be fine? The frequency range will be 0.1Hz to 10Hz. Or is there more practical or bulit in solution?


1 Answer 1


You can use a PWM and a low pass filter. If you have a microcontroller that can do a 10-bit PWM at 16MHz that gives you a PWM frequency of about 15kHz so you could use a low pass filter with a cutoff of a few hundred Hz.

You will have to figure whether determining the next value of PWM and the resulting flat spots on the sine waves from the limited resolution (you could dither) are acceptable and possible with the micro you have in mind.

You could also use a DDS chip (Direct Digital Synthesis) that contains a sine lookup table in ROM, phase counter and a DAC. Analog Devices has a wide range of such products.

Or, use a DAC connected to the Microcontroller or an FPGA, which could allow extremely high quality synthesis. We use a system like that to generate extremely pure sine waves (24-bit DAC) in the tens of Hz for cryogenic measurements.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.