Auto-calibration

Poseidon features automatic calibration of both analog inputs and outputs. The potentiometers, which are subject to tampering, vibration, and maladjustment, have been completely eliminated. Instead, all calibration adjustments are performed using an octal 8-bit TrimDAC and precision, low-drift reference voltages on the board. The optimum TrimDAC values for each input range are stored in an EEPROM and recalled automatically on power up. Poseidon also has the A/D auto-calibration algorithm programmed into the dsPIC, featuring a fast, autonomous auto-calibration.

To calibrate the board through software a calibration utility program and software driver function enables you to calibrate the analog inputs and outputs at any time for any range and store the settings in the EEPROM. This feature dramatically improves the accuracy and reliability of the board, since you can calibrate the board as often as desired without worrying about temperature or time drift.

On the analog outputs, the full-scale output range is programmable to any voltage up to 10V, and the board will calibrate to the programmed range. The analog outputs are fed back to the A/D converter so that they can also be calibrated without user intervention.

Background

The Poseidon auto-calibration circuit uses an octal 8-bit TrimDAC IC to provide small adjustments to the offset and gain at various points in the circuit. Four of the DACs are used for the A/D calibration, and the other four are used for the D/A. The 8-bit TrimDAC values are stored in an on-board EEPROM and are recalled automatically on power-up.

An on-board ultra-stable +5V reference chip with 5ppm offset drift is used as the voltage reference for all calibration operations. From this reference several intermediate values are derived that are used for the calibration. One is just under +5V, and one is just above 0V. These values are measured at the factory, and their values are stored in the on-board EEPROM for use by the calibration program. Note that the actual values of the reference signals does not matter, as long as they are stable, since the calibration routine knows the values and can adjust the calibration circuit to achieve them. An extra input multiplexor chip is used to feed the calibration voltages into the A/D circuit during the process.

For bipolar A/D calibration, first 0V is measured, then the TrimDAC is adjusted until the target A/D reading is achieved. For unipolar calibration, the voltage just above 0 is used as the first measurement value. Two TrimDAC channels are used for the offset. The first channel provides a coarse adjustment to bring the A/D readings into range, and the second channel provides a fine adjustment for maximum accuracy. The use of both coarse and fine adjustments provides a wider range of total adjustment capability. The range of the fine adjustment exceeds the smallest change in the coarse adjustment, so there is no gap in the adjustment range.

After the offset is adjusted, the full-scale is adjusted in a similar manner. The reference value just under 5V is fed into the A/D, and two additional TrimDACs provide coarse and fine adjustments to achieve the target A/D near-full-scale reading.

Once the A/D is completely calibrated, the 12-bit D/A channels can be calibrated. Unlike the A/D circuit, which uses a single A/D for all input channels, the D/A circuit actually contains a single D/A converter for each of the four output channels. These channels are fed into the calibration multiplexor and the remaining four TrimDAC channels are used to calibrate them in a similar manner to the A/D. A single adjustment is used for the high reference, and both coarse and fine adjustments are used for the low reference.

The entire process takes about one second for each input range. Once it is complete, the board is ready to run. All eight TrimDAC values are stored in the EEPROM so that the next time power is cycled to the board, the values will be loaded automatically.

Performing Auto-calibration with Software

The Universal Driver™ software provides two functions, dscADAutocal() and dscDAAutocal(), which can be called from within a user program to calibrate the board at any time. In addition, a standalone DOS program, DMM32CAL.EXE, is provided to enable calibration without requiring any programming.

Performing Auto-calibration with dsPIC

Poseidon has an onboard microprocessor that can perform auto-calibration for you, automatically. The microprocessor can be configured to trigger calibration because of temperature changes, or it can be manually triggered by software.

Temperature-triggered auto auto-calibration is enabled by writing a 1 to Page 4, Base+14, bit 3 (ACREL). When this bit is set, the Autocal holdoff line is released. The dsPIC monitors temperature changes and auto-calibrates the board every 5ºC.

If more control over auto auto-calibration is desired, set the ACHOLD bit to stop the temperature trigger (this is the default state), and use the ACTRIG bit to engage auto-calibration when desired.

While the dsPIC is running auto auto-calibration, Base+4, bit 5, ACACT will be high. Users should monitor this bit whenever they have enabled auto auto-calibration. While the dsPIC is auto-calibrating, user software may not interact with the A/D circuit. When performing regular A/D functions, users should set the ACHOLD bit high to turn off auto auto-calibration.