基于AVR微控制器的蓄电池充放电控制器的设计
摘要:针对539CH-1型Ni-Cd电池,提出一种基于AVR微控制器的蓄电池充、放电控制器。该控制器以Mega16L为核心,根据上位机的命令控制蓄电池的充、放电电流值以及放电电阻的接入时机。
关键词:蓄电池;AVR微控制器;TLV5638;电源控制
引言
蓄电池是飞行器电源系统中重要的组成部分,蓄电池的性能直接影响飞行器的安全。因此,正确维护、保养蓄电池就成为一项十分重要的工作。539CH-1型Ni-Cd蓄电池是法国SAFT公司生产的碱性蓄电池,该电池包含20个单体电池,额定电压24V,额定容量53Ah。波音737客机即采用该型蓄电池。
充电和放电是该电池维护、保养中的主要工作。由于该电池为Ni-Cd蓄电池,为了避免记忆效应影响电池容量,充电前需要对电池进行放电。该电池的放电规范要求测量单体电池电压,并记录单体电池电压下降到1V时的放电时间,然后在单体电池两极间接入放电电阻。该电池的充电规范要求使用分阶段定电流充电法。充电过程中要检测电池的端电压和充电电流,充电后期要测量单体电池的电压,并对电压较低的电池做相应处理。
本设计采用AVR单片机Mega16L作为核心,可同时控制两块539CH-1型蓄电池的充、放电过程。Mega16L通过串行总线接收上位机的命令,然后通过SPI总线将数据发送给TLV5638。单片机通过多路模拟开关CD4053将TLV5638的两路D/A输出送入信号调整电路,从而完成对充放电电流的控制。放电过程中,Mega16L通过控制8D锁存器74LS573和复合管阵列ULN2081控制放电电阻接入。系统框图如图1所示。
图1 系统原理框图
硬件设计
硬件系统包括串行通信电路、充电和放电控制电路、继电器驱动电路等模块。
通信电路
单片机通过串口与上位机通信。Mega16L端口为TTL电平,而上位机串口为RS232C标准接口。因此,在上位机与单片机通信时需要进行电平转换。本设计采用MAX232完成TTL电平与RS232接口电平之间的转换。
充电和放电控制电路
单片机收到上位机的充、放电控制命令后,通过SPI口将控制信号发送给TLV5638。TLV5638将收到的数字信号转换成模拟信号,并送入信号调整电路。模拟控制信号经调整后送入充电或放电电源的PI控制器,对充电和放电电流进行控制。单片机通过CD4053选择控制信号的输出通道,使该控制器可同时对2块蓄电池进行充电和放电。该部分电路原理图如图2所示。
D/A变换
本设计使用双通道l2位电压输出型高速DA转换器TLV5638完成数模转换。设计中,将Mega16作为主机,通过SPI口直接与TLV5638的串行接口相连。因为Mega16的SPI口为4线串口,所以连接时单片机SPI口的PB6(MISO)悬空。
串行通信时,CS引脚出现下降沿时通信开始,数据在SCLK的下降沿逐位移入TLV5638的内部寄存器。最先移入的是数据的最高位。当16位数据全部移入或CS引脚变高时,TLV5638移位寄存器中的数据被存入相应的锁存器,锁存器的选择由数据中的控制字确定。因此,当Mega16需要向TLV5638发送数据时,PB7先从高电平跳到低电平,然后通过SPI口连续进行两次写操作,向TLV5638发送个字节数据。两次写操作完成后,在SCLK的第16个上升沿,相应锁存器的内容自动更新。
应用中,TLV5638工作于慢速正常模式,采用2.048V内部参考电压。更新TLV5638某一路DAC数据时,必须保证另外一路数据不变。
Mega16的SPI口可采用4种不同的数据传输格式工作,传输格式由SPI控制寄存器中的CPOL位和CPHA位控制。应用中,考虑到TLV5638的使用要求,令CPHA=0,CPOL=1(传输开始时采样SCK下降沿,结束时采样SCK上升沿)。
图2 D/A变换与通道选择
信号通道选择
Mega16通过PD4和PD5以及外围逻辑电路控制信号的输出通道。逻辑电路包括1片7404和2片CD4053。以TLV5638的OUTA输出信号为例。模拟控制信号从TLV5638输出,经滤波后送入CD4053的X通道和Y通道。单片机PD4一方面直接与CD4053控制端A相连,另外还通过反相器7404与CD4053控制端B相连。这样就保证A端和B端的控制信号反相,使任意时刻X、Y通道中只有一个可以输出有效控制信号,从而保证该路充电和放电不发生冲突。应用中没有使用CD4053的Z通道,应将其与控制端C及使能端一起接地。
继电器驱动电路
放电后期,需要将电池中的剩余容量完全放出,最终使单体电池电压下降到0V。设计中,利用继电器将放电电阻并联于单体电池两极,从而达到释放电池剩余容量的目的。继电器由8D锁存器74LS573和达林顿管阵列ULN2801驱动。单片机PA0~PA7输出控制信号,PD2、3、7和PC6、7输出5片74LS573所需的锁存使能信号。控制信号由74LS573锁存,然后通过ULN2801驱动继电器工作,将放电电阻并联在单格电池两端,从而完成单格电池剩余容量放电。继电器驱动电路原理图如图3所示。图中只包含1片74LS573,其它4片控制方法类似。
图3 继电器驱动电路原理图
软件设计
软件采用主从结构。单片机收到上位机指令后,根据通信协议提取出命令字和数据,然后根据命令字完成相应的控制。软件基于模块化设计思想,主要包括:主程序模块,通信程序模块,D/A转换与通道选择模块,继电器组控制模块等。
主程序模块
主程序模块完成单片机初始化,等待并处理中断等工作,流程图如图4(a)所示。
图4程序流程图
通信程序模块
单片机与上位机间采用RS232串口通信。单片机采用中断方式接收上位机发出的命令,并根据接收到的数据内容向上位机发送应答信息。当命令的起始标志和结束标志都正确时,单片机向上位机发送ASCII字符‘Y’表示接收成功,然后处理收到的命令;否则,向上位机发送ASCII字符‘N’,表示发送不成功,要求上位机重新发送命令。
上位机向单片机发送的命令符合以下格式:命令以帧为单位,每帧包含7个字节。每帧包含的命令字规定了单片机的控制方式。每帧中的数据字则以ASCII码的形式确定了充、放电电流的大小和继电器的代号。通信模块流程图如图4(b)所示。
当上位机需要控制充、放电电流时,单片机采用查询方式,通过SPI口向TLV5638发送命令和数据,然后通过控制CD4053确定模拟控制信号输出通道。因为Mega16L的SPI口字宽为8位,因此必须连续进行两次写操作才能完成对TLV5638的编程。
单片机收到上位机命令后,先将数据写到PA口,然后向相应锁存使能位写‘0’,将数据锁存入74LS573中,完成对继电器的控制。
结语
本文提出了一种基于Mega16L的蓄电池充放电控制器。该控制器利用串口RS232接受上位机发送的控制指令,然后根据控制指令完成对蓄电池充电电流、放电电流以及放电电阻接入的控制。该控制器部分实现了电池充、放电电源的数字化控制。该系统已应用于539CH-1型Ni-Cd电池的充放电设备中,性能良好。
参考资料:
1. Nickel-Cadmium Aircraft batteries operating and maintenance manual. SAFT. 2002.08
2. Datasheet of Atmega16, Atmel, 2003.12
3. TLV5638 2.7-V to 5.5-V low-power dual 12-bit digital-to-analog converter with internal reference and power down, Texas Instruments Incorporated, 2000
4. 沈文、Eagle lee、詹前卫,AVR单片机C语言开发入门指导,清华大学出版社,2003.2-3
5. 张军,AVR单片机应用系统开发典型实例,中国电力出版社,2005.8
评论