cd00248578

AN3064
Application note
Using the STC3100 battery monitor for gas gauge applications
Introduction
Handheld devices such as mobile phones, music and video players, as well as portable
navigation devices, tend to integrate ever more multimedia functions, all of which have
different power needs. As a consequence, it has become difficult to manage the battery’s
state-of-charge (SoC) and predict the remaining operating time with no dedicated gas
gauge support. The STC3100 is a new device that includes battery monitoring features
(voltage, current and temperature) and a Coulomb counter to implement a gas gauge
system in existing or future applications.
This application note is intended to assist product designers by taking advantage of using
the STC3100 in one-cell Li-Ion battery handheld applications to implement the gas gauge
function. The document provides:
October 2009
■
a brief description of the STC3100 device and typical applications,
■
information on how to use the battery monitoring functions of the STC3100,
■
a general flow chart of the tasks needed to implement a simple gas gauge system.
Doc ID 16263 Rev 1
1/15
www.st.com
Using the STC3100
AN3064
1
Using the STC3100
1.1
Brief description of the STC3100
The STC3100 battery monitoring function includes the measurement of the battery voltage
and current, measurement of the IC’s die temperature and computation of the battery
charge variation (Coulomb counter). An external sense resistor is used in series with the
battery to adapt the current measurement to the application requirements.
Figure 1 shows a typical application using the STC3100.
Figure 1.
Typical application diagram for the STC3100
Battery State-of-charge
Battery data
Current
Remaining percentage
0.32 A
80 %
Voltage
3.71 V
Remaining time
Temperature
2:06
27 ° C
VCC
32768 Hz
clock
uC with
Gas Gauge
firmware
ROSC
STC3100
SCL
I2C bus
SDA
VIN
Battery
CG
Rcg
GND
IO0
AM04578
The STC3100 mode and operation are controlled through an I²C interface. SCL and SDA
are the clock and data signals of the I²C interface.
1.2
Internal or external 32,768 Hz timebase
The Coulomb counter system needs an accurate 32,768 Hz timebase to compute the level
of charge flowing from and to the battery. The STC3100 can operate from an internal
oscillator or use an external RTC signal for highest accuracy. To use the internal oscillator, a
200 kΩ 0.1% resistor must be connected to the ROSC pin. The accuracy of the internal
oscillator is 2.5% maximum over the supply voltage and temperature ranges. An external
RTC signal can be applied to the ROSC pin (no resistor required in this case). The signal
must be a square wave with a low level below 0.5 V and a high level above 1.5 V.
2/15
Doc ID 16263 Rev 1
AN3064
Using the STC3100
Figure 2.
ROSC connection for internal or external timebase
200 kΩ, 0.1%
ROSC
ROSC
32,768 Hz RTC
STC3100
STC3100
AM04579
The STC3100 automatically recognizes the presence of the external clock signal and uses it
if present. The internal oscillator, however, can be inhibited to force the use of an external
signal by setting the SEL_EXT_CLK bit in the REG_MODE register.
1.3
STC3100 external components
The Rcg resistor is used to sense the current flowing into or from the battery. The value of
the Rcg resistor must be selected based on the maximum peak current in the application;
the voltage drop across the Rcg resistor must not exceed +/-80 mV.
Rcg resistance (Ohm) <= 0.08/peak current (A).
For instance, a current of up to +/- 2 A can be monitored using a 33 mΩ resistor.
The STC3100 has separate pins for the power supply (VCC) and voltage measurement
(VIN) inputs, providing an easy way of implementing an input filter or additional ESD
protection without affecting the accuracy of the voltage measurement.
Figure 3.
STC3100 connections with VIN input filter and additional ESD protection
System supply
C1 D1
R1
VCC
R2
STC3100
VIN
Battery
C2
CG
Rcg
GND
Gnd
AM04580
C1 is the normal recommended decoupling capacitor (1 µF).
R1 and D1 provide additional ESD protection to the STC3100’s VCC pin. A typical value for
R1 is 150 Ω and D1 is a 5.6 V Zener diode.
R2 provides additional ESD protection to the STC3100’s VIN pin. A typical value for R2 is
1 kΩ.. The input impedance of the VIN pin is approximately 500 kΩ; an R2 resistor value of
1 kΩ will not affect the accuracy of the battery voltage measurement. The VIN input must be
connected directly (through the R2 resistor) to the battery’s positive terminal.
Doc ID 16263 Rev 1
3/15
Using the STC3100
AN3064
The C2 capacitor is optional and can be used if additional filtering is required, with typical
values of 47 to 220 nF.
The STC3100’s ground connection (GND) is used as the reference input for the current
measurement and must be connected to the ground side of the sense resistor by a
dedicated track. No current, except the supply current of the STC3100 itself, must flow in
this track to avoid creating an offset error in the current measurement.
4/15
Doc ID 16263 Rev 1
AN3064
2
Battery monitoring functions
Battery monitoring functions
The STC3100 includes the following battery monitoring functions.
●
A Coulomb counter for automatic computation of the battery’s charge variation: this is
done by integrating the battery current versus the time and accumulating the resulting
charge variation into the accumulator register. The last current measurement is always
available.
●
Automatic periodic measurement of the battery voltage.
●
Automatic periodic measurement of the temperature using the STC3100’s internal
sensor.
The battery monitoring functions are controlled by the GG_RUN bit in the REG_MODE
register. Since GG_RUN is reset at power-up, the battery monitoring functions are disabled,
ensuring a low standby current when the battery is inserted until the application is started.
The Coulomb counter function uses a 12/14-bit ADC and runs continuously after it has been
enabled by the GG_RUN bit.
Values held in consecutive registers (such as the charge value in the REG_CHARGE_LOW
and REG_CHARGE_HIGH registers) must be read with a single I2C access to ensure data
integrity. Multiple values can be read in one I²C access; all values will then be consistent,
that is, will be relative to the same time.
2.1
Coulomb counter operation
The voltage drop between the CG and GND pins is integrated during a conversion period
and input to a 12- to 14-bit AD converter. The output conversion is accumulated into a 28-bit
accumulator. The system controller can control the Coulomb counter and read the data
(upper 16 bits of the accumulator) through the I2C control registers.
Doc ID 16263 Rev 1
5/15
Battery monitoring functions
Figure 4.
AN3064
Gas gauge block diagram
16-bit counter
16
Counter
register
16
Current
register
16
28
Charge
register
28-bit
accumulator
CG
GND
16
12/14-bit
AD converter
Σ
28
EOC
cg_rst
2
cg_res
cg_clock
cg_enable
rd_req
Control logic
cg_calibration
32768 Hz
Control
registers
AM00832
The A/D converter’s output is a signed value in two’s complement format. It is positive when
the battery is charging and negative when the battery is discharging. When a conversion
cycle is completed, the result is added to the charge accumulator and the 16-bit conversion
counter is incremented.
6/15
Doc ID 16263 Rev 1
AN3064
Battery monitoring functions
Figure 5.
Coulomb counter operation
I
battery
current
(mA)
Charge
current
Time
Discharge
current
Δt
Coulomb counter detail:
current samples are
accumulated at each
end of conversion:
Acc = Σ(Ι x Δt)
Acc
Coulomb
counter
accumulator
(mA.h)
Time
Idle
Fast charge
End of
charge
Idle
Medium
discharge rate
Fast
discharge rate
End of
discharge
AM04581
2.2
Coulomb counter reading
The charge data as well as the conversion count can be read at any time by the system
controller. The recommended procedure is to read the locations REG_CHARGE (2 bytes)
and REG_COUNTER (2 bytes) in one go using a single I²C block read to ensure data
consistency between the accumulator and counter.
Table 1.
Name
DATA[7..0]
Table 2.
Name
DATA[15..8]
REG_CHARGE_LOW. address 2 (02h)
Pos.
Type
Powerup
[7..0]
R
00
Description
Coulomb counter data
REG_CHARGE_HIGH. address 3 (03h)
Pos.
Type
Powerup
[7..0]
R
00
Description
Coulomb counter data
The charge code is a 16-bit binary number using the two’s complement binary format. Bit 15
is the sign bit and the LSB value is 6.70 µV.h. To convert the charge data into mA.h, the
external resistance Rsense must be taken into account:
charge data (mA.h) = 6.70 * charge_code / Rsense (mΩ).
When the result of an accumulation exceeds the limits of a signed binary number (below
0x8000 or above 0x7FFFF), the carry bit is lost, no overflow is generated and the
accumulator continues to accumulate.
Doc ID 16263 Rev 1
7/15
Battery monitoring functions
Table 3.
Name
DATA[7..0]
Table 4.
Name
DATA[15..8]
AN3064
REG_COUNTER_LOW. address 4 (04h)
Pos.
Type
Powerup
[7..0]
R
00
Description
Conversion counter data.
REG_COUNTER_HIGH. address 5 (05h)
Pos.
Type
Power-up
[7..0]
R
00
Description
Conversion counter data
The counter code is an unsigned 16-bit binary number.
When the conversion counter reaches its maximum value (binary code = 216-1 = 0xFFFF), it
wraps to 0 and continues counting. Both the accumulator and the counter can be reset with
the GG_RST bit.
The CG_EOC bit in the REG_CTRL register can be used to check that at least one new
current measurement has been done and accumulated since the last reading of the
REG_CTRL register.
2.3
Battery current reading
The last measured value of the current is available in the REG_CURRENT locations (two
bytes) and is updated at each conversion.
Table 5.
Name
DATA[7..0]
Table 6.
Name
REG_CURRENT_LOW. address 6 (06h)
Pos.
Type
Power-up
[7..0]
R
00
Description
Battery current data
REG_CURRENT_HIGH. address 7 (07h)
Pos.
Type
Power-up
Description
DATA[13..8]
[5..0]
R
00
Battery current data
DATA[15, 14]
[7,6]
R
0
Unused
The current code is a 14-bit binary number using the two’s complement binary format. Bit 13
is the sign bit and bits 0 to 12 are the data bits. The LSB value (bit 0) is 11.77 µV.h,
irrespective of the current conversion resolution. However, bit 0 is always zero in 12- and 13bit resolution modes, and bit 1 is always zero in 12-bit resolution mode. To convert the
current data into mA, the external resistance Rsense must be taken into account.
current (mA) = current_code* 11.77 / Rsense (mΩ)
8/15
Doc ID 16263 Rev 1
AN3064
2.4
Battery monitoring functions
Battery voltage and temperature reading
The battery voltage and chip temperature (close to the battery temperature) are measured
by means of an A/D converter and a multiplexer. This function takes place concurrently to
the Coulomb counter function with a dedicated A/D converter, which means that it does not
affect the performance of the Coulomb counter. To reduce the power consumption, a
conversion takes place every two seconds only, alternating between the battery voltage and
temperature (so each value is refreshed every four seconds).
Table 7.
Name
DATA[7..0]
Table 8.
Name
REG_VOLTAGE_LOW. address 8 (08h)
Pos.
Type
Power-up
[7..0]
R
00
Description
Battery voltage data
REG_VOLTAGE_HIGH. address 9 (09h)
Pos.
Type
Power-up
Description
DATA[11..8]
[3..0]
R
0
Battery voltage data
DATA[15..12]
[7..4]
R
0
unused
The voltage code is a 12-bit binary number using the two’s complement binary format. Bit 11
is the sign bit and bits 0 to 10 are the data bits. The LSB value (bit 0) is 2.44 mV. Note that
although the input voltage range is limited to a positive voltage, negative voltage codes can
be read when the input voltage is close to 0 V due to internal offset effects.
Table 9.
Name
DATA[7..0]
Table 10.
Name
REG_TEMPERATURE_LOW. address 10 (0Ah)
Pos.
Type
Power-up
[7..0]
R
00
Description
Temperature data
REG_TEMPERATURE_HIGH. address 11 (0Bh)
Pos.
Type
Power-up
Description
DATA[11..8]
[3..0]
R
0
Temperature data
DATA[15..12]
[7..4]
R
0
unused
The temperature code is a 12-bit binary number using the two’s complement binary format.
Bit 11 is the sign bit and bits 0 to 10 are the data bits. The LSB value (bit 0) is 0.125° C.
The actual values of the voltage and temperature are:
●
voltage (mV) = Voltage_code * 2.44.
●
temperature (°C) = Temperature_code * 0.125.
The VTM_EOC bit in the REG_CTRL register can be used to check that at least one new
measurement of the voltage or temperature has been done since the last reading of the
REG_CTRL register.
Doc ID 16263 Rev 1
9/15
Controller tasks for gas gauge implementation
3
AN3064
Controller tasks for gas gauge implementation
The system controller manages the following tasks.
●
At start-up, it enables the STC3100’s battery monitoring functions.
●
It periodically reads the battery voltage, temperature, current and charge accumulator
and uses this information to estimate the state of charge.
●
At power-down, it disables the STC3100.
Figure 6.
Flow chart of the general gas gauge system
Application startup
Periodic task ‘GasGauge’
Application shutdown
Enable the STC3100
Set-up a periodic task ‘GasGauge’
Read the STC3100 data
Process the gas gauge system
Disable the STC3100
AM04582
3.1
Application start-up
A typical startup code writes 0x02 (hex value) into the REG_CTRL register to reset the
accumulator and counter and clear the PORDET bit, and then 0x10 into the REG_MODE
register to start the STC3100 in 14-bit resolution mode.
The startup code then sets a periodic GasGauge task that will be called every 5 seconds.
3.2
Periodic GasGauge task
A simple periodic GasGauge task will do the following.
3.3
●
Read the battery voltage, temperature, current and charge accumulator.
●
At first call, use the battery voltage to estimate the battery’s state-of-charge and save it
in a RAM location of the STC3100 as a reference value.
●
During subsequent calls, use the saved reference value and the present charge
register content to calculate the present battery capacity:
battery capacity = reference value + charge register content.
●
Trigger a "low battery" alarm if the battery’s voltage is low (typically less than 3.1 V).
●
Calculate the remaining operating time from the remaining battery capacity and current
consumption when the battery is not charging (negative current).
Application power-down
The shutdown code puts the STC3100 in standby mode by writing 0 into the REG_MODE
register.
10/15
Doc ID 16263 Rev 1
AN3064
STC3100 demonstration board
Appendix A
STC3100 demonstration board
The STC3100 demonstration board is convenient to evaluate the charge and battery
monitoring functions and quickly obtain a working prototype or design reference.
Figure 7 shows the basic connections to use the STC3100 demonstration board.
STC3100 demonstration board usage
(optional)
| Battery +
Figure 7.
32768 Hz
System
controller
SDA
SCL
Gnd
AM04583
The sense resistor is on the board and the resistance value is 33 mΩ.
The digital interface comprises the SDA and SCL pads (I2C bus signals). An external
32,768 Hz clock can be applied to the ROSC pad. It is not necessary to physically remove
the ROSC resistor. The digital levels are: <0.5 V for low level, >1.5 V for high level.
Doc ID 16263 Rev 1
11/15
STC3100 register map
AN3064
Appendix B
STC3100 register map
Table 11 details the mapping of the battery monitoring registers.
Table 11.
Register map
Address
(dec.)
Type
REG_MODE
0
R/W
Mode register
REG_CTRL
1
R/W
Control and status register
REG_CHARGE_LOW
2
R
Coulomb counter data, bits 0-7
REG_CHARGE_HIGH
3
R
Coulomb counter data, bits 8-15
REG_COUNTER_LOW
4
R
Conversion counter, bits 0-7
REG_COUNTER_HIGH
5
R
Conversion counter, bits 8-15
REG_CURRENT_LOW
6
R
Battery current value, bits 0-7
REG_CURRENT_HIGH
7
R
Battery current value, bits 8-15
REG_VOLTAGE_LOW
8
R
Battery voltage value, bits 0-7
REG_VOLTAGE_HIGH
9
R
Battery voltage value, bits 8-15
REG_TEMPERATURE_LOW
10
R
Temperature value, bits 0-7
REG_TEMPERATURE_HIGH
11
R
Temperature value, bits 8-15
REG_ID0
24
R
Part type ID = 10h
REG_ID1
25
R
Unique part ID, bits 0-7
REG_ID2
26
R
Unique part ID, bits 8-15
REG_ID3
27
R
Unique part ID, bits 16-23
REG_ID4
28
R
Unique part ID, bits 24-31
REG_ID5
29
R
Unique part ID, bits 32-39
REG_ID6
30
R
Unique part ID, bits 40-47
REG_ID7
31
R
Device ID CRC
REG_RAM0
32
R/W
...
...
REG_RAM31
63
Name
Description
Control registers
Device ID registers
RAM registers
General-purpose RAM register 0
...
R/W
General-purpose RAM register 31
The REG_MODE and REG_CTRL registers are described in detail in Table 12 and
Table 13.
12/15
Doc ID 16263 Rev 1
AN3064
STC3100 register map
Table 12.
REG_MODE. address 0 (00h)
Pos.
Type
Powerup
0
R/W
0
32,768 Hz clock source:
0: auto-detect, 1: external clock
GG_RES
[2,1]
R/W
00
Current/Coulomb counter ADC resolution:
00: 14 bits, 01: 13 bits, 10: 12 bits
GG_CAL
3
R/W
0
0: no effect
1: used to calibrate the AD converters
0
0: standby mode. Accumulator and counter
registers are frozen, battery monitoring functions
are in standby.
1: operating mode
Name
SEL_EXT_CLK
GG_RUN
4
R/W
[7..5]
Table 13.
Name
IO0DATA
Description
Unused
REG_CTRL. address 1 (01h)
Pos.
Type
Powerup
R
X
Port IO0 data status:
0 = IO0 input is low, 1 = IO0 input is high
W
1
Port IO0 data output drive:
0 = IO0 output is driven low,1 = IO0 output is open
Description
0
GG_RST
1
W
0
0: no effect
1: resets the charge accumulator and conversion
counter. GG_RST is a self-clearing bit.
GG_EOC
2
R
1
Set at the end of a battery current conversion
cycle. Clears upon reading.
VTM_EOC
3
R
1
Set at the end of a battery voltage or temperature
conversion cycle. Clears upon reading.
R
1
Power-on reset (POR) detection bit:
0 = no POR event occurred
1 = POR event occurred
0
Soft reset:
0 = releases the soft-reset and clears the POR
detection bit
1 = asserts the soft-reset and sets the POR
detection bit
PORDET
4
W
[7..5]
R/W
Unused
Doc ID 16263 Rev 1
13/15
References
AN3064
References
Table 14.
Document references
Document
STC3100 datasheet: Battery monitor IC with Coulomb counter/gas gauge.
Revision history
Table 15.
14/15
Document revision history
Date
Revision
19-Oct-2009
1
Changes
Initial release.
Doc ID 16263 Rev 1
AN3064
Please Read Carefully:
Information in this document is provided solely in connection with ST products. STMicroelectronics NV and its subsidiaries (“ST”) reserve the
right to make changes, corrections, modifications or improvements, to this document, and the products and services described herein at any
time, without notice.
All ST products are sold pursuant to ST’s terms and conditions of sale.
Purchasers are solely responsible for the choice, selection and use of the ST products and services described herein, and ST assumes no
liability whatsoever relating to the choice, selection or use of the ST products and services described herein.
No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. If any part of this
document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products
or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such
third party products or services or any intellectual property contained therein.
UNLESS OTHERWISE SET FORTH IN ST’S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED
WARRANTY WITH RESPECT TO THE USE AND/OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (AND THEIR EQUIVALENTS UNDER THE LAWS
OF ANY JURISDICTION), OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
UNLESS EXPRESSLY APPROVED IN WRITING BY AN AUTHORIZED ST REPRESENTATIVE, ST PRODUCTS ARE NOT
RECOMMENDED, AUTHORIZED OR WARRANTED FOR USE IN MILITARY, AIR CRAFT, SPACE, LIFE SAVING, OR LIFE SUSTAINING
APPLICATIONS, NOR IN PRODUCTS OR SYSTEMS WHERE FAILURE OR MALFUNCTION MAY RESULT IN PERSONAL INJURY,
DEATH, OR SEVERE PROPERTY OR ENVIRONMENTAL DAMAGE. ST PRODUCTS WHICH ARE NOT SPECIFIED AS "AUTOMOTIVE
GRADE" MAY ONLY BE USED IN AUTOMOTIVE APPLICATIONS AT USER’S OWN RISK.
Resale of ST products with provisions different from the statements and/or technical features set forth in this document shall immediately void
any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever, any
liability of ST.
ST and the ST logo are trademarks or registered trademarks of ST in various countries.
Information in this document supersedes and replaces all information previously supplied.
The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners.
© 2009 STMicroelectronics - All rights reserved
STMicroelectronics group of companies
Australia - Belgium - Brazil - Canada - China - Czech Republic - Finland - France - Germany - Hong Kong - India - Israel - Italy - Japan Malaysia - Malta - Morocco - Philippines - Singapore - Spain - Sweden - Switzerland - United Kingdom - United States of America
www.st.com
Doc ID 16263 Rev 1
15/15