avr450: battery charger for sla, nicd, nimh and li-ion...

43
AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features Complete Battery Charger Design Modular C Source Code and Extremely Compact Assembly Code Low Cost Supports Most Common Battery Types Fast Charging Algorithm High Accuracy Measurement with 10-bit A/D Converter Optional Serial Interface Easy Change of Charge Parameters EEPROM for Storage of Battery Characteristics 1 Introduction The battery charger reference design is a battery charger that fully implements the latest technology in battery charger designs. The charger can fast-charge all popular battery types without any hardware modifications. It allows a full product range of chargers to be built around a single hardware design; a new charger model is designed simply by reprogramming the desired charge algorithm into the microcontroller using In-System Programmable Flash memory. This allows minimum time to market for new products and eliminates the need to stock more than one version of the hardware. The charger design contains complete libraries for SLA, NiCd, NiMH, and Li-Ion batteries. Figure 1-1. Battery Charger Reference Design Board 8-bit Microcontrollers Application Note 1659C-AVR-09/06

Upload: dangkhue

Post on 06-Mar-2018

250 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries

Features Complete Battery Charger Design Modular C Source Code and Extremely Compact Assembly Code Low Cost Supports Most Common Battery Types Fast Charging Algorithm High Accuracy Measurement with 10-bit A/D Converter Optional Serial Interface Easy Change of Charge Parameters EEPROM for Storage of Battery Characteristics

1 Introduction The battery charger reference design is a battery charger that fully implements the latest technology in battery charger designs. The charger can fast-charge all popular battery types without any hardware modifications. It allows a full product range of chargers to be built around a single hardware design; a new charger model is designed simply by reprogramming the desired charge algorithm into the microcontroller using In-System Programmable Flash memory. This allows minimum time to market for new products and eliminates the need to stock more than one version of the hardware. The charger design contains complete libraries for SLA, NiCd, NiMH, and Li-Ion batteries.

Figure 1-1. Battery Charger Reference Design Board

8-bit Microcontrollers Application Note

1659C-AVR-09/06

Page 2: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

2 AVR450 1659C-AVR-09/06

The battery charger reference design includes two battery chargers built with the high-end AT90S4433 microcontroller and the highly integrated low-cost 8-pin ATtiny15 microcontroller. However, it can be implemented using any AVR microcontroller with A/D converter, PWM output and enough program memory to store the desired charging algorithm.

As more and more electronic equipment becomes portable, the rush for better batteries with higher capacity, smaller size and lower weight will increase. The continuing improvements in battery technology calls for more sophisticated charging algorithms to ensure fast and secure charging. Higher accuracy monitoring of the charge process is required to minimize charge time and utilize maximum capacity of the battery while avoiding battery damage. The AVR® microcontrollers are one step ahead of the competition, proving perfect for the next generation of chargers.

The Atmel AVR microcontroller is the most efficient 8-bit RISC microcontroller in the market today that offers Flash, EEPROM, and 10-bits A/D converter in one chip. Flash program memory eliminates the need to stock microcontrollers with multiple software versions. Flash can be efficiently programmed in production just before shipping the finished product. Programming after mounting is made possible through fast In-System Programming (ISP), allowing up-to-date software and last minute modifications.

The EEPROM data memory can be used for storing calibration data and battery characteristics, it also allows charging history to be permanently recorded, allowing the charger to optimize for improved battery capacity. The integrated 10-bit A/D converter gives superior resolution for the battery measurements compared to other microcontroller-based solutions. Improved resolution allows charging to continue closer to the maximum capacity of the battery. Improved resolution also eliminates the need for external op-amps to window the voltage. The result is reduced board space and lower system cost.

AVR is the only 8-bit microcontroller designed for high-level languages like C. The reference design for AT90S4433 is written entirely in C, demonstrating the superior simplicity of software design in high-level languages. C-code makes this reference design easy to adopt and modify for todays and tomorrows batteries. The reference design for ATtiny15 is written in assembly to achieve maximum code density.

2 Theory of Operation The charging of a battery is made possible by a reversible chemical reaction that restores energy in a chemical system. Depending on the chemicals used, the battery will have certain characteristics. When designing a charger, a detailed knowledge of these characteristics is required to avoid damage inflicted by overcharging.

2.1 The AVR 8-bit RISC MCU The reference designs includes two separate battery chargers. One using AT90S4433 AVR microcontroller and one using the ATtiny15 AVR microcontroller. The AT90S4433 design demonstrates how efficient a battery charger can be implemented with C-code. The ATtiny15 design shows the highest integrated and lowest cost battery charger available in todays market. The AT90S4433 can be used for voltage and temperature monitoring with UART interface to PC for data logging. Table 1 shows the differences in the design.

Page 3: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

3

1659C-AVR-09/06

Table 2-1. Design Differences AT90S4433 Design ATtiny15 Design

Programming Language C Assembly

Code Size (approximately) 1.5K Bytes <350 Bytes

Current Measurement External Op-Amp Gain Stage

Built-in Differential Gain Stage

PWM Frequency 14 kHz, 8-bit Resolution 100 kHz, 8-bit Resolution

Clock Source External Crystal, 7.3 MHz Internal Calibrated RC Oscillator, 1.6 MHz

Serial Comm. Interface Yes No

In-System Programming Yes Yes

2.2 Battery Technologies Modern consumer electronics use mainly four different types of rechargeable batteries:

• Sealed Lead Acid (SLA) • Nickel Cadmium (NiCd) • Nickel Metal Hydride (NiMH) • Lithium-Ion (Li-Ion) It is important to have some background information on these batteries to be able to select the right battery and charging algorithm for the application.

2.2.1 Sealed Lead Acid (SLA)

Sealed Lead Acid batteries are used in many applications where cost is more important than space and weight, typically preferred as backup batteries for UPS and alarm-systems. The SLA batteries are charged using constant voltage, with a current limiter to avoid overheating in the initial stage of the charging process. SLA batteries can be charged infinitely, as long at the cell voltage never exceeds the manufacturer specifications (typically 2.2V).

2.2.2 Nickel Cadmium (NiCd)

Nickel Cadmium batteries are widely used today. They are relatively cheap and convenient to use. A typical NiCd cell can be fully charged up to 1,000 times. They have a high self-discharge rate. NiCd batteries are damaged from being reversed, and the first cell to discharge completely in a battery pack will be reversed. To avoid damaging discharge of a battery pack, the voltage should be constantly monitored and the application should be shutdown when the cell voltage drops below 1.0V. NiCd batteries are charged with constant current.

2.2.3 Nickel Metal Hydride (NiMH)

Nickel Metal Hydride batteries are the most widely used battery type in new lightweight portable applications (i.e., cell phones, camcorders, etc.). They have a higher energy density than NiCd. NiMH batteries are damaged from overcharging. It is therefore important to do accurate measurements to terminate the charging at exactly the right time (i.e., fully charge the battery without overcharging). Like NiCd, NiMH batteries are damaged from being reversed.

Page 4: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

4 AVR450 1659C-AVR-09/06

NiMH has a self-discharge rate of approximately 20%/ month. Like NiCd batteries, NiMH batteries are charged with constant current.

2.2.4 Lithium-Ion (Li-Ion)

Lithium-Ion batteries have the highest energy/weight and energy/space ratio compared to the other batteries in this application note. Li-Ion batteries are charged using constant voltage, with current limiter to avoid overheating in the initial stage of the charging process. The charging is terminated when the charging current drops below the lower current limit set by the manufacturer. The battery takes damage from overcharging and may explode when overcharged.

2.3 Safe Charging of Batteries Modern fast chargers (i.e., battery fully charged in less than three hours, normally one hour) requires accurate measurements of the cell voltage, charging current and battery temperature in order to fully charge the battery completely without overcharging or otherwise damage it.

2.3.1 Charge Methods

SLA and Li-Ion batteries are charged with constant voltage (current limited). NiCd and NiMH batteries are charged with constant current and have a set of different termination methods.

2.3.2 Maximum Charge Current

The maximum charge current is dependent on the battery capacity (C). The maximum charge current is normally given in amounts of the battery capacity. For example, a battery with a cell capacity of 750 mAh charged with a charging current of 750 mA is referred to as being charged at 1C (1 times the battery capacity). If the charging current for trickle-charge is set to be C/40 the charging current is the cell capacity divided by 40.

2.3.3 Overheating

By transferring electric energy into a battery, the battery is charged. This energy is stored in a chemical process. But not all the electrical energy applied to the battery is transformed into the battery as chemical energy. Some of the electrical energy ends up as thermal energy, heating up the battery. When the battery is fully charged, all the electrical energy applied to the battery ends up as thermal energy. On a fast charger, this will rapidly heat up the battery, inflicting damage to the battery if the charging is not terminated. Monitoring the temperature to terminate the charging is an important factor in designing a good battery charger.

2.4 Termination Methods The application and environment where the battery is used sets limitations on the choice of termination method. Sometimes it might be impractical to measure the temperature of the battery and easier to measure the voltage, or the other way around. This reference design implements the use of voltage drop (-dV/dt) as primary termination method, with temperature and absolute voltage as backup. But the hardware supports all of the below mentioned methods.

Page 5: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

5

1659C-AVR-09/06

2.4.1 t Time

This is one of the simplest ways to measure when to terminate the charging. Normally used as backup termination when fast-charging. Also used as primary termination method in normal charging (14 - 16h). Applies to all batteries.

2.4.2 V Voltage

Charging is terminated when the voltage rises above a preset upper limit. Used in combination with constant current charging. Maximum current is determined by the battery, usually 1C as described above. Current limiting is crucial to avoid thermal damage to the battery if charge current is too high. SLA batteries are normally charged infinitely by setting the maximum voltage above the actual charge voltage. Used for Li-Ion as primary charging algorithm/termination method. Li-Ion chargers usually continue with a second phase after the maximum voltage has been reached to safely charge the battery to 100%. Also used on NiCd and NiMH as backup termination.

2.4.3 -dV/dt Voltage Drop

This termination method utilizes the negative derivative of voltage over time, monitoring the voltage drop occurring in some battery types if charging is continued after the battery is fully charged. Commonly used with constant current charging. Applies to fast-charging of NiCd and NiMH batteries.

2.4.4 I Current

Charging is terminated when the charge current drops below a preset value. Commonly used with constant voltage charging. Applies to SLA and Li-Ion to terminate the top-off charge phase usually following the fast-charge phase.

2.4.5 T Temperature

Absolute temperature can be used as termination (for NiCd and NiMH batteries), but is preferred as backup termination method only. Charging of all batteries should be terminated if the temperature rises above the operating temperature limit set by the manufacturer. Also used as a backup method to abort charging if voltage drops below a safe temperature Applies to all batteries.

2.4.6 dT/dt Temperature Rise

The derivative of temperature over time can be used as termination method when fast-charging. Refer to the manufacturers specifications on information on the exact termination point (Typically 1C/min for NiCd batteries) Applies to NiCd and NiMH.

2.4.7 DT Temperature over Ambient Temperature

Terminates charging when the difference between ambient (room) temperature and battery temperature rises over a preset threshold level. Applies to NiCd and SLA as primary or backup termination method. Preferred over absolute temperature to avoid battery damage when charged in a cold environment. As most systems have only one temperature probe available, the ambient temperature is usually measured before charging is initiated.

Page 6: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

6 AVR450 1659C-AVR-09/06

2.4.8 dV/dt = 0 Zero Delta Voltage

This termination method is very similar to the -dV/dt method, but pinpoints more accurately when the time voltage no longer rises. Applies to NiCd and NiMH batteries.

3 Hardware Implementation The reference design includes two complete battery charger designs. The reference design is divided in 5 main blocks (see Figure 3-1).

Figure 3-1. The Main Blocks of the Battery Charger Reference Design

tiny15 BatteryCharger2333

BatteryCharger

PowerSupply

LEDs and SwitchesPC Interface

3.1.1 Power Supply

Includes analog reference, push-button and LEDs. The input voltage is rectified through D9 - D12 and then filtered by C13. The rectified input voltage can be measured at the testpoint marked VIN. VIN is supplied to both the buck converter and to the LM7805 voltage regulator. The LM7805 delivers 5V for the microcontrollers. This voltage can be measured at the testpoint marked VCC The LED marked 5V OK indicates power on.

3.1.2 PC Interface

Connected to the UART interface on the AT90S4433. Can be used to interface PC for logging battery data during charging. The data can be imported in a spreadsheet to display the charging characteristic for a battery. The AT90S4433 can also be used as data logger when using the ATtiny15 battery charger.

3.1.3 LEDs and Switches

The board has several LEDs and switches for debug/monitoring purpose. Only few are used in the current applications, but the rest can be added easily when need.

• LED0: Connected to Port B, pin 0 on AT90S4433. Used in the current application for visualizing the charge mode fast or trickle.

• LED1: Connected to Port B, pin 2 on AT90S4433.

Page 7: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

7

1659C-AVR-09/06

• LED2: Connected to Port B, pin 3 on AT90S4433. • LED3: Connected to Port B, pin 0 on the AT90S4433. Used to display Error in the

AT90S4433 application. • LED4: Not connected, can be connected to test points on the board for extended

debug/monitoring. • LED5: Not connected, can be connected to test points on the board for extended

debug/monitoring. • LED6: Connected to Port B, pin 1 on ATtiny15. Used In the current application for

visualizing the PWM frequency. • VCCPower: Indicates power status. • SW0: Connected to Port D, pin 4 on AT90S4433. Used to start the charger in the

current AT90S4433 application. • SW1: Connected to Port D, pin 5 on AT90S4433. • SW2: Connected to Port D, pin 6 on AT90S4433. • SW3: Connected to Port D, pin 7 on AT90S4433. • RESET: Restarts the program and is used to recover from charge errors.

3.1.4 In-System Programming (ISP) Interface

Both designs have a 10-pin ISP header on the test board. The Flash program memory and EEPROM data memory can be downloaded from AVRISP PC programming software.

3.1.5 ATtiny15 with 100 kHz Buck Converter

ATtiny15 includes special features to make it specially suited for battery charger applications. The internal 100 kHz PWM is connected to a buck converter. The high switching frequency and high accuracy reduce the size of the external coil and capacitors. Testpoints are added to easily monitor the PWM output, voltage input, and current input. The ATtiny15 includes an internal gain stage that can amplify the differential voltage between two A/D channels. This eliminates the need for external op-amps. The charge current is measured as the differential between two A/D channels over a 0.25Ω resistor. Power supply for the battery charger is shown in Appendix 2.

3.1.6 AT90S4433 with 14 kHz Buck Converter

The 90S4433 battery charger design uses an external op-amps to amplify the voltage for the current measurement. This ensures the highest accuracy for the battery measurement. The charger is capable of communicating with a PC, which can be used to monitor charging parameters and to debug the charging algorithm.

The battery charger circuit was designed to charge any of the four battery types SLA, NiCd, NiMH and Li-Ion with the appropriate charge algorithm. These charge algorithms include fast-charge mode and a top-off trickle-charge to gain minimum charge time with maximum battery capacity. Power supply for the battery charger is shown in Appendix 2.

3.1.7 Buck Converter

The buck-converter is similar for both the AT90S4433 and the ATtiny15. They consist of one P-channel MOSFET switching transistor driven by the AVR via one bipolar NPN transistor. The switching transistor is connected to an inductor, a diode and a

Page 8: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

8 AVR450 1659C-AVR-09/06

capacitor (see Figure 3-2). An additional diode prevents the battery from supplying voltage into the microcontroller when the power is disconnected. When the switching transistor is on (illustrated by a switch on the figures below) the current will flow like Figure 3-2A illustrates. The capacitor is charged from the input via the inductor (the inductor is also charged up). When the switch is opened (Figure 3-2B), the inductor will try to maintain its current-flow by inducing a voltage. The current flows through the diode and the inductor will charge the capacitor. Then the cycle repeats itself. If the duty cycle is decreased, by shorter on time, longer off time, the voltage will decrease. If the duty cycle is increased (longer on timer, shorter off time), the voltage will increase. The buck-converter is most efficient running on a duty cycle of 50%.

Figure 3-2. Buck Converter Switching Principle

V VSWITCH OFFSWITCH ON

GND GNDGND

CAPACITOR CAPACITORDIODESHOTTKY

DIODESHOTTKY

INDUCTORINDUCTOR

(A) (B)

IN VINOUT V

GND

OUT

3.1.8 Voltage Reference

The voltage reference is supplied by a TL431 CPK voltage reference. AREF is set by the resistors R34 and R10 and can be calculated by:

VRRVA REFREF 67.3

10741495.21

10

34 =⎟⎠⎞

⎜⎝⎛

ΚΚ

+⋅=⎟⎟⎠

⎞⎜⎜⎝

⎛+⋅=

This value is a trade-off between a high-resolution (low AREF value) and a high signal-to-noise ratio (high AREF value). The voltage reference is common for both battery charger designs

3.1.9 Battery Temperature

Temperature is measured by a negative temperature coefficient (NTC) resistor. It has an approximate resistance of 10 kΩ at 25ûC. The NTC is part of a voltage divider, which is powered by the reference voltage.

The resolution in respect to the voltage measured across the NTC is the same as for the voltage measurement circuit.

Resolution:

stepmV

stepsV 58.3

102467.3

=

The steps can be calculated by the following equation:

Ω+⋅=

kRRN

NTC

NTC

101024

The NTC resistance does not follow a linear curve, which makes it difficult to calculate the temperature from the ADC value. Using a table to look up the temperature solves this (see Table 2-1). The table indicates the steps equal to 0.5ûC for ADC values 400

Page 9: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

9

1659C-AVR-09/06

to 675. ADC value 400 is approximately 37ûC and 675 is 8.6ûC. Using this table and doing some minor changes in the header file B_DEF.H will make it easy to implement any NTC resistor. The ATtiny15 battery charger design assumes that the linearity of the thermistor is sufficient to detect a temperature increase. Therefore, it uses a constant compare value to monitor the temperature.

The values in the table are calculated from the voltage divider at the NTC and datasheet for the NTC.

Table 3-1. NTC Steps According to Temperature ADC Reading Tempereature (ûC) 0.5ûC Steps NTC (Ω) Resistance

675 8.6 5 19341

650 11 4 17380

625 14 6 15664

600 16 5 14151

575 18.8 5 12806

550 21.2 5 11603

525 23.6 5 10521

500 26.2 5 9542

475 28.8 4 8652

450 32 6 7840

425 34 4 7095

400 37 5 6410

375 39.4 5 5778

3.2 AT90S4433 Battery Charger This section describes theory specific for the battery charger design based on AT90S4433.

3.2.1 Parameters for Layout

Oscillator frequency: fOSC = 7.3728 MHz

Saturation voltage: Vsat = 0.5V

Input voltage: VI = 15V

Output voltage: VO = 1.5V

Maximum output current: IO,max = 1.5A

8-bit PWM:

sf

TOSC

μ173.69510==

With duty cycle of 50%:

sston μμ 59.342

173.69==

Page 10: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

10 AVR450 1659C-AVR-09/06

Inductance:

( ) ( ) HA

sVVVI

tVVVLO

onOsatI μμ 9.1495.12

59.345.15.0152 max,

=⋅

⋅−−=

⋅⋅−−

=

sVVV

AHVVV

ILt

OsatI

Oon μμ 59.34

5.15.01539.1492 max, =

−−⋅

=−−

⋅⋅=

This gives a duty cycle of

%5050.0173.6959.34

===ss

Tton

μμ

3.3 AT90S4433 Measurement Circuitry

3.3.1 Battery Voltage

The charging voltage is monitored using an op-amp to measure the voltage difference between the positive and the negative pole of the battery. In order to select a suitable measurement range for the charger, decide how many battery cells and what type of batteries to charge, select a suitable input voltage (V1 - V2) and scale resistors for the voltage measurement. The op-amp circuit for measuring the battery voltage is an ordinary differential op-amp circuit. The equation for the output voltage from the op-amp circuit is shown below. The ADC is capable of measuring the voltage range from AGND to AREF (3.67V). The output voltage (VBAT2) from the op-amp has to be within this range:

( )212 VVRbRaVBAT −⋅=

Where:

• VBAT2 is the output voltage from the op-amp to the AVR A/D. • V1 is the positive pole of the battery. • V2 is the negative pole of the battery. • Ra and Rb are the resistors in the resistor network used to set the gain for the op-

amp. • Ra is equal to R10 and R12. • Rb is equal to R6 and R7. The maximum charge voltage will be:

( ) VVkkA

RbRaVV REF 1.1267.3

103321 =⋅

ΩΩ

=⋅=−

Gain in op-amp:

303.03310

1 =ΩΩ

==kk

RbRaG BU

Page 11: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

11

1659C-AVR-09/06

The resulting battery measurement resolution:

stepmVmV

GionADCresolut

BU

82.11303.0

58.3

1

==

3.3.2 Charge Current

The charge current is measured by sensing the voltage over a 0.033Ω shunt-resistor(R1). This voltage is amplified using an op-amp to improve the accuracy of the measurement before it is fed into the A/D converter.

This voltage is amplified by the factor:

4.586803911

2

5 =Ω

Ω+=+

kk

RR

The op-amp output voltage is therefore:

62

52 1 RI

RRV ShuntIbat ⋅⋅⎟⎟

⎞⎜⎜⎝

⎛+=

which is:

ShuntIbat IV ⋅= 926.12

The maximum current that can be measured is:

AIMAXBAT 0.2

926.158.3

==

This gives a resolution of:

stepmA

stepsmA 95.1

1024200

=

The step number for a given current can now be calculated from:

stepmA

IN Shunt

95.1=

The current from a certain step number is:

stepmANIShunt 95.1⋅=

Page 12: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

12 AVR450 1659C-AVR-09/06

3.4 ATtiny15 Battery Charger This section describes theory specific for the battery charger design based on ATtiny15. The 25.6 MHz oscillator frequency is generated with an on-chip PLL from an 1.6 MHz internal RC-oscillator. The reference design is shipped without resistors for dividing down the voltage of the battery. This limits the maximum voltage to 3.67V, making it suitable for 1-2 cells NiCd or NiMh batteries. To use higher voltages, simply add the required resistors to divide down the voltage into the 0-3.67V range. Calculation of the resistors are described at the end of this section.

3.4.1 Parameters for Layout

Oscillator frequency: fOSC = 25.6 MHz

Saturation voltage: Vsat = 0.5V

Input voltage: VI = 12V

Output voltage: VO = 1.5V

Maximum output current: IO,max = 1.5A

8-bit PWM:

sf

TOSC

μ96.9255==

With duty cycle of 50%:

sston μμ 98.42

96.9==

Inductance:

( ) ( ) HA

sVVVI

tVVVLO

onOsatI μμ 58.215.12

98.45.15.0152 max,

=⋅

⋅−−=

⋅⋅−−

=

sVVV

AHVVV

ILt

OsatI

Oon μμ 98.4

5.15.015358.212 max, =

−−⋅

=−−

⋅⋅=

This gives a duty cycle of

%5050.096.998.4

===ss

Tton

μμ

3.5 ATtiny15 Measurement Circuitry

3.5.1 Battery Voltage

The charge voltage is measured directly on the positive battery pole. When a voltage higher than the reference voltage (3.67V) is used to charge the battery, the charging voltage can be divided down with two resistors to fit into the 0-3.67V area. This input is also the negative input for the differential measurement of the battery charge current as shown in Figure 4. The current is measured as the difference between the negative and positive input to the internal 20x gain stage. This voltage is measured over a 0.25Ω shunt resistor.

Page 13: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

13

1659C-AVR-09/06

All measurements are done with 10-bit (1024 steps) resolution.

Figure 3-3. Voltage and Current Measurement

Sense Resistor

ADC3 VBAT

ADC2

I BAT20xGainStage

tiny15

The voltage resolution is decided by AREF.

Resolution:

In order to select a suitable measurement range for the charger, decide how many battery cells and what type of batteries to charge. The ADC is capable of measuring the voltage range from AGND to AREF (3.67V). The output voltage (VADC) from the voltage divider has to be within this range:

VbRbRa

RbVADC ⋅+

=

Where:

• VADC is the output voltage from the voltage divider to the AVR A/D. • Vb is the battery voltage. • Ra and Rb are the resistors used to scale down the battery voltage. • Ra is equal to R8 in the reference design. • Rb is equal to R16 in the reference design Note that the resistors R9 and R17 for scaling down the voltage of the shunt resistors must be equal to R8 and R16 for scaling down the voltage measurement. The reference design uses R8 = R9 = 3.7 kΩ and R16 = R17 = 2.2 kΩ.

This gives maximum charge voltage:

VVkkV

RRV ADCbat 8.967.3

2.27.311

16

8 =⋅⎟⎠⎞

⎜⎝⎛

ΩΩ

+=⋅⎟⎟⎠

⎞⎜⎜⎝

⎛+=

3.5.2 Charge Current

The charge current is measured by sensing the voltage over 0.025W shunt-resistor. This voltage is amplified 20 times using the internal gain stage to improve the accuracy of the measurement before it is fed into the A/D converter.

The ADC input voltage output voltage is:

1820 RIRaRb

RbV ShuntIbat ⋅⋅⎟⎠⎞

⎜⎝⎛

+⋅=

where:

• VIbat is the analog input voltage to the A/D converter. • IShunt is the current through the 0.25W shunt resistor.

Page 14: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

14 AVR450 1659C-AVR-09/06

• Ra and Rb are the resistors used to scale down the voltage on the shunt resistor with the same scale as the voltage measurement.

• Ra is equal to R9. • Rb is equal to R17

ShuntIbat IV ⋅= 864.1

The maximum current that can be measured is:

AIMAXShunt 96.1

864.167.3

==

This gives a resolution of:

stepmA

stepsmA 92.1

10241968

=

The step number for a given current can now be calculated from:

stepmA

IN BAT

92.1=

The current from a certain step number is:

stepmANIBATt 92.1⋅=

4 Software Implementation This section describes the software used in the battery charger reference design, it explains the C-code implementation for AT90S4433. The same principles also applies for the assembly code for ATtiny15. For complete description of the ATtiny15 assembly code, see the comments in the source code.

The battery type to be charged has to be set at program compile time.

The software can be extended to support charging of more than one battery. The straightforward implementation is to charge batteries sequentially allowing each battery a timeslot during trickle-charge. SLA and Li-Ion batteries can be charged in parallel with constant voltage charging if the number of battery cells in each battery-pack is the same. The charging current for each battery is limited and the charging voltage is limited as for one cell.

In the Battery Characteristics (b_car.h) all values are calculated with all their scaling factors. These values are defined in the include files, calculated at compile time and then handled as constants during program execution. All values taken from the A/D converter can directly be compared to these constants. This means that no time is used on recalculating values during program execution, saving time and memory

Page 15: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

15

1659C-AVR-09/06

space. The values and formulas used to calculate the values are extracted from the Measurement Circuitry section. See AT90S4433 Measurement Circuitry on page 10 and ATtiny15 Measurement Circuitry on page 12.

For NiCd battery, charge is started if the battery temperature is within the temperature range. Charge is always terminated with an error message if the temperature is higher than the maximum temperature, if the voltage exceeds the maximum battery voltage or if the maximum fast-charge time expires.

The normal ways to detect that the battery is fully charged, are the Temperature Rise (dT/dt) and the Voltage Drop (-dV/dt) methods. Therefore, a sample is taken every minute for the temperature and every second of the voltage. The values are compared to the sample taken one minute/second ago. In case the battery is fully charged, the charge status is automatically changed to trickle-charge, causing the program to jump into the trickle_charge() function.

The trickle_charge() function executes in a loop checking for a change of the charge status, temperature and voltage measurement and adjusting the current. In case the temperature is outside the valid range or a voltage overflow is detected, the error flag is set and the function is terminated. If no error occurs and charge status is not changed by the user, the program loops forever, adjusting the charge current to the current defined at the top of this module.

4.1 User Settings The charger is built as a multipurpose charger that can charge four types of batteries and a various number of cells by changing parameters before compiling the code. It is very important that this is done properly before compiling or it can damage the battery and the surroundings.

4.1.1 Change Battery Type

There is a C-file and an h-file for each battery type. Include the desired battery files in the compiler before compiling and uncomment the battery type under Battery Type in B_Def.h

4.1.2 Change Number of Cells

Change parameter cells in B_Def.h

4.1.3 Change Cell Capacity

Change parameter capacity in B_Def.h

4.1.4 Change Li-Ion Cell Voltage

Change parameter cell_voltage in B_Def.h

4.1.5 Change ADC Step Size

After changing the resistor values as described in the Measurement section, the parameters voltage_step and current_step must be changed in B_Def.h. This is very important and may damage the charger if not done properly.

Page 16: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

16 AVR450 1659C-AVR-09/06

4.2 Source Code Files The following files are included in the source code directory:

Table 4-1. C Source Code Files File Name Description Code Size(1)

Io4333.h Header file with symbolic names for AT90S4333

cstartup.s90 Start-up files for the C-compiler

Lnk0t.xcl Command file for the linker, optimized for AT90S4433

B_def.h Defines battery type, cell voltage, battery capacity and voltage steps

Bc.h Header file for bc.c, constants and macro definitions

Bc.c Main program, common for all battery types 474 bytes

SLA.h Header file for Lead Acid battery, charger parameters and function declarations

SLA.c Source code for Lead Acid battery 446 bytes

NiCd.h Header file for Nickel Cadmium battery, charger parameters and function declarations

NiCd.c Source code for Nickel Cadmium battery 548 bytes

NiMh.h Header file for Nickel Metal Hydride battery, charger parameters and function declarations

NiMh.c Source code for Nickel Metal Hydride battery 514 bytes

Liion.h Header file for Lithium-Ion battery, charger parameters and function declarations

Liion.c Source code for Lithium-Ion battery 690 bytes

Notes: 1. The Code Size applies for version 1.0 of the code. Compiled with IAR compiler version 1.41C, maximum size optimization

Table 4-2. Assembly Source Code Files File Name Description Code Size

bc.inc Include file for register definitions, A/D channel definitions and general constants

tn15def.inc Include file for ATtiny15

NiCd.inc Include file for Nickel Cadmium battery, charger parameters

NiCd.asm Source code for Nickel Cadmium battery 324 bytes

NiMh.inc Include file for Nickel Metal Hydride battery, charger parameters

NiCd.asm Source code for Nickel Metal Hydride battery 328 bytes

Liion.inc Include file for Lithium-Ion battery, charger parameters

Liion.asm Source code for Lithium-Ion battery 340 bytes

Page 17: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

17

1659C-AVR-09/06

4.3 BC.C This module contains the main function, the setup and the UART functions, the real-time clock and the interrupt handling routines.

In the setup routine, all low-level initialization are done. The UART is initialized and the real-time clock set to zero. After the initialization the program loops in idle mode until the status is changed in the global status variable.

The real-time clock is started when the PWM is started, and is also stopped when the PWM is stopped, i.e., when the battery voltage is measured. This ensures that only the time when the battery is charged is taken into account. On the other hand, this method has the disadvantage that measurements that rely on time (dV/dt or dT/dt) may be inaccurate.

The user can cause an external interrupt by pressing a button to change the charge status. In the interrupt handling routine, the status is changed according to the button pressed, either to fast-charge or to trickle-charge. In the main function the program then calls a function depending on the value set in the charge status variable.

BC.C also includes some common functions used by the different battery programs. The two most important functions will be described in the following subsections.

Page 18: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

18 AVR450 1659C-AVR-09/06

Figure 4-1. The Main() Function

Setup

ErrorDetected

?

YES

NO

Red LED On

Status = Fast?

YES

NO

END

Main

Clear Termination Status

ErrorDetected

?

YES

NO

Status = Trickle?

YES

NO

fast_charge

ErrorDetected

?

YES

NO

trickle_charge

Page 19: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

19

1659C-AVR-09/06

4.3.1 int battery (Unsigned Char Value)

The function is called for each A/D conversion and controls the ADC registers and PWM according to the measurement requested. It reads eight measurements from the ADC and calculates an average, which is returned to the calling function.

Figure 4-2. The Battery() Function Battery

ADMUX = “Volt”ADMUX =

“Temperature”

ADMUX = “Volt”ADMUX = “Current”

MeasurementType?

Charge Voltage Temperature Battery VoltageCurrent

AV = 0I = 0

Start ADC

I ≤ 7?

ADC Done?

NO

YES

YES

PWM On?

NO

AV = AV/8

AV = AV +ADC

PWM On

NO

Return(AV)

stop_PWM()

stable_ADC

stop_PWM()

stable_ADC

YES

Page 20: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

20 AVR450 1659C-AVR-09/06

4.3.2 void stable_ADC (Void)

The stable_ADC function is used when measuring battery voltage or temperature. It makes sure the ADC values are stable inside a defined area. This is important for an accurate measurement. The function loops until it gets three ADC values where the highest is no more than one step higher than the lowest.

Figure 4-3. The stable_ADC() Function stable_ADC

V[0] > V[1]+1

V[5] = V[4]V[4] = V[3]V[3] = V[2]

Start ADC

ADC Done?

V[2] = ADC

V[1] = Highest Value ofV[2] to V[5]

V[0] = Lowest Value ofV[2] to V[5]

YES

YES

NO

NO

Return

4.4 BC.H In this module, the bit handling macros, the charge status and the termination bit mask constants are defined.

The charge status indicates the actual status of the battery charger; fast-charging, trickle charging or if an error has occurred. For Li-Ion and SLA battery types, an indication on the charge mode, constant voltage or constant current is included as well as if Li-Ion is in the final stage of its fast-charge mode (called delay). The termination indicates the reason why fast-charge mode terminated or in case of a charge error where the error was detected and can be used for program debugging.

4.5 B_DEF.H This module defines the battery to be charged. When a customer designs a battery charger using the given circuit and program code, this file has to be changed to meet the needs.

Page 21: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

21

1659C-AVR-09/06

The battery type defines the charging and termination algorithm. If more than one battery type is chosen an error will occur during linking the program, as all functions with the same functions for different battery types have the same names battery(), fast_charge() and trickle_charge(). An error message will also occur if no battery type is chosen.

The cell number determines the voltage of the battery pack and all related constants. It is assumed that all cells are in series. Zero cells are not very reasonable but will only result in zero charge current. The voltage range of the buck converter and the voltage measurement circuit sets the upper limit.

The capacity (in mA) defines the charge current and all related constants.

All battery types except SLA, are fast charged in a conservative way at 1C. SLA is charged with 2C. This sets the limit for the battery capacity. The buck converter is calculated to supply a maximum current of 1.5 A. The maximum capacity for SLA is 750 mAh, for the other battery types 1500 mAh. If a higher charge current for NiCd or NiMH is required, the buck converter layout has to be changed. In case of a current higher than 2 A, the current measurement circuit also need some modifications. If batteries with a higher capacity than calculated above should be charged, it is possible to change the buck converter or to reduce charge current.

For the Li-Ion battery type, two cell voltages exist, depending on the battery manufacturer. This voltage, 4.1V or 4.2V, must be edited. It will be included automatically if the Li-Ion definition is chosen. Stating a wrong voltage in this place will not necessarily result in an error message, but will lead to incorrect charge methods, which can damage the battery and the battery charger.

The ADC step parameters are to be edited according to the resistors used in the measurement circuitry. This is described under measurement circuits.

The NTC table defines the ADC step value. A step value indicates 0.5°C change in the temperature. This lookup table is used in NiCd charging. The table may be edited if the NTC is different from the used in this description.

4.6 SLA.C

4.6.1 Charge Method

Fast-charge of Sealed Lead Acid batteries uses constant voltage. Before charging begins, a simple (but surprisingly effective) method is used to determine the charge voltage. A constant current of 1C (10 mA) is applied and the corresponding battery voltage is measured.

The battery is first charged with Constant voltage, fixing the voltage to that level and let the current float. When the current drops below 0.2C the charge cycle has finished. Fast-charge mode is then terminated and trickle-charge mode started.

Trickle charge is a constant voltage charging at a level slightly below the fast-charge voltage. Trickle charge can be terminated after a set time.

4.6.2 Charge Parameter Summary

Fast-charge:

Fixed fast-charge voltage = cells * 2450 mV

Trickle charge:

Fixed trickle-charge voltage = cells * 2250 mV

Page 22: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

22 AVR450 1659C-AVR-09/06

General charge termination:

Absolute minimum temperature T = 0°C

Absolute maximum temperature T = 45°C

Fast-charge termination:

Minimum current threshold I = 0.2C

Fast-charge error:

Maximum fast-charge temperature T = 30°C

Maximum fast-charge time t = 60 min at 1C current

Maximum fast-charge current I = 2C

Trickle charge termination:

None

Figure 4-4. The Trickle_charge() Function for SLA SLA_trickle

TWithin Limits

?

YES

NO

Green LED Blinking

Status = Trickleand No Error

?

YES

NO

Regulate Battery Voltage

Start PWMwith Zero Output

END

Green LED Off

Stop PWMand Flag Error

Page 23: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

23

1659C-AVR-09/06

Figure 4-5. The Fast_charge() Function for SLA, Part 1(2) SLA_fast_1

TWithin Limits

?

YES

NO

set last_T

Stop PWMand Flag Error

TimeOverflow

?

NO

YES

T< max_T_fast

?

YES

NO

Calculate fast_finish_time

Green LED On

Status = Fastand No Error

?

YES

NO

Regulate Battery Current

A B

Start PWMwith Zero Output

set last_min_V

Green LED Off

END

set last_sec_V

Read Voltage

Regulate Charge Voltage

Status = Fastand No Error

?

YES

NO

Page 24: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

24 AVR450 1659C-AVR-09/06

Figure 4-6. The Fast_charge() Function for SLA, Part 2(2)

TemperatureWithin Limits

?

YES

NO

A B

CurrentToo High

?

YES

NO

60 Sec. Over?

YES

NO

CurrentBelow Threshold

?

YES

NO

Stop PWMand Flag Error

Stop PWMand Flag Error

Stop PWMChange Status to Trickle

SLA_fast_2

4.7 NiCd.C

4.7.1 Charge Method

NiCd battery types are charged with a constant current. In fast-charge mode this current is set to 1C. In trickle-charge mode, it is C/40. The charging is terminated by the Voltage Drop (-dV/dt) method. Maximum charge voltage, Temperature Rise (dT/dt), and maximum charge time are used as backup terminations.

In case the battery is fully charged, the charge status is automatically changed to trickle-charge, causing the program to jump into the trickle_charge() function.

4.7.2 Charge Parameter Summary

Charge conditions:

Fast-charge:

Fast-charge current = 1C

Page 25: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

25

1659C-AVR-09/06

Trickle charge:

Trickle charge current = 0.025C

General charge termination:

Absolute minimum temperature T = 5°C

Absolute maximum temperature T = 40°C

Absolute maximum charge voltage V = cells * 1500 mV

Fast-charge termination:

Voltage drop threshold -dV/dt = 20 mV/min per cell

Temperature rise threshold dT/dt = 1°C per minute

Fast-charge error:

Minimum fast-charge temperature T= 15°C

Maximum fast-charge time t = 90 min at 1C current

Figure 4-7. The Trickle_charge() Function for NiCd NiCd_trickle

TWithin Limits

?

YES

NO

V< max_V

?

YES

NO

Green LED Blinking

Status = Trickleand No Error

?

YES

NO

Regulate Battery Current

Start PWMwith Zero Output

END

Green LED Off

Stop PWMand Flag Error

Stop PWM

Page 26: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

26 AVR450 1659C-AVR-09/06

Figure 4-8. The Fast_charge() Function for NiCd, Part 1(2) NiCd_fast_1

TWithin Limits

?

YES

NO

Set last_min_T

Stop PWMand Flag Error

TimeOverflow

?

NO

YES

V< max_V

?

YES

NO

T> min_T_fast

?

YES

NO

Calculate fast_finish_time

Green LED On

Status = Fastand No Error

?

YES

NO

Regulate Battery Current

A B

Start PWMwith Zero Output

Set last_min_V

Flag Error

Green LED Off

END

Page 27: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

27

1659C-AVR-09/06

Figure 4-9. The Fast_charge() Function for NiCd, Part 2(2)

-dVOverflow

?

NO

YES

TemperatureWithin Limits

?

YES

NO

Read last_min_T

Read last_min_V

A B

VoltageOverflow

?

YES

NO

60 Sec. Over?

YES

NO

dT/dtOverflow

?

YES

NO

Stop PWMand Flag Error

Stop PWMand Flag Error

Stop PWMChange Status to Trickle

Stop PWMChange Status to Trickle

NiCd_fast_2

Page 28: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

28 AVR450 1659C-AVR-09/06

4.8 NiMH.C

4.8.1 Charge Method

NiMH battery types are charged with a constant current. In fast-charge mode, this current is set to 1C. In trickle-charge mode it is C/40.

The charging is terminated by the Temperature Rise (dT/dt) and the Voltage Drop (-dV/dt) methods. Maximum charge voltage and maximum charge time are used as backup terminations.

In case the battery is fully charged the charge status is automatically changed to trickle-charge, causing the program to jump into the trickle_charge() function.

4.8.2 Charge Parameter Summary

Charge conditions:

Fast-charge:

Fast-charge current: I = 1C

Trickle charge:

Trickle charge current: I = 0.025C

Maximum trickle-charge time t = 90 min at 0.025C current

General charge termination:

Absolute minimum temperature = 5°C

Absolute maximum temperature = 40°C

Absolute maximum charge voltage = cells * 1500 mV

Fast-charge termination:

Temperature rise threshold dT/dt = 0.5°C per minute

Fast-charge error:

Minimum fast-charge temperature T = 15°C

Maximum fast-charge time t = 90 min at 1C current

Page 29: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

29

1659C-AVR-09/06

Figure 4-10. The Trickle_charge() Function for NiMH NiMH_trickle

TWithin Limits

?

YES

NO

V< max_V

?

YES

NO

Green LED Blinking

Status = Trickleand No Error

?

YES

NO

Regulate Battery Current

Start PWMwith Zero Output

END

Green LED Off

TimeOverflow

?

YES

NO

Calculate finish_time

Stop PWMand Flag Error

Page 30: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

30 AVR450 1659C-AVR-09/06

Figure 4-11. The Fast_charge() Function for NiMH, Part 1(2) NiMH_fast_1

TWithin Limits

?

YES

NO

Set last_min_T

Stop PWMand Flag Error

TimeOverflow

?

NO

YES

V< max_V

?

YES

NO

T> min_T_fast

?

YES

NO

Calculate fast_finish_time

Green LED On

Status = Fastand No Error

?

YES

NO

Regulate Battery Current

A B

Start PWMwith Zero Output

Set last_min_V

Green LED Off

END

Page 31: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

31

1659C-AVR-09/06

Figure 4-12. The Fast_charge() Function for NiMH, Part 2(2)

dT/dtOverflow

?

NO

YES

TemperatureWithin Limits

?

YES

NO

Read last_T

Read last_sec_V

A B

VoltageOverflow

?

YES

NO

60 Sec. Over?

YES

NO

dV/dtOverflow

?

YES

NO

Stop PWMand Flag Error

Stop PWMand Flag Error

Stop PWMChange Status to Trickle

Stop PWMChange Status to Trickle

60 Min. Over?

YES

NO

NiMH_fast_2

Page 32: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

32 AVR450 1659C-AVR-09/06

4.9 LiIon.C

4.9.1 Charge Method

Li-Ion batteries are the most advanced battery types to charge. Fast-charge starts at a constant current of 1C. This current is kept constant until a cell voltage level of 4.1 or 4.2V ± 50 mV is set. Then the battery is charged with constant voltage until the current drops below Imin.

For an accurate measurement of the battery voltage (and not the charge voltage), the PWM is turned off during voltage measurements. If the charge method then changes from constant current to constant voltage, the charge voltage is the relevant parameter to be measured. This is the reason why there are two voltage measurement modes, one with PWM turn off and one without.

Trickle charge of Li-Ion batteries is in principle the same as fast-charge. The current is much lower than in fast-charge mode and the constant voltage phase of the trickle-charge mode is simply terminated by a timer.

4.9.2 Charge Parameter Summary

Charge conditions:

Fast-charge:

Absolute maximum charge voltage = cells * cell voltage

Voltage tolerance = cells * 50 mV

Fast-charge current = 1C

Minimum current threshold = 50 mA per cell

Trickle charge:

Trickle charge current = 0.025C

Maximum trickle-charge time = 90 min at 0.025C current

General charge termination:

Absolute minimum temperature T = 5°C

Absolute maximum temperature T = 40°C

Fast-charge termination:

See charge conditions

Fast-charge error:

Minimum fast-charge temperature 10°C

Maximum fast-charge time = 90 min at 1C current

Page 33: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

33

1659C-AVR-09/06

Figure 4-13. The Trickle_charge() Function for Li-Ion LiIon_trickle

TWithin Limits

?

YES

NO

Change Statusfrom const_C

to const_V

Charge VoltageWithinin Limits

?

NO

YES

V< max_V

?

YES

NO

Calculate fast_finish_time

Green LED Blinking

Status = Trickleand No Error

?

YES

NO

Regulate Battery Current

Read Charge Voltage

Start PWMwith Zero Output

END

Green LED Off

Status = Delay

Status = const_V?

YES

NO

Regulate Voltage

TimeOverflow

?

YES

NO

TemperatureOverflow

?

YES

NO

Stop PWMand Flag Error

Stop PWMand Flag Error

Trickle Finish TimeReached

?

NO

YES

Stop PWMand Flag Termination

Page 34: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

34 AVR450 1659C-AVR-09/06

Figure 4-14. The Fast_charge() Function for Li-Ion, Part 1(2) LiIon_fast_1

TWithin Limits

?

YES

NO

Status = const_C

Change Statusfrom const_C

to const_V

Charge VoltageWithinin Limits

?

NO

YES

V< max_V

?

YES

NO

T> min_T_fast

?

YES

NO

Calculate fast_finish_time

Green LED On

Status = Fastand No Error

?

YES

NO

Status = const_C?

YES

NO

Regulate Battery Current

Read Charge Voltage

AB C D

Start PWMwith Zero Output

Page 35: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

35

1659C-AVR-09/06

Figure 4-15. The Fast_charge() Function for Li-Ion, Part 2(2)

END

Status = const_V?

YES

NO

Green LED Off

Delay TimeOver

?

NO

YES

Regulate Voltage

Stop PWM

TimeOverflow

?

YES

NO

Calculate fast_finish_time

Status = Delay

Status = const_CStatus = trickle

AB C D

TemperatureOverflow

?

YES

NO

60 Sec. Over?

YES

NO

const_V, NOT Delay& Current Below

Threshold?

YES

NO

Stop PWMand Flag Error

Stop PWMand Flag Error

LiIon_fast_2

Page 36: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

36 AVR450 1659C-AVR-09/06

5 Suggested Improvements NiCd batteries suffer from Memory Effect after charging the battery several times, it will not charge completely. To reset the memory, a shunt resistor can be added, allowing the MCU to completely discharge the battery prior to charging.

Page 37: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

37

1659C-AVR-09/06

Appendix 1: Schematic

Figure 5-1. Block Diagram of Main Blocks

VINVCCAREF

AGND

GND

ATtiny15 and 100 kHz buck converter BC2_100k.SCH

VCCVIN

AREFAVCC

AGND

GND

LED0LED1LED2LED3

SWITCH0SWITCH1SWITCH2SWITCH3

AT90S4433 and 14 kHz Buck converterBC2_14K.SCH

GND

AGND

VINVCC

AREFAVCC

SWITCH0SWITCH1SWITCH2SWITCH3

LED0LED1LED2LED3

Powersupply, Switches, LED and Analog referanceBC2_PSU.SCH

Page 38: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

38 AVR450 1659C-AVR-09/06

Figure 5-2. Power Supply and Reference Voltage Schematic LE

D0

GR

EE

NLE

D1

RE

DLE

D2

YE

LLO

W

LED

3

GR

EE

N

14

23

S1

14

23

S2

14

23

S3

14

23

S4

R21

330R

R22

330R

R23

330R

C13

100

uF/2

5V

VC

C

C5

100

nF

GN

D

VC

C

14

23

S5

RE

SE

TC

1447

nF

R15

10KV

cc

GN

D

D13

BA

S16

R25

330R

R26

1k R27

1k R28

1k R29

1k

GN

D

GN

D

GN

D

GN

D

Vin

9-1

5V D

C

LED

s an

d sw

itche

sP

ower

supp

ly

1 2 3

J3 DC

_JA

CK

_2_1

MM

Vin

1

GND 2

+5V

3

U6

L78M

05A

BD

TT

P1

VC

C

TP

2

GN

D

TP

14V

IN

I<=

3A

LED

7R

ED

R35

330R

D10

LSM

345

D12

LSM

345

D11

LSM

345

D9

LSM

345

GN

D

VIN

9-12

V A

C

R24

1k

R34

4k7

R14

10k

AG

ND

Vcc

31

2U

5T

L431

AR

EF

C11

100

nF

TP

13

AR

EF

TP

15

AG

ND

AR

EF

Ana

log

volta

ge r

efer

ence

LED

0

LED

1

LED

2

LED

3

SW

ITC

H0

SW

ITC

H1

SW

ITC

H2

SW

ITC

H3

RE

SE

T

LED

5

GR

EE

N

R42

330R

LED

4

GR

EE

N

R41

330R

TP

3

LED

4

TP

4LE

D5

TP

10LE

D0

TP

11LE

D1

TP

19LE

D2

TP

20LE

D3

Tes

tpoi

nt T

P3,

TP

4, T

P10

, TP

11,

TP

19 a

nd T

P20

hav

e no

mar

king

in th

e si

lksc

reen

. The

y ar

e pl

aced

clo

se to

thei

r re

spec

tive

resi

stor

s m

akin

g it

easy

to (

if de

sire

d) c

ut th

e tr

ack

and

patc

h th

e LE

D to

an

oth

er fu

nctio

n.

LED

4

LED

5

Page 39: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

39

1659C-AVR-09/06

Figure 5-3. ATtiny15 and 100 kHz Buck Converter Schematic

RE

SE

T/P

B5

1A

DC

3/P

B4

2

AD

C2/

PB

33

GN

D4

PB

0/M

OS

I/AR

EF

5

PB

1/M

ISO

/OC

P6

PB

2/A

DC

1/S

CK

7

VC

C8

U3

AT

TIN

Y15

Vcc

GN

D

MO

SI

1V

CC

2

LED

3G

ND

4

RE

SE

T5

GN

D6

SC

K7

GN

D8

MIS

O9

GN

D10

JP1

ISP

GN

D

VC

C

RE

SE

T

GN

D

IBA

T1

VB

AT

1T

BA

T1

PW

M1

R18

0R25

GN

D

1 2

4

3

-T

5

SCL

SDASMBus

B1

BA

TT

ER

Y

R13

10K

R4

680R

GN

D

L2 22uH

GN

DG

ND

+

R19

1k

GN

DBuc

k-co

nver

ter

100k

Hz

R8

33k/

0.1%

R9

33k

R16

10k/

0.1%

R17

10k

AG

ND

AG

ND

Q1

BC

847C

TP

6P

WM

1

TP

12V

BA

T1

TP

9IB

AT

1

R30

10k

GN

D

4

1

5

23

678

Q3

SI4

425D

Y

VIN

AR

EF

TB

AT

1

IBA

T1

VB

AT

1

PW

M1

RE

SE

TA

RE

F

R36

0RA

GN

D

R38

4k7

R37

4k7

Vcc

SD

A

SC

L

R32

330RLE

D6

RE

D

Vcc

NO

TE

: Use

Eith

er R

37 a

nd R

38

or R

8, R

9, R

16 a

nd R

17.

(R37

and

R38

for

SM

Bus

and

R8,

R9,

R

16 a

nd R

17 fo

r vo

ltage

and

cur

rent

m

easu

rem

ent u

sing

the

AT

tiny1

5.)

Usi

ng b

oth

will

not

wor

k in

eith

er c

ase.

AR

EF

C12

100u

F/2

5VC

310

0nF

D4

LSM

345

CD

RH

127-

220

C4

100

nFC

6

100

nF

D2

LSM

345

CC

2520

FC

Page 40: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

40 AVR450 1659C-AVR-09/06

Figure 5-4. AT90S4433 and 14 kHz Buck Converter Schematic

RE

SE

T1

PB

0/IC

P14

PD

0/R

XD

2P

D1/

TX

D3

PD

2/IN

T0

4

PD

3/IN

T1

5

PD

7/A

IN1

13

PD

5/T

111

PD

6/A

IN0

12

AR

EF

21

AV

CC

20

PB

5/S

CK

19

PB

2/S

S16

AG

ND

22

AD

C0/

PC

023

AD

C1/

PC

124

AD

C2/

PC

225

AD

C3/

PC

326

AD

C4/

PC

427

AD

C5/

PC

528

PB

4/M

ISO

18P

B3/

MO

SI

17

XT

AL1

9

XT

AL2

10

OC

1/P

B1

15

VC

C7

GN

D8

PD

4/T

06

U4

AT

90S

4433

-PC

MO

SI

1V

CC

2

LED

3G

ND

4

RE

SE

T5

GN

D6

SC

K7

GN

D8

MIS

O9

GN

D10

JP2

ISP

VC

C

VC

CG

ND

GN

D

RE

SE

T

R33

0RG

ND

AG

ND

AV

CC

VC

C

X1

7.37

28M

Hz

GN

DG

ND

AG

ND

X2

7.37

28M

Hz

L4 BLM

-21-

xxx

AR

EF

TxD

RxD

TB

AT

2IB

AT

2V

BA

T2

PW

M2

1 6 2 7 3 8 4 9 5

J1 DB

9G

ND

Ser

ial i

nter

face

(R

S-2

32)

VC

C

GN

D

14 71011 12 9

13 8

RS

232

TT

LV

+2

C1-

3

V-

6

C1+

1

C2+

4

C2-

5

VC

C16

GN

D15

T1

T2

R1

R2

U7

MA

X20

2CS

E

GN

D

GN

D

TxD

RxD

R1

R03

3

GN

D

R2

680R

R5

39k

1 2

4

3

-T

5

SCL

SDASMBus

B2

BA

TT

ER

Y

R6

33k

R10

10k

AG

ND

R11

10 k

R12

10k

R7

33k

R3

680R

GN

D

L1 150u

H

GN

DG

ND

+

R20

1k

GN

D

AG

ND

AV

CC

Q2

BC

847C

Buc

k-co

nver

ter

14kH

z

TP

5P

WM

2

TP

7V

BA

T2

TP

8IB

AT

2

AG

ND

R31

10k

GN

D

3 21

8 4

U1A

LM35

8

5 67

U1B

LM35

8

4

1

5

23

678

Q4

SI4

425D

Y

VIN

AR

EF

TB

AT

2V

BA

T2

IBA

T2

PW

M2

SW

ITC

H0

SW

ITC

H1

SW

ITC

H2

SW

ITC

H3

LED

0LE

D1

LED

2LE

D3

RE

SE

T

R40

4k7

R39

4k7

Vcc

SD

AS

CL

TP

16P

C3

TP

17P

C4

TP

18P

C5

TP

21T

XD

TP

22R

XD

C8

100n

F

C20

100

nF

C23

100

nF C19

100

nF

C17

100

nF

C18

100

nF

C16

22pF

C15

22pF

C9

100n

F

C22

100n

F

C1

1000

uF

/25V

C2

100

nF

D1

LSM

345

D3

LSM

345

C24

100

nF

CC

2520

FC

Page 41: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

AVR450

41

1659C-AVR-09/06

Appendix 2: Power Supply

The schematic below shows a power supply that supplies both +15V for the battery charger and +5V for the AVR microcontroller.

The power supply unit for the battery charger is built around a TOP224 from Power Integration. The flyback design technique makes a compact and efficient power supply design. The input voltage may vary from 85 VAC to 265 VAC (50 - 60 Hz).

Figure 5-5. Power Supply Schematic

D30

11,

2A/5

00V

14

23

L301

39 m

HC

302

100n

F/4

00V

5 3

6 7 2 110

T30

1P

hilli

ps E

FD

20 *

*

D30

61N

4148

1 2

4 3

U30

2

PC

817

C30

5

100n

F1

23

Con

trol

U30

1

TO

P22

4

C30

310

0 uF

/400

V

C31

1

100

uF/3

5V

C31

0

100

uF/3

5V

C30

8

1000

uF

/35V

C30

7

1000

uF/3

5V

GN

D

GN

D

GN

D

GN

D

L302

3,3

uH

L303

3,3

uHG

ND

R30

591

kR

304

22k

R30

310

0

R30

610

k

R30

210

0

GN

D31

2U

303

TL4

31C

304

1n0

C30

910

0 nF

1 2

J1 Mai

ns in

GN

D

VC

C

V15

PD

304

PB

YR

1645

D30

5P

BY

R16

45++

Y1*

* T

wo

serie

s co

nnec

ted,

2.2

nF

, Y2-

capa

cito

rs c

an r

epla

ce C

304

85-2

65V

ACL N

++

D30

3B

YV

26C

D30

2B

ZW

04-1

88

+15

V 1

,5A

+5V

0.5

A

+

C30

110

0 nF

/400

V

** P

ins

4, 8

and

9 o

n T

1 ar

e no

t con

nect

ed

C30

647

uF

+

R30

1

6R2

Page 42: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

42 AVR450 1659C-AVR-09/06

Table 5-1. Power Supply Part List Part Part Type Description

R301 6,2Ω Series resistor for C306 (U301 power supply)

R302 100Ω Series Resistor for the Opto-coupler

R303 100Ω Series resistor for the voltage reference

R306 10 kΩ Feedback circuitry

R304 22 kΩ Feedback circuitry (5V)

R305 91 kΩ Feedback circuitry (15V)

C304 1n0/Y1 Y1 capacitor (Can be replaced by 2 * 2.2 nF Y2 capacitors)

C305 100 nF

C309 100 nF

C301 100 nF/400V X Capacitor

C302 100 nF/400V X Capacitor

C310 100 µF/35V Post LC filter

C311 100 µF/35V Post LC filter

C303 100 µF/400V Primary capacitor

C307 1000 µF/35V

C308 1000 µF/35V

L302 3.3 µH Post LC filter

L303 3,3 µH Post LC filter

L301 33 mH Input choke

D301 1.2A/500V Rectifier Bridge

D302 P6KE200 Clamping Zener diode

D303 BYV26C Blocking diode for clamping diode.

D304 PBYR1645 Rectifier diode for 15V supply

D305 PBYR1645 Rectifier diode for 5V supply

D306 1N4148 Rectifier diode for bias/U301 power supply

U301 TOP224 Top switch regulator

U302 TL431 Voltage reference

U303 PC817 Opto-coupler

T301 Phillips EFD20 Transformer, see text below for details

The transformer T301 is built around an EFD20 transformer kernel from Philips. The primary winding and the bias winding use AWG26 (0.40 mm) wire gauge. The secondary winding uses AWG20 (0.80 mm). The primary winding and the bias windings are separated from the two secondary windings with insulation tape. The 5V secondary winding is also a part of the 15V winding. It is very important to make the windings according to the directions shown in the schematic.

Page 43: AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion ...application-notes.digchip.com/015/15-16122.pdf · AVR450: Battery Charger for SLA, NiCd, NiMH and Li-Ion Batteries Features

1659C-AVR-09/06

Disclaimer Atmel Corporation

2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 487-2600

Regional Headquarters Europe

Atmel Sarl Route des Arsenaux 41 Case Postale 80 CH-1705 Fribourg Switzerland Tel: (41) 26-426-5555 Fax: (41) 26-426-5500

Asia Room 1219 Chinachem Golden Plaza 77 Mody Road Tsimshatsui East Kowloon Hong Kong Tel: (852) 2721-9778 Fax: (852) 2722-1369

Japan 9F, Tonetsu Shinkawa Bldg. 1-24-8 Shinkawa Chuo-ku, Tokyo 104-0033 Japan Tel: (81) 3-3523-3551 Fax: (81) 3-3523-7581

Atmel Operations Memory

2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 436-4314

Microcontrollers 2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 436-4314 La Chantrerie BP 70602 44306 Nantes Cedex 3, France Tel: (33) 2-40-18-18-18 Fax: (33) 2-40-18-19-60

ASIC/ASSP/Smart Cards Zone Industrielle 13106 Rousset Cedex, France Tel: (33) 4-42-53-60-00 Fax: (33) 4-42-53-60-01 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906, USA Tel: 1(719) 576-3300 Fax: 1(719) 540-1759 Scottish Enterprise Technology Park Maxwell Building East Kilbride G75 0QR, Scotland Tel: (44) 1355-803-000 Fax: (44) 1355-242-743

RF/Automotive Theresienstrasse 2 Postfach 3535 74025 Heilbronn, Germany Tel: (49) 71-31-67-0 Fax: (49) 71-31-67-2340 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906, USA Tel: 1(719) 576-3300 Fax: 1(719) 540-1759

Biometrics/Imaging/Hi-Rel MPU/ High Speed Converters/RF Datacom

Avenue de Rochepleine BP 123 38521 Saint-Egreve Cedex, France Tel: (33) 4-76-58-30-00 Fax: (33) 4-76-58-34-80

Literature Requests

www.atmel.com/literature

Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMELS TERMS AND CONDITIONS OF SALE LOCATED ON ATMELS WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmels products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life. © 2006 Atmel Corporation. All rights reserved. ATMEL®, logo and combinations thereof, Everywhere You Are®, AVR®, AVR Studio® and others, are the registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others.