Regenerating the DS1847/DS1848 Resistor Calibration Constants
IntroductionThe DS1847/48 resistor calibration constants are calculated and programmed into EEPROM at the factory during two test steps that are performed at different temperatures (25°C and 95°C). These calibration constants are unique and vary from device to device as well as lot to lot. Unfortunately, at the time the DS1847/48 was designed, the use of calibration constants was not considered and therefore additional write protected or read-only memory for the constants was not included. So when the decision was made to include them, the only location for them to be stored (at least for the DS1847) was in the Lookup Tables (LUTs). The obvious problem here is that when the user fills the LUTs, the factory programmed calibration constants are overwritten. Fortunately for the DS1848, a copy of the calibration constants (although not write protected) is also stored in the user EEPROM (Table 0). If using the DS1848, it may be worthwhile to check if the calibration constants are still intact in the user EEPROM before reading further.
The purpose of this application note is to show how the DS1847/48 calibration constants can be regenerated. This application note assumes that the reader is familiar with the Programming the Lookup Table section of the DS1847 or DS1848 data sheets. This application note will describe the measurements required, as well as show the calculations needed to regenerate the calibration constants. Last of all, this application note will show an example spreadsheet calculator (a link to it can be found at the end of this application note) that can be used to perform the calculations once several measurements are input.
ConventionThe conventions used to represent the calibration constants in this document are as follows:
- Upper case calibration constants (U, V, W, X, Y, and Z) are the integer values read from the part and may be displayed in decimal or hexadecimal. These need to be multiplied by their corresponding LSB weights to convert them into their real values, which can then be used in calculations.
- Lower case calibration constants are real numbers. Before real numbers can be written into the DS1847/48, they must be converted into integer values by dividing the real number by its LSB weight.
MeasurementsIn order to regenerate the calibration constants, the minimum (position 00h) and maximum (position FFh) resistance of each resistor need to be measured at room temp (25°C) as well as at hot (85°C to 95°C) using the temperature read from the DS1847/48.
While it is possible for these measurements to be made "in-circuit", there are several concerns to address. First of all, a 2-wire master is required to put the DS1847/48 into manual mode to first set the resistors to position 00h, then to position FFh (or manual mode can be avoided by programming the LUTs to position 00h followed by FFh). It is important that if in-circuit programming, to make sure that setting the resistors to these extremes do not damage any portion of the circuit. The 2-wire master is also required to read what temperature the DS1847/48 says it is when the resistor measurements are made. Last, and probably the most difficult when making the measurements in-circuit, the minimum and maximum resistance of both resistors need to be measured without the application circuit loading the measurements, giving inaccurate readings. Once these concerns are addressed and the measurements are made, nomenclature for the measured values follow below.
Measure (for each resistor):
RMINC1, RMAXC1, and read the temperature from the part, C1 (preferably at 25°C), andwhere
RMINC2, RMAXC2, and read the temperature from the part, C2 (preferably 85-95°C).
RMINC1 is the position 0 (min) resistance of the resistor at C1 degrees C,
RMAXC1 is the position FFh (max) resistance of the resistor at C1 degrees C,
RMINC2 is the position 0 (min) resistance of the resistor at C2 degrees C,
RMAXC2 is the position FFh (max) resistance of the resistor at C2 degrees C,
C1 is the temperature read from the part (~25°C) in degrees C,
C2 is the temperature read from the part (~85-95°C) in degrees C.
CalculationsSeveral constants (not to be confused with calibration constants) which are used in the calculations are shown in Table 1. They are a function of the dash version of the device as well as the resistor being measured. Constants w and z are actually the real values of two of the six calibration constants, leaving the remaining 4 (per resistor) to be calculated.
Table 1. Values of constants to be used in the calculations
|-050 version||-010 version|
|Constants||R0 (50kΩ)||R1 (10kΩ)||R0 (10kΩ)||R1 (10kΩ)|
Using the constants in Table 1 along with the values from the measurements, Equations 1 through 8 yield the remainder of the real values of the calibration constants y, x, v, and u. These equations must be worked in the order provided since the values calculated initially are used in the subsequent equations. The real values can then be converted into their integer equivalents by dividing by their LSB weights, yielding Y, X, V, U, W, and Z.
Convert real values into hexadecimal integers:
Y = y / 10-7 = (dec)(hex) for resistor R0
Y = y / 10-7 = (dec)(hex) for resistor R1
X = x / 2-8 = (dec)(hex) for resistor R0
X = x / 2-8 = (dec)(hex) for resistor R1
V = v / 10-6 = (dec)(hex) for resistor R0
V = v / 10-6 = (dec)(hex) for resistor R1
U = u / 10-8 = (dec)(hex) for resistor R0
U = u / 10-8 = (dec)(hex) for resistor R1
W = w / 10-9 = 1.265E-6 / 10-9 = 1265(dec) = 04F1(hex) for resistor R0
W = w / 10-9 = 7.875E-6 / 10-9 = 7875(dec) = 1EC3(hex) for resistor R1
Z = z / 10-10 = 5.808E-7 / 10-10 = 5808(dec) = 16B0(hex) for resistor R0
Z = z / 10-10 = 7.5E-7 / 10-10 = 7500(dec) = 1D4C(hex) for resistor R1
Write to DS1847/48:
Once U, V, W, X, Y, and Z are calculated for each resistor (in hex), the values can be written into the corresponding locations of the corresponding LUTs in the location that the original factory calibration constants were originally (stated in the data sheet). Resistor 0 calibration constants are stored in Table 1 and Resistor 1 constants are stored in Table 2. For the DS1848, back-ups of both sets of calibration constants are stored in Table 0. Otherwise, one may wish to keep the calibration constants in real form so they can be used in the customer's calculations to program the entire LUTs.
Spreadsheet CalculatorThe accompanying spreadsheet calculator greatly simplifies calculation of the calibration constants (see Figure 1). Simply fill in the table with the measurements, and the calibration constants are instantly calculated, outputting both the real and integer values. Just be sure that the correct constants (α , w, and z) are used depending on the dash version. The hex values can then be written into the device so that it looks like it just came from the factory. Or, the real values can be used in additional calculations to implement the transfer function and reprogram the LUTs.
Figure 1. Example DS1847/48 calibration constant calculator.
ConclusionThis application note describes the measurements and calculations required to regenerate the DS1847/48 calibration constants for the rare occasion that the DS1847/48 needs to be put back into its factory programmed state. Once the measurements are made, the accompanying example spreadsheet can be used to calculate the calibration constants in both real and integer formats so that the DS1847/48 can be reprogrammed to resemble a virgin part, or the real values can be kept in the spreadsheet and incorporated into the customer's calculations to generate their LUTs.
Questions/comments/suggestions concerning this application note can be sent to:
Link to the spreadsheet used in this example:
http://files.dalsemi.com/system_extension/AN233/DS1847 Calibration Constant Calculator.xls