
浅析基于STM32的低功耗无线电池监测系统的设计.docx
6页浅析基于STM32的低功耗无线电池监测系统的设计目前电池行业在管理系统方面研发的重点都放在大规模电池组的监测及单体电池均衡上,对于应用在其他场景的电池管理系统投入较少尤其像库房内待维护的蓄电池、工厂里零散分布的起动电池等,目前很少有相应的监测装置对其进行有效地监管对于此类电池,传统的管理方式是人工巡检,这种方式存在很大的弊端,因为用万用表、放电计等设备短时间内无法判断蓄电池真实的荷电状态及健康状态等针对以上问题,相关领域人员提出的很多解决办法都是围绕给电池加装无线全寿命监测装置等思路展开的比如文献[1]提出的基于Wifi技术的军用蓄电池智能化管理系统,他的做法是在蓄电池上安装一个Wifi数据采集装置,该做法管理方式灵活,拓展性好,但是Wifi节点的功耗问题文中并没有给出解决办法类似的还有文献[2]提出的基于物联网的蓄电池SOC监测系统,仍然存在Wifi节点耗电大的问题文献[3]利用Zigbee设备自组网的特性,开发出基于ZigBee无线网络的电池监测系统,其为了减小Zigbee天线对电池电量的损耗,将电池与上层控制器的通信策略设置为智能电池定时打开天线向上层控制器发送数据,发送完成后自动关闭天线以实现低功耗的目的,导致上层控制器不能随时访问智能电池,灵活性差。
文献[4]提出一种“低频唤醒+高频通信”的蓄电池监测策略,使蓄电池保护板在不和阅读器通信时保持掉电状态,大大减少了保护板待机时的功耗,但是其没有解决同时唤醒多个蓄电池保护板时的标签碰撞问题,而且其采用的Zigbee模块仍具有通信距离近、功耗相对大等不足因此,针对蓄电池监测系统存在的上述问题,文中将集成了低功耗单片机、A/D采集模块、RFID通信模块及低频唤醒模块[5]的监测电路板封装到电池上,借鉴汽车PKE无钥匙系统的理念,设计了一款基于STM32单片机的低功耗无线电池监测系统,该系统具有唤醒距离远、唤醒信号发射接收天线小、功耗低等优点,同时加入标签防碰撞算法,大大提高了通信成功的机率1、系统硬件设计1.1系统总体设计结构该系统可细分为蓄电池监测板、手持机PDA和数据管理系统三部分(见图1)其中蓄电池监测板实时监测蓄电池电压、电流、温度参数,依托相应算法实时估计电池SOC、SOH和内阻等状态信息,接收手持机发射的125kHz低频唤醒信号,唤醒RFID通信模块,并与手持机通过RFID模块进行无线通信手持机可以发射低频载波间接唤醒蓄电池监测板的RFID模块并与之通信,获取蓄电池状态信息将其显示在OLED屏幕上,并存储在非易失性存储器中。
数据管理系统可通过USB通信方式获取手持机PDA存储的蓄电池信息,并将其放入Sqlite数据库中供管理人员查看图1 系统结构框图1.2蓄电池监测板设计蓄电池监测板主要包括电源电路、A/D采集模块、低频唤醒模块、RFID通信模块和微控制器组成(见图2)其中微控制器采用STM32L151CCT6单片机,该单片机位宽32位,活动模式耗电180μA/MHz,低功耗运行模式下电流仅为8.6μA,可支持最大32MHz系统频率内部集成12位A/D转换器,采样速率可达16MHz,完全满足目前主流SOC估计算法的硬件要求图2 监测板结构图A/D采集模块主要采集电池端电压、电流、基准电压和温度,其中A/D采集功能由单片机的12位ADC片上外设实现为降低功耗,电池端电压采集不经过光耦等其他隔离器件,而是电池端电压由精密电阻分压后,再经电压跟随器隔离接入单片机ADC端口方式实现,最大限度减少外部模块的接入,降低电路复杂性[6]电流采集由霍尔电流传感器、电压跟随器等组成MAX6120芯片为A/D模块提供1.2V的外部基准,工作电流仅为50μA(见图3)图3 A/D采集电路原理图RFID模块的核心是nRF24L01无线通信芯片,该芯片体积小,功耗低,数据速率支持500kbps~2000kbps可编程控制,工作电压为1.9V~3.6V,工作在2.4G波段,发射接收时电流消耗仅为11mA。
有6个相互独立的接收通道,通道地址均为5个字节,其中通道1~5接收地址共用高4个字节本系统中nRF24L01工作在2.4G的频率上,采用GFSK调制方式,数据速率为500kbps,6个接收通道全部使用为了减小功耗,该芯片平时处于掉电模式,此模式下电流消耗900nA低频唤醒模块主要由GC3933低频唤醒芯片和CAS13D31三轴天线组成(见图4),该模块借鉴汽车PKE无钥匙进入系统的思路,GC3933通过三轴天线感应到外部125kHz载波信号后,如果调制信号与GC3933预先设定的引导码、模式匹配码一致,则产生WAKEUP中断信号给单片机,从而间接唤醒处于掉电状态的nRF24L01模块,实现与手持机的通信GC3933低频唤醒芯片工作时耗电仅为2.5μA图4 低频唤醒模块电路原理图电源模块使用LM2575和AMS1117电源芯片,LM2575的输入为蓄电池本身,输出5V电压,后接AMS1117,输出3.3V这样设计是因为5V可为霍尔电流传感器及运放供电,除去以上二者,其他所有模块均为3.3V供电1.3手持机设计手持机(PDA)主要由电源电路、RFID模块、低频发射天线电路、FLASH存储芯片、OLED屏幕和微控制器组成,并留有与上位机通信的USB接口(见图5)。
微控制器为STM32L152RCT6单片机,电源电路分为主电源与备用电源,备用电源为纽扣电池,负责给RTC(实时时钟模块)供电,当主电源关闭时,备用电源能保证RTC的正常运行主电源为12V锂电池,负责手持机其他模块的供电RFID模块与蓄电池监测板配置相同,同样采用nRF24L01低频发射天线电路包括125kHz的T型PKE发射天线及其驱动线路,其中驱动芯片采用MCP14E5,该芯片是支持最大4A电流的门驱动器,为使PKE发射天线具备足够的发射功率,该驱动芯片采用12V供电FLASH模块采用容量为32M的W25Q256芯片,用来存储蓄电池状态信息考虑到在军队及某些企事业单位,蓄电池信息作为单位内部信息,不能上传到互联网,因此手持机采用USB有线连接方式向数据管理系统传达蓄电池状态信息图5 手持机结构图1.4数据管理系统数据管理系统采用C++编程,并结合Qt5软件平台进行开发,主要完成数据存储、分析和管理功能内置Sqlite数据库用来存储蓄电池状态信息,可视化操作界面配合Sqlite数据库使得蓄电池管理人员方便地对蓄电池进行批量管理数据管理系统通过USB接口连接手持机并与之通信,获取最新的蓄电池状态信息并导入自身数据库。
2、软件程序设计采用软件来代替硬件也是低功耗系统设计常用的措施本系统程序设计综合考虑了电源管理和工作效率两方面的问题,以降低系统的功耗[7]2.1监测板软件设计监测板封装到电池内部之后,以电池本身作为电源,开始对蓄电池运行状态进行全寿命监测监测板上电后,首先进行A/D采集模块的初始化,以DMA方式采集MAX6120基准电压和蓄电池电压、电流、温度等外部参数,经过软件滤波处理后作为蓄电池SOC估计算法的输入变量[8]随后对GC3933低频唤醒芯片初始化,根据三轴天线调整其并联电容使谐振频率为125kHz,配置其工作模式为载波+前导码+模式匹配+数据模式(见表1),并开始监听空气中的载波表1 低频唤醒命令帧格式接下来nRF24L01的初始化,将其配置为掉电模式以减小节点功耗随后进入主循环程序,主程序的设定为在低功耗运行模式下运行以电压、电流和温度作为输入的SOC估计算法当检测到环境中的载波、前导码且模式匹配成功后,GC3933产生WAKE-UP中断,单片机进入中断程序,接收PDA发来的低频唤醒命令帧低频唤醒命令帧中前导码和模式匹配码由GC3933芯片处理,数据部分由单片机处理在本系统中,数据部分由数组LF_Databuff定义,其具体内容见表2。
表2 低频唤醒命令帧中的数据数组LF_Databuff定义帧解析完成后,监测板根据PDA发来的命令字节Command及接收通道地址,向PDA返回相应的蓄电池信息帧,蓄电池信息帧中的前导码和CRC校验码由nRF24L01自动完成,数据部分由数组RF_Databuff定义,其具体内容见表3表3 蓄电池信息帧中的数据数组RF_Databuff定义低频唤醒命令帧中的命令字节Command分为广播读取和指定ID读取两种,广播读取为接收到唤醒帧的监测板均向PDA返回蓄电池信息帧,指定ID读取则是仅具有相应ID的监测板返回蓄电池信息帧,指定的ID为唤醒命令帧的Spec_ID字节为避免PDA广播唤醒时,多个监测板返回的数据帧发生标签碰撞、影响通信效率的情况发生,在这里提出一种标签防碰撞设计(见图6)图6 监测板软件设计流程图标签碰撞是指一个阅读器同时收到多个标签返回的信息,一旦碰撞发生,很有可能发生数据错误,造成标签识别不了或者漏读的情况发生常见的防碰撞算法可分为空分多址(SDMA)、时分多址(TDMA)、频分多址(FDMA)和码分多址(CDMA)四种[9],提出一种随机多通道+时分多址+ACK机制的防碰撞设计。
监测板和PDA采用的RFID模块为nRF24L01,该模块有6个接收通道,单独接收,互不影响在PDA向监测板发送的低频唤醒命令帧LF_DataBuff中,包含这6个接收通道的地址,监测板会随机向其中一个接收通道返回蓄电池信息帧这个随机数的产生过程是监测板单片机另开一路A/D采样通道,采集一悬空引脚的电压值,从而获得一随机数,而后将随机数对6取余,获得0~5之间的一个随机整数N,分别代表着nRF24L01的6路接收通道这样,被广播唤醒的多个监测板就被分为6组,各组之间互不干扰同一组内的监测板标签防碰撞策略采用时分多址法,意思是不同的监测板被唤醒后经过不同的延时再和PDA通信具体做法为监测板在选定接收通道后,从0~9之间产生一个随机整数M,随机整数M的产生与上文N的产生方式相同,然后经过M×100ms的延时后,向PDA发送蓄电池信息帧这样监测板标签也有可能随机到相同的延时发生碰撞,但是概率很低,而且nRF24L01有自动重发机制,当监测板发送蓄电池信息帧后转入接收模式,等待PDA的ACK信号,接收到ACK信号后才确认发送完成,进而转入掉电状态,否则继续发送直至达到最大重发次数,本系统中,最大重发次数设置为15次。
经测试,随机多通道+时分多址+ACK机制的防碰撞设计具有很好的效果,大大降低了标签碰撞的概率2.2手持机软件设计手持机负责读取蓄电池状态信息并将FLASH中存储的蓄电池信息传给上位机手持机上电后,首先初始化nRF24L01为接收模式,随时准备接收监测板发来的蓄电池信息帧而后初始化PKE天线,想要获取蓄电池信息时,PDA通过PKE天线发送低频唤醒命令帧,帧格式见表1随后等待监测板返回蓄电池信息帧,帧格式见表2成功收到蓄电池信息帧中的数据后,将表4所示的RTC中的实时时间字节加入到蓄电池信息帧后面,构成新的蓄电池信息帧,并以此格式存入Flash中表4 实时时间字节至此,每个蓄电池信息帧在Flash中占用32字节,本系统中使用的Flash为W25Q256,存储空间为32M字节,可存储100万个蓄电池信息帧,完全满足企业单位对电池管理的需求除此之外,手持机可以将读取的蓄电池信息通过OLED屏幕显示出来,并支持按键功能以便广播读取时可以查看多个电池信息2.3数据管理系统软件设计由于手持机本身已经具有数据存储的功能,所以数据管理系统是作为手持机的补充而存在,在功能上也较为简洁数据管理系统软件程序主要包括两部分,基于Sqlite数据库的可视化界面设计以及与手持机通信的USB通信程序设计。
可视化界面设计是基于Qt5的Model-View框架搭建的,将QSqlDatabase类。












