APP下载

RT-Thread操作系统的电池管理系统设计

2015-11-23李云红田冀达陈航

单片机与嵌入式系统应用 2015年7期
关键词:充电电流充放电串口

李云红,田冀达,陈航

(西安工程大学电子信息学院,西安 710048)

RT-Thread操作系统的电池管理系统设计

李云红,田冀达,陈航

(西安工程大学电子信息学院,西安 710048)

为了保证电池在充放电过程中的安全,针对目前电池管理系统存在可移植性差、不便于功能扩展等问题,提出一种智能电池管理系统。系统采用国产嵌入式实时操作系统RT-Thread,并选用STM32作为主控制器芯片,使整个系统的监控、调试更加方便。测试结果表明,该系统可以实时监控电池的充放电过程,预留的接口可以方便以后做功能扩展。

RT-Thread;STM32;电池管理系统

引 言

电池管理系统,主要借助微处理器来解决不同电池由于制作工艺、充电电压和电池的容量不同引起的充电问题。该系统可根据电池种类的需要产生充电电压,利用高分辨率的A/D转换器实时采集和监控充电过程中电池的状态,进而实现多种电池充电过程的智能化管理。电池管理系统能够有效保护电池并延长电池寿命,提高充电效率和使用安全性,并且可以实时监测电池的状态[1]。

目前,电池管理系统主要存在的问题:一是管理系统的可移植性较差;二是不方便对其进行功能扩展。辛喆[2]等人采用单片机进行控制,实现了对电源电压、电流和温度的实时监控,但系统的可移植性有待提高。蒋忠伟[1]等人通过向串口发送指令的方法对系统进行控制,但是系统对后续功能的扩展不完善。针对以上问题,本文采用国产嵌入式实时操作系统RT-Thread,选用STM32F103作为主控制器芯片,能够在很短的周期内开发出可应用于多种场合、功能完备的智能电池管理系统。另外,该系统也便于操作系统的移植,能够轻松实现串口通信、实时数据记录和监测,实现充电器的智能化。

简而言之,智能电池管理系统应该具有如下功能:精确提供(或者显示)电池状态数据(包括电池当前的端电压、实时温度、充电电流),提供必要的保护与报警功能,在充电过程中有保护报警措施(如过压保护、超温报警等)。

1 系统设计

1.1 控制器芯片选择

本系统采用STM32F103作为主控制器芯片,STM32F103有20KB内存、72MHz主频、各种外设支持[4-5],其控制器的固件库具备通用性,比较容易切换到其他的产品线。STM32F103拥有1~3个ADC,这些ADC可以独立使用,也可以使用双重模式。STM32F103的ADC是12位逐次逼近型的模拟/数字转换器,有18个通道,可测量16个外部和2个内部信号源[6];各通道的A/D转换可以单次、连续、扫描或间断模式执行,ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

1.2 系统硬件设计

为了实现电池的充电管理和控制功能,系统包括电池电压和电流信号采集电路、充电环境温度检测电路、电池充放电控制电路。其硬件框图如图1所示。

图1 系统硬件框图

图1中,电池的电压、电流和温度通过其ADC接口和传感器将模拟量转换为数字量,STM32F103控制芯片再根据采集到的数据和预设值进行比较,若超过限定值,则停止PWM,从而实现对电池的充放电控制。电池的充放电及工作参数采集系统如图2所示。

图2中,VBAT1、IBAT1、TBAT1分别为电池的采集电压、电流、温度参数的输出信号,通过调节PWM1和PWM2占空比来进行充放电的控制,直至电池完全充满。

电池的温度检测使用DS18B20数字温度传感器。DS18B20是一种具有单总线接口的数字温度传感器,具有体积小、功耗低和接口简单等特点,特别适合作为本系统的温度采集传感器。

图2 充放电及工作参数采集系统

2 电池安全因素

电池的安全因素包括充电电流、充电电压和充电温度。电池最大的充电电流与电池的容量(C)相关,最大的充电电流用电池容量的数值来表示。例如,电池的容量为750 mAh,充电电流为750mA,则电池的充电电流为1C(1倍的电池容量)。在电池充电的过程中,当充电电压超出电池典型值上限的时候就要停止充电,实现过充电压保护。

电池充电时,是将电能转化为化学能储存起来,但并不是所有的电能都被转化为化学能,一些化学能转化为热能,对电池起到了加热的作用。如果在充电的过程中,电池持续的升温导致电池过热,且不能及时停止充电就会导致电池损坏。在进行温度判定时,当电池温度超过一定限定时,就需要停止充电。当环境温度极低的时候,也需要采用充电温度与环境温度差值的方法来判定是否停止充电。

电池常用的充电方法有恒定电压法和恒定电流法。对于采用恒定电压法充电的电池,在充电过程中要进行相要对电池的电压进行检测,以便对电压进行限制。采用恒定电流法与恒定电压法进行充电时,其电压和电流随时间变化的典型曲线如图3所示。

图3 电流、电压变化曲线

3 系统软件设计

本系统采用国产嵌入式实时操作系统RT-Thread来进行电池的充放电控制。RT-Thread实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可裁减性。在 中,线程是最小的调度单位,支持256个线程优先级[7]。当内核进行最小配置时,内核体积只有3KB的ROM占用、1KB的RAM占用[8]。该操作系统支持在ARM7TDMI、ARM Cortex-M3、ARM920T、x86等多种嵌入式平台上的移植。操作系统的引入,可以加强电池充放电控制系统的快速性、实时性和稳定性,增强了该电池管理系统的可移植性,并且方便做后续的功能扩展。

3.1 RT-Thread的finsh shell系统搭建

首先,将系统的内核源码进行解压,打开其STM32F103分支的MDK工程文件。接着,向工程中添加finsh组件。finsh shell系统是RT-Thread操作系统中的命令行操作系统,方便用户进行调试、查看系统信息。要开启finsh工程,首先要在系统配置文件中添加finsh的宏定义,接着指定作为调试接口的串口号,最后使console设备与相应的串口相关,其配置语句如下:

所有的配置完成之后,使用Keil MDK进行编译,编译通过之后再运行。如果串口打印出RT-Thread的logo和“finsh>>”字样,则表示finsh shell系统搭建成功,可以进行调试工作。其串口打印的信息如图4所示。

图4 串口打印信息

3.2 设备注册

在搭建好RT-Thread的finsh shell系统之后,需要对相应的接口和设备进行注册。首先要完成相关I/O口的配置,并通过写控制寄存器的方式初始化相关寄存器,然后再来定义相关设备。在RT-Thread操作系统中,设备被认为是一类对象,每个设备对象都由基类对象派生而来,继承了父类对象的属性[9]。这里,需要定义系统的ADC设备,设备的定义通过RT-Thread内部结构体rt_device来完成。该结构体的主要成员如下:

RT-Thread操作系统的rt_device结构定义了大多数设备的结构模型。所有系统支持的设备驱动实现的过程,就是实现该结构体内部接口函数的过程,这也是rt_device结构体的细节。其具体的接口函数如下:

以上init、open、close、read、write等接口函数都需要用户进行补充和完成,通过操作以上函数,便可以对设备进行相应的操作。

经过I/O口配置和定义相应的结构体之后,系统的设备驱动已经建立完毕,最后需要调用rt_device_register函数向系统注册相应的设备。注册并编译成功之后,用命令list_device()便可查询到该设备,效果如图5所示。

图5 设备查看情况

图5中,通过串口打印出了系统现在所支持的设备。ADC属于“Chrarcter”型设备。RT-Thread操作系统还支持多种类型的设备,如“Block Device”、“Network Interface”、“MTD Device”等,这样就使得系统的功能扩展变得非常方便。如果要添加新的设备,用户只要定义相应设备的结构体并进行注册,便可完成系统功能的扩展。

3.3 应用软件设计

系统的软件设计主要实现以下几个功能。首先,进行系统的初始化,然后启动PWM,接着启动定时器,设定系统的采样时间。在充电过程中,经过一段时间之后,系统便进行采样,根据其采集到的充电电流、电压、温度与预设值进行判断,过满则判停,关闭PWM。其软件流程图如图6所示。

图6 软件流程图

4 测 试

首先,设定好判定的初始值和采样的时间间隔,并设定每30s向串口输出一次采样结果。本次测试在室温条件下进行,在3.3V的电压下采用恒定电压法进行充电,可以将整个系统通过相应串口连接至PC机,通过串口工具来调试充放电的过程,并可以观察电池相应的状态,如图7所示。

图7 串口打印信息

可以看到,每到设定的时间,系统便会将采集到的电池的温度、电压、电流等数据通过串口显示出来,这样便实现了对电池充电状态的实时监控。前10次的采样结果如表1所列。如表1所示,在3.3V的恒定电压下,电池的充电电流变化基本符合采用恒定电压法充电时电流的变化曲线。

表1数据采样结果

继续进行测试,电池的充电电流和温度的变化曲线如图8所示。电池的温度在充电的过程中先升高,达到32℃左右的时候开始下降。电流的变化曲线则符合按照恒定电压法充电的典型曲线,当电池的充电电流过小时,系统便停止充电,从而实现对电池的过充保护。

结 语

图8 电流和温度曲线

本文设计的智能电池管理系统,选用STM32F103芯片作为主控制芯片,采用国产实时操作系统RT-Thread作为控制系统,增强了系统的实时性和可扩展性,可以实现对电池充放电过程的监控及保护。在以后的研究中,可以对该系统做出功能扩展,使其适用于更加复杂的环境。

[1]蒋忠伟,孙一鸣,胡晓吉.基于嵌入式计算平台的智能电池系统的设计[J].计算机工程与设计,2011,32(6):1970-1974.

[2]辛喆,葛元月.基于单片机的纯电动汽车电池管理系统设计[J].农业工程学报,2014,30(12):163-169.

[3]黄正佳,袁永斌.智能电池模块[J].电源技术,2002,26(5):379-382.

[4]曹成.嵌入式实时操作系统RT-Thread原理分析与应用[D].青岛:山东科技大学,2011.

[5]陶杰,王欣.基于STM32F407和OV7670的低端视频监控系统[J].单片机与嵌入式系统应用,2014(3):60-62.

[6]张旭,亓学广.基于STM32电力数据采集系统的设计[J].电子测量技术,2010,33(11):90-92.

[7]李琦,李梅.基于RT-Thread的工业远程控制器设计[J].实验室研究与探索,2013,32(9):61-64.

[8]司梦如.基于RT-Thread的NANDFLASH文件系统中间层的设计与实现[D].合肥:安徽大学,2012.

[9]陈俊彦,何燕.RT-Thread和QT的可视化印花机控制系统设计[J].单片机与嵌入式系统应用,2014(7):46-49.

李云红(副教授),主要从事红外热像测温技术、图像处理、信号与信息处理技术研究。

Battery Management System Based on RT-Thread

Li Yunhong,Tian Jida,Chen Hang
(College of Electronic Information,Xi'an Polytechnic University,Xi'an 710048,China)

In order to ensure the safety of the battery during the process of charge and discharge,aiming at the existing problems of the battery management system such as no good portability and not easy to do the function expansion,the paper proposes an intelligent battery management system.The system adopts domestic embedded real-time operating system RT-Thread,and uses STM32as the main controller chip.The test results indicate that the charge and discharge process of the system can monitor the battery real-time,the reserved interface is convenient to do the function expansion.

RT-Thread;STM32;battery management system

TP302.1

A

��薛士然

2015-01-23)

猜你喜欢

充电电流充放电串口
V2G模式下电动汽车充放电效率的研究
浅谈AB PLC串口跟RFID传感器的通讯应用
一种新型蓄电池充电控制策略研究
基于SG3525的电池充放电管理的双向DC-DC转换器设计
铅酸蓄电池充电器设计与实现
空载母线电容测量及充电电流计算
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
一种平抑光伏和负荷波动的电动汽车有序充放电策略