filtering pwm for music
i would like to start by saying that this solution might not be the best… if any analog guru read this, please leave a comment.
for 2.75$ you can have a chip that is able to run at 64 mhz (phase-locked loop) and output a pulse width modulation at 250 khz. attiny85 is your friend here. i didn’t found any atmega with this option (pll)… the good news is that it’s fast enough to output a stereo WAV at 16 bits / 48 khz. if you are interested in this project, take a look here: http://elm-chan.org/works/sd8p/report.html
since i want to connect the pwm output in a power amplifier, i need to filter the signal. here’s the waveform of the pulse width modulation @ 440 hz:
now let’s see if we use a simple RC low pass:
looks good to me, but then testing with a triangle instead of an oscillator revealed this:
that’s not beautiful… here’s a close-up:
maybe using more passive filter could help, but since you need to use an op-amp as a buffer (so that your load doesn’t affect the RC filter), why not use a sallen-key topology. this will act as an active low pass filter and a buffer. let’s look at the results:
close-up:
not perfect, but better!
SIMULATIONS
simple RC (250khz = -22db)
sallen-key second-order (250khz = -44db)
sallen-key third-order (250khz = -67db)
third-order is the best and using this method only 1 stage is needed.
when choosing the op-amp, consider this:
100 * highest Q * GBW = Gain Bandwidth Product (read about it here)
slew rate => 2V/µs
i am using a rail-to-rail input / output op-amp.
now simply add an electrolytic capacitor (100 uf) and you can feed an amplifier with the original pwm signal (hopefully).
I still can’t help you out, but i am very curious. The keywords i found are:
Reconstruction filter
Output buffer
From this application note:
A seventh degree Bessel filter, with a −3 dB cutoffof, 2f, f fc = fs/4, is a good choice for filtering arbitrary waveforms. This filter will exhibit an output risetime of 0.35/fc.
Thank you very much for your answer.
I am using a DAC. It generates 50Hz to 8kHz. It has high freq noise components but it works. I wonder what kind of filter I can use above 2khz. Because after 2khz a big capacitive effect occurs on signal. For example a sawtooth or a triangle wave turns to a sine. Also I am planning to use an analog multiplexer to send the (nearly perfect) square wave to output without filtering.
And one more question, why band pass filter?
Hello Gorkem,
My knowledge in analog filter is very limited…
Your signal generator is using a DAC or PWM?
Are you sure that your MC is fast enough?
Maybe you will need to use a band-pass filter?
Hello, I would like to ask you something. I am designing a signal generator. It works between 50Hz-8kHz freq range. I used a sallen key lowpass (fc=8kHz) but I have some problems. Below 600Hz it has no effect on signal. Also above 1kHz a huge disturbance occurs. I will be grateful if I can take some answers or suggestions.
Thank you,
Gorkem