Calibrating the Offset Register of the DS2761

Calibrating the Offset Register of the DS2761



The DS2761 contains a current offset register that can be utilized by the designer to eliminate inherent offset introduced by the current A/D within the IC. Improper calibration of this register, however, can negate any positive effect it has on increasing the accuracy of the current measurements, especially at low currents. This application note describes to the reader a step-by-step approach on how to properly calibrate the device within the fully assembled battery pack in order to determine the correct value that should be placed into the current offset register of the DS2761. Although the application note is specifically written for the DS2761, it also is applicable to the DS2751.


The advantages of lithium-ion (Li+) protection and high accuracy fuel gauging can be completely negated by an assembly error or improper calibration of the device. This application note walks through an example of how to properly calibrate the offset of the DS2761's high accuracy current A/D.

Calibrating the Current Offset

The Current A/D of the DS2761 is extremely sensitive. It is capable of measuring a voltage drop of only 15.625µV across the sense resistor. This kind of accuracy can only be achieved by calibrating the current measurement after the cell pack is assembled. The Current Offset Register (Address 0x33h) allows the current measurements of the DS2761 to be adjusted by ±127 LSbs (±79.375mA or ±1.984mV) for accurate measurement of very small currents. This offset is subtracted internally from each current measurement and is reflected in the Current Register and the Accumulated Current Register.

There can be slight variations in the current offset of the device across the temperature and voltage range of the application. Therefore, it is recommended to calibrate the offset at the average temperature and voltage of the application. For example, a cell phone or PDA would spend the majority of its time at approximately 25°C and 3.8V, which would be room temperature and the mid-range of the cell voltage.

The following example lists the steps to calibrate the DS2761 in-circuit:

1. Initialize the Offset Register

It is recommended to start by writing the Offset Register to 0x00h. The user may select a different offset value as a starting point without effecting the accuracy of the calibration. The starting offset value will need to be noted when determining the new offset value that is calculated in Step 4. For this example, it will be assumed that 0x00h is used as the starting point.

2. Verify no current is flowing

In most cases, writing 0x00h to the Protection Register to disable the protection FETs will cut off any current flowing into or out of the battery pack. However, some power supplies or loads that may be connected across the battery pack will have small leakage currents that will affect the accuracy of the offset calibration. This leakage can be detected by calibrating the offset with and without the load connected. If a different value for the offset is calculated in the two tests, then the load needs to be physically removed or disconnected through a switching relay prior to calibration.

3. Read the current register

Wait at least 100ms to make sure there are not any current samples from before the FETs were opened and the load removed. It is recommended to take 32 readings with at least 100ms between each reading. The 100ms delay is recommended between samples because the current register is updated every 88ms. The updated current register is the average of 128 current samples taken at a frequency of 1456Hz. If the current register is read any faster than 88ms, then the same register data will be read multiple times and will not increase the accuracy of the reading. The total time for the initial delay and the 32 readings should only take 3.2s.

The number of readings recommended is 32 because that is the fewest number of readings required to provide consistent offset values. Table 1 contains a summary of data taken on four separate DS2761s. Each device was calibrated 50 times with 128 readings averaged, then 50 times with 64 readings averaged, and then 50 times with 32 readings averaged, and so on down to one reading. The data is displayed with the average current in terms of the number of LSbs in the current register from all 50 calibration cycles as well as the maximum and minimum offset LSbs that were calculated from the 50 calibration cycles.

The data shows that using fewer than 32 readings may result in some variation of the offset by a bit or more. Reading more than 32 times does increase the accuracy of the average current, but does not affect the value that will be stored in the Offset Register, so that is the optimum number of readings.

Table 1. Calibration Data

Number of Readings 128 64 32 16 8 4 2 1
Device 1
Average Current (LSbs) -1.341 -1.370 -1.414 -1.403 -1.510 -1.775 -2.000 -2.800
Max Offset (LSbs) -1 -1 -1 -1 -1 0 0 0
Min Offset (LSbs) -1 -1 -1 -2 -1 -1 -1 -2
Device 2
Average Current (LSbs) -0.864 -0.873 -0.858 -0.913 -1.010 -1.080 -1.240 -1.640
Max Offset (LSbs) -1 -1 -1 -1 -1 0 0 0
Min Offset (LSbs) -1 -1 -1 -1 -1 -1 -1 -2
Device 3
Average Current (LSbs) -0.386 -0.406 -0.403 -0.426 -0.460 -0.455 -0.730 -0.800
Max Offset (LSbs) 0 0 0 0 0 0 0 0
Min Offset (LSbs) 0 0 0 -1 -1 -1 -1 -2
Device 4
Average Current (LSbs) -0.347 -0.332 -0.374 -0.331 -0.373 -0.405 -0.540 -0.740
Max Offest (LSbs) 0 0 0 0 0 0 0 0
Min Offset (LSbs) 0 0 0 -1 -1 -1 -1 -2

4. Determine the new offset value

Calculate the average of the 32 readings taken in Step 3. If the decimal portion of the average current is greater than 0.5 LSbs, then round the magnitude up to the next integer, otherwise, round down. For example, if the average is '1.45' round down to '1' and if the average is '1.55' round up to '2'. (Or if the average is '-1.45' round up to '-1' and if the average is '-1.55' round down to '-2'). This example uses a starting point of 0x00h, so the new offset value is simply the rounded average. If the starting point was something different, the rounded average would be added to the starting point to get the new offset value.

As an example, examine the data shown in Table 1 for Device 1. The starting point was 0 and the average of 32 readings of the current register was -1.414 LSbs. The average would be rounded to -1 and the two's compliment value of -1 which is 0xFFh would be written to the Offset Register. If the starting point was -2 then the average of 32 readings would have given .586 LSbs. The rounded average would be +1 LSb, which would be added to the starting point of -2, to obtain the new offset value of -1 and 0xFFh would again be written to the Offset Register.

When properly calibrated, the Offset Register will typically have a value in the range of +2 LSbs to -4 LSbs (in two's complement format that range is 0x02h to 0xFCh). It is possible to offset up to ±127 LSbs, however, if the value of the Offset Register is larger than ±10 LSbs, it may be necessary to verify the circuit for any leakage current and verify that the current is being read properly.

5. Write and copy the new offset value

The value that was calculated in Step 4 should then be written to the Offset Register in two's complement format and copied to EEPROM.

6. Verify accuracy

With the new value in the Offset Register, Steps 2 and 3 may be repeated to verify the accuracy of the calibration. Using ±.5 LSbs as the rounding point in Step 4, the user assures the average current of being within ±1 LSb when reading variations are taken into account.


The Current A/D of the DS2761 is capable of measuring a 15.625µV drop across the sense resistor. To ensure this accuracy, the current offset should be calibrated after assembly into the pack. For greatest accuracy, multiple measurements should be made over the longest acceptable period of time with the control FETs disabled and all loads removed. This will guarantee no extraneous current is flowing in the system during calibration and that a precise calibration may be obtained.