作者:
Franco Contadini
,主管工程师
Alessandro Leonardi ,现场销售客户经理
“ 电池博来官网下载指南 —— 第 1 部分 ” 介绍了有关博来官网下载电池系统设计的一些挑战。通过在电池包中实现电量计功能,原始设备制造商 (OEM) 可以设计智能博来官网下载器,从而提高系统灵活性,更大限度地降低功耗,确保安全充电 / 放电,并改善整体用户体验。在第 2 部分中,我们将详细探讨如何使用评估套件和树莓派板实现电池并联的博来官网下载系统。
评估简单充电系统并测试其功能,通常可以使用评估套件来完成。这些套件包括配置充电系统所需的所有硬件和软件应用,以及基于图形用户界面 (GUI) 的工具和 API 。
但相应地,包含多个单元的复杂系统的相关评估工作也更加繁琐。复杂系统中可能有多个器件需要进行表征。开发人员将需要编写一些软件代码来读取系统不同部分生成的信号,对其进行分析,并采取行动。 MAX17330 可帮助管理包含两节锂离子电池的并联电池博来官网下载系统。如数据手册所述, MAX17330 可用于同时对两节锂离子电池进行充电和控制。该系统需要两个 MAX17330 IC ,每个 IC 管理一节锂离子电池,以及一个能够即时调整输出电压的降压转换器(如 MAX20743 )。
该系统还需要使用一个微控制器来配置和管理电池充电,以及处理两个 IC 之间的通信。本文选择的树莓派板是系统测试中普遍使用的平台,此外我们选用 Python 作为编程语言。树莓派通过 I2C 管理通信,并记录有助于评估和调试的重要系统参数,包括充电电流、电池电压和电池荷电状态 (SOC) 。这些数值均存储在 Excel 文件中,方便进行离线分析。
本节将介绍如何测试充电器和电量计 (MAX17330) 。本节还会说明并联充电可达到的实际性能。为了获得更大的灵活性和可控性,该器件由微控制器通过 I2C 进行编程。
图 1 显示了 1S2P 系统架构以及评估两节并联电池充电所需的连接。树莓派控制三个 EVKIT :一个 MAX20743EVKIT (降压转换器)和两个 MAX17330EVKIT (充电器 + 电量计)。数据记录在 Excel 文件中。
图 1. 使用树莓派的 1S2P 充电系统评估架构
可从 MAX17330 产品页面的 “ 工具和仿真 ” 选项卡中下载并使用基于 GUI 的 MAX17330 评估套件软件。使用配置向导(从 “ 器件 ” 选项卡中选择)可为 MAX17330 生成初始化文件 (.INI) 。 INI 文件中包含寄存器地址 / 寄存器值格式的器件寄存器初始化信息。微控制器需使用该文件来逐个配置 MAX17330 中的寄存器。
MAX17330EVKIT 数据手册详细说明了生成初始化文件所需的各个步骤。图 2 所示的配置用于启动并联充电。接下来可按图 3 中的配置启用步进充电。图 4 显示了基于图 3 配置步进充电后的预期步进充电曲线。
图 2. 配置 MAX17330 进行并联充电
图 3. 启用步进充电
MAX20734 降压转换器可在需要时提高两个 MAX17330EVKIT 上的电压。 MAX20734 降压转换器根据地址 0x21 处的内部寄存器值改变输出电压。降压转换器可以通过 I2C 控制;已编写一个 Python 类来执行此操作。
最后,如图 5 所示, MAX20743EVKIT 输出分压器被修改,输出范围为 3 V 至 4.6 V (使用的值为 R6 = 4K7 和 R9 = 1K3 )。
表 1.MAX20743 基于寄存器 0x21 的转换输出电压
0x21 寄存器值 |
电压 |
0x014E |
3 V |
0x0150 |
3.05 V |
0x0158 |
3.1 V |
0x015C |
3.15 V |
0x0162 |
3.2 V |
0x0166 |
3.25 V |
0x016E |
3.3 V |
0x0172 |
3.35 V |
0x0178 |
3.4 V |
0x017C |
3.45 V |
0x0182 |
3.5 V |
0x0188 |
3.55 V |
0x018E |
3.6 V |
0x0192 |
3.65 V |
0x019E |
3.7 V |
0x01A4 |
3.75 V |
0x01A9 |
3.8 V |
0x01AE |
3.85 V |
0x01B4 |
3.9 V |
0x01BA |
3.95 V |
0x01BF |
4 V |
0x01C4 |
4.05 V |
0x01CB |
4.1 V |
0x01D1 |
4.15 V |
0x01D6 |
4.2 V |
0x01DC |
4.25 V |
0x01E2 |
4.3 V |
0x01E8 |
4.35 V |
0x01ED |
4.4 V |
0x01F3 |
4.45 V |
0x01F8 |
4.5 V |
0x01FE |
4.55 V |
0x0204 |
4.6 V |
从表 1 可以得出如下曲线:
其中, x 为要在输出端施加的电压。虽然这种方法会有轻微误差,但也是根据电压估算所需寄存器值的好方法。
当 MAX17330 首次连接电池时,默认寄存器值设置强制 IC 进入关断状态。要唤醒器件,请按 PKWK 按钮。这将使临时保护 MOSFET 短路,从而唤醒两个 MAX17330EVKIT 。
接下来,树莓派需要通过 I2C 与所有三个器件通信。小心地初始化 I2C 硬件,避免器件地址冲突。默认情况下,两个 MAX17330EVKIT 使用相同 I2C 地址。第一步是更改两个电量计之一的地址。
MAX17330 兼有易失性和非易失性寄存器,非易失性寄存器以 “n” 前缀标识。这也导致产生一对节点地址: 6Ch (易失性寄存器)和 16h ( NV 寄存器)。
改变 MAX17330 器件节点地址的方法有两种:
► 使用 I2CSid 字段设置 nPackCfg NV 寄存器。此更改可以利用配置向导设置。参见表 3 。
► I2CCmd 寄存器支持动态更改 I2C 总线。参见表 4 。
为了便于使用,我们采用第二种方法来改变地址,这样可以使用同一 INI 文件来初始化两个器件。生成两个器件的通用设置可以简化器件配置,并消除有关手动输入地址的用户错误。
图 4. 基于图 3 来配置步进充电的预期步进充电曲线
图 5. 输出分压器已被修改,输出范围为 3 V 至 4.6 V ( R6 = 4 K7 且 R9 = 1 K3 )。
表 2.MAX17330 寄存器
寄存器页 |
锁 |
说明 |
2-Wire 节点地址 |
2-Wire 协议 |
2-Wire
外部
|
00 h |
|
Modelgauge M5 EZ 数据块 |
6 通道 |
I2C |
00 h – 4 Fh |
01 h – 04 h |
锁 2 |
||||
05 h – 0Ah |
|
保留 |
|
|
|
0 Bh |
锁 2 |
Modelgauge M5 EZ 数据块(续) |
6 通道 |
I2C |
B0 h – BFh |
0 Ch |
SHA |
SHA 存储器 |
6 通道 |
I2C |
C0h – CFh |
0 Dh |
锁 2 |
Modelgauge M5 EZ 数据块(续) |
6 通道 |
I2C |
D0h – DFh |
0 Eh – 0 Fh |
|
保留 |
|
|
|
10 h – 17 h |
|
SBS 数据块 |
16 通道 |
SBS |
00 h – 7 Fh |
18 h – 19 h |
锁 3 |
Modelgauge M5 EZ 非易失性存储器模块 |
16 通道 |
I2C |
80 h – EFh |
1 Ah – 1 Bh |
锁 1 |
寿命记录和配置非易失性存储器模块 |
|||
1 Ch |
锁 4 |
配置非易失性存储器模块 |
表 3. nPackCfg (1B5h) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
S_Hib |
THCfg |
THType |
000 |
0 |
ParEn |
I2CSid |
0001 |
表 4.I2CCmd (12Bh) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
GoToSID |
0 |
IncSID |
由于两个 MAX17330 器件共用同一 I2C 总线,因此该程序要求将一个器件的 ALRT 信号设置为低电平,并将另一个设置为高电平。
表 5.I2C ALRT 设置
GoToSID |
警报高 |
警报低 |
|
主要 / 次要地址 |
主要 / 次要地址 |
0b00 |
ECh/96h |
6Ch/16h |
0b01 |
64h/1Eh |
ECh/96h |
0b10 |
E4h/9Eh |
64h/1Eh |
0b11 |
6Ch/16h |
E4h/9Eh |
表 4 中的数据来自 MAX17330 数据手册,显示了 I2CCmd 寄存器如何根据 ALERT GPIO 引脚值动态更改器件地址。在这种情况下,可使用 GoToSID 和 INcSID 字段更改 I2C 地址:
► Set ALRT_A logic low
► Set ALRT_B logic high
► Write I2CCmd = 0 × 0001 MAX17330_A address remains at 6Ch/16h
MAX17330_B address set to ECh/96h
每个器件都分配有唯一的地址后,整个系统便可以由单个微控制器控制。
下面是微控制器完成 I2C 配置的脚本。这将是系统初始化的一部分。
► Load .INI file
► Assert ALRT_A and ALRT_B to keep the path between SYSP and BATTP open
► Read VBATT_A and VBATT_B
► VMAX = max (VBATT_A, VBATT_B)
► Set VOUT = VMAX + 50 mV
► Release ALRT_A and ALRT_B
► Set nProtCfg.OvrdEn = 0 to use ALRT as Output
非易失性空间中的某些寄存器需要重启固件才能使更改生效。因此,需要执行以下步骤:
► 置位 Config2.POR_CMD 以重启固件
参见表 7 。
接下来,我们需要启用充电器的中断:
► 设置( Config.Aen 和 Config.Caen ) = 1
参见表 8 。
现在器件已初始化。
表 6. nProtCfg (1D7h) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
ChgWDTEn |
nChgAutoCtrl |
FullEn |
SCTest |
CmOvrdEn |
ChgTestEn |
PrequalEn |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
保留 |
PFEn |
DeepShpEn |
OvrdEn |
UVRdy |
FetPFEn |
BlockDisCEn |
DeepShp2En |
表 7.Config2 (OABh) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
POR_CMD |
0 |
AtRtEn |
0 |
0 |
0 |
0 |
0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
dSOCen |
TAlrtEn |
0 |
1 |
DRCfg |
CPMode |
BlockDis |
表 8.Config (O0Bh) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
0 |
SS |
TS |
VS |
0 |
PBen |
DisBlockRead |
ChgAutoCtrl |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SHIP |
COMMSH |
FastADCen |
ETHRM |
FTHRM |
Aen |
CAen |
PAen |
我们需要能够读取寄存器以记录数据,并检查 ALERT GPIO 线上是否已生成中断。我们可以使用如下脚本:
► 设置 500 ms 定时器
► VMIN = min (VBATT_A, VBATT_B)
► Vsys_min = nVEmpty[15:7]
► CrossCharge = False
►
If (VMIN
评估最小电池电压是否超过系统的最小工作电压
► If FProtStat.IsDis = 0
检测到充电信号
► Clear Status.AllowChgB
向所有电池表明充电器存在
► If (VBATT > VMIN + 400 mV and !Cross Charge)
确定要阻止哪个电池以避免交叉充电
Config2.BlockDis = 1
else
Config2.BlockDis = 0
如果低电量电池远低于高电量电池,则允许放电
参见表 9 、 10 和 11 。
当 MAX17330 置位 ALRT 信号时,主机将执行以下操作:
Read Status register data
If Status.CA is set
Read ChgStat register
If ChgStat.Dropout = 1 increase VOUT
If (ChgStat.CP or ChgStat.CT) = 1 decrease VOUT
Clear Status.CA
参见表 12 和 13 。
图 6 显示了从 Excel 文件的记录数据提取的并联充电曲线。请注意该曲线随步进充电曲线的变化情况。
表 9.FProtStat (0DAh) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
X |
IsDis |
X |
Hot |
Cold |
Warm |
表 10.Status (000h) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
PA |
Smx |
Tmx |
Vmx |
CA |
Smn |
Tmn |
Vmn |
dSOCi |
Imx |
AllowChgB |
X |
Bst |
Imn |
POR |
X |
表 11.Config2 (0ABh) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
POR_CMD |
0 |
AtRtEn |
0 |
0 |
0 |
0 |
0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
dSOCen |
TAlrtEn |
0 |
1 |
DRCfg |
CPMode |
BlockDis |
表 12. 状态寄存器 (000h) 格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
PA |
Smx |
Tmx |
Vmx |
CA |
Smn |
Tmn |
Vmn |
dSOCi |
lmx |
AllowChgB |
X |
Bst |
Imn |
POR |
X |
表 13.ChgStat (0A3h) 寄存器格式
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Dropout |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
CP |
CT |
CC |
CV |
图 6. 并联充电曲线
另外,一旦器件从恒流 (CC) 阶段转为恒压 (CV) 阶段,降压转换器生成的电压可以降低如下:
► If VBATT = ChargingVoltage
Read ChgStat Register
If ChgStat.CV = 1 ecrease VOUT until VPCK = ChargingVoltage + 25 mV
以上就是管理 1S2P 充电配置所需的所有步骤。 中包含了配置降压转换器 (MAX20743) 以及充电器和电量计 (MAX17330) 的 Python 代码。其中还包含了用于捕获重要充电参数和评估步进充电曲线的 Excel 数据日志。通过管理 MAX17330 产生的警报信号,微控制器可保持 MAX17330 的线性充电器接近压差,从而更大限度地降低功耗并支持高充电电流。使用 MAX17330 的电池包可存储已安装电池的参数,以便主机微控制器实现高效博来官网下载。这使得 OEM 可以用更简单、更便宜的降压转换器取代标准充电器 IC 器件,而不影响性能或可靠性。
设备充电时间是最重要的用户体验考量因素之一。 MAX17330 降压转换器采用小型 IC 封装,可以有效管理非常高的电流,从而缩短充电时间。通过采用两个 MAX17330 等的方式可支持以高电流并联充电,让开发人员能够以安全可靠的方式为多个电池充电,从而大幅节省充电时间。