Manual PCIe-DA16-6
16
Chapter 7: Calibration
Periodic calibration of these cards is recommended if they are used in extreme
environmental conditions. The card uses very stable components but high-low
temperature cycles might result in slight analog output errors.
The following equation is used with 16-bit cards:
Calibrated = ((4096 – LowAdjust - HighAdjust) / 4096) * 16 * LowAdjust
The 12-bit card is calibrated by software using the following formula:
Calibrated = ((4096 – LowAdjust - HighAdjust) / 4096) * LowAdjust
To calibrate the card, run the calibration program and follow the screen prompts. No
attempt at calibration should be made in noisy locations or with a noisy calibration setup.
The calibration program stores various data to the card to facilitate calibrating the data
output in a run-time environment. The calibration constants calculated during calibration
are stored in an EEPROM located at BAR[3], which can be determined using the
QueryBARBase(iCard, 3, pCalBase) function. The EEPROM contains two values per
channel per range. The LowAdjust and HighAdjust calibration constants are stored for
each channel at each range code (0-6). These constants can be used during normal
operation to calibrate the output data in real-time. Refer to the installed samples for an
example of using this data.
EEPROM
Offset (hex)
Range
DAC
Calibration Constant
+00
0-5V
DAC 0
LowAdjust
+01
0-5V
DAC 0
HighAdjust
+02..3
0-5V
DAC 1
LowAdjust, HighAdjust
+4..0B
0-5V
DAC 2..5
LowAdjust, HighAdjust
+20..2B
0-2.5V
DAC 0..5
LowAdjust, HighAdjust
+40..4B
0-10V
DAC 0..5
LowAdjust, HighAdjust
+60..6B
±5V
DAC 0..5
LowAdjust, HighAdjust
+80..8B
±2.5V
DAC 0..5
LowAdjust, HighAdjust
+A0..AB
±10V
DAC 0..5
LowAdjust, HighAdjust
+C0..CB
4-20mA
DAC 0..5
LowAdjust, HighAdjust
Table 7-1:
Calibration constant locations in EEPROM at BAR[3] “CalBase”
The LowAdjust and HighAdjust constants can be read from the EEPROM using the
following code:
LowAdjust = inportb((C (DAC * 2) + (RangeCode * 32)));
HighAdjust = inportb((C (DAC * 2) + (RangeCode * 32)) + 1);
The current Range Code configured at the per-channel range switches can be read from
the BAR[3] “CalBase” registers, starting at +F0.