通信机房设备在使用蓄电池应急供电时,针对蓄电池工作状态的各参数进行实时远程监测,并能根据电压阈值手动或自动控制负载的通断,保护蓄电池避免亏电损坏和确保设备正常运行的功能需求,综合运用单片机结合电子测量技术、通信技术和计算机软件技术,从软硬件和协议的设计实现入手开发本系统,为蓄电池远程监测和控制提供了有效的解决方案,并可方便推广应用到其他需要实时监控蓄电池的场合。
【关键词】电池监测器 STC单片机 AT指令 远程监控 欠压保护
近年来,随着通信行业的飞速发展,通信机房和机房设备总量大幅增加,通信运营商出于对其服务质量提升的要求,机房监管趋向无人值守和远程集中管理。通信机房往往给诸如传输设备、服务器及监控摄像头等用电设备配置有蓄电池作为备电,以便在市电停电时能支撑设备运行一段时间,而除了高端的UPS系统之外,普通蓄电池的工作状态缺乏有效的监控手段,比如需要实时远程了解蓄电池的电压、电流、温度和电量等关键参数,并在蓄电池将要亏电的情况下切断负载来保护蓄电池的使用寿命。于是需要设计开发一套可在局域网或广域网中使用的通信机房电池组远程监控系统,以满足尤其是中小型机房蓄电池的监管需求。
1 总体设计
本系统整体架构分为下位机和上位机两部分。其中下位机包括微控制器板、?池监测板、通信适配模块、继电器模块、温度传感探头五个组成部分;上位机软件则部署在一台计算机上,与下位机通过以太网连接。系统总体结构如图1所示。
微控制器板选用工业级抗干扰能力强的高速1T单机器周期指令单片机STC15W204S开发。电池监测板核心组件采用集成度高的电池监测器DS2438芯片。通信适配模块内嵌有TCP/IP协议栈,提供微控制器UART串口转以太网Ethernet功能,实现有线联网,也可以增加无线WIFI模块,实现无线联网。在计算机端则使用易于上位机开发的虚拟串口方式进行通信。继电器模块用于接通和关断负载用电设备和蓄电池之间的连线,采用底成本的机械继电器即可。电池监测器芯片内部已带有直接数字化的温度传感器,可监测芯片内部工作温度,在本系统中用于监测机房环境温度。但要监测蓄电池的温度,且要考虑方便安装则需要另外的温度传感探头,此处优选金属壳贴片式DS18B20便于粘贴蓄电池表面测温。机房环境温度和蓄电池表面温度两者具有相关性,可更精确的融合判断蓄电池工作情况。
上位机软件通过计算机的以太网物理端口(逻辑上则是虚拟串口)向下位机发出自定义好的AT指令。指令数据先通过通信适配模块转换,即IP包数据流转换成串口TTL电平数据流,并被微控制器STC15W204S的UART口接收。再由微控制器响应具体的指令请求来控制电池监测板,如读取DS2438芯片中的电池电压、电流、电量和芯片温度对应的寄存器值,以及读取DS18B20的温度值,随后经过微控制器解析与转换数据格式,再回传至计算机上位机窗体中显示。通过上位机可远程控制继电器模块通断负载,也可预先设置蓄电池欠压保护阈值来自动通断负载,避免蓄电池亏电使用。
2 电池监测器
作为电池监测板的核心部件DS2438,其片内具备一的64位硅序列号,自带40字节非易失EEPROM存储器存储电池相关参数,与微控制器之间使用1-Wire接口,除地线外仅需1条连线。在单一芯片内即可完成对电池的电压、电流、温度和电量的数据采集,并内置优化算法,采样数据准确度高。
DS2438的状态配置寄存器内为较经常访问的数据,具体位的数值为0或1。格式如图2所示。
IAD为电流A/D控制位,1表示电流A/D和ICA启用,电流测量将以36.41Hz的频率采样,0表示电流A/D和ICA被禁用。CA 为电流累加器配置位,1表示CCA/DCA启用,数据将被存储并能取回数据,0表示CCA/DCA被禁用。EE为电流累加器映射选择位,1表示每次相应的寄存器递增时CCA/DCA计数器数据能够被映射到EEPROM,0表示CCA/DCA计数器数据将不会映射到EEPROM,随着电池组放电CCA/DCA可能会丢失。AD为电压A/D输入选择位,1表示电池输入VDD被选作DS2438电压A/D转换器的输入,0表示通用A/D输入VAD被选作DS2438电压A/D转换器的输入。对于任一种设置电压转换命令将会初始化电压A/D转换器。以上寄存器位的默认值都是1。
TB为温度忙碌标志,1表示温度转换正在进行, 0表示温度转换完成。NVB为非易失性存储器忙碌标志,1表示从中间结果暂存器复制到EEPROM正在进行,0表示非易失性存储器不忙。复制到EEPROM可能要花费2ms到10ms,在低供电电压下花费时间更长。ADB为A/D转换器忙碌标志,1表示电池电压的A/D转换正在进行,0表示转换完成或没有测量值要被转换,A / D转换大约需要10 ms。X为无用位。
DS2438初始化配置操作程序实现举例:
void ds2438_init(void) //初始化配置寄存器
{
WritePage(page(0)); //写**页,即page0的地址
WriteByte(0X07); //设置page0配置寄存器Byte0为:IAD =1,电流A/D启用;
//CA=1,启用电流累加器;EE =1,电流值、累计值映射到EEPROM;
//AD =0,电压输入选择为通用电压输入;其它为状态标志
CopyPage(page(0)); //将page0的瞬时电流、电压、温度等易失数据
//复制到片内EEPROM存储
}
void WritePage(unsigned char PageX) //写DS2438中间结果暂存器PageX {
reset_presence(); //发送复位脉冲
WriteByte(0xCC); //跳过读取64位芯片编号,节省时间
WriteByte(0x4E); //写堆栈指针
WriteByte(PageX); //写寄存器PageX地址
}
3 通信协议设计
上位机和下位机之间通过自定义的通信协议进行双向通信。下位机向上位机发送数据为上行通信,上位机向下位机发送数据为下行通信。协议设计要考虑松耦合、可扩展和便于维护,上下位机之间方便并行开发,而AT指令一般应用于终端设备与PC应用之间的连接与通信,已被大家普遍认同,本设计借鉴并发展了AT指令。有开发能力的用户也可根据本协议自行开发上位机软件。串口通信波特率默认为9600bps-8-N-1,信息帧为ASCII码,可通过串口调试工具进行协议验证调试。
3.1 上行数据通信协议设计
上行数据样本举例解释如下(电流的+-表示电流方向,+表示充电,-表示放电;字段间以“,”作为分隔符):
$000000D3C19A,VOL=13.252V,CUR=-10.170A,BAT=18.226C,CHIP=13.513C,QUA=18934mAh,REL=1,CLO=10.8V,OPE=11.8V
$符号作为起始字,代表上行数据开始。“监测板ID”即DS2438序列号为000000D3C19A。“当前电压”值为13.252V。“当前电流”值为-10.170A。“电池温度”值为18.226摄氏度。“芯片温度”值为13.513摄氏度。“电池电量”剩余值为18934mAh。“负载通(1)断(0)”表示当前负载为接通状态。已预设的“欠压关断负载值”为10.8V。已预设的“恢复接通负载值”为11.8V。数据末尾带回车换行。
“欠压关断负载值”和“恢复接通负载值”之间保留1V电压间隔是为防止蓄电池电压在阈值临界点附近因抖动导致继电器不断在关断和接通之间跳动。
3.2 下行数据通信协议设计
(1)“查询”指令:ATG
即请求一条包含当前所有状态值的上行数据,返回举例:
$000000D3C19B,VOL=10.707V,CUR=0.536A,BAT=+30.080C,CHIP=+27.156C,QUA=1077mAh,REL=0,CLO=10.8V,OPE=11.8V
考虑到下位机采集数据和转换数据需要时间,上位机在操作两次“查询”指令时较小时间间隔为2秒(亦为缺省值,较大间隔为1小时)。
(2)“关断负载”指令:ATC,返回:OK。操作后REL=0,用于控制继电器模块关断蓄电池给负载的供电。
(3)“接通负载”指令:ATO,返回:OK。操作后REL=1,用于控制继电器模块接通蓄电池给负载的供电。本指令受“欠压关断负载值”约束,当电池电压在低于“欠压关断负载值”时,操作ATO指令接通负载无效。
(4)“欠压关断负载值”配置指令:ATL。举例:ATL10.8,返回:OK,操作后CLO=10.8V。
(5)“恢复接通负载值”配置指令:ATH。举例:ATH11.8,返回:OK,操作后OPE=11.8V。以上每条指令和返回的数据末尾带回车换行。
4 上位机软件功能设计
上位机软件基于JAVA语言开发,开发平台为Eclipse Java EE IDE for Web Developers,使用RXTX串口API包mfz-rxtx-2.2-20081207-win-x64。上位机在Windows7及以上64位操作系统上运行需Windows 64-bit版本的JRE支持。软件功能窗体如图3所示。
“通信端口”默认自动选中当前可以使用的端口号,可选择“打开”或“关闭”端口。点击一次“手动查询”获取一次数据,并刷新窗体右侧数据。“恢复缺省值”,用于恢复出厂设置,即还原“欠压关断值”为10.8V和 “恢复接通值”为11.8V,其实是通过发送一次ATL10.8和ATH11.8组合指令实现。“关断负载”用于远程关断蓄电池给负载的供电,“接通负载”用于远程接通蓄电池给负载的供电。点击“自动查询”后将按照所设定的时间间隔自动获取数据并刷新窗体右侧数据。时间间隔可以设置为2~3600秒,即较小间隔为2秒(亦为缺省值),较大间隔为1小时。“欠压关断负载值”用于设置电池放电保护电压,低于此值负载自动与蓄电池断开,缺省值为10.8V。“恢复接通负载值”用于设置在蓄电池欠压保护后再次接通负载时所要达到的电压值,缺省值为11.8V。“电池标称电量”需预先手动录入。窗体右侧数据显示区中的负载“总功率”、负载“总电阻”、“电池电量”和“电量百分比”由相关数据计算得出。窗体较下方设有指令交互显示栏,便于监视当前正在交互的每条上下行原始数据。
铅酸蓄电池由于其大容量、高电动势、高性能、安全可靠等特点,被广泛应用到新能源、通信、电力等众多行业中。但是现有的充电控制器充电效率很低,而且不合理的充电方式造成容量快速下降,使用寿命缩短,电池过早废弃,每年废弃电池数量非常可观,造成的经济损失很大。因此,如何高效、快速、无损地对蓄电池科学充电是业界关心的重要问题。美、日、德等国家对蓄电池的性能和理论研究一直走在前面,有关充电技术的研究起步也较早,控制技术也相对成熟,陆续提出了一些新型的充电方法,如脉冲式充电法、间歇充电法、智能充电法等。目前,国内市场上使用的智能充电控制器,多适用于市电电网[1]。但是充电时间比较长,充电方法过于单一,控制不当会对蓄电池本身造成损害,以至影响蓄电池本身的使用寿命。本文以DSP为核心控制器,采用三阶段充电策略,并结合模糊自整定PID控制策略,使充电电流自始至终保持在蓄电池可接受的充电电流曲线附近,有效提高铅酸蓄电池的充电时间和充电效率。
2总体设计思想
大容量蓄电池智能高效充电控制器的系统框图如图1所示,主要分为主电路和控制电路两个部分。包括:电源模块、充电主电路模块、模拟量检测模块、显示及报警模块和PWM驱动模块[2]。
系统工作原理:380V交流电压输入,经过变压模块和三相桥式整流、DC/DC变换模块转换成蓄电池可接受的充电电压。控制电路采用DSP芯片作为主控制器,实时采集蓄电池的充电电压、充电电流、温度等参数,通过DSP内部的AD转换为数字量并判断电池是否出现过压、过流和过热等故障。若出现故障,DSP立即关断,并发出声光报警。若检测正常,则采用
基于模糊自整定PID 控制算法产生相应占空比的PWM 脉冲来控制DC/DC变换电路,实现对电池进行充电。
3 硬件电路设计
3.1 三相全桥整流电路设计
三相全桥整流电路由六个二极管组成,采用不可控形式。将输入的380V/50Hz的交流电经过变压器变压后得到24V的单向脉动电压。之后采用电容滤波电路,滤除纹波得到较为平滑的直流信号。
3.2 DC-DC电路设计
设计中,采用BUCK电路实现DC-DC电路模块设计。电感电流工作在连续模式下。设计取浮充电压为13.4V。图中,Q1为主功率管,选用IRF640N,C1和C2主要用于滤除低频噪声,C3用来滤除高频噪声[3]。D2是为了防止蓄电池和充电器相连之间的回流对电路造成故障。
3.3驱动电路设计
DSP 产生的 PWM 信号经过缓冲器 SN74HCT244N,输出幅值为3.3V的脉冲信号,经过放大电路放大后得到幅值12V脉冲信号,输入到 IR2112 上经过隔离放大去驱动主功率管 Q1[4]。设计中,采用IR2112浮置通道驱动BUCK变换器主功率管IRF640N。
3.4温度检测电路设计
为了防止充电时的温度过高,对蓄电池的损坏,系统实时对蓄电池的温度进行监测。温度检测采用*制数字温度检测芯片DS18B20实现。采用外接电源形式,只需一根线与单片机的IO口相连,即可完成蓄电池的温度检测。
3.5信号采集调理电路设计
为了保证系统能够安全、稳定的工作,主控单元实时对蓄电池的充电电压和充电电流进行监测。然后将监测的信息送入DSP自带的AD中,通过分析和计算得到控制信号。系统电压采样时通过电阻分压实现的,采用两级运放实现电压信号的采集,**级运算放大器输出-5V~5V的电压信号;*二级运算放大器输出电压信号为0~3V,满足DSP的AD输入电压范围。充电电流的采样时通过采样电阻RT采样实现的[5]。电路如下图4所示。采样信号后加一个电压跟随器,提高了AD转换精度。图中的稳压二极管是用来防止采样信号电压**3.3V对DSP造成的损坏。
4软件设计
智能充电器采用三阶段脉冲充电模式,使充电电流紧紧跟随蓄电池的可接受充电电流曲线,避免蓄电池充电末期析气,也避免因电流过大导致的热失控。首先初始化,在该阶段完成中断初始化、PWM模块初始化及定时器初始化等。进入主程序循环,ADC采样数据实时对蓄电池充电过程进行监控,并判断是否满足恒流充电;若不满足,则判断是否满足恒压充电;若满足进入恒压充电,若不满足判断是否满足浮充充电,满足则进入浮充充电[6]。为了避免较化现象,在每一阶段充电完成后,及时对蓄电池进行放电去较化处理。充电过程中实时检测蓄电池充电温度,出现**温现象即报警,并实施温度保护控制。