AN2679/D: Smart NiCd/NiMH Battery Charger Using
Freescale Semiconductor, Inc.
Application Note
AN2679/D
6/2004
Freescale Semiconductor, Inc...
Smart NiCd/NiMH Battery
Charger Using
MC68HC908QY4
By: Andre Vilas Boas
Marcus Espindola
Alfredo Olmos
Brazilian Semiconductor Technology Center – BSTC/SPS
Introduction
Many battery chargers do not provide efficient and reliable charging cycles.
This means the charger may leave the battery improperly charged, which can
reduce the battery’s life and possibly damage the battery.
This application note presents an MC68HC908QY4 microcontroller-based
charger for nickel-cadmium (NiCd) and nickel-metal-hydride (NiMH) batteries
and battery packs. This “smart” charger is suitable for automatically charging a
wide range of batteries with different capacities. It is designed to satisfy the
demands of high current and fast charge applications such as cordless power
tools and toys.
Features
•
Flexibility to handle both NiCd and NiMH batteries with a broad range of
capacities
•
Intelligent charging algorithm based on MC68HC908QY4 MCU
•
Sense circuits for charging voltage and temperature
•
Reliable protection against overcharging
•
Pre-discharging not required, battery is always charged to 100% of
available capacity
•
Two charging modes:
– Fast charge (charge period for 100% charge)
– Trickle charge (supplementary charge at the end of a fast charge
cycle)
Automatic switch from fast to trickle charge mode
•
NOTE:
With the exception of mask set errata documents, if any other Freescale
document contains information that conflicts with the information in the device
data sheet, the data sheet should be considered to have the most current and
correct data.
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
NiCd/NiMH Overview
Nickel-cadmium (NiCd) batteries may be recharged many times and have a
relatively constant potential during discharge. They withstand more electrical
and physical abuse than any other battery pack, have good low-temperature
performance characteristics, and are inexpensive in terms of cost per hour of
use. When used within their recommended ratings and in applications where
the use of rechargeable battery packs is necessary, NiCd batteries will provide
economical and trouble-free service.
Freescale Semiconductor, Inc...
The nickel-metal-hydride (NiMH) battery pack is used in high-end portable
electronic products such as cellular phones and portable computers. NiMH
battery packs are similar to sealed NiCd cell technology, but they use a
hydrogen-absorbing electrode instead of cadmium-based negative electrode.
Using the hydrogen-absorbing electrode increases the battery pack’s electrical
capacity (measured in ampere-hours) for a given weight and volume and
avoids the toxicity concerns of cadmium.
Switching between the two battery pack types usually requires only slight
changes to application parameters and few significant design issues. Table 1
compares key features between the two battery pack chemistries.
Table 1. Comparison of NiCd and NiMH Batteries
Main Features
2
Nickel-Metal Hydride vs. Nickel-Cadmium Batteries
Nominal voltage
Both 1.25 V
Discharge capacity
NiMH up to 40% greater than NiCd
Cycle life
Generally similar, but NiMH is more application dependent
Mechanical fit
Equivalent
High temperature (>35°C)
discharge capability
NiMH slightly higher than standard NiCd battery packs
Discharge cutoff voltages
Equivalent
Charging process
Generally similar; multiple-step constant current with overcharge control
recommended for fast charging NiMH
Charge termination techniques
Generally similar, but NiMH transitions are more subtle. Backup
temperature termination recommended for both battery types.
Self-discharge
NiMH slightly higher than NiCd
Environmental concern
Less with NiMH due to toxicity concerns of cadmium
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Battery Charging Systems
Battery Charging Systems
Freescale Semiconductor, Inc...
The operating life of rechargeable batteries is determined mainly by their rate
of discharge, depth of discharge, operating and ambient temperature, and
charging method. The equipment designer determines the first three features,
but if an incorrect charging technique is used, the good design benefits are lost
and the battery life and performance can be significantly degraded.
To obtain optimum performance and a longer life from any rechargeable
battery, it is important to charge it correctly. NiCd chargers may vary greatly in
level of sophistication—from the simplest unregulated dc output transformer to
a fast intelligent charging system. In the first case, the charging current is
limited only by the transformer’s impedance and/or by series resistance. Fast
charging requires intelligent monitoring of battery parameters at all stages of
the charging cycle. Rapid chargers optimized for nickel-based battery packs
are much more complex and typically consist of a current regulator, a voltage
limiter, and a charge control. Charge control measures charging time, changes
in battery pack temperature and/or voltage, and regulates or terminates charge
current accordingly.
NiCd
Charging/Termination
Methods
NiCd batteries are typically charged with constant current. Most of them can be
safely charged at rates up to C/3 (where C is the charge potential) without
electronic control, but electronic control helps ensure reliability and efficiency.
Charging at high rates up to 2C requires electronic monitoring of battery
parameters to detect when the charge cycle is complete.
•
Standard Charging (Overnight) — Charging at rates C/10 and lower
takes approximately 15 hours to fully charge the cell or battery. A limited
amount of overcharging is acceptable, so it is not necessary to have an
accurate end-of-charge detector. However, prolonged overcharging can
damage the battery packs. The limitation of this method is the slow
recharging time.
•
Controlled Charging Time — The charging current is terminated at a
specific time. This requires knowing the initial amount of charge in the
battery, which is simple if the battery is discharged completely. The
battery capacity must be known and set by the user. For this method, the
battery pack capacity must be specified, but the capacity value is difficult
to specify because it changes with age and other conditions. This
method is commonly used as a fail-safe method for terminating any
charging algorithm. If the charging algorithm does not complete within
the predefined amount of time, the charge will terminate.
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
3
Freescale Semiconductor, Inc.
•
∆T/∆t Temperature Detection — When the battery reaches full charge,
the battery pack will experience a quick rise in temperature. This is due
to an increase in the conversion of charging energy into thermal energy.
The ∆T/∆t method uses a sensor to measure the battery temperature,
and the MCU calculates the temperature rise rate with respect to time.
The MCU will terminate the charge if the measured ∆T/∆t rate meets or
exceeds the stored ∆T/∆t rate threshold. This method can be adversely
affected by ambient temperature and may result in under charge
conditions when charged in high ambient temperature environments, or
overcharge in low ambient temperature environments.
•
Controlled Charge Voltage — When the full charge point is reached,
the battery does not accept charging current. Instead, it starts to turn the
current into heat (see Figure 1). As soon as the battery pack
temperature increases, the charging voltage stops rising, stabilizes at a
certain level, and finally starts to decline at the onset of overcharging.
This method uses the voltage drop to determine when to stop charging.
The controlled charge voltage is useful when charging rates are greater
than C/2, otherwise the voltage variation is too small to be detected.
•
Trickle Charge — A very small amount of current is applied to the
battery. This technique is used when a battery is continuously connected
to the charger or as a supplementary charge at the end of a fast charge
cycle to replace charge loss due to self-discharge. The recommended
rate for trickle charging in most NiCd battery packs is between C/20 and
C/200.
1.6
50
-dV
Cell Voltage (C/3 rate)
o
Cell Voltage [V]
1.5
1.4
40
Cell Temp (C/3 rate)
1.3
Cell Temp (C/10 rate)
Cell Voltage (C/10 rate)
1.2
30
dT/dt
1.1
Gas Generation
1.0
20
0
50
100
150
Charge [% of Capacity]
Figure 1. Typical NiCd Battery Pack Voltage and Temperature During Charge
4
Cell Temperature [ C]
Freescale Semiconductor, Inc...
AN2679/D
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Battery Charging Systems
NiMH
Freescale Semiconductor, Inc...
Charging Methods
NiMH batteries are charged using techniques similar to NiCd batteries.
However, NiMH requires more monitoring due to its greater sensitivity to
overcharging. A NiMH battery is often charged with a constant current with the
current limited to approximately C/2 rate to avoid excessive temperature rise.
The charging characteristics of NiCd and NiMH battery packs are similar, but
NiMH generates more heat during charge and peak voltage is less noticeable.
•
Controlled Charging Time — This technique is the same as for NiCd
type battery packs and is typically used only as a way to complete the
charge after using some other charge technique.
•
Absolute Temperature Detection — This method uses a sensor to
detect when the battery pack temperature reaches an absolute specified
value. At that time, the charge is terminated. This method can be
adversely affected by ambient temperature and may result in under
charge conditions when charged in high ambient temperature
environments, or overcharge in low ambient temperature environments.
•
∆T/∆t Temperature Detection — This is the preferred method of
detecting end of charge for NiMH because it provides a long cycle life for
the battery. When the battery reaches full charge, the battery pack will
experience a quick rise in temperature. This is due to an increase in the
conversion of charging energy into thermal energy. The ∆T/∆t method
uses a sensor to measure the battery temperature, and the MCU
calculates the temperature rise rate with respect to time. The MCU will
terminate the charge if the measured ∆T/∆t rate meets or exceeds the
stored ∆T/∆t rate threshold. This method can be adversely affected by
ambient temperature and may result in under charge conditions when
charged in high ambient temperature environments, or overcharge in
low ambient temperature environments.
•
Controlled Charge Voltage — Although this method is often used for
NiCd batteries, it may not be effective for NiMH types. With NiMH, the
voltage peak is not as noticeable for low charging rates and may not
occur at all, especially at higher temperatures (see Figure 2). The
voltage monitor circuit must have a resolution of a few millivolts to
determine the end of charge. If the monitor circuit is too sensitive, noise
and other conditions may cause an early end of charge. Also, the
voltage curve as a function of charge condition varies between battery
packs—even if they are the same age and type.
•
Voltage Flat — This technique is similar to the controlled charge voltage
method except that the voltage flat circuitry detects when the slope of
the battery voltage curve (during the charge process) becomes zero
(∆V/∆t = 0). Consequently, the risk of battery overcharge is small and
trickle charge can be applied to complete a full charge operation.
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
5
Freescale Semiconductor, Inc.
AN2679/D
Cell Voltage (C/3 rate)
Freescale Semiconductor, Inc...
Cell Voltage [V]
1.5
-dV
1.4
40
Cell Voltage (C/10 rate)
1.3
Cell Temp (C/3 rate)
Cell Temp (C/10 rate)
30
1.2
dT/dt
1.1
Cell Temperature [oC]
50
1.6
Gas Generation
1.0
0
20
40
60
80
100
120
140
160
180
20
200
Charge [% of Capacity]
Figure 2. Typical NiMH Battery Pack Voltage and Temperature During Charge
Fast Charge
Various techniques are used to perform fast charging rates for both NiCd and
NiMH battery pack types. These methods require a constant charge current
that is typically greater than C/3 rate to induce significant rises in battery pack
temperature or changes in battery pack voltage, which are used to indicate
when the battery pack is fully charged.
Temperature
The exact recommended temperature range for charging varies among battery
pack manufacturers. Typical ranges are summarized in Table 2. Fast charge
rates may be applied between +10 to +40 degrees Celsius. Outside these
limits, current must be reduced.
Table 2. Typical Temperature Range Recommended for
NiCd/NiMH Battery Charge
Charge Rate
Typical Recommended Range
Fast charge (C to C/2)
Standard charge (C/10)
Trickle charge (C/20 to C/200)
6
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
+10 to +45°C
0 to +45°C
+10 to +35°C
Freescale Semiconductor, Inc.
AN2679/D
Intelligent Battery Charger Design
Intelligent Battery Charger Design
Freescale Semiconductor, Inc...
The MC68HC908QT/QY Family is a member of the low-cost, high-performance
M68HC08 Family of 8-bit FLASH MCUs. The M68HC08 Family is a complex
instruction set computer (CISC) with a Von Neumann architecture. All MCUs in
the family use the enhanced M68HC08 central processor unit (CPU08) and are
available with a variety of modules, memory sizes and types, and package
types.
The MC68HC908QT/QY Family allows designers to incorporate the benefits of
FLASH technology into designs, which makes it possible to reduce overall
system cost and speed time-to-market. FLASH-based systems offer ultra-fast
programming with maximum flexibility and creativity. With FLASH, a design can
be reprogrammed many times during the development cycle or even late in
manufacturing. Upgrades can be made even in the field.
See the Freescale website, http://freescale.com, for
complete details on the MC68HC908QT/QY Family.
MC68HC908QY/QT
Features and
Benefits
•
•
•
High-performance 8-bit HC08 CPU
– Fully upward-compatible object code with Motorola’s M68HC05
Family for easy migration
– Enables the higher performance required of many 8-bit applications
— as fast as 125 ns minimum instruction cycle time
– Designed to allow efficient, compact modular coding in assembly or
C with full 16-bit stack pointer and stack relative addressing
– Efficient instruction set with multiply and divide that is easy to learn
and use
Memory
– In-application, in-circuit reprogrammable FLASH memory (1.5K to
4K bytes)
– 128 bytes of random access memory (RAM)
Peripherals
– Two-channel, 16-bit timer with selectable input capture, output
compare, or PWM (pulse-width modulator)
– Trimmable 5% accuracy internal oscillator
– 4-channel 8-bit analog-to-digital converter (ADC) (on the
MC68HC908QT2/QT4/QY2/QY4) – provides an easy interface to
analog inputs such as sensors
– Flexible I/Os allow direct drive of LED and other circuits without
external drivers and help reduce system cost
– System protection features, including watchdog timer and on-chip
low-voltage detect/reset, to help reduce cost and increase reliability
– Small packages — a variety of 8- and 16-pin packages, with more to
come as the family develops
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
7
Freescale Semiconductor, Inc.
AN2679/D
Application Description
Figure 3 is the smart NiCd/NiMH battery charger circuit diagram. The system
combines the voltage flat and the absolute temperature detection techniques
followed by the trickle charge method to charge a NiCd/NiMH battery pack with
three cells.
TH1
V1
MCR106
Freescale Semiconductor, Inc...
Vac
VDD
12 V
TH2
MCR106
V2
VDD OP1
D1
1N4007
V1
VDD
V2
D2
1N4007
C1
1000 µF
25 V
5-V REG
7805
C2
100 nF
16 V
R10
D4
–
100 Ω/
1W
1N4148
+
R1
10 kΩ
ZERO-CROSSING
DETECTOR CIRCUIT
MC68HC908QY4
MCU
13
PTA0
T1
BC547
D5
1N4148
D6
1N4148
R9
68 kΩ
R14
47 kΩ
5V
–
AD2 5
R12
33 kΩ
R15
10 kΩ
5V
+
5V
R3
47 kΩ
PTB1 14
NiCd/NiMH
BATTERY PACK
R8
27 kΩ
R11
10 kΩ
2
1
VDD PTB7
R2
4.7 kΩ
T3
MTP12P10
D3
1N4148
5V
5V
V1
T2
BC547
TL082
5V
C3
10 µF
16 V
R7
4.7 kΩ
R6
10 kΩ
12 AD1
VSS 16
PTB2 PTB3 AD3
9
R4
390 Ω
D7
<RED>
10
R16
10 kΩ
OP2
LM324
R17
47 kΩ
4
Vref
5V
+
Va
–
OP3
LM324
R5
390 Ω
D8
<GREEN> V = – R14 × V + 1+R14 ÷ R15 × V
Out
a
ref
R15
1+R16 ÷ R17
NOTE:
ALL RESISTORS ARE 1/8 W, 5% TOLERANCE UNLESS OTHERWISE NOTED.
( )
VOut =
(
(
R14
× Va – Vref
R15
)
)
DIFFERENCE AMPLIFIER
Figure 3. Battery Charger Circuit Diagram
8
R13
33 kΩ
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Application Description
Initialization
Freescale Semiconductor, Inc...
Controlled Rectifier
Charge Period
The battery charge procedure begins by determining whether a battery pack is
available for charging by measuring for voltage.
1.
MC68HC908QY4 MCU port PTB1 turns on the bipolar transistor T2.
2.
The OP3 buffer allows the MCU ADC to read the battery pack voltage
with the AD3 channel. An ADC reading greater than 500 mV indicates
that a battery pack is available for charging. Discharging the battery set
is not required before starting the charging process.
The MC68HC908QY4 MCU triggers the controlled rectifier, composed of two
thyristors connected as a full-wave bridge rectifier, to provide the charge
current for the battery pack.
3.
The MCU activates the controlled rectifier after the zero-crossing of the
ac sinusoidal signal within a user-defined time duration. The system
uses the zero-crossing detector circuit to start the MCU timer counter by
sensing any level transition in PTA0 and waits to generate the rectifier
trigger signal via PTB7. For a 60 Hz ac line frequency, the time duration
is set by default to approximately 4 ms to trigger the thyristors at the
sinusoidal peak and provide 600 mA full charge current to the battery
pack, as illustrated in Figure 4.
4.
At the end of the user-defined charge period, the MCU pauses to turn on
the controlled rectifier and measure the voltage variation of the battery
packs. If the MC68HC908QY4 MCU is operating with the internal
oscillator and it has been trimmed to obtain a 3.2-MHz bus clock
frequency, the charge period is set by default to approximately
10 minutes.
5.
To measure the battery voltage, the MCU asserts again the PTB1 pin to
turn on the bipolar transistor T2 and apply the battery voltage to the
resistor R9.
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
9
Freescale Semiconductor, Inc.
AN2679/D
Freescale Semiconductor, Inc...
Overcharge
Protection
The battery voltage variation measurement is intended to detect the decline of
the battery pack voltage and the onset of the overcharging process.
6.
The system detects when the slope of the battery voltage curve (during
the charge procedure) becomes lower than zero (∆V/∆t < 0, see Figure 1
and Figure 2).
7.
The system subtracts the reference voltage (Vref) from the voltage on
the battery packs using the difference amplifier (as shown in Figure 3).
The MC68HC908QY4 MCU converts that data to a digital word using its
internal ADC and the AD2 channel.
8.
After the analog-to-digital conversion is complete, the MCU stores the
subtraction result in an internal MCU variable. The initial value of this
internal MCU variable is set by default to $00 and, assuming a difference
amplifier gain of 4.7, the reference voltage for a battery pack of three
cells is Vref = 2.50 V.
a.
b.
Temperature
Protection
10
9.
If the battery set voltage is lower than (or equal to) the reference
voltage, the ADC reading is always larger than (or equal to) the
value stored in the MCU variable at the end of the previous charge
period. Therefore, the system continues the battery charge process
during a subsequent charge period.
If the battery set voltage begins to decline, the ADC reading will be
lower than the previous value and the system stops the normal
charge process and starts the trickle charge procedure. During
trickle charge, current flowing into the batteries is reduced to 28 mA
by adjusting the MCU timer counter to obtain a delay of 7 ms with
regard to the zero-crossing of the sinusoidal ac signal, as shown in
Figure 5. While in trickle charge, the system does not monitor the
battery pack voltage.
To provide absolute temperature protection, the voltage drop across
diodes D5 and D6 (located very near the battery pack) is measured to
check for a user-defined battery temperature variation using the AD1
channel. Like the battery voltage variation measurement, the D5 and D6
voltage check is performed after a charge period. The initial D5 and D6
voltage drop is measured at the beginning of the normal charge process.
For example, if the temperature increases by approximately 30oC, the
D5 and D6 voltage drop change would be equivalent to DV @ –125 mV
(or roughly seven LSBs of the MC68HC908QY4 MCU 8-bit ADC). If the
system detects a voltage-related temperature variation larger than the
maximum allowed by user, it starts the trickle charge procedure.
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Application Description
TRANSFORMER OUTPUT
ZERO-CROSSING
DETECTOR OUTPUT
Freescale Semiconductor, Inc...
MCU RECTIFIER
TRIGGER SIGNAL
VOLTAGE APPLIED
TO THE BATTERY SET
Figure 4. Normal NiCd/NiMH Battery Charge Waveforms
TRANSFORMER OUTPUT
ZERO-CROSSING
DETECTOR OUTPUT
MCU RECTIFIER
TRIGGER SIGNAL
VOLTAGE APPLIED
TO THE BATTERY SET
Figure 5. Trickle Charge Waveforms
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
11
Freescale Semiconductor, Inc.
AN2679/D
Software Description
Freescale Semiconductor, Inc...
The following process is illustrated in Figure 6.
1. Initialization
The software starts configuring the I/O ports and registers properly, clearing
variables and setting the timer to generate the appropriate thyristor conduction
angle. In this application, timer registers are defined to overflow at about 4 ms.
Constants InitTMODH and InitTMODL modify the values of the TMODH and
TMODL registers on the timer module.
2. Monitoring Loop
After performing the initialization operations, the code enters a loop where the
battery voltage is continually monitored through ADC channel 3 to determine
whether a battery pack is connected. Constant BatInit sets the minimum value
to check whether the battery pack is engaged.
As soon as a battery pack is connected to the charger, the ADC detects a
voltage value larger than the one previously stored in BatInit and the charging
process begins.
3. Begin Charging
Initially, the system measures the temperature of the battery packs. ADC
channel 1 reads the voltage across the diodes D5 and D6. The value is
converted and stored into the FrstTmpRd variable. This is the first value for
temperature comparison. The red LED is turned on by setting PTB3, which
indicates the beginning of the charging cycle.
4. Counter Loop
A loop is implemented and PTA0 waits for a level transition coming from the
zero-crossing detector circuitry. After the transition is detected, the timer
module is started and stays in a loop until it overflows. Then timer module is
stopped and cleared and PTB7 triggers the thyristor.
5. Pause Charging
Counter variables are incremented. After the ten minute charging period (which
can be changed by modifying the StpChL and StpChH constants), the charging
process is paused. Counters are cleared and battery voltage is monitored
again by setting PTB1 and reading ADC channel 2. A delay is needed to
stabilize the voltage on the battery. The new ADR register value is subtracted
from the last stored value.
12
•
If the new value is lower than the previous value, the charging process
is stopped and the trickle charging subroutine is defined.
•
If the new voltage value is greater-than or equal-to the previous value,
the charging cycle continues. At this time, the new voltage acquired by
the ADC is stored in a variable to be compared with the next value that
will be captured at the end of the next charge period.
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Software Description
Current temperature is captured (by reading the voltage over the diodes D5 and
D6 by ADC channel 1) and compared with the first value. If difference in
temperatures is greater than a predefined value on the TmpSafe constant, the
routine goes to trickle charging. If the temperature is less than this value, the
charging process continues. This is done to protect against battery overheat.
Freescale Semiconductor, Inc...
6. Trickle Charging
When trickle charging, PTB2 turns on the green LED and PTB3 turns off the
red LED, which indicates the battery is fully charged. The timer module
registers are changed to increment the overflow period. In this case, the timer
overflows at about 7 ms after PTA0 detects the level transition. PTB7 pulses at
the end of the power cycle line, reducing the current that charges the battery
pack. It stays in a loop until the user disconnects the battery pack from the
charger.
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
13
Freescale Semiconductor, Inc.
AN2679/D
START
PORT
CONFIGURATION
1. Initialization
CLEAR VARIABLES
CONFIGURE TIMER
Freescale Semiconductor, Inc...
2. Monitoring Loop
BATTERY
CONNECTED
?
YES
NO
TURN ON RED LED
3. Begin Charging
START
CHARGING PROCESS
INCREMENT
COUNTER
4. Counter Loop
NO
COUNTER
REACHED
~10 min ?
YES
STOP
CHARGING PROCESS
CLEAR COUNTER
5. Pause Charging
READ
BATTERY VOLTAGE
NO
VOLTAGE
LESS THAN
LAST VOLTAGE?
NO
(INITIAL TEMP –
CURRENT TEMP)
≥ 06?
YES
TURN OFF RED LED
TURN ON GREEN LED
6. Trickle Charging
CONFIGURE TIMER FOR
TRICKLE CURRENT
START TRICKLE CHARGE
PROCESS
Figure 6. The NiCd/NiMH Battery Charger Software
14
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
YES
Freescale Semiconductor, Inc.
AN2679/D
Software Listing
Freescale Semiconductor, Inc...
Software Listing
;*******************************************************************************************
;* Title: battery.asm
Copyright (c) 2003
;*******************************************************************************************
;* Author: Marcus Espindola - Freescale SPS/BSTC
;*
;* Description: Intelligent Battery Charger for QY family.
;*
;* Documentation: HC908QY4 Data Sheet (MC68HC908QY4/D) for register and bit explanations
;*
;* Include Files: battery.equ, MC68HC908QT4.equ
;*
;* Assembler: P&E Microcomputer Systems - CASM for HC08
;*
Metrowerks CodeWarrior Compiler for HC08 V-5.0.17
;*
;* Revision History:
;* Rev #
Date
Who
Comments
;* --------------- --------------------------------------------------------------;* 0.3
04-Nov-03
Espindola
Placed constants into include file
;* 0.2
11-Sep-03
Espindola
Included timing before rd battery and transistor control
;* 0.1
12-Aug-03
Espindola
Initial data entry
;*******************************************************************************************
;*******************************************************************************************
;* Freescale reserves the right to make changes without further notice to any product
;* herein to improve reliability, function, or design. Freescale does not assume any
;* liability arising out of the application or use of any product, circuit, or software
;* described herein; neither does it convey any license under its patent rights nor the
;* rights of others. Freescale products are not designed, intended, or authorized for
;* use as components in systems intended for surgical implant into the body, or other
;* applications intended to support life, or for any other application in which the
;* failure of the Freescale product could create a situation where personal injury or
;* death may occur. Should Buyer purchase or use Freescale products for any such
;* intended or unauthorized application, Buyer shall indemnify and hold Freescale and
;* its officers, employees, subsidiaries, affiliates, and distributors harmless against
;* all claims, costs, damages, and expenses, and reasonable attorney fees arising out
;* of, directly or indirectly, any claim of personal injury or death associated with
;* such unintended or unauthorized use, even if such claim alleges that Freescale was
;* negligent regarding the design or manufacture of the part.
;*
;* Freescale is a registered trademark of Freescale, Inc.
;*******************************************************************************************
;
XDEF Entry,main,trimval
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
15
Freescale Semiconductor, Inc.
AN2679/D
;*******************************************************************************************
;* Equates and Data Table Includes
;*******************************************************************************************
include 'MC68HC908QT4.equ'
; For the QT1, QT2, QT4, QY1, QY2, QY4
org $FFC0
Freescale Semiconductor, Inc...
;trimval:
DC.B $FF
;DEFAULT_RAM
org
;here we set the FLASH trim to a default value.
;DO NOT change this value, as the trim will not be
;automatically calibrated by the programming interface if
;this value is anything other than $FF
SECTION SHORT
RamStart
;*******************************************************************************************
;* Constants and Variables for this file
;*******************************************************************************************
include 'battery.equ'
;DEFAULT_ROM
org
SECTION
FlashStart
;*******************************************************************************************
;* SUBROUTINES
;* This part includes subroutines
;*******************************************************************************************
;Subroutine for Timer
TimerHalfL: mov
mov
mov
jmp
TimerHalfH: mov
mov
mov
jmp
Trickle:
#InitTMODHL,TMODH ;Set Timer to ~ 4ms or 1/4 Power Cycle Line (PCL)
#InitTMODLL,TMODL ;after we start the timer
Skip
#initTim,TSC ;Timer - Cleared + Stopped.
#InitTMODHH,TMODH ;Set Timer to ~ 4ms or 1/4 Power Cycle Line (PCL)
#InitTMODLH,TMODL ;after we start the timer.
Skip
mov
#initTim,TSC
mov
mov
#initTricH,TMODH ;Set Timer to low current
#initTricL,TMODL ;after we start the timer
jmp
16
#initTim,TSC ;Timer - Cleared + Stopped.
;Timer 1 - Cleared + Stopped.
Skip
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Software Listing
;Subroutine for Thyristor gate control
Gate:
loop:
lda
#GateVal
bset PTB7,PTB
dbnza loop
;Gate pulse duration
bclr
;PTB7 generates a pulse on Thyristor gate
jmp
PTB7,PTB
Skip
;Subroutine for Battery reading
Freescale Semiconductor, Inc...
BatRead:
bset
PTB1,PTB
;Turn transistor on
mov
#initADCH3,ADSCR ;Start Conversion, CH3 selected
lda
cmp
blo
ADR
#BatInit
BatRead
;Keep in this loop while battery not connected
bclr
PTB1,PTB
;Turn transistor off
bra
Skip
;Subroutine for Timer Overflow
TOverflow:
nop
nop
brclr TOF,TSC,TOverflow ;Wait for Timer Overflow
lda
and
sta
TSC
#TSCClr
TSC
mov
#initTim,TSC ;STOP and RESET Counter
bra
Skip
;Clear TOF bit
;Subroutine to delay about 2s before reading battery voltage
Delay:
ldx
#Del
Delay1:
lda
sta
#Dela1
del1
Delay2:
lda
sta
#Dela2
del2
Delay3:
nop
dbnz
del2,Delay3
dbnz
del1,Delay2
dbnzx Delay1
bra
Skip
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
17
Freescale Semiconductor, Inc.
AN2679/D
Freescale Semiconductor, Inc...
;Subroutine for battery voltage reading
VbattH:
mov
#initADCH2,ADSCR
Waitcoco:
nop
nop
brclr COCO,ADSCR,Waitcoco ;Wait for Conversion complete
lda
and
sta
ADR
#MaskLSB
VoltReadH
bra
Skip
;Start Conversion, CH2 selected
;Load AD value
;Mask LSB
;store value into variable
;Subroutine for first battery temperature reading
VFrsttemp:
mov
#initADCH1,ADSCR
Waitcoco1:
nop
nop
brclr COCO,ADSCR,Waitcoco1 ;Wait for Conversion complete
lda
sta
ADR
FrstTmpRd
bra
Skip
;Start Conversion, CH1 selected
;Load AD value
;store value into variable
;Subroutine for battery temperature reading
VActemp:
mov
Waitcoco2:
nop
nop
brclr COCO,ADSCR,Waitcoco2 ;Wait for Conversion complete
lda
sta
Skip:
#initADCH1,ADSCR
ADR
AcTmpRd
;Start Conversion, CH1 selected
;Load AD value
;store value into variable
rts
;*******************************************************************************************
;* main
- This is the point where code starts executing
;*
after a RESET.
;*******************************************************************************************
Entry:
main:
mov
#initCfg1,CONFIG1 ;Set config1 register
;(LVI and COP disabled)
18
mov
#initCfg2,CONFIG2 ;set MCU to internal oscillator
clr
mov
PTB
#InitDDRB,DDRB ;PTB7 -> Pulses on Thyristor gate
;PTB3 -> Red LED (Bat. Charging)
;PTB2 -> Green LED (Bat. Charged)
;PTB1 -> Transistor Control
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Software Listing
bclr
DDRA0,DDRA
;Zero Crossing detection
mov
#ADclkval,ADICLK ;ADC clock, bus clock/ 16
Freescale Semiconductor, Inc...
;Enable ADCH3
mov
#initADCH3,ADSCR ;Start Conversion, CH3 selected
lda
sta
TRIMLOC
OSCTRIM
;load the TRIM value stored in FLASH
;use this stored value.
rsp
clra
clrx
;Clear Variables
Waitpta0:
Waitpta:
clr
clr
Counter0
Counter1
clr
clr
VoltReadL
VoltReadH
clr
clr
AcTmpRd
FrstTmpRd
jsr
cli
TimerHalfL
;Go config Timer
;Allow interrupts to happen
jsr
BatRead
;Go read battery
jsr
VFrsttemp
;Go read First temp value
bset
PTB3,PTB
;Turn on Red LED (Battery is charging)
nop
brclr PTA0,PTA,Waitpta0
;Wait for a positive edge on PTA0 (Zero crossing)
jsr
TimerHalfH
mov
#StartTim,TSC
jsr
TOverflow
;Go to Timer Overflow subroutine
jsr
Gate
;Go to Gate subroutine
nop
brset
;Go config Timer
;Start the timer
PTA0,PTA,Waitpta
;Wait for a negative edge on PTA0 (Zero crossing)
jsr
TimerHalfL
;Go config Timer
mov
#StartTim,TSC ; Start the timer
jsr
TOverflow
;Go to Timer Overflow subroutine
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
19
Freescale Semiconductor, Inc.
AN2679/D
Freescale Semiconductor, Inc...
Count1:
Vbat:
jsr
Gate
;Go to Gate subroutine
inc
lda
cbeq
Counter0
;Increment 1st byte Counter for charge time OVF period
#StpChL
Counter0,Count1 ;Go to Count1 if Counter0 > $FF
bra
Waitpta0
inc
lda
cbeq
Counter1
;Increment 2nd byte Counter for charge time OVF period
#StpChH
Counter1,Vbat ;Go to Vbat if Counter1 > $90
bra
Waitpta0
mov
#initTim,TSC
clr
clr
Counter0
Counter1
bset
PTB1,PTB
;Turn transistor on
jsr
Delay
;Go to Delay subroutine
jsr
VbattH
;Jump to subroutine that reads battery voltage
jsr
Delay
;Go to Delay subroutine
bclr
PTB1,PTB
;Turn transistor off
lda
sub
VoltReadH
VoltReadL
;Compare last battery voltage with current one
blo
Charged
;Jump to Charged if last value < current value
lda
sta
VoltReadH
VoltReadL
;load variable with last value
jsr
VActemp
;Jump to subroutine that reads temperature
lda
sub
cmp
FrstTmpRd
AcTmpRd
#TmpSafe
;Compare last temperature with current one
bhs
Charged
bra
Waitpta0
;Stop and reset counter
;Jump to Charged if temperature increases more than
;25oC.
; Battery fully charged
Charged:
20
bclr
bset
PTB3,PTB
PTB2,PTB
;Turn off Red LED (Battery charging)
;Turn on Green LED (Battery Charged)
jsr
Trickle
;Go to trickle current subroutine
bra
Waitpta0
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Software Listing
Dummytc:
RTI
Freescale Semiconductor, Inc...
*****************************************
* Vectors
*****************************************
ORG $FFDE
DW Dummytc
ORG $FFE0
DW Dummytc
ORG $FFF2
DW Dummytc
ORG $FFF4
DW Dummytc
ORG $FFF6
DW Dummytc
ORG $FFFA
DW Dummytc
ORG $FFFC
DW Dummytc
ORG $FFFE
DW main
; ADC conversion complete vector
; Keyboard vector
; TIM overflow vector
; TIM Channel 1 vector
; TIM Channel 0 vector
; IRQ vector
; SWI vector
; Reset vector
END
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
21
Freescale Semiconductor, Inc.
Freescale Semiconductor, Inc...
AN2679/D
;*******************************************************************************************
;* Title: battery.equ
Copyright (c) 2003
;*******************************************************************************************
;* Author: Marcus Espindola - Freescale BSTC
;*
;* Description: Constants and variables definitions for MC68HC908QY4 and MC68HC908QT4.
;*
;* Documentation: HC908QY4 Data Sheet (MC68HC908QY4/D) for register and bit explanations
;*
;* Include Files:
;*
;* Assembler: P&E Microcomputer Systems - CASM for HC08
;*
Metrowerks CodeWarrior Compiler for HC08 V-5.0.17
;*
;* Revision History:
;* Rev #
Date
Who
Comments
;* --------------- ---------------------------------------------------;* 0.2
04-Nov-03
Espindola
Included constants for source file
;* 0.1
12-Aug-03
Espindola
Initial data entry
;*******************************************************************************************
;*******************************************************************************************
;* Freescale reserves the right to make changes without further notice to any product
;* herein to improve reliability, function, or design. Freescale does not assume any
;* liability arising out of the application or use of any product, circuit, or software
;* described herein; neither does it convey any license under its patent rights nor the
;* rights of others. Freescale products are not designed, intended, or authorized for
;* use as components in systems intended for surgical implant into the body, or other
;* applications intended to support life, or for any other application in which the
;* failure of the Freescale product could create a situation where personal injury or
;* death may occur. Should Buyer purchase or use Freescale products for any such
;* intended or unauthorized application, Buyer shall indemnify and hold Freescale and
;* its officers, employees, subsidiaries, affiliates, and distributors harmless against
;* all claims, costs, damages, and expenses, and reasonable attorney fees arising out
;* of, directly or indirectly, any claim of personal injury or death associated with
;* such unintended or unauthorized use, even if such claim alleges that Freescale was
;* negligent regarding the design or manufacture of the part.
;*
;* Freescale is a registered trademark of Freescale, Inc.
;*******************************************************************************************
;*******************************************************************************************
;* Constants and Variables for this file
;*******************************************************************************************
initCfg1:
;
;
;
;
;
;
;
;
;
22
equ
%00010001
;Config1 Register value
||||||||
CONFIG1 is a write once register
|||||||+-COPD
- 1 disable COP Watchdog
||||||+--STOP
- 0 disable STOP instruction
|||||+---SSREC
- 0 4096 cycle STOP recovery
||||+----LVI5OR3 - 0 set LVI for 3V system
|||+-----LVIPWRD - 1 disable power to LVI system
||+------LVIRSTD - 0 enable reset on LVI trip
|+-------LVISTOP - 0 disable LVI in STOP mode
+--------COPRS
- 0 long COP timeout
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
Freescale Semiconductor, Inc...
AN2679/D
Software Listing
initCfg2:
;
;
;
;
;
;
;
;
;
equ
%00000000
;Config2 Register value
||||||||
CONFIG2 is a write once register
|||||||+-RSTEN
- 0 Reset function inactive in pin
||||||+--R
- 0 Reserved bit
|||||+---R
- 0 Reserved bit
||||+----OSCOPT0 - 0 Set oscillator option as internal
|||+-----OSCOPT1 - 0 Set oscillator option as internal
||+------R
- 0 Reserved bit
|+-------IRQEN
- 0 disable IRQ function
+--------IRQPUD - 0 Internal pullup to connect IRQ and VDD
initADCH3:
;
;
;
;
;
;
;
;
;
equ
%00100011
;AD configuration value
||||||||
ADC Status and Control Register
|||||||+-CH0
- 1 Mux to select ADC channel
||||||+--CH1
- 1 Mux to select ADC channel
|||||+---CH2
- 0 Mux to select ADC channel
||||+----CH3
- 0 Mux to select ADC channel
|||+-----CH4
- 0 Channel 3 selected
||+------ADCO
- 1 Set ADC as continuous conversion
|+-------AIEN
- 0 disable ADC interrupt
+--------COCO
- 0 Conversions Complete Bit
initADCH2:
;
;
;
;
;
;
;
;
;
equ
%00000010
;AD configuration value
||||||||
ADC Status and Control Register
|||||||+-CH0
- 0 Mux to select ADC channel
||||||+--CH1
- 1 Mux to select ADC channel
|||||+---CH2
- 0 Mux to select ADC channel
||||+----CH3
- 0 Mux to select ADC channel
|||+-----CH4
- 0 Channel 2 selected
||+------ADCO
- 0 Set ADC as single conversion
|+-------AIEN
- 0 disable ADC interrupt
+--------COCO
- 0 Conversions Complete Bit
initADCH1:
;
;
;
;
;
;
;
;
;
equ
%00000001
;AD configuration value
||||||||
ADC Status and Control Register
|||||||+-CH0
- 1 Mux to select ADC channel
||||||+--CH1
- 0 Mux to select ADC channel
|||||+---CH2
- 0 Mux to select ADC channel
||||+----CH3
- 0 Mux to select ADC channel
|||+-----CH4
- 0 Channel 2 selected
||+------ADCO
- 0 Set ADC as single conversion
|+-------AIEN
- 0 disable ADC interrupt
+--------COCO
- 0 Conversions Complete Bit
initTim:
;
;
;
;
;
;
;
;
;
equ
%00110001
;Timer Status and control Reg. value
|||||||| TIM Status and Control Register
|||||||+-PS0
- 1 Prescaler select bit
||||||+--PS1
- 0 Prescaler select bit
|||||+---PS2
- 0 Tim clock source int. bus
||||+----0
- 0
|||+-----TRST
- 1 TIM reset bit
||+------TSTOP
- 1 TIM counter stopped
|+-------TOIE
- 0 disable TIM overflow interrupts
+--------TOF
- 0 TIM overflow flag bit
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
23
Freescale Semiconductor, Inc.
Freescale Semiconductor, Inc...
AN2679/D
StartTim:
;
;
;
;
;
;
;
;
;
equ
%00000001
;Timer Status and control Reg. value
||||||||
TIM Status and Control Register
|||||||+-PS0
- 1 Prescaler select bit
||||||+--PS1
- 0 Prescaler select bit
|||||+---PS2
- 0 Tim clock source int. bus
||||+----0
- 0
|||+-----TRST
- 0 TIM reset bit
||+------TSTOP
- 0 TIM counter started
|+-------TOIE
- 0 disable TIM overflow interrupts
+--------TOF
- 0 TIM overflow flag bit
InitDDRB:
equ
%10001110
;PTB7
;PTB3
;PTB2
;PTB1
InitTMODHL: equ
InitTMODLL: equ
$1A
$1D
;Set Timer to ~ 4ms or 1/4 Power Cycle Line (PCL)
;after we start the timer for negative edge.
InitTMODHH: equ
InitTMODLH: equ
$0D
$0E
;Set Timer to ~ 4ms or 1/4 Power Cycle Line (PCL)
;after we start the timer for positive edge.
initTricH:
initTricL:
equ
equ
$2A
$6F
;Set Timer to low current
;after we start the timer
ADclkval:
equ
%10000000
;AD clock configuration
;ADC Clock prescaler bit
GateVal:
equ
$50
;Gate pulse duration
->
->
->
->
Pulses on Thyristor gate
Red LED (Bat. Charging)
Green LED (Bat. Charged)
Transistor Control
;Variables for counter for charge time overflow period
Counter0
rmb
1
Counter1
rmb
1
;Time Counters
;Variables for voltage reading
VoltReadL
rmb
1
VoltReadH
rmb
1
;Variables for delay before reading battery voltage
del1
rmb
1
del2
rmb
1
;Variables for Temperature reading
AcTmpRd
rmb
1
FrstTmpRd
rmb
1
;Other Constants
BatInit
equ
$19
;Value to identify if battery pack is connected
Del
Dela1
Dela2
equ
equ
equ
$10
$FF
$FF
;First value for delay
;Second value for delay
;Third value for delay
24
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Software Listing
equ
$FE
;Value to mask ADR LSB
StpChL
StpChH
equ
equ
$00
$90
;Low byte for stop charger period
;High byte for stop charger period
TmpSafe
equ
$06
;Temperature value for backup
TSCClr
equ
$7F
;Value to clear TOF bit on TSC register
Freescale Semiconductor, Inc...
MaskLSB
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
25
Freescale Semiconductor, Inc.
AN2679/D
Freescale Semiconductor, Inc...
This page is intentionally blank
26
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
Freescale Semiconductor, Inc.
AN2679/D
Software Listing
Freescale Semiconductor, Inc...
This page is intentionally blank
Smart NiCd/NiMH Battery Charger Using MC68HC908QY4
For More Information On This Product,
Go to: www.freescale.com
27
Freescale Semiconductor, Inc.
How to Reach Us:
Home Page:
www.freescale.com
E-mail:
[email protected]
Freescale Semiconductor, Inc...
USA/Europe or Locations Not Listed:
Freescale Semiconductor
Technical Information Center, CH370
1300 N. Alma School Road
Chandler, Arizona 85224
+1-800-521-6274 or +1-480-768-2130
[email protected]
Europe, Middle East, and Africa:
Freescale Halbleiter Deutschland GmbH
Technical Information Center
Schatzbogen 7
81829 Muenchen, Germany
+44 1296 380 456 (English)
+46 8 52200080 (English)
+49 89 92103 559 (German)
+33 1 69 35 48 48 (French)
[email protected]
Japan:
Freescale Semiconductor Japan Ltd.
Headquarters
ARCO Tower 15F
1-8-1, Shimo-Meguro, Meguro-ku,
Tokyo 153-0064
Japan
0120 191014 or +81 3 5437 9125
[email protected]
Asia/Pacific:
Freescale Semiconductor Hong Kong Ltd.
Technical Information Center
2 Dai King Street
Tai Po Industrial Estate
Tai Po, N.T., Hong Kong
+800 2666 8080
[email protected]
For Literature Requests Only:
Freescale Semiconductor Literature Distribution Center
P.O. Box 5405
Denver, Colorado 80217
1-800-441-2447 or 303-675-2140
Fax: 303-675-2150
[email protected]
Information in this document is provided solely to enable system and software
implementers to use Freescale Semiconductor products. There are no express or
implied copyright licenses granted hereunder to design or fabricate any integrated
circuits or integrated circuits based on the information in this document.
Freescale Semiconductor reserves the right to make changes without further notice to
any products herein. Freescale Semiconductor makes no warranty, representation or
guarantee regarding the suitability of its products for any particular purpose, nor does
Freescale Semiconductor assume any liability arising out of the application or use of
any product or circuit, and specifically disclaims any and all liability, including without
limitation consequential or incidental damages. “Typical” parameters which may be
provided in Freescale Semiconductor data sheets and/or specifications can and do
vary in different applications and actual performance may vary over time. All operating
parameters, including “Typicals” must be validated for each customer application by
customer’s technical experts. Freescale Semiconductor does not convey any license
under its patent rights nor the rights of others. Freescale Semiconductor products are
not designed, intended, or authorized for use as components in systems intended for
surgical implant into the body, or other applications intended to support or sustain life,
or for any other application in which the failure of the Freescale Semiconductor product
could create a situation where personal injury or death may occur. Should Buyer
purchase or use Freescale Semiconductor products for any such unintended or
unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor
and its officers, employees, subsidiaries, affiliates, and distributors harmless against all
claims, costs, damages, and expenses, and reasonable attorney fees arising out of,
directly or indirectly, any claim of personal injury or death associated with such
unintended or unauthorized use, even if such claim alleges that Freescale
Semiconductor was negligent regarding the design or manufacture of the part.
AN2679/D
For More Information On This Product,
Go to: www.freescale.com
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement