基于耦合通信链的电池电量监测系统

2018-07-19 08:11叶益阳阮立徐恒李伟权江晓红葛凯杰
小型内燃机与车辆技术 2018年3期
关键词:总线控制器电池

叶益阳 阮立 徐恒 李伟权 江晓红 葛凯杰

(1-台州市质量技术监督检测研究院 浙江 台州 318000 2-金浪科技有限公司3-浙江方圆检测集团股份有限公司)

引 言

在海洋环境监测领域,传感器设备电池供电的稳定性是一个重要的指标,它将直接影响到传感器能否正常工作,通过在线监测电池参数,可以及时了解电池的工作状态、,具有速度快、测量方便等特点。在众多的参数中,最直接的一个参数是电压检测,也是最常采用的检测方法[1]。CAN总线属于现场总线的范畴,它具有扩充性好、可靠性高、多主结构等特点,通信距离达到10 km,传输速率最高到1 Mbps。支持分布式控制、实时控制与远程控制[2]。耦合数据通信系统的传输介质为一条简易的包塑缆,具有安全性高、装卸简便、允许节点损坏的特点,有助于垂直剖面的多种传感器任意位置、长距离、实时的数据传输,实现长距离的水下组网通信,它的优势是体积小、功耗低、成本低。

1 系统硬件设计

水下电池电量监测系统的整体结构如图1所示,主要由传感器网络、耦合链通信系统、卫星通信系统组成。传感器节点之间组网通信采用双路CAN总线可靠传输方式。电池电量监测系统为传感器设备提供电池检测接口,采集传感器的电池电量信号,也通过CAN总线接入传感器网络。水下多传感器节点将监测数据传输给传感器节点1进行存储,作为汇聚接收器,然后通过锚系耦合通信链,采用耦合数据通信(ICC)[3]方式,实现汇聚接收器与浮标数据平台之间的实时通信,最后浮标数据平台通过卫星通信方式将环境监测数据发送给陆地监控中心。

图1 电池电量监测系统整体结构

微控制器选用ST公司推出的STM32互连型芯片STM32F107[4],此芯片集成了各种高性能工业标准接口,它自带两个12位AD(模数转换器),拥有两路CAN2.0接口,在性能与功能方面完全满足系统的设计要求。

电池电量监测系统内部框图如图2所示,主要由电压采集,电压处理、数据传输3部分组成。系统提供16路电压采集接口,各传感器电池两端可依次连到每个电压采集电路接口。采集到的电压信号接至16路选1模拟开关的输入通道,MCU通过4路地址译码端口控制通道的开闭,被选通的一路电压信号经模拟开关的输出端口进入MCU,MCU的自带ADC处理该信号并送入CAN接口,然后,CAN总线收发器对其进行电平转换和差动收发,从而信号即可通过CAN总线接入传感器网络进行传输。

1.1 电压采集电路

系统设计了16路的电压采集电路,可分别同时对16路的电池电压进行采集。电压信号的采集采用双电阻分压的方法,将实际电压经过电阻分压转化到芯片的测量电压范围内,该模式可通过简单电路实现,具备较低成本、较长寿命,不过存在难以消除的累积误差。而差分放大器可以克服共模信号的干扰,而只对差分信号进行处理,故通过差分运放将电池两端引出[5]。该方案如图3所示,结合运算放大器的特性,得到电路的输出信号与输入信号关系为:

图2 电池电量监测系统内部框图

这里取 R1=R2=10 kΩ,R3=R4=5 kΩ,R1、R2、R3、R4均为1%的精密电阻,因此有:

由于差模信号V+V-可正可负,所以必须提高Vref以便进行模数转换。这里取Vref=3.3V。经过差分放大器之后,电压信号才进行电阻分压,由于STM32F107控制器的基准电压采用+3.3 V,故此时的电压信号输入范围须小于或等于3.3 V。如图4所示。

图3 电压采集电路图

这里取 R5=1 kΩ,R6=200Ω,得 Vad≤19.8 V,又结合公式2可知,电池电压V+-V-≤33 V。R5和R6为分压电阻,均选用精度为1%的金属膜电阻。

1.2 电压处理电路

系统利用模拟开关将采集的每个电池电压引出,就可以顺序选通16路电压进行处理,模拟开关芯片选择德州仪器的CD4067。CD4067是一种数控模拟开关,通过内部地址译码,截止漏电流低、导通阻抗低。CD4067是16路选通开关,具备一个控制端口C和四个输入地址端口A0~A3,通过输入的二进制组合选通任意一路开关,而当C端口置1时,通道全部关闭。这里将控制端C固定接地,保持芯片使能。

如图4所示,16路的采集电压分别接入CD4067的16个输入/输出通道,4路地址译码端口分别与STM32F107控制器的4个I/O口PC0~PC3相连,CD4067的I/O端口后接3.3 V的稳压二极管,保证选通后的采集电压不会超过3.3 V,同时后续的电压跟随器提高了电路的输入阻抗,降低了输出阻抗,可极大提高后续电路的带载能力,也对前后级电路起到隔离作用。STM32F107自带A/D转换器,精度为12位,对应数字范围为0~4 096。STM32控制器有个很大的优点,其A/D转换输入引脚可以是任意GPIO,这里将PA0作为电压量的ADC输入端。

1.3 数据传输电路

系统采用CAN总线进行数据传输,CAN总线具体连接如图5所示,总线收发器采用芯片SN65HVD230D,实现物理总线与CAN控制器之间的差动收发和电平转换。由图5可以看出,STM32的CAN接口输出端口(即PB6)与SN65HVD230D的数据输入端D相连,从而把CAN节点发送的数据传输给CAN网络;CAN接口接收端口(即PB5)接到SN65HVD230D的数据输出端R,完成数据的接收。这里将SN65HVD230D方式选择端口Rs控制引脚接地,选择工作的模式。这样就可将转换与处理过的数字电压传输到CAN总线上。

2 系统软件设计

系统的软件设计包括主控制器的软件设计和上位机的监控软件设计,其中主控制器软件设计主要包括电压处理软件和总线传输软件。主控制器的程序采用嵌入式C语言编写,上位机监控软件采用VC++语言编写。

2.1 主控制器软件设计

图4 电压处理电路

图5 CAN总线接口电路

主控制器软件流程如图6所示。首先,系统上电复位,对各个模块初始化,主控制器通过写入模拟开关的地址译码端,选通CD4067的通道1,使该通道上的电压信号进入主控制器,然后将采集来的模拟电压进行A/D转换,并将得到的数字电压信号进行处理,然后对数据进行打包,接着将数据送至CAN总线。最后,将通道号加1,判断是否为17,即是否超过了16个通道的范围。若是,则将通道号重新初始化为1,并选通通道1进行相同的采集与处理;若不是,则选通该通道进行相同的采集与处理。经测试,开通下一通道需要加延时30 ms,以便上位机软件进行实时的数据刷新与适时停留。这样就轮流选通了模拟开关的16个通道,完成对每一路电池电压信号的采集与处理。

图6 主控制器软件流程图

2.1.1 电压处理软件设计

电压处理部分主要包括对模拟电压的A/D转换与对数字电压的处理。模拟电压的A/D转换主要完成对主控制器ADC的初始化配置,模拟量输入GPIO的配置及开始转换。

AD转换完成后需要处理已得到的数字电压,因电压量信号变化较缓,软件考虑选用平均滤波算法。对N个数据进行连续采样,并将A/D转换后得到的数字电压进行累加,接着对N个数据的算术平均值进行计算。经过反复试验,N取20时可实现理想的效果。该算法可以排除因脉冲干扰所导致的采样值偏差,屏蔽偶发的脉冲性干扰影响。

2.1.2 总线传输软件设计

总线传输部分主要是完成将通道号和处理过的数字电压传输到CAN总线上;总线传输软件设计主要由系统初始化、数据处理与打包和发送程序3个部分组成。系统初始化的作用是初始化全部的报文对象,主要包括单个消息的仲裁ID,对单个消息是接收报文还是发送报文的定义,本消息的消息号和报文通信的数据长度。数据处理与打包的对象是经A/D转换和处理的数字电压,先将十进制的数字电压的千位、百位、十位、个位分别拆分出来,选取数据长度为5,其中发送邮箱的数据数组的第0字节用来存储当前数字电压所对应的模拟开关通道号,剩下4个字节则用来存储已经拆分出来的千位、百位、十位、个位数,这样就完成了数据发送前的所有准备工作了;发送程序通过CAN控制器自主实现,完成数据采集后将发送缓冲器清空,将待发送的报文写入CAN模块发送缓冲器,并开启发送指令,报文随之发送出去。

2.2 监控软件设计

监控界面使用Visual C++语言[6]进行设计,主要任务是接收数据、处理数据和数据显示与存储,接收数据主要完成对水下打包传输过来的通道号与处理过的数字电压信号的接收;处理数据则是在打包发送过来的数组中,将通道号与数字电压的千位、百位、十位、个位区分开来并分别处理,首先将数字电压的千位、百位、十位、个位重新组合为0~4 096的一个4位数字,这样就重新得到了经滤波处理的数字电压值Vd,然后将

Vd转换为进入MCU前的模拟电压值Va:

接着根据电路,将Va换算回电池两端的电压,由公式3得:

又由公式2得:

又由公式4得:

这样就得到了由数字电压直接转换回电池电压的公式。这里电池电压取小数点后4位有效数字。

电池组各通道的备注名称和设定数据显示与存储是通过上位机的监控界面完成的,监控界面如图7所示,主要包括串口通信参数设置、数据存储设置和接收区电压显示。打开串口后,可每隔30 ms在各通道对应的文本框里显示相应传感器的电池电压值。开始存储后,可存储各通道的历史电压数据以供查阅。其中,双击通道号可以更改各通道的备注名称。

图7 上位机监控界面

3 实验结果与分析

在水下运用本系统,由于传感器的供电电压为12~24 V,故抽取12~24 V电压进行测量,每隔4 V取一个测量点,每个测试点记录上位机显示电压的8个数据,如图8所示。从图中可以看出,最大绝对误差基本上可以保持在0.17 V以内,绝对误差与相对误差都随着测量电压的升高而有所增加,这是由于系统在硬件和软件方面的累积误差造成的,是允许的,其中最大相对误差小于0.7%,完全可以满足实际应用需求。

图8 传感器供电电压测试结果

4 结论

本系统选用STM32F107单片机作为控制核心,利用CAN总线组成传感器网络,克服了水声通信价格昂贵速率低的缺陷,耦合链通信系统体积小,功耗小,也减少了系统成本,水下组网方便,非常适合海洋环境的数据传输。本系统适合长距离传输,利于远程操作,极大地扩充了电池检测技术的数量和范围。本文中的系统经反复试验,可以实时掌握电池电压参数,并达到了预期的精度要求,满足了实用性与可靠性的指标,可广泛应用于水下设备的电池电压监测领域。

猜你喜欢
总线控制器电池
电池很冤
“一粒盐电池”
工商业IC卡控制器改造为物联网控制器实践
把电池穿身上
穿在身上的电池
一种基于CAN总线的误码测试方法
CAN总线并发通信时下位机应用软件设计
基于CAN总线的水下通信系统设计
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列