基于ATmega16的动力电池组检测模块设计

2018-07-11 07:51
单片机与嵌入式系统应用 2018年7期
关键词:端电压电池组单体

(1.66325部队,北京 102205;2.北京理工大学)

引 言

电动汽车的续航能力和动力电池的使用寿命是用户普遍关注的焦点问题。在研发新型产品的同时,业内人士也在不断探索延长现有动力电池使用寿命的有效方法。通过检测电池组的工作温度和每块电池的端电压,及时发现故障电池是普遍采取的方法。其中,如何避免百伏以上的高压可能对检测电路、其他系统及工作人员造成危害,这是检测电路设计的关键和难点,也是正在逐步改进的技术要素。本文针对这一关键技术,设计了独特的检测电路,并结合当前国内市场动力电池多样性的特点,在电路设计中融入模块化理念,进一步提高了检测模块的通用性。该检测模块在某工程样车的动力电池管理系统中得到了实际应用。

1 方案设计

1.1 检测模块的功能和指标

系统设计成功的关键在于准确把握系统需要实现的功能,然后根据具体的功能提出量化技术指标,最后由控制要求决定系统软硬件功能的划分。本动力电池组检测模块具有以下功能和技术指标:

① 检测电池组中每块单体电池的端电压,测量值精确到0.1 V;

② 检测电池的工作温度,测量值精确到0.1 ℃。

1.2 器件的选择

选用ATmega16作为主控芯片,该芯片在16 MHz频率下速度为16 MIPS,支持JTAG端口仿真和编程,系统的开发、生产、维护更容易;内置模拟量比较器,有8通道10位A/D转换器,支持单端和双端差分信号输入。这些功能可以满足检测模块相关技术指标的设计要求,ADC转换的参考电压Vref选用芯片内部提供的2.56 V,简化了电路设计。

1.3 关键电路设计

1.3.1电池电压检测电路

集成运放(Integrated Operational Amplifier)是一种高放大倍数、高输入电阻、低输出电阻的直接耦合放大电路,基于集成运放的这些优点,设计单体电池端电压检测电路。

由于动力电池组的结构和单体电池的多样性,在设计检测模块时应着重考虑其通用性。本文设计的检测模块为5通道式,即一个检测模块可同时测量动力电池组中相邻5块单体电池的端电压值。单体电池的端电压信号输入到检测模块后,经过专门设计的电路转换为单片机能够识别的电压信号,再经过A/D转换成为数字信号存储在单片机的SRAM区,等待读取。

1.3.2电池温度检测电路

电池的工作温度对电池容量有非常大的影响,且当电池的工作温度急剧升高时,其内部压力会增大,有可能对电池造成永久性损坏,所以必须检测电池的工作温度。

传统的温度检测大多使用热敏电阻作为温度敏感元件,主要优点是成本低,但它需要后续信号处理电路,而且可靠性相对较差,准确度和精度都较低。美国Dallas公司推出的DS18B20数字式温度传感器能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,温度测量范围从-55 ℃~+125 ℃。电池组温度信号用该温度传感器测得,主控芯片ATmega16直接获得数字信号并存储,可用于后续的数据处理。

2 设计实现

2.1 硬件部分

2.1.1整体框图

检测模块的整体结构及功能设计如图1所示,其中通信接口为预留端口,在本检测模块中没有实际应用。

图1 模块设计整体结构

2.1.2电池电压检测电路

动力电池组中某一单体电池端电压的测量电路,是基于集成运放的特性设计的,如图2所示。

图2 单体电池端电压检测电路原理图

根据弥尔曼定理可得:

因为开环差模电压放大倍数趋于无穷大,由集成运放的输出特性可知:u+=u-。即:

在上式中,若:

则有:

R2(u1-u2)=R1(uo1-uo2)

所以,流过R3的电流为:

由基尔霍夫电流定律可知,流过电阻RL的电流等于流过电阻R3和电阻R2的电流之和,因为流过电阻R2的电流很小,可以忽略,所以流过电阻RL的电流等于流过电阻R3的电流。因此,结合工程实际中输入差模信号的大小(u1-u2)和对电路的功耗要求,就可以选定电阻R1、R2和R3的值,这样就能计算出输出电流I的大小,该电流在电阻RL上形成的电压降便可作为单片机ADC转换的输入信号。其中,电阻RL的大小可根据电流I的大小和单片机ADC转换电路中设定的参考电压大小来确定。

由以上的电路原理分析可以看出,电阻R1、R2、R3和RL的精度将直接影响到单片机ADC转换的精度,所以图中的电阻均应该选用精密电阻。

2.1.3电池温度检测电路

图3 温度采集原理图

温度传感器DS18B20的接口电路简单,只有一根信号线与单片机连接,不需要外部元件。最可贵的是这种芯片在检测点已把被测信号数字化了,因此在单总线上传送的是数字信号,这使得模块的抗干扰性好、可靠性高、传输距离远。其与单片机的连接如图3所示。

2.2 软件部分

软件部分各功能的流程图如图4所示。检测模块的主控芯片是ATmega16,它内置一个10位的逐次逼近(successive approximation)ADC,能够对以PORTA作为输入引脚的8路单端电压输入进行采样,本系统将串联电池组中每5块电池作为一个检测单元,所以选用其中的5通道作为

输入。在默认情况下,ADC的逐次比较转换电路需要一个50~200 kHz的采样时钟,因为系统时钟CLK为8 MHz,所以需要64进行分频,这样每个ADC周期为8 μs。

图4 软件部分功能框图

一次常规的ADC转换需要13个ADC时钟周期,而通过置位ADCSRA寄存器的ADEN位,使ADC启动进行第一次A/D转换,因为要初始化模拟电路,所以需要25个ADC采样时钟周期。在一次常规的A/D转换结束后,需要1.5个ADC时钟周期的采样保持时间。而对于ADC由禁止状态启动后的首次A/D转换,则需要13.5个ADC时钟周期的采样保持时间。所以,最长的一次A/D转换需要200 μs。当一次A/D转换完成后,转换结果写入ADC数据寄存器,可以通过读操作将数据读出到通用寄存器或存放到SRAM区。

为了提高数据采集精度,本系统中采取了多次采样取平均值的方法,对同一通道的输入信号连结采样6次,去掉最大值和最小值后再将其它4个采样值作算术平均,作为该通道输入信号的最终采样值,并将平均值存放在SRAM区的特定位置等待读取。

DS18B20数字温度传感器对软件设计时序方面的要求近乎苛刻,它对读写时序严格到1 μs。在对DS18B20的操作中,读写操作是最基本也是最重要的环节,只有正确使用读写时序,才能访问到它的存储空间,读出正确的温度值。

需要注意的是,在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,如果DS18B20接触不好或断线,当程序读该传感器时,将没有返回信号,程序进行入死循环。因此,在进行DS18B20硬件连接和软件设计时也要给予一定的重视。本模块用一个发光二极管作为该器件工作异常的指示信号,在软件设计中编写了针对这种情况的跳出程序。

部分关键汇编指令如下:

main:ldi r16,$bf;根据admux各位的意义其值应为

;$C0,为循环递增ADC通道作准备

ldi r17,$c7

ldi r21,$00

out sfior,r21;关闭ADC高速转换模式

next:inc r16;ADC通道循环递增,内部参考电压,

;转换数据右对齐

out admux,r16

ldir18,$8e

out$06,r18;64分频,单次转换模式

sbi$06,adsc;转换开始

loop:sbis$06,adif

rjmploop

inr14,adcl;将寄存器adcl的值读入r14

inr15,adch;将寄存器adch的值读入r15

cbi$06,adif

ldir19,$c0

cpser19,r16

rjmpmid_chls

rcallled_1

rcalldelay1

outportb,r14

rcalldelay1

sts$0060,r14

sts$0061,r15

rcallUSART_L

cli ;关中断

write1820: clc;进位标志C清零

ldir16,$8

movr1,r16

next_bit:sbiddrd,pd7

sbiportd,pd7;给18B20开始信号

nop

cbiportd,pd7

rorr6

brccwrite_0

rcalldelay12

sbiportd,pd7

rcalldelay60

rjmpwrt_nxt

write_0:rcalldelay60

wrt_nxt:cbiddrd,pd7

rcalldelay16

decr1

brnenext_bit;非零跳转

ret

3 产品测试

3.1 产品测试方案

用5路串联稳压电源代替5块串联的单体电池,将稳压电源的输出电压设为不同的值(如:9.62 V、9.89 V、10.25 V、10.44 V、12.72 V)并保持恒定,将这5路电压值输入到单体电池检测模块中,由主控程序反复访问该模块5次,并记录采集到的数据。

因为温度信号的特性是一样的,所以产品测试中对环境温度的采集可等效于对电池组工作温度的采集。与测量单体电池端电压同步作5次测试,记录相应的温度数据。

3.2 产品测试结果

分析表1中单体电池端电压试验数据可以看出,该检测模块对恒定的5路电压连续5次采样的结果是稳定的,最大偏差为0.05 V,能够满足0.1 V的设计要求。检测模块中单片机RAM区的数值波动也很小,其幅值小于3,这说明该模块中ATmega16单片机A/D转换的参考电压比较稳定。

温度测试数据如表2 所列。可以看出,温度传感器对环境温度连续5次采样的数值波动很小,最大偏差为0.08 ℃,能够满足0.1 ℃的设计要求。

表1 单体电池端电压测试值

表2 温度测试值

结 语

本文设计的动力电池组检测模块,采用独特的电路设计,既有效避免了百伏以上的高压可能对检测电路、其他系统及工作人员造成危害,又能够实时检测电池组中每块单体电池的端电压值以及电池组的工作温度,可为电动汽车的其它工程应用提供准确的基础数据。从台架试验数据看,检测模块对单体电池端电压的测量精度达到了0.1 V,电池组工作温度测量精度达到了0.1 ℃。控制芯片采用低功耗,抗干扰强的ATmega16芯片,利用内部的A/D转换和定时计数器功能,各通道均表现出了良好的稳定性,这说明该模块的电路设计和软件设计是可行有效的,检测模块实物如图5所示。

图5 检测模块局部图

猜你喜欢
端电压电池组单体
单体光电产品检验验收方案问题探讨
2017年7月原电池及原电池组产量同比增长2.53%
励磁调节器PT回路故障后机端电压变化分析
人工心脏无位置传感器无刷直流电动机非导通相端电压分析
相变大单体MPEGMA的制备与性能
基于LTC6802的电池组均衡电路设计
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
巨无霸式医疗单体的选择
通信机房不间断电源蓄电池的应用与维护
类姜黄素及其单体对β-内分泌酶活性的抑制作用