Improve DC Accuracy +-10V, 16-bit, Streaming A2D by Calibrating the Ground-Offset Bias Point | LabJack
 

Improve DC Accuracy +-10V, 16-bit, Streaming A2D by Calibrating the Ground-Offset Bias Point

3 posts / 0 new
Last post
Ken Cole
k_cole's picture
Improve DC Accuracy +-10V, 16-bit, Streaming A2D by Calibrating the Ground-Offset Bias Point

I'm loving my LabJack T7 Pro; I've had it for a month and I love it's functionality and depth of programmability!

I have found that the ground measurement varies with temperature slightly.  The default low-level streaming software uses a calibration point called "Center" which is a single floating point value of the raw A2D counts to expect analog ground to be at.  By customizing the low-level streaming code, I am able to reduce the measurement noise of my streaming AIN by using a calibration equation as follows.

CenterCount = CenterSlope * AvgTemperature + CenterOffset

where
"CenterCount" is the floating point value used to subsequently scale the AIN samples.
"CenterSlope" is the floating point value of the rate of change of AIN ground reading with temperature.
"CenterOffset" is the floating point value of the AIN ground reading at zero temperature.

Original Calibration Values:
----------------------------------
Center = 33538.328125

New Calibration Values:
------------------------------
CenterSlope = 0.370260179  // Change per degree Celcius
CenterOffset = 33527.425781

In a stable temperature environment, I've recorded excellent DC results of nulling-out the zero-point as follows.
Stream Configuration:
  Scan Rate (Hz) = 300.003, Samples Per Packet = 2, # Samples Per Scan = 2
  Settling (us) = 9.500, Resolution Index = 8, Buffer Size Bytes = 0
  Auto Target = 1, Number of Scans = 0
  Scan List Addresses = 28 30  // i.e. temperature channel and ground channel
  Negative Channels = 199 199 
  Ranges = 10.000 10.000 
Starting stream.
Reading streaming data.
Avg. Temp = 25.87; Windowed AIN = -0.00000
Avg. Temp = 25.84; Windowed AIN = 0.00000
Avg. Temp = 25.83; Windowed AIN = 0.00000
Avg. Temp = 25.81; Windowed AIN = 0.00000
Avg. Temp = 25.80; Windowed AIN = 0.00000
Avg. Temp = 25.81; Windowed AIN = 0.00000
Avg. Temp = 25.82; Windowed AIN = 0.00000
Avg. Temp = 25.84; Windowed AIN = 0.00000
Avg. Temp = 25.85; Windowed AIN = 0.00000

Noise Bandwidth    = 0.085 Hz.
Avg. Temp.         = 25.83 (9 Windowed samples)
Std. Dev.    = 0.021956
Avg. AIN           = 0.000003 (9 Windowed samples)
Std. Dev.    = 0.000002

Stopped stream reading.

Configured Scan Rate = 300
# Scans = 177290.000
# Scans skipped = 0 (0 samples)
Time taken = 590.961291 sec.
Timed Scan Rate = 300.003
Timed Sample Rate = 600.005

Acheivable 5 microvolts precision with an accuracy of +-10 microvolts is incredible and makes 5.5 to 6.0 digit reading possible!

I use a varient of the flat top window given in the following link to obtain a more accurate dc reading of both the temperature and the AIN readings.
https://en.wikipedia.org/wiki/Window_function

Ken Cole
k_cole's picture
This is a follow-up to the

This is a follow-up to the original post...

Using 4.096 volt LJtick, I've made the following measurement showing precision capability in the +-10 volt streaming range.

Reading    calibration constants.
OVERRIDE devCal.HS[0].Center = 33527.425781
OVERRIDE devCal.HS[0].CenterSlope =     0.370260
Configuring analog inputs.
Configuring stream settings.
Reading stream configuration.
Reading stream scan list.
Reading analog inputs configuration.
Stream Configuration:
  Scan Rate (Hz) = 300.003, Samples Per Packet = 2, # Samples Per Scan = 2
  Settling (us) = 9.500, Resolution Index = 8, Buffer Size Bytes = 0
  Auto Target = 1, Number of Scans = 0
  Scan List Addresses = 28 4 
  Negative Channels = 199 199 
  Ranges = 10.000 10.000 
Starting stream.
Reading streaming data.
Avg. Temp = 25.90217; Windowed AIN = 4.09633
Avg. Temp = 25.90217; Windowed AIN = 4.09633
Avg. Temp = 25.90217; Windowed AIN = 4.09633
Avg. Temp = 25.87299; Windowed AIN = 4.09633
Avg. Temp = 25.87260; Windowed AIN = 4.09633
Avg. Temp = 25.84902; Windowed AIN = 4.09633
Avg. Temp = 25.84883; Windowed AIN = 4.09633
Avg. Temp = 25.87138; Windowed AIN = 4.09634
Avg. Temp = 25.87260; Windowed AIN = 4.09634

Noise Bandwidth    = 0.085 Hz.
Avg. Temp.         = 25.88 (9 Windowed samples)
Std. Dev.    = 0.020853
Avg. AIN           = 4.096333 (9 Windowed samples)
Std. Dev.    = 0.000004

Stopped stream reading.

Configured Scan Rate = 300
# Scans = 177290.000
# Scans skipped = 0 (0 samples)
Time taken = 590.961398 sec.
Timed Scan Rate = 300.003
Timed Sample Rate = 600.005
Stopping stream

LabJack Support
labjack support's picture
Great write-up, thank you for

Great write-up, thank you for sharing!