LTC6802检测串联电池组电压电路设计
扫描二维码
随时随地手机看文章
摘要:介绍了串联电池组电压管理芯片LTC6802—2的特点和使用方法。分别以51单片机和TMS320LF2407为控制器,从通信的角度详细探讨在硬件设计和软件设计上应注意的问题,实现LTC6802—2对串联电池组电压的检测。并通过实验数据分析,验证了此方法的有效性。
1、LTC6802—2介绍LTC6802—2内部含有12位的AD转换器,精密电压基准,高电压输入多路转换器和SPI串行接口。每个芯片可以检测12节串联在一起的电池。同时,芯片还支持串联使用,最多可以将16个芯片串联在一起使用,即最多可以检测12x16=192节电池串联组成的电池组。每个AD的转换范同为0~5V,因此每个芯片的检测串联电池组电压可达60V。另外,LTC6802.2在LTC6802—1的基础上进行了改进,增加了4位的外部编址接口A0~A3,可对其进行编址,方便了对某一指定检测单元的单独操作。另外,LTC6802.2还具有高温保护功能,电池过充过放电状态监视,电量均衡功能。
LTC6802.2有种工作模式:待机模式、测量模式和监事模式。上电默认为待机模式,此模式下,只有串口和5V的稳压基准源处于工作状态,其他所有电路均不_T=作。必须通过串ISI通信,对LTC6802.2进行配置才可以启动其他电路,此时可向CFGR0的CDC[2:0]位写入非0的值使其退出待机模式,LTC6802—2退出待机模式后VREF引脚可以检测到3.075V的脉冲基准电压信号,否则检测电压为0V,这可以作为判断串口通信成功的检测依据。
2、硬件设计本文主要以51单片机和TMS320LF2407为主控器,分别介绍他们的硬件接口电路,并分析调试过程中遇到的问题。
2.151单片机与LTC6802—2的通信接口图1给出了以51单片机为控制器的控制电路,在保证电路正常工作条件下,外围电路以最简单的形式给出。如果电池选用大容量动力电池,则要考虑加钳位保护电路,防止c引脚出现大的电流而损坏芯片。因为51单片机和LTC6802.2的通信接口均为5V工作电压,在只有一片LTC6802.2接入时,可以不加隔离器件,直接进行串口通信。
51单片机的SPI串行通信接口使用P1.O~P1.3来模拟,模拟SPI接口时需要注意,该接口没有做其他的扩展用途,如果接有其他的扩展电路,在进行SPI通信时要进行屏蔽,否则有可能对串行通信造成干扰,导致无法正常通信。
2.2TM$320LF2407与LTC6802—2的通信接口公司的TMS320LF2407内部自带SPI串行通信模块,利用此模块可以简单地实现DSP与LTC6802—2的通信。通信中需要注意的是,通用SPI模块一般是每进行一次读写操作CS引脚就分别给出相应的片选信号,但根据LTC6802.2的时序需求,每次片选有效时,都要进行多次的读写操作。因此,此处不能使用SPI模块的片选,实验中选取DSP的PB4来给定片选信号。
设计中需要注意的另一点是数字隔离器件的选取。因为LTC6802—2的5V基准电源的驱动能力比较弱,最大只能提供负载4mA的电流,所以选择数字隔离器件时必须选择低功耗器件,否则,功耗过大将导致LTC6802—2芯片发热,基准电源电压下降,当降至4.1V时,芯片将无法正常工作。本文选取ADUM14115_,它是ADI公司开发的一款超低功耗4通道数字隔离芯片,复合此处SPI通信的需求,并且功耗低,最高通信速度可达到10M,也满足通信的需求。图2是TMs320LF2407与LTC6802.2的工作电路。
软件设计中主要需注意的是SPI通信的时序要与LTC6802.2的时序相匹配,时钟频率必须小于1M,通信模式按照LTC6802.2的规定cPHA:l和CPOL=1(其时序图如图3),但是由于TMS320LF2407的SPI通信模式与标准定义的差别,TMs320LF24O7的通信模式应该设为PHASE=0和PO.
LARITY=I。另外,需要注意的是由于TMs320LF2407自带SPI通信模块式的特点所限,在进行读取数据操作时需要虚发操作,已启动时钟,才能正常读取数据。
因为LTC6802—2支持多次的连续读写操作,因此,通信过程中选取通用I/O作SPI通信的CS片选信号,而不是直接用SPI模块的片选信号引脚。使用LTC6802.2进行电压转换前需要先对其进行初始化,即写配置寄存器组CFGR0~CFGR5。读数据时要先发送要读取的LTC6802.2的地址f由A0~A3引脚接线确定),然后发送读数据指令,再进行读操作。其操作写控制寄存器步骤如下:(1)拉低CSBI;(2)发送写配置寄存器命令;(3)发送配置寄存器数据(cmm,CFGR2,…CFGR5);(4)抬高CSBI。
读取电压数据操作步骤如下:(1)拉低CSBI;(2)发送要读取的LTC6802地址;(3)发送读电压命令;(4)发送电压寄存器中电压数据(CVRO0,CVRO1,…CVR17,PEC);(5)抬高CSBI。在读取电压过程中,如果电池电压有较大的变化或波动会使LTC6802复位,进入上电默认待机状态,此时读取电压寄存器的值是不变的,为最后一次测量值,因此每次读电压时尽量进行一次初始化配置,具体读电压流程如图4。
软件设计上,51单片机模拟SPI通信与通用的模拟程序类似,下面主要介绍以TMS320LF2407的SPI接口进行通信的软件设计。
(1)初始化,程序如下:
voidLtc68O2Init(void)
{uchari,bur,Ltc6802;
CFGR[0]=0x01;//配置寄存器的初始化
CFGR[1]=0x00;
CFGR[2]=0x00;
cFGR[3]=OxO0;
CFGR[4]=VUV:
CFGR[5]=VOV;
do
{CL_CSBI;//片选信号,托低CSBI
SpiWrite(WRCFG);//写配置寄存器
for(i=0:i《6:i++1
{SpiWrite(CFGR[i]);)
SET—CSBI;
delay(60);
Ltc6802OK=1:
CL_CSBI:
SpiWrite(0x80);11图2中接线可知地址为0
SpiWrite(RDCFG);
fbr(i=0;i《6;i++)
fif(i--0)buf=SPIreadO/0x80;
elsebur=SPIread0;
ifbufi=CFGR[i]1
{Ltc6802=0;break;)
}
SET_CSBI;
}while(Ltc6802);//配置不对重新配置
}
(2)写数据子函数
voidSpiWrite(uintbuf)
fuintflag=0;
SPITXBUF=bufl8;//TMS320LF2407发送缓存寄存器为16
位,从高位开始发
while(1)//8位数据,将数据写入寄存器高8位
{flag=SPISTS&0x40;
if(flag==0x40)break;
j
SPIRXBUF=SPIRXBUF:
}
(3)读数据子函数
uintSPlread0
{uintflag,buf;
SPITXBUF=O;
while(1)
{flag=SPISTS&0x40;
if(flag==0x40)break
}
buf=-SPIRXBUF;
returnbuf;
}
文中给出的初始化数据是只测量12接单体数据的情况下配置数据,根据系统需要,如果要对电池的过充电和过放电状态进行监控或连接电池少于12节,可以对CFGR0--CFGR5进行进一步的设置。
4、测量结果分析对于电压检测,稳定度非常重要。稳定度越高,说明系统检测也准确,误差也越小。因为LTC6802—2内部是12位的AD,最小检测步长是1.5mV,对检测电压保留三位小数,对12节锂离子电池的测量数据进行记录,测量结果如表1。
对检测的电压值求方差,可以看到方差几乎为0,也就是说,检测电压比较稳定,而且检测精度较高。
5、结论利用LTC6802—2检测串联电池组电压,单体电池串联数量多,电路结构简单,测量速度快,测量精度高,能满足一般的检测需求。另外,LTC6802.2是一款电池管理芯片,还具有温度保护功能,检测电池过充和过放电状态,还能对串联电池组进行均衡控制,只需要增加简单的外围电路和寄存器配置即可实现这些功能。因为实现了电池电压的检测,可以通过控制器判断电池的过充和过放电状态,从而进行更好的均衡电池电量,所以文中并没有对这些功能进行详细研究。但是,利用这种方法测量电池的电压,对更好地监视电池的充放电状态和能量均衡具有非常重要的意义。