Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Signal Noise Issues

Hi!
 
I am having noise issues whilst trying to acquire simple voltage signals.
 
I am using:
 
A PXI - 1033 base unit with dedicated external PC
PXI - 6254 M-Series DAQ card
SCB-68 terminal Block
 
I first put the output terminals into a Keithly Nano Volt meter and i'm reading noise from the signal of the order of 10's of Nano Volts. Upon going through the terminal Block I am getting noise of roughly 100 Micro Volts. This is a massived difference, I need to reduce the noise to sub micro volt level.
 
So where am i going wrong? It must be picking up noise on the terminal block?? I have it set up as for differential input. It makes no difference whether I sample on 1 or 8 channels. No difference on sampling at 20 Hz to 20 KHz. I am taking measurements between +/- 300 microvolts. 
 
Any ideas at all? Should my set up be able to handle this? I was told by he who purchased it that it should cope with nano volt measurements!
 
Thanks
Jon 
0 Kudos
Message 1 of 4
(3,479 Views)
Hi, Jon. It's possible to get submicrovolt measurements with the M-series boards, but it's not that easy. Your nanovoltmeter has a bandwidth of probably a few Hz. The 6254 has a bandwidth of around 3MHz according to the specs. Unlike a DMM or nanovoltmeter, the bandwidth of a multifunction DAQ card doesn't drop as the sample rate is reduced. In order to get low noise you need to sample at a high rate and then average or otherwise digitally filter the data to bring the noise down.

On its smallest input range, I see from the specs that the 625x boards have input noise of 15uV rms. It sounds like that's about 100 times higher than you'd like. So you'll need to average 100^2 = 10,000 samples per reading to get the noise down to 150nV rms. That's best case. But there's also the issue of low-frequency noise and drift, which can't be addressed by averaging. DMMs and nanovoltmeters use autozero to get rid of low-frequency noise; you'll have to implement that in your code. You can periodically switch to internal ground and subtract those measurements from your signal measurements, or even better, hook up your signal in reverse to another channel and subtract the readings from that channel. I'm being kind of hand-wavy here, but it can be made to work, if....

Even after you do all the above, there's still the possibility that you'll have noise due to aliasing. Say you're sampling at 1MS/s, and you average 10,000 samples per reading, with autozero thrown in there. That ought to limit you bandwidth to around 100Hz, but any noise within 100Hz of 1MHz will also show up in your measurements, because it will alias with your sample rate. So you may need some analog filtering before you digitize. If you stay with the 6254, you'll have to do that yourself, possibly in the terminal block. The 6284 would probably have been a better choice for you, since it has an internal filter that can be enabled for this sort of application.

So I would say that "he who purchased it" was being a bit generous saying the 6254 could do nanovolt measurements. Maybe you should make him write the software.

Chris
0 Kudos
Message 2 of 4
(3,462 Views)

Ah thanks for your help! Yeah if only I could just pass on the problem, would make my life much easier! Have you any sections of example code? I'd say I'm a fairly competent beginner at this LabVIEW lark. I followed what you were saying, its just the execution part I'm struggling with!

Thanks

Jon

0 Kudos
Message 3 of 4
(3,450 Views)
Take a look at the attached thoroughly undocumented VI. "Channel A" is the signal you want to measure, and "Channel B" is the autozero channel. If you have channels to spare, you could double your signal by choosing an external channel for channel B and wiring your signal into it reversed. Otherwise, you can probably leave it alone. I did notice about 6uV of offset on my 6259, though, presumably from thermoelectric differences between the internal ground and my external ground connection. So you may need to do some manual offset nulling.

Anyway, the VI takes "Samples A" readings from channel A, and then from channel B. It repeats this for a total of "chunks" times. It then averages all the channel A data and all the channel B data separately, ignoring the first "ignore 1st..." samples after each channel change to allow for settling errors. Then it subtracts the channel B average from the channel A average and adds it to the strip chart. I think everything else on the front panel is more or less self-explanatory. Don't look at the block diagram expecting to see anything pretty.

Let me know if you have any questions.
Chris
0 Kudos
Message 4 of 4
(3,431 Views)