Real-Time Measurement and Control

cancel
Showing results for 
Search instead for 
Did you mean: 

Analog voltage measurement issues with on-board 16 bit ADC of sbRIO 9627

Hi,

I am using sbRIO 9627 for voltage measurement using the on-board 16 bit ADC which have 8 differential channels as input. I am using a total of 8 sensor array for real-time acquisition and further processing. We have observed that the readings of the (A0,A1,A2,A3) differential pair varies drastically with (A4,A5,A6,A7). Generally in most of the cases the background noise level of one pair of channel is higher than the other. All sensors are subjected to same input conditions. All the differential channels are used for acquisition. Sampling rate is kept at 1kHz. Range of ADC is +-1V. How to reduce the background noise level of differential channel pairs?  Regards,

0 Kudos
Message 1 of 17
(2,997 Views)

I ran a quick experiment on my board and saw no systematic difference. It could be there's an issue with your unit or it could be something to do with the signal path picking up coupled/rf noise. Have you tried unplugging the ribbon cable and seeing if the bias goes away?

0 Kudos
Message 2 of 17
(2,946 Views)

Hi Nanocyte,

 

We have a couple of sbRIO's and all of them are showing this behavior. Also the difference in voltage level only occurs when the external sensors are plugged into the board. Pls see the attached graph showing all the 8 differential analog input voltage levels. You will observe (Ch 5,6,7,8) is having lower background noise level as compared to (Ch 1,2,3,4). Almost ten times high. In this experiment all the sensors connected to the input analog channels are subjected to same input/background noise level.

Is the issue somehow related to analog ground? We didnot connect or sorted our analog ground pin on the breakout board. 

 

Regards,

Ripul

0 Kudos
Message 3 of 17
(2,911 Views)

Your analog ground is a good hint. Check the common mode voltage (the voltage between each pin and the analog ground) making sure it doesn't exede the spec. Also, observe the noise while you are measuring (the DMM itself could act as a filter or as a weak path to ground reducing the noise)

 

Since the noise appears when you plug in the sensors, it's likely an electrical issue, most likely introduced by the circuit. Also observe that the noise increases somewhat linearly from channel 4 to 1. That could point to a coupled/rf source of noise.

 

If push came to shove, you might want to observe the frequency response of the noise. If it's all high frequency noise, it's possible you could attenuate it with a filter (either digital or analog near the sbRIO). To do the frequency response test, you'll want to grab a continuous waveform from just one channel at a time. You'll likely have to write a new FPGA program just for this testing purpose.

0 Kudos
Message 4 of 17
(2,899 Views)

When a function generator is used to provide an analog signal between 1 and 8 Hz with 500 mV peak to peak amplitude, the signal tends to lose its characteristics which you can observe in the uploaded image. When we provide an analog signal of 8 Hz or more with same amplitude the signal retains its original characteristics. 

0 Kudos
Message 5 of 17
(2,781 Views)

Woah, that looks weird. I'm guessing it doesn't look like that in an oscilloscope? Did you ever check your common mode voltage?

 

Could you be missing samples? There's a few ways you can investigate this:

  • Post your code and we can look for obvious errors
  • Put in a counter on the FPGA that increments with every ADC sample and transfer that with the measurement. Then make sure each measurement count increments by 1 after the transfer to RT side.
  • Put indicators on your FPGA FIFOs that will latch if it detects a timeout.
0 Kudos
Message 6 of 17
(2,773 Views)

In my code, I used mean subtractor just after FIFO Read and due to this analog signal was losing its characteristics. Now after removing mean subtractor, I am able to generate an analog signal between 1 and 8 Hz without losing its characteristics. 

I am using a sampling rate with 1000 samples/sec and window for data processing is 100 ms i.e. 100 samples at a time. Now my question is for a real-time system can we use mean subtractor anywhere in my algorithm or not?  

0 Kudos
Message 7 of 17
(2,748 Views)

I'm not totally sure what your mean subtractor looks like. Is it just taking a long average? If so, the window size of 100ms won't be effective for low frequency signals. Also, it could introduce distortion at 10Hz. You'll have to make the window longer or maybe try a different kind of filter (butterworth?)

0 Kudos
Message 8 of 17
(2,744 Views)

Please observe the uploaded image. As discussed above sampling rate set at 1000 S/s and while loop acquiring data at 100ms i.e. 100 samples at a time. In the given code mathematical calculation is based on these 100 samples. Since due to mean subtraction signal loses its characteristics between 1 and 8 Hz so it has been removed. As discussed after removing mean subtractor I am able to generate an analog signal at any frequency range. The reason to introduce the mean subtractor was to avoid the offset in the signal due to the different sensitivity of sensors. Now the question is How mean subtraction help in this type of signal processing or is it necessary to add mean subtraction anywhere in this code?

0 Kudos
Message 9 of 17
(2,723 Views)

I don't think we can really say if your "mean subtractor" is being useful. Maybe if you took a long recording with an integer number of cycles, you could see how significant the DC component is.

 

If you do need it, one options would be to, rather than using just the mean, wire the mean into a moving average, so that the average is over a much larger period than your signal period.


Another option is that I see you have an FIR filter in there, it's possible you could tune that filter to block low frequency signals.

0 Kudos
Message 10 of 17
(2,713 Views)