基于nRF24L01+的飞行器状态监测系统研究

2022-01-18 08:32张月魁吴永红蔡惠华高小强
宇航计测技术 2021年4期
关键词:微控制器中断飞行器

张月魁 姜 祝 吴永红 蔡惠华 高小强

(1.北京航天计量测试技术研究所,北京 100076)

1 引 言

飞行器在运输、存储、飞行过程中需要对其各种状态进行监测用于判断飞行器的健康状况。飞行器需要监测的状态包括振动、冲击、温度、湿度、气压等。以往状态监测使用的传感器多采用有线方式连接至采集装置,电缆数量多,布线复杂,导致飞行器增加了负担,降低了有效载荷的携带能力。将传感器的数据传输方式变更为无线方式将可有效改善这一问题。

目前的无线传输方式包括ZigBee、WIFI、蓝牙等方式,其中ZigBee技术在飞行器状态监测中使用广泛。但ZigBee的传输速度较慢,有效数据的传输速度实测在24Kb/s左右,当需要采集频率较高的冲击数据时,该技术不能保证数据传输的有效性,需要在数据处理时采用相应算法对欠采样的数据进行处理,甚至可能无法得到有效的结果。WIFI、蓝牙具有高的数据传输速率,但功耗较高,在飞行器状态监测中使用较少。nRF24L01+是一款工作于ISM频段的无线单片收发芯片。该芯片的体积小、功耗低(0dBm功率发送数据时,电流为11.3mA,空气传播速率2Mbps时,接收电流为13.5mA),传输速度适中(空气中传播速率最快2Mbps),适合应用于低功耗、中等速度的飞行器状态监测系统中。

本文以nRF24L01+为无线传输核心芯片,设计了一种采用无线方式传输状态数据的飞行器状态监控系统,实现了飞行器冲击、振动、温度、湿度、气压的监测。

2 系统总体结构

系统总体结构如图1所示。

图1 飞行器状态监控系统总体结构图

状态监控系统由三部分组成:数据读取计算机、主节点、各状态监测子节点。数据读取计算机通过USB(TTL电平)转换器监控或读取主节点的状态监测数据。主节点通过无线方式获取各状态监测节点的状态数据。状态监测节点完成状态数据的获取。

3 硬件设计

3.1 数据读取计算机选型

数据读取计算机可使用工控机或笔记本电脑,由于系统仅用于数据监测或读取,不需要过高的配置,除运行系统必要的资源外,运行监控软件只需512MBytes内存和512MBytes硬盘存储空间即可。

3.2 主节点硬件设计

主节点以微控制器为核心,通过SPI接口分别与nRF24L01+和FLASH存储器通信,完成无线数据传输和数据存储。其结构如图2所示。

图2 主节点硬件结构图

主节点微控制器选择STM32F103RET6,其采用ARM公司Cortex M3内核,运行时钟可达72MHz,内部集成FLASH存储器和SRAM,可在不扩展外部存储的情况下,完成最小系统的搭建,内部资源及接口丰富,具有3个SPI硬件接口,接口最快时钟频率为18MHz,具备4种工作模式,满足节点对控制器硬件的需求。

FLASH存储器采用W25N01GVZEIT,其容量为128MBytes,可通过SPI接口与外部进行数据交换,数据读写速度快且功耗低至82.5mW,可进行100000次擦写,所存储数据可以保存10年以上,满足本设计对容量、速度和功耗的要求。

无线数据传输芯片的有效数据传输速度实测最大值为440kb/s,由于系统采用非标准协议进行数据传输,为减轻数据拥塞及CPU负担,主节点使用两个nRF24lL01+进行数据传输,充分利用了微控制器的SPI接口。

3.3 状态监测节点硬件设计

状态监测节点同样以微处理器为核心,通过SPI接口与nRF24L01+通信完成数据的传输,通过模拟或数字接口连接传感器,获取状态数据,如图3所示。

图3 状态监测节点硬件结构图

状态监测节点的微控制器同样采用STM32F103RET6,该款单片机内部集成了模数转换器和SPI等数字接口,符合节点对微控制器的要求。

系统对飞行器的以下状态进行监测:冲击、振动、温度、湿度、气压。其中,冲击、低频振动传感器输出的是模拟信号,需要经过信号调理电路后由微控制器内部的ADC进行数据采集。高频振动、温度、湿度、气压传感器的输出为数字信号,由微控制器的SPI或数字接口进行数据采集。各传感器的技术指标如表1所示。

从表1中可以看出,数据传输速度相对最大数据传输速度有较大裕量,因此各状态监测节点中只需1片nRF24L01+即可保证数据的传输。而在主节点中,nRF24L01+_1负责与冲击状态监测节点进行通信,nRF24L01+_2负责与其它状态监测节点进行通信。

表1 飞行器状态监测参数技术指标

4 软件设计

本部分按照状态监测数据采集、传输、存储和读取的顺序说明系统软件的工作过程。

4.1 状态监测节点软件设计

状态监测节点负责状态数据的采集并将数据传输至主节点。状态监测节点软件包括主函数、无线芯片中断处理函数,定时器1中断处理函数和定时器2中断处理函数。函数的工作流程如图4所示。

图4 状态监测节点程序流程图

主函数负责数据的整体处理流程。节点上电后,微控制器首先对自身的系统资源进行初始化,包括GPIO口、定时器、SPI接口、USART接口的初始化。其次,程序对所使用的的变量进行初始化,对中断资源进行配置并打开相应中断。最后,主函数在是否处理nRF24L01+中断、是否切换nRF24L01+收发状态、是否复位nRF24L01+三个状态之间不断进行切换,完成相应工作。

nRF24L01+接口有IRQ引脚,用于指示nRF24L01+中断的状态,在IRQ引脚拉低后,程序触发nRF24L01+中断,在中断处理函数中,程序仅置位相应标志,中断的处理则放置在主函数中。触发nRF24L01+中断的事件有三类,数据发送完成、数据接收完成和数据重传完成。nRF24L01+以32个字节数据为一帧进行传输,当数据传输完成时触发数据发送完成中断,此时程序判断是否还有待发送帧以决定是否继续传输。数据接收完成中断在主节点发送数据请求命令时产生,当状态监测节点收到命令后,开始数据的传输。数据重传中断发生在通信质量不佳的情况下,此时需要重传数据并开始通信质量不佳的计数,当通信质量持续不佳时,将nRF24L01+复位为数据接收状态。通信质量不佳除通信信号弱的原因外,还有可能是由于主节点和状态监测节点同时处于发状态造成的。

nRF24L01+收发状态的切换在以下情况发生:当接收到主节点的数据请求命令后,nRF24L01+的状态由收变为发;当向主节点发送完64帧数据后,nRF24L01+的状态由发变为收。

当nRF24L01+处于空闲状态时间过长时,nRF24L01+复位为收状态,以保证节点间轮询时间过长或发生其它未知错误时,nRF24L01+始终处于接收主节点数据请求命令的状态。

定时器1中断用于节点计时及传感器数据的采集。状态监测节点具有自身的时间基准,同时在接收的主节点数据帧中包含主节点的时间信息,两者结合能得到整个系统的统一时间标准,节点的计时周期为1ms。当到达数据采集的时间结点时进行数据采集,由于每次数据采集的时间最多在10us左右,因此数据采集放在中断程序中执行。

定时器2中断用于收发及复位状态的计时。节点设置了收发状态转换时的中间态,用于保证数据收发时序的正确执行,减少主节点和状态监测节点同时处于发状态的几率。中间态由定时器2进行计时。当节点由收状态经中间态到达发状态时,由定时器2程序开始第一帧首字节数据的传输。同时,定时器2还有类似看门狗的功能,当数据收发时间过长,不能定时清零定时器2的复位计数时,复位设置被执行,状态监测节点回到收状态。

4.2 主节点软件设计

主节点负责轮询各状态监测节点数据并将数据存入FLASH存储器,同时,数据可通过串口被数据读取计算机读取。根据系统使用环境的不同,主节点的工作模式可设置为命令启动数据采集或上电启动数据采集。当飞行器处于运输、存储环节时,系统可设置为命令启动数据采集,此时数据读取计算机可以向主节点发送开始数据采集命令,主节点可向数据读取计算机定时发送数据,使系统的工作状态受控。当飞行器处于飞行环节时,系统可设置为上电启动数据采集,此时,主节点FLASH中存储的数据将在飞行器飞行结束后,由工作人员将主节点取回并由数据读取计算机读取数据。主节点软件可分为主函数、定时器1中断处理函数和定时器2中断处理函数。函数的工作流程如图5所示。

图5 主节点程序流程图

主函数负责数据的整体处理流程,包括两个nRF24L01+的轮询策略以及FLASH数据存储。节点上电后,微控制器对系统资源、使用的的变量进行初始化,对中断资源进行配置并打开相应中断。随后,主函数在是否处理nRF24L01+_1/2中断、是否切换nRF24L01+_1/2收发状态或复位、是否向FLASH中写入数据三个状态之间不断进行切换,完成相应工作。

nRF24L01+_1/2中断同样是由IRQ引脚触发,在中断处理函数中,程序仅置位相应标志,中断的处理放在主函数中。nRF24L01+_1/2的中断事件类型与状态监测节点一致。nRF24L01+_1/2的发送完成中断发生在数据请求命令传输完成之后。nRF24L01+_1/2的接收完成中断发生在接收一帧监测数据之后,当接收到64帧数据之后,置位相应标志,nRF24L01+_2还需进行状态监测节点的切换。数据重传中断发生的nRF24L01+_1/2复位,将nRF24L01+_1复位为发送冲击状态监测数据请求命令,将nRF24L01+_2复位为发送高频振动状态监测数据请求命令。

nRF24L01+_1/2收发状态的切换在以下情况发生:当接收到状态监测节点的64帧数据后,nRF24L01+_1/2的状态由收变为发;当向状态监测节点发送完数据请求命令后,nRF24L01+_1/2的状态由发变为收,nRF24L01+_1/2收发状态转换同样有过渡的中间态。

当nRF24L01+_1/2处于空闲状态时间过长时,nRF24L01+_1/2复位,复位后的状态与重传中断一致。

向FLASH中写入数据的条件是节点接收到完整的64帧数据并且节点处于收发转换的中间态。为提高读写效率并延长FLASH的使用寿命,FLASH读写为页读写。所用FLASH存储器中一页包含2048字节,nRF24L01+的一帧数据包含32字节,因此以64帧为一个完整读写单位。对于温度、湿度、气压三种数据采集慢的状态监测节点,有效数据为60字节,其余字节为无效数据,以避免该类节点长时间无数据写入。

定时器1中断用于节点计时,计时周期为1ms。

定时器2中断用于nRF24L01+_1/2收发及复位状态、状态监测节点切换的计时。主节点收发状态转换时的中间态由定时器2进行计时。当节点由收状态经中间态到达发状态时,由定时器2程序开始数据请求命令的传输。同样,定时器2有复位计时功能,复位状态与前述一致。当主节点向某状态监测节点索要数据时间过长时,主节点认为通信出现问题或状态监测节点本身出现问题,此时进行节点切换,以保证其他状态监测节点的数据传输不受影响。

4.3 数据读取软件设计

数据读取软件用于向主节点发送开始数据采集命令、监控网络运行状态和主节点存储数据的读取。数据读取软件由面向对象语言C#开发,开发环境为Visual Studio 2010,软件界面如图6所示。

图6 数据读取软件界面

该软件包含两部分功能:当飞行器处于运输或存储状态时,软件可以监控系统运行状态,此时图形以每2k字节抽取固定数据显示监测结果;当飞行器处于飞行状态后,软件只能以后处理方式读取FLASH中存储的数据,并以图形方式显示。图6是存储状态下,各状态监测节点的数据情况。图中,冲击值在0到1之间漂移是由模拟量采集后进行数字化造成的,冲击值只有飞行器受到大的冲击(飞行或击中目标)时才有意义;振动部分为1g的值表示垂直地球表面的重力加速度;气压、温度、湿度值分别为0.1Mpa、26℃、49(46)%,其表示当前的存储环境为常规状态。可见,所设计系统实现了飞行器状态的有效监测。

5 结束语

针对飞行器状态监测的实际需求,设计了包含数据读取计算机、主节点、状态监测节点架构的状态监测系统,实现了飞行器的状态监测,为飞行器状态监测方式的发展提供了一种有效可行的解决方案。

猜你喜欢
微控制器中断飞行器
高超声速飞行器
TMS320F28335外部中断分析与研究
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
雪后林鸟
飞去上班
跟踪导练(二)(5)
电磁导向智能车设计探讨
神秘的飞行器
新闻浮世绘
基于MC9S08QG8低端微控制器的无线控制器设计