(转载)基于STM32的多节锂电池管理系统的设计

原文链接原文链接

电池节能和污染正日益成为人们关注的问题。在传统电池领域中,铅酸电池和镍氢电池在实际使用过程中存在一系列问题:如比容小,不适应快速充电和大电流发电或者是镍氢电池在串联电池组时管理问题比较多。相反,锂电池不仅比容要好于铅酸电池和镍氢电池,而且还具有无记忆效应、使用寿命长和单节电芯电压高等优点。

在矿用产品中,锂电池逐步替代了铅酸电池和镍氢电池。但锂电池在使用时也存在一个重要的问题,它在过充电或是在过放电时电池可能会发生爆炸,因此需要良好的保护电路来配合使用,这样可以杜绝电池爆炸的问题。本文研究的就是利用STM32f103单片机和LTC6802-1芯片对锂电池组进行管理保护。这样可以既可以发挥锂电池的优势,也可以杜绝使用锂电池产生的一些问题。

LTC6802介绍

在众多电池管理芯片中,LTC6802性能出众,其独特的内部设计使其能同时检测多达12节电池电压,而且其简单的外部电路配置能使我们方便的搭建系统,有利于降低成本和开发时间。

LTC6802内部有高精度的模数转换器,位数多达12位,单个LTC6802能同时检测12节串联单体电池电压,也可以测量电池组总电压,在电池管理系统中,我们可以将多个LTC6802芯片组成链式电路,方便我们监测多于12节或大于60V的电池组,采用这种可堆叠式架构使得我们测量或管理1000V电池系统成为可能,利用其双热敏电阻输入、板上温度传感器等多种渠道可以实时监测锂电池组温度。

LTC6802与微处理器之间的通信是由一个兼容式串行接口实现,在链式电路中,每个LTC6802都能通过简单的二极管隔离实现数据通信。其SPI时序图如图1所示。

 

图1 SPI通信时序

LTC6802有多种工作模式,如待机模式、测量模式以及监视模式;每一种模式都有其独特的工作状态:

待机模式:系统上电时,LTC6802默认处于待机状态,此时,除串口和稳压器电路外,其他电路都处在关闭状态,这时LTC6802电流处在最小状态。

测量模式:通过命令对寄存器CDC位进行设置,可以使LTC6802处在测量模式中,此时,对单体电池的电压进行正常监视,通过寄存器能判断其是否过压或欠压。

监视模式:LTC6802只监视处于过压或欠压状态的单体电池,串口通信电路处于关闭状态;

它广泛应用于电动汽车和混合动力汽车、大功率可携带设备、备用电源、高压数据采集系统,本文中主要将其应用在备用电源中,取得良好效果。

硬件系统的设计

在图2中,LTC6802链式电路可以测量多节(12节或更多)锂电池电芯值,通过这些电压或温度值,可以判断电池是过充、过放还是过温。STM32F103主控芯片通过自带动SPI总线模块从LTC6802中读取所需要的值,利用充放电控制单元对锂电池组进行保护,同时也可以在LCD人机界面上显示。

 

图2 硬件系统框图

STM32F103控制单元

该款单片机是基于Cortex-M3内核设计的ARM芯片,内部集成SPI总线模块、USB模块、16路ADC采样等等外设。其时钟频率最大可以达到72MHz,这样的频率可以满足大部分场合的需要。内置512KB的高速存储器以及64KB的SRAM,丰富的增强I/O端口和连接到APB总线的外设均使得STM32F103成为一款非常优秀的单片机。

这些丰富的外设资源,使得STM32F103系列单片机适合于多种场合:

①电机驱动和应用控制;

②医疗和手持设备;

③PC外设和GPS平台;

④工业应用:可编程控制器、变频器、打印机和扫描仪;

⑤警报系统、视频系统、备用电池系统等等。

在本系统中,STM32F103单片机主要应用在电池管理系统中,也就是备用电源。STM32F103通过自身的SPI外设来设置LTC6802工作方式,通过LTC6802读取电池组电芯电压值、电芯温度值,以及设置电池过压、欠压和过温等报警标志,并利用这些获得的值对电池进行充放电管理,这样可以达到保护电池的作用。

在硬件系统框图中,我们可以看到系统模块有:单片机最小系统、LTC6802链式电路、电池均衡电路、电池测温单元电路、通信电路等。

在该电路中,STM32F103单片机主要负责对LTC6802信息的读写,控制均衡电路,也就是充放电控制单元,同时可以检测电池温度,将这些有用信息在人机界面上面显示。电路如图3所示。

图3 STM32F103控制电路

LTC6802链式电路

LTC6802链式电路在多电池信息检测中有着重要的作用,我们知道一块LTC6802芯片只能管理12个单个电池,一般情况下也就是36V左右。在某些时候,可能需要电池电压远远大于36V,这个时候我们就可以利用LTC6802链式电路来达到这个要求,如图4所示。

在图4中,SPI TOP和SPI BOTTOM就是连接顶端LTC6802和底端LTC6802。这样就可以组成多级LTC6802链式电路。

图4 LTC6802链式电路

控制均衡电路

均衡电路在电池管理过程发挥着至关重要的作用,我们所做的一切,都是为了方便管理电池电压、电量的平衡,均衡电路的作用就在于保持电池电压的平衡,这样就保护了电池。电路如图5所示,这里只给出了部分均衡电路。

图5 均衡电路

电池测温单元电路

每个芯片都有自己的工作温度范围,LTC6802的温度范围是<85℃,而且当其内部温度超过105℃时,LTC6802采样性能就会降低,更为严重的是,如果其温度达到150℃,LTC6802芯片极有可能被烧坏。因此,为了保护LTC6802芯片,必须要用温度检测电路,其图如6所示。

图6 电池测温单元电路

这里VTEMP2处接NTC,我们通过NTC就可以获得实际温度值。

通信电路

STM32F103与LTC6802的通信电路比较简单,主要是SPI通信。如图7所示。

图7 通信电路

软件设计

本电池管理系统采用模块化编程方式,利用高级语言编程,主要流程图如图8所示。

图8中给出的是单个LTC6802进行数据处理的软件编程,LTC6802芯片可以连接成链式电路,这时,通过STM32F103由高到低逐次向各级LTC6802发送读写指令,写指令时,数据由高到低传送,读数据则相反。

LTC6802有多个指令寄存器,如电压寄存器、温度寄存器、标志寄存器、命令寄存器。每个寄存器都有其特殊的功能,如通过配置电压寄存器,我们可以设置过压大小、欠压大小等;配置命令寄存器,我们可以设置电池测量个数等。表1列出了命令寄存器。

表1 命令寄存器

 

 

图8 程序流程图

 

图9 LTC6802的管理效果

系统中采用单片机作为主控制器,利用其本身自带的SPI外设与LTC6802进行数据交换。这里给出一部分程序清单,如下:

void Ltc6802_Init(void)

{

GPIO_Configuration();

SPI_Configuration();

Ltc6802_Write();

}

测试结果

我们可以使用专门的软件来查看LTC6802的管理效果,从图9我们可以看出电池组中共有12节电池,也就是说这里只使用了一个我们可以使用专门的软件来查看LTC6802芯片来管理电池,电芯电压CELL1到CELL12电压均在1.89V左右,从这个软件中我们也可以看到采样的温度电压:如2.487V,当然需要自己手动将其转换成温度值。还有一个比较重要的是,可以利用这个软件来设定电池组中电芯的过欠压值。

通过这款软件,我们能实时监测锂电池组的运行状态,准确判断是否有单体电池处在过压或欠压状态。

结论

本文详细介绍了STM32F103单片机和LTC6802的联合使用情况,给出了一种锂电池的管理方法,LTC6802是一款非常优秀的电池管理芯片,在电池管理过程中能准确获取电池组单体电池电压、电池温度,有效地对电池电压进行均衡,实现锂电池组的动态保护,它可以对长串锂电池组电池芯进行电压测量与监视,也可以通过对电池进行充放电来达到电池组电压均衡的目的。可广泛用于电瓶车、备用电源等场所。当然,在本文中,有关系统功耗和电流检测还有待改善。

你可能感兴趣的:(stm32)