I am using MPC4725 DAC module along with an UNO to output a waveform. The waveform needs to be attenuated on the order of 500-1000 times. The peak of the waveform will be 5-10mV. Doing so with a just a voltage divider and a cap leaves the waveform buried in noise.
I will try using an active filter but I was wondering if anyone has any other suggestions to reduce the amount of noise. The waveform has frequency components <2.5 Hz.
What's the bandwidth? So long as the smaller resistor of the divider isn't contributing too much
thermal noise you should be fine. The hard part will be measuring the noise and preventing
noise getting back into your low-amplitude signal.
Resistor noise (from a good quality resistor, NOT carbon) is about 0.13nV per sqrt(R . bandwidth),
so a 1k resistor for 100kHz of bandwidth gives 1.3uV rms noise.
If you were dividing using a 10k : 10R network, that would be a 10 ohm resistor, and thus 0.13uV of
noise for 100kHz bandwidth. Of course the output of the DAC probably contributes more noise than
that even when scaled down, unless your supply rails are pristine and clean.
And at lower frequencies there are things like flicker noise to worry about too, not just Johnson
noise.
Is the cap being used to band-limit the signal?
[ Oh, and you'll have to be ultra-paranoid about star-grounding if handling such a signal, you won't get
away with anything less than proper star-grounding or differential signalling ]
I designed a 4th-order Butterworth LPF, with my cut-off at 100 Hz and an overall attenuation of 500. For now this will be breadboard work but when I make a PCB, I will try and follow your guidelines.
I modelled the noise and the filter in Simulink and it looks like I should be getting something useful.
For those interested, Analog Devices has a great tool to design active filters.
If you have anymore resources in analog conditioning, specifically from DACs for high attenuation and filtering, Id like to read them.
Analog filter? You only need a rough anti-aliasing filter in the analog domain, you can digitally filter
the waveform you put out on the DAC and get repeatable results with zero extra components. It sounds
like you have a low bandwidth signal so its easy to use a sample rate well above the Nyquist limit to
make anti-alias filtering easy. But I guessing rather.
After attenuation, majority of my signal is buried in noise. How would a digital filter prior to the DAC help with this? I assume the noise primarily comes from EMI, thermal noise .. etc. I would suspect an analog filter would help retain some signal.
After attenuation, majority of my signal is buried in noise. How would a digital filter prior to the DAC help with this? I assume the noise primarily comes from EMI, thermal noise .. etc. I would suspect an analog filter would help retain some signal.
I mentioned being ultra-paranoid about star-grounding when dealing with these low amplitude
signals... Are you being suitably paranoid? I've explained how to calculate the noise due to the
resistance of the attenuator circuit, any extra noise is from another source like ground currents
or inadequate measurement, or nearby electrical noisy equipment.
A high quality differential microphone pre-amp would be one possible way to determine noise
levels in your signal. A cheap digital storage 'scope would be useless for the task.
[ Actually thinking about it your signal bandwidth might be too low for a microphone
pre-amp, an instrumentation amplifier might be superior ]
dlloyd:
Can you let us know what the device is and more about your project?
Unfortunately, I am not entirely sure. The DAC output needs to be attenuated to gate with an ECG device. These devices are normally used to voltage levels with peaks of 5 to 10 mv. The peak is more important than the validly of the signal. So I have an Arduino > ECG signal > DAC > attenuation.
MarkT:
I mentioned being ultra-paranoid about star-grounding when dealing with these low amplitude
signals... Are you being suitably paranoid? I've explained how to calculate the noise due to the
resistance of the attenuator circuit, any extra noise is from another source like ground currents
or inadequate measurement, or nearby electrical noisy equipment.
A high quality differential microphone pre-amp would be one possible way to determine noise
levels in your signal. A cheap digital storage 'scope would be useless for the task.
[ Actually thinking about it your signal bandwidth might be too low for a microphone
pre-amp, an instrumentation amplifier might be superior ]
I will be building the filter tomorrow and doing the 1st tests. The scope I am using to determine how much noise is in the signal is the Tektronix MSO 3014. I have never used an instrumentation amp to help determine noise in signal. I will look into it, if you have resources, Id appreciate it if you can share.
In the mean time I will try and fetch some information about the device the signal is sinking to.
Well that's fairly good 'scope, but normally you'd amplify such a small signal before feeding it to
the 'scope unless you have differential inputs - ground loops matter.