电源设计应用
本文采用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相应寄存器来启动关闭均衡。整个系统由嵌入式芯片实现集中控制和动力电池组的在线监测。
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支持全双工或单线双向;双重缓冲发射和接收;具有主从模式选择;支持高位优先或低位优先的移位。
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初始化函数
(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℃。该系统工作稳定可靠,具有重要的应用价值。
全部0条评论
快来发表一下你的评论吧 !