Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
【24嵌入式设计大赛】基于RT-Thread的水声测流系统设计
发布于 2024-09-18 15:46:27 浏览:197
订阅该版
[tocm] # 1 系统组成及功能说明 ## 1.1整体介绍 ![QQ20240918-152438.png](https://oss-club.rt-thread.org/uploads/20240918/69afde6d8d04d1b36249bbaeeab8cda4.png.webp) 图1 整体设计框图 针对现有的流量计存在的成本过高、集成度低、实时性差、受环境影响大等一系列问题,结合河流探查智能化、数据测量自动化的需求,在现有的声层析技术基础上,设计并开发出使用m序列、基于RT-Thread操作系统的功能集成度高、数据精确度高、智能化程度高的声层析测流系统。 在声层析测流系统中,需要得到站点之间的互易传输时间来反演声速和流速,所以系统的时间精度显得尤为重要。系统的同步控制时钟信号都来源于GNSS信号接收模块,通过全球卫星导航系统对各终端实现授时功能,达到高精度时间要求。同时,微处理器控制各模块的运行。该系统的技术设计框图如图2-1所示,包含发送、接收和系统控制三部分。 信号发送部分由信号生成模块、功率放大模块和换能器组成。为了有效抑制水中噪声的影响,信号由占空比为50%的PWM波和m序列共同构成,经过调制后传入功放,驱动换能器进行发送。系统可以配置实现发送不同阶数的m序列,并调整m序列的扩频倍数。 信号接收部分由水听器、压降电路、前置放大器、带通滤波器、PT100温度传感器和主控芯片自带的模数转换器组成。水听器将接收到的声信号转换为电信号,经过2.1Vpp限压、放大器和带通滤波器传输到主控芯片的模数转换器中,其中经过带通滤波的和未经滤波的信号分为两通道传入。最后,信号经过模数转换器转换为数字信号记录下来并储存在SD卡上。PT100温度传感器也连接到单片机的模数转换器中,将模拟信号转为水温数值。 控制部分由一个微处理器和GNSS系统脉冲信号控制的定时电路组成。全球导航卫星系统不仅用来确定各个站台的具体方位,还用来同步它们的时钟。PC机与主控部分通过蓝牙通信,用以对m序列等参数进行设置。系统通过计算发出信号和接收到信号之间的时差来推算声速和流速数据。测量结束后,把SD卡上的数据下载至PC端,用相同m序列做互相关得出时差数据,进一步反演得到更为精确的声速和流速数据,并通过4G把数据上传至阿里云端供PC端查看和下载。 ## 1.2测流原理 ### 1.2.1声层析测流基本原理 河流声层析测流系统通过在观测水域布放多点声基站(大于等于2声基站,目前为2声基站),声基站通过GNSS授时信号对多站点时间同步,并发送编码声波信号(如设置多站点需要使用不同的编码),经各站接收其他站点发送的声信号,如图2-2所示。换能器发出的声波顺水传播时,其实际传播速度受到水流速度的影响会大于声速;相反,当逆水传播时,实际传播速度会小于声速。因此,需要测量两站点之间声波互相传播的时间,由射线声学以及多普勒效应可知,相互传播时间是可以表达为带有相对参考声速和水流速度的积分式,再通过对公式的反演,解析出两站点之间水流的平均速度。河流的深度以及宽度作为已知量可得出所选河段横截面的面积,从而计算出水流的流量,实现对全断面平均流量的测量。 ![QQ20240918-152648.png](https://oss-club.rt-thread.org/uploads/20240918/1f637e77d60c8247f8724e78467a1469.png.webp) 图2 声层析测流示意图 如图2所示,两个换能器以一定角度布置在河流两岸,利用声层析设备发送经过调制的m序列,通过互相关计算得到声信号在两站点之间的传播时间差数据。使用GNSS提供的高精度时间基准,确保传播时间的准确度在20ns以下。 ![QQ20240918-152928.png](https://oss-club.rt-thread.org/uploads/20240918/dfd44646931da8ac60d7fd262a197e18.png.webp) 图3 声层析测流系统原理 ## 1.3硬件系统介绍 硬件部分是声层析测流系统下位机终端的关键部分,作为承上启下的重要角色,下位机终端需要对换能器进行收发控制、数据上传等功能。图4为测流下位机终端的硬件结构图,包括低功耗主控制器STM32,功放电路,模拟前端电路、电源控制保护电路,无线通信有蓝牙模块、4G通信模块,定位和授时通过GNSS模块实现,SD卡存储接收数据,OLED显示参数配置。 ![QQ20240918-153102.png](https://oss-club.rt-thread.org/uploads/20240918/47860e767edbd7f015b5e4509e80499a.png.webp) 图4 测流系统下位机终端结构图 ## 1.4软件系统介绍 ### 1.4.1 软件整体介绍 水声测流系统的下位机终端不仅要有稳定的硬件电路,还需要有高效协调的软件设计。本系统需要控制换能器收发、数据采样处理以及人机交互功能,考虑到系统复杂性和采样实时性,最终选择在MCU上移植RT-Thread实时操作系统,主要实现信号收发线程、按键控制线程、SD存储线程、无限配置与上传线程等,数据处理部分在Matlab软件实现。软件设计示意图如图5所示。 ![QQ20240918-153223.png](https://oss-club.rt-thread.org/uploads/20240918/063602b7a96f523b0e4d00e1ae551c94.png.webp) 图5 软件设计示意图 ### 1.4.2 RT-Thread各线程介绍 - 信号收发线程 信号收发线程如图6,当接收到发送指令并且到达GNSS同步时间,在1pps引脚中断中唤醒信号发送线程,接收按键与4G模块配置的两个参数:m与multiple,分别代表m序列阶数与扩频倍数,进行计算后生成需要发送的m序列和占空比50%、频率15kHz的PWM波,通过DMA转运,传入定时器5的通道2和4,同步发送。 信号接收线程由信号发送线程唤醒,在发送结束后,执行信号接收线程,开启ADC采样,采样频率100KHz,并通过DMA转运,得到的数据发送给SD卡线程进行存储。 ![QQ20240918-153253.png](https://oss-club.rt-thread.org/uploads/20240918/7a10962f6bd265488c7d3ec7579a70da.png.webp) 图6 信号收发线程图 - 按键控制线程 本系统的按键有三个,其工作流程图如图7所示。分别为信号发射接收控制按键、m序列阶数选择按键以及扩频倍数选择按键。当所有参数配置好后,按下信号发射接收控制按键,换能器开始发射信号并且接收对岸系统发来的信号。 ![QQ20240918-153312.png](https://oss-club.rt-thread.org/uploads/20240918/77af23428bb45f32fd71f9af1717927d.png.webp) 图7 按键控制线程图 - 无线配置与上传线程 该流量计的人机交互体现在两个方面:一是按键与OLED显示屏可以在终端直接配置参数并观察系统运行结果,二是通过蓝牙和4G模块与PC机通信,在PC端配置并查看运行状态。 在GPRS线程中,由于初始化较为复杂,所以采用状态机进行编程,状态机流程如图8。首先进行模块复位、AT握手,在模块检测状态中检测4G卡状态、信号质量,并进行附着基站,实现网络连接。在连接阿里云状态中,配置接收模式和阿里云设备信息,打开MQTT客户端网络,连接服务器并订阅主题。在每一步执行完成后,都判断执行结果,若执行失败,将会进入飞行模式重置模块和网络,并重新进行连接。 用户通过登录阿里云,可以配置各站点终端运行参数。在接收到阿里云数据后,将会唤醒GPRS接收线程,对数据进行解析。系统测得的数据可以通过GPRS发送线程上传至阿里云端,用户可以在云端实时监测系统运行状态。 ![QQ20240918-153358.png](https://oss-club.rt-thread.org/uploads/20240918/1523f76e8bfaf33b0a3ebcd120fa0d2f.png.webp) 图8 GPRS线程初始化流程图 ### 1.4.3 数据处理计算 系统运行时,主控制芯片记录从发射PWM波信号到接收到模拟信号的时间,利用声层析测流速的算法公式,直接计算出声波在水中的传播速度。 为了更为精准地求取声速和流速数据,在接收声层析设备发送的原始声信号数据后,需要通过MATLAB软件对信号处理后再计算河流流速。流程如图9所示。 首先获取数据文件中记录的m序列阶数和扩频倍数,得到ADC转换之后的原始信号和经过带通滤波之后的信号,分别对两路信号乘以15KHz的正弦和余弦信号进行IQ解调,再设置2KHz的低通滤波器对两路信号进行低通滤波。同时生成与发送端相同的m序列,进行扩频。最后将低通滤波之后的信号和m序列进行互相关计算,在预估的到达时间设置计算区间,寻找相关计算之后的峰值点,得到信号传播时间。最后根据两站点同一时刻求得的上行和下行时间,依据反演算法计算河流的流速,再通过河道垂直截面可以计算河流的瞬时流量。 由于声信号在水中传播,碰到河底和水面反射,会出现多条声线,在接收端叠加之后会出现多径效应,所以计算传播时间时需要优化算法,预估声信号到达时间,减少多径效应带来的影响。 ![QQ20240918-153429.png](https://oss-club.rt-thread.org/uploads/20240918/5f711a07fce8d533f1e701075dd19f05.png.webp) 图9 数据处理流程图 # 2完成情况及性能参数 ## 2.1整体介绍 系统整体如图10和11所示,中间黑色设备为下位机,与下位机相连接的分别为24V直流电源,水声换能器,北斗卫星接收器、蓝牙天线以及4G天线。 ![QQ20240918-153500.png](https://oss-club.rt-thread.org/uploads/20240918/5ac4b30dd30b9995e4176d18226f18f9.png.webp) 图10 系统实物正面图 ![QQ20240918-153517.png](https://oss-club.rt-thread.org/uploads/20240918/006583a7e6dbb03adf6740db4ed865bd.png.webp) 图11 系统实物斜45°图 设计并制作基于STM32主控制芯片的测流系统控制电路,包括主控制板和模拟前端电路板。硬件电路板如图12所示。 ![QQ20240918-153541.png](https://oss-club.rt-thread.org/uploads/20240918/2a3060f2dd9f0cdc4e7215d8cae320a1.png.webp) 图12 系统下位机硬件开发板图 硬件设备终端电路板上设有智能化的电源管理系统,输入的电源生成不同电流电压给各个模块供电。电路中设有输入保护电路,具有防反接、过流保护、过压保护等功能。此外,电源电路与控制电路隔离,对控制电路起到了保护作用。 电路板上除STM32单片机主控制模块外,同时配有4G模块和蓝牙模块用于无线通信,4G配有SIM卡槽用于插卡配合使用。数据存储模块设有SD卡槽,插入SD卡后单片机会将数据存入其中。PT100温度测量模块用来测量水温,通过单片机自带的AD转换获取数据。 信号的发射方面,经过调制的m序列通过功放实现信号的发出。信号接收采用单独的前端模拟模块如图2-7所示,接收信号在进入单片机前,需要经过前端模拟调制,包括电平抬升、带通滤波等操作,最后接入单片机的AD转换。 除必备功能模块,该电路装有OLED对于数据可及时动态显示。板卡设有多个外接口,方便连接多种外设,提升系统兼容性和灵活度,凸显高集成度的特点。 ## 2.2 软件成果 本系统基于RT-Thread操作系统,实现外设驱动框架分层管理与多任务线程实时响应。RT-Thread操作系统多线程部署界面如图13所示,包括按键控制线程、ADC线程、GNSS定位授时线程、GPRS线程等等。满足系统多模块协同工作以获得精准流速流量数据的要求。 ![QQ20240918-153607.png](https://oss-club.rt-thread.org/uploads/20240918/a4359c26e586c0ba8440f7394e28715d.png.webp) 图13 RT-Thread操作系统多线程部署界面图 ## 2.3 测试及信号处理 测试系统声波互易获取时差数据功能的实现情况,在周边的湖中进行五组实验测试,该湖水深适当、水流平稳、环境清静、无障碍物且方便观察,是进行水中声波互易实验的理想场所。在此环境下进行实验可以有效地获取准确可靠的时差数据,现场环境如图14所示。 ![QQ20240918-153629.png](https://oss-club.rt-thread.org/uploads/20240918/8c6cf261d6dc8dfcfeaf6a1a93442775.png.webp) 图14 实验场地环境 把两个换能器放在湖水中,选择第一组路线进行测试,距离为36m,分别接入电源,启动设备。等待北斗卫星系统连接后,两设备实现了时间同步。设置好m序列阶数、扩频倍数以及两设备发送和接收的开始时间,经由GNSS的1pps时钟同步引脚开启中断,开启发送和接收。此时,换能器会发出声波,耳朵可听。在发射的同时换能器接收对方传过来的声波,一旦接收到,OLED上的ADC数量参数加1,模拟信号通过AD转换成数字信号,存入SD卡中。 由于是在静止的湖水中测量系统,所以只计算声波传播的时间。将SD卡上的原始数据上传至电脑,使用MATLAB对接收到的数据进行IQ解调和相同m序列互相关处理,绘制时域波形图。 数据处理结果如图15所示,横坐标为时间,单位ms。图中最上图为经过硬件带通滤波之后的原始信号,其经过IQ解调和低通滤波后如中间图,方便后续互相关处理。最后,把解调后的信号与发射端相同的3阶m序列做互相关处理,结果如最下图。显然,信号出现了很明显的尖峰,最高尖峰所对应的时刻即为声波传播时间。在河两端相距66m处布设两站点进行试验,1端2端接收数据如图15。在静态水域中,测得峰值到达时间为45.54ms和45.55ms,换算距离约为67.4m。 ![QQ20240918-153651.png](https://oss-club.rt-thread.org/uploads/20240918/efcfc01520309e05fbf44e479d8f564c.png.webp) 图15 两站点同时刻数据对比图 通过改变两站点距离,选择不同线路进行测试分析,结果如下表1。 表1不同距离各m序列测试数据分析 实地距离(m) 1站点测得距离(m) 2站点测得距离(m) 3阶 4阶 5阶 6阶 3阶 4阶 5阶 6阶 组1 35 36.43 36.20 36.21 36.46 36.21 36.11 36.20 36.30 组2 66 67.38 67.39 67.59 67.69 67.74 67.41 67.40 67.41 组3 53 50.42 51.17 53.84 52.46 53.61 52.17 54.43 53.21 组4 32 32.27 32.18 32.98 32.29 33.43 32.20 33.06 33.17 组5 40 40.21 39.89 40.30 39.37 40.21 40.27 40.02 39.62 3.3.3 实地测试 系统于2024年5月在湖北荆州长江大桥附近进行现场应用测试工作,该处水文信息复杂,环境噪声显著,噪声多来源于船舶和人类活动,现场如图16。设置两实验站点间的夹角约为45°,两站点间距离为1350m。安装设备,每隔5分钟进行一次信号发送与数据收集,并在后期计算流域流速和流量信息。 ![QQ20240918-153719.png](https://oss-club.rt-thread.org/uploads/20240918/452751ec5045286368e860f707905844.png.webp) 图16 实地位置图 选取48小时的原始数据传入MATLAB中进行处理,包括IQ解调、低通滤波、互相关算法计算获取信号互易时间,再通过互易时间计算声速和流速,最终得到时间-流速图如16所示,可以看到河道流速有明显变化,白天流速相对夜晚较快。 为分析验证设备测流的可行性与信号数据处理分析的准确性,在同一时段使用ADCP方法进行比测,选用RDI WHS-600声学多普勒流速剖面仪测流系统。分别选取四日的数据进行平均流速计算并分析比对,如表2所示,不难看出,二者平均误差约为2%-10%。 表2 平均流速对比表 样本时间 平均流速(m/s) 平均误差(%) 本系统 ADCP 2024/5/29 1.501 1.505 2.6 2024/5/30 1.428 1.441 9.0 2024/5/31 1.437 1.429 4.1 ![QQ20240918-153741.png](https://oss-club.rt-thread.org/uploads/20240918/5a37113084bc1ff81d3b291b1c501795.png.webp) 图16 流速计算结果图 如图16,对比该系统与ADCP测得的数据,可以发现二者的测量精度相当,测出的时间-流速曲线轨迹相似。综上,本套基于m序列的声层析测流系统可以稳定地测量水流流速且满足精度要求。 视频链接:https://www.bilibili.com/video/BV12WtLeSE9R/?spm_id_from=333.999.0.0&vd_source=541f5abf69f852fda3ccc6398e2d236e
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
池恩打代码
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部