基于STM32 的水声潜标值守控制模块设计
2022-02-27高守勇归朋飞
高守勇,谢 辉,杨 静,归朋飞
(水声对抗国防科技重点实验室,广东湛江 524022)
在海洋水声研究中,海洋环境噪声、船舶航行噪声的长期监测具有重要意义。在海上开展水声监测时,采用水面浮标的方式可方便通过电台或卫星通信进行遥控作业[1-3],但存在容易受渔船作业拖带漂移、影响船舶航行等问题。另外浮标随海浪起伏会导致水听器抖动,从而影响记录的水声信号质量。采用潜标方式监测噪声具有隐蔽性好、受海浪影响小等优点。水声潜标使用时一般带有声学释放器,布设入水后通过锚系装置系留在预定的深度进行水声监测。任务结束后,通过工作船发送水声遥控指令使释放器动作,抛弃锚系装置,潜标上浮至海面,由工作船进行打捞回收[4-6]。水声潜标需要在电池供电条件下长时间待机、完全自主工作,按预设的时间节点或根据监测到的水听器信号特征启动记录。如果水声潜标不能可靠工作,海上测试数周后打捞出水发现数据记录不完整,将造成任务完成不全和试验资源浪费。因此,值守控制模块作为水声潜标的控制核心,其工作的稳定性、低功耗性能对水声潜标的海上使用有重要意义。
STM32 嵌入式系统具有代码密度高、可嵌套中断、功耗低等特点,采用库函数开发方式,可在保证系统稳定性的同时大大缩短程序开发周期,在控制领域有着广泛的应用[7-10]。
1 总体设计
1.1 水声潜标总体组成
水声潜标总体由水听器、水密仪器舱组成,仪器舱中电子设备包含值守控制模块、电池组、信号调理、采集存储等单元,水听器通过水密电缆连接到仪器舱,如图1 所示。值守控制模块平时处于低功耗状态,可通过预编程值守和自动监测记录两种模式启动系统,进入采集记录状态。在预编程值守模式下,水听器、信号调理单元、采集存储单元均断电,水声潜标处于最低功耗值守状态。在自动监测记录模式下,需要增加对水听器前置放大器的供电。
图1 水声潜标组成框图
1.2 值守控制模块主要功能
值守控制模块的功能包括预编程值守、自动监测记录、工作参数下载和存储、RTC 对时、响应上位机查询等,其主要功能是预编程值守和自动监测记录。
预编程值守功能:通过上位机软件设置水声潜标的任务时间表,下载并存储到值守控制模块的FLASH 中,控制水声潜标按设定的时间表进行工作。该功能主要用于按计划实施的船舶噪声监测、环境噪声监测和水声传播测量等任务。
自动监测记录功能:通过监测水听器信号,对接收到的水声信号进行滤波、平滑,先进行长时间平均,获得海洋背景噪声,再根据水声信号的变化趋势和强度,在有船舶接近时,启动水声潜标进入采集记录状态。该功能主要用于非合作的船舶航行噪声监测。
2 模块硬件设计
2.1 STM32核心模块
STM32F103RCT6 器件是基于高性能超低功耗微控制器Arm®Cortex®-M4 的32 位RISC 内核,工作频率80 MHz,嵌入了高速存储器(256 kB 的闪存,64 kB 的SRAM)、增强型I/O 和外围设备,提供一个快速的12 位ADC、两个比较器、一个运算放大器、两个DAC 通道、一个内部基准电压缓冲器、一个低功耗RTC、一个通用32 位定时器、4 个通用16 位定时器和两个16 位低功耗定时器[11];支持模拟独立电源输入ADC、DAC、OPAMP 和比较器,VBAT 允许备份RTC 和备份寄存器;具有FlexPowerControl 的超低功耗,在VBAT 模式下电流为200 nA,可为RTC 和32×32 位备份寄存器供电,RTC 待机模式下电流为280 nA。
STM32 核心模块原理如图2 所示,该模块包含STM32F103RCT6芯片、8MHz主晶振、RTC晶振、FLASH芯片W25Q64 及工作指示灯[12]。
图2 STM32核心模块原理图
核心模块实物如图3所示,尺寸为30 mm×34 mm,通过2 mm 间距排插J2 安装在母板上。
图3 核心模块实物图
2.2 信号监测调理电路
水听器接收到的信号较微弱,为了实现对水声信号的有效监测,设计了信号监测调理电路,原理如图4所示。采用一片低功耗运放OPA1662 设计两级放大滤波[13],一级为10 Hz 高通滤波器,增益为2,二级为10 kHz 低通滤波器,增益为5。信号调理电路总增益为10,前端水听器灵敏度约为-170 dB,经实际测试,水听器信号通过信号监测调理电路放大、滤波后,可有效监测海洋环境噪声和船舶噪声。滤波器采用Sallen-key 拓扑结构,具有输入阻抗高、增益容易配置的特点。
图4 信号监测调理电路原理图
2.3 输出控制电路
水声潜标内有3 组电池,分别为给前置放大和信号调理供电的+12 V 模拟电源、-12 V 模拟电源、给采集存储单元供电的+12 V 数字主电源。值守控制模块对潜标工作状态的控制,主要通过开启和关闭这3 组电源来实现,输出控制电路原理如图5 所示。对于模拟电源的控制,采用两个PHOTO-MOS 继电器AQZ102 实现控制模块和电源输出的光电隔离[14],持续工作电流为4 A。对数字主电源的控制采用一片PHOTO-MOS 继电器AQY211 隔离后,驱动大功率MOS 管AO4407,其导通电阻RDS(ON)为13 mΩ,持续工作电流为7 A,可满足对采集存储单元5 A 供电控制的要求。3 组电源的控制都通过PHOTO-MOS 继电器进行隔离,可有效降低控制模块对潜标模拟电路的干扰。
图5 输出控制电路原理图
输出控制电路实物如图6 所示,作为核心模块的母板,可通过2 mm 间距微小排插与核心模块组合安装。模块含开关和输出插座总体尺寸为30 mm×50 mm,整体结构紧凑小巧,可方便安装到空间受限的水声潜标中。
图6 输出控制电路实物
3 模块软件设计
3.1 定时唤醒软件设计
STM32F103RCT6 在系统复位后,运行在RUN 模式下,定时唤醒功能可以在低功耗模式下实现。芯片有5 种低功耗模式:低功耗运行模式、睡眠模式、低功耗睡眠模式、停止模式和待机模式。模块工作于预编程值守模式时,CPU 处于睡眠模式,芯片处于低功耗状态,仅内部RTC 在运行。若要进入睡眠模式,需要执行WFI(Wait For Interrupt)指令,任何外围设备的中断都能唤醒CPU[15]。定时唤醒的软件流程如图7 所示,RTC 时钟每秒中断一次,唤醒控制模块,在中断处理程序中将当前时间与存储的工作时间表进行比较,如果处于工作状态就开启各单元的电源,启动水声潜标进入测量记录状态,否则关闭电源,停止记录,进入睡眠模式。
图7 定时唤醒流程图
3.2 信号监测软件设计
模块工作于自动监测记录模式时,需要对水听器接收到的水声信号进行连续监测和分析,软件流程如图8 所示。在系统配置阶段,根据预编程软件下载存储的数据表,设置进入自动监测记录模式的时间、信号门限等工作参数。进入自动监测记录模式后,模块采用定时中断方式对水声信号进行AD采集、数据平滑和趋势分析。AD 采样率为20 kHz,采样后转换为RMS 值,平滑平均时间为1 s,趋势判别条件为信号能量连续15 s 上升,启动门限可根据预编程参数设置为2~6 dB。当满足趋势判别和启动门限条件后,启动系统进入记录状态,持续记录10 min 或20 min(可设置)后关闭记录。完成记录后,若还处于自动监测记录模式,再继续进行水听器信号监测。
图8 信号监测及分析控制流程
3.3 预编程控制软件设计
预编程控制软件包含两部分,一是运行于值守模块的下位机软件,二是运行于计算机中的上位机软件,两者通过RS232 进行通信[16],波特率为9 600。上位机软件需与预编程模块进行通信,实现下载任务列表到模块,对模块进行对时,查询预编程的任务表和RTC 时间等功能。设计了命令格式,每条指令的起始码为$,结束码为#,各项功能采用的命令格式如表1 所示。
表1 预编程命令格式
任务表格式:@序号/模式/开始时间/结束时间&序号/模式/开始时间/结束时间&序号/模式/开始时间/结束时间……。
上位机软件采用VC 编程,VC 编程有较好的用户操作界面。软件界面分为串口设置、时间同步、任务设置、任务查询4 个功能区,如图9 所示。软件可对串口参数进行设置,对下位机RTC 时间进行同步和查询,在任务设置栏可设置每次采集记录任务的开始时间和结束时间、工作模式。任务栏中添加、修改、删除按钮可对工作时间表进行操作,擦除按钮用于对下位机中的参数表FLASH 空间进行擦除,下载按钮用于将工作时间表下载到值守控制模块中进行存储。任务查询栏可对模块中存储的任务表进行查询,方便用户进行任务表的核对确认。
图9 上位机预编程软件界面
4 测试应用情况
4.1 预编程值守功能测试
在实验室中,水声潜标处于开盖状态,通过专用的通信电缆连接水声潜标通信接口和计算机串口,启动值守模块电源,运行上位机软件,设置5 组任务时间表,每次记录10 min,工作模式为A(定时模式),下载到下位机中,如图9 所示。观察水声潜标信号调理、采集记录单元的工作指示灯,两个单元均能在各组任务开始时启动工作,在任务结束时停止工作,若记录的数据文件时间与任务时间表一致,说明值守控制模块的预编程定时记录功能正常。
2018 年9 月,在实验室对预编程值守功能进行了长时间考核测试。水声潜标处于正常密封状态,设置30 天时间内90 组采集任务表,通过水密通信电缆连接水密仪器舱,下载到值守控制模块中运行。30 天后打开水声潜标的仪器舱,检查记录的数据文件,核对任务表的时间与文件记录的时间,若两者一致,表明值守控制模块长时间工作正常。
4.2 自动监测记录功能测试
2018 年11 月8 日,在海南三亚附近海域对水声潜标自动监测记录功能进行了测试。试验前设置潜标工作于自动监测记录模式,启动门限为3 dB。潜标布放入水后,安排一艘渔船从潜标附近,距离潜标100 m 左右多次航行通过,记录渔船通过潜标附近的时间,试验结束后回收潜标,查看潜标数据记录情况,判断模块是否能在船舶通过时自动启动潜标进行采集记录。渔船通过时间和潜标开机记录时间如表2 所示。
表2 自动监测记录测试记录表
根据记录的渔船通过时间和潜标开机时间对比可知,渔船每次从水声潜标附近航行通过时,水声潜标都能根据噪声变化情况自动启动采集记录,说明值守控制模块的自动监测记录功能正常。
4.3 值守控制模块功耗测试
在实验室进行预编程定时功能和自动监测功能测试的同时,对值守控制模块的工作电流进行测量,定时值班、自动监测、任务运行3 种工作状态的电流测试结果如表3 所示。
表3 值守控制模块功耗测试记录表
测试表明,值守控制模块在预编程值守状态下的工作电流为0.4 mA,自动监测记录状态电流为6.7 mA,满足水声潜标在电池供电条件下水下自主值守30天的要求。如在核心模块中增加一级电源管理功能,在设置完工作参数、延时一段时间后,将RS232芯片的供电断开,可进一步降低功耗,将定时值班电流控制在0.1 mA 以内。
5 结束语
采用低功耗的STM32F103RCT6 设计了水声潜标值守控制模块,硬件包括核心模块、信号监测电路和输出控制电路,软件主要包括定时唤醒、信号监测和预编程参数设置部分。模块整体实物尺寸为30 mm×50 mm,可方便嵌入到空间受限的水下设备中。通过实验室功能、功耗测试和海上自动监测记录功能测试,得出值守控制模块预编程值守电流为0.4 mA,自动监测电流为6.7 mA,值守30 天,在船舶通过附近时可自动启动采集记录,可在实际的水声潜标中低功耗、长时间可靠运行。