基于LTC6802的磷酸铁锂电池采集系统
扫描二维码
随时随地手机看文章
摘要:设计一种基于电池监测芯片LTC6802的磷酸铁锂动力电池组状态采集系统。采用嵌入式微处理器MC9S08DZ32对12串电池组状态数据进行采集,并通过CAN(Controller Area Network)总线上传到主机。文中对系统的整体结构和工作原理进行了介绍,并给出了具体的硬件和软件设计方案。
关键词:LTC6802;MC9S08DZ32;磷酸铁锂动力电池组;监测系统
引言
随着新能源和环境污染问题在全球经济发展过程中被高度关注,作为清洁能源的动力电池越来越受到重视。磷酸铁锂动力电池以其寿命长、使用安全、可大电流2C快速充放电、耐高温、容量大、无记忆效应、绿色环保的优点在工业和交通领域得到了快速应用。电池的工作状态是应用中的关键环节,基于嵌入式技术的动力电池状态智能采集系统也成了技术研究的热点。传统的电池工作状态采集芯片支持的锂电芯串联只数较少,例如广泛应用于笔记本电池电芯工作状态采集的bq2060、bq2085最多支持4只锂电芯串联。而动力电池多作为动力源应用,一般要100只左右电芯串联,例如纯电动客车电池需要108只磷酸铁锂电芯串联。若采用传统的电池工作状态采集芯片,所需芯片的数量将很大,会大大增加成本。所以世界上著名的芯片制造商都开始开发支持十几只锂电芯串联的采集芯片。Linear公司开发的LTC6802是一种专用的电池状态监测芯片,能测量高达12只串联电芯电压,13 ms完成所有电芯电压检测,整体测量误差小于0.25%,具有高电磁兼容能力、低功耗的优点。
本文采用LTC6802采集12只串联电芯电压。微处理器MC9S08DZ32利用SPI总线读取LTC6802采集的串联电芯的电压,并控制LTC6802对任意一只电芯进行均衡。同时,利用内置ADC对12只串联电芯的表面温度进行采集,通过CAN总线将采集到的12只电芯的电压、温度以及均衡状态上传到上级控制系统,实时监测12只电芯的工作状态。以此为基本系统,利用多个基本系统实现对大数量电池串联构成的电池组的状态监测。
1 系统组成和工作原理
1.1 系统组成
本文研究的串联磷酸铁锂动力电池组采集系统能够实现12只动力电池的在线监测。该系统包括以LTC6802为核心的电芯电压采集和均衡部分,以及以MC9S08DZ32为核心的温度采集和CAN总线通信部分,如图1所示。
1.2 工作原理
监测系统应用LTC6802采集连接其上的12只电芯的电压,使用SPI总线完成MC9S08DZ32和LTC6802的通信,读取采集到的电压值。通过紧贴在每只电池外壳上的热敏电阻NTC来获取12只电芯的表面温度,并根据读取到的12只电芯的电压、温度决定12只电芯的均衡电路的开关,通过SPI设置LTC6802相应寄存器来启动关闭均衡。整个系统由嵌入式芯片实现集中控制和动力电池组的在线监测。
[!--empirenews.page--]
2 系统硬件设计
2.1 电压采集和均衡部分
电压采集部分以LTC6802为核心。LTC6802是Linear公司推出的一款完整的电池监视IC,它内置1个12位ADC、1个精准电压基准、1个高电压输入多工器和1个串行接口。每个LTC6802能够在输入共模电压高达60 V的情况下测量多达12个串接电池的电压,而且可把多个LTC6802器件串联起来以监视长串串接电池中每节电池的电压。通过运用一个独特的电平移位串行接口,能够把多个器件以菊链式连接起来,无需使用光耦合器或光隔离器。每个电池输入均具有一个相关联的MOSFET开关,用于对过充电电池进行放电。单片机可以通过SPI总线从LTC6802读取数据,并控制相应电池输入的MOSFET的导通和关闭,以实现电芯均衡。为了保护LTC6802电压采集引脚,防止电压高出最大输入电压,在每一个电芯采集输入端口并联一个6.2 V稳压管,并在每个电压采集引脚前加阻容滤波电路,从而有效地滤除高频干扰,保证电压采集的正确性。磷酸铁锂动力电池组采集系统的采集电路如图2所示。
2.2 温度采集和CAN总线通信部分
温度采集部分采用CD4067,以电阻分压方式将温度量转变成电压量供MC9S08DZ32内置ADC采集。CD4067是一款数字控制的多路模拟开关,具有开启电阻低、关断漏电流小和内部进行地址解码的优点,且在全输入范围内开启电阻相对稳定。CD4067通过4个二进制控制引脚A、B、C、D和1个Inhibit引脚来选择16个引脚中的一个与common引脚连通。MC9S08DZ32通过控制A、B、C、D以及Inhibit引脚电平状态来顺序采集12路NTC电阻分压值,进而通过软件计算出相应的电阻值,再通过NTC电阻阻值和温度的对应关系计算出温度值。由于NTC电阻的电阻值和温度值呈指数关系,所以在软件设计中采用了分段线性化的方法来提高温度采集的精度。
该部分以MC9S08DZ32为核心。MC9S08DZ32是Freescale公司的32引脚8位微处理器,芯片体积小功能强大。内部有32 KB Flash存储器和2 KB的EEPROM在线可编程内存,支持8字节单页或4字节双页擦除分区;执行Flash程序的同时可进行编程和擦除操作;支持擦除取消操作最大4 KB的随机存取内存(RAM)。此外,它还具有如下特点:24通道,12位分辨率,2.5μs转换时间,并具有自动比较功能内部ADC;内部集成的CAN模块支持CAN协议V2.O A/B;支持标准和扩展数据帧;支持远程帧;具有5个带有FIFO存储机制的接收缓冲器和灵活的接收识别符过滤器;内部SPI支持全双工或单线双向;双重缓冲发射和接收;具有主从模式选择;支持高位优先或低位优先的移位。[!--empirenews.page--]
MC9S08DZ32通过SPI总线与LTC6802进行通信,读取采集到的电压值,并根据各只电池的电压、温度确定需要均衡的电池。然后,通过SPI设置LTC6802相应寄存器来启动关闭均衡,同时通过CAN总线将电压、温度数据及均衡状态上传到上级控制系统。本文采用的CAN芯片为ISO105 0,该芯片集成度高,使用方便,简化了CAN总线通信部分的硬件设计。
3 系统软件设计
在软件设计中,MC9S08DZ32与LTC6802之间的SPI通信是最为关键的一步。因为只有保证可靠的通信,MC9S08DZ32才能够控制LTC6802进行电芯电压采集以及控制均衡电路的开启和关闭。为了实现SPI通信,首先要清楚LTC6802的读写时序。LTC6802的读时序如图3所示,写时序如图4所示。
由读写时序可见,每个字节发送时都是高位先发送。写时序中,SDI引脚的逻辑状态在SCKI的上升沿被锁存。读时序中,在SCKI的上升沿SDO引脚的逻辑状态是有效的。另外需要注意的是,LTC6802的时钟相位和极性要求:LTC6802的SPI接口被配置为工作在CPHA=1和CPOL=1的模式下。根据LTC6802的读写时序和MC9S08DZ32内部SPI的工作方式,可以写出MC9S08DZ32 SPI初始化函数、向LTC6802中写入1字节数据函数以及从LTC9802中读取一组数据函数的C语言代码。
(1)MC9S08DZ32 SPI初始化函数
[!--empirenews.page--]
(2)向LTC6802中写入1字节数据函数
(3)从LTC6802中读取一组数据函数
MC9S08DZ32主要通过调用这3个最基本的函数,实现对LTC6802的一系列高级读写控制。监控软件的整体流程如图5所示。首先对系统时钟进行初始化,接着对单片机内部集成的CAN、SPI、ADC以及LTC6802的各项参数进行初始化。循环从LTC6802读取12支电池电压和均衡状态,利用ADC读取12只电池温度,根据电压和温度设置电芯的均衡电路工作状态,并通过CAN总线上传数据给上一级控制器,实现监测功能。
4 结论
本文采用Freescale公司的MC9S08DZ32和Linear公司的LTC6802设计了磷酸铁锂动力电池组状态监测系统。该系统能采集12只串联动力电池电芯的电压和温度,对电芯进行均衡,并通过高速的CAN总线上传待测电芯的电压、温度以及均衡状态。经过实际测试,该系统的电压采集精度为±4 mV,温度采集误差为±1℃。该系统工作稳定可靠,具有重要的应用价值。