|
本帖最后由 linccfzu 于 2020-7-11 05:35 编辑
前言:
我打算和大家分享一个知识,如何通过超声波进行测距,同时让分辨率最高达到0.01mm,精度最高达到0.1mm。
很可惜这东西没办法也不能做出来卖,因为那么高精度又贵而且你买来也没什么用,基本上都是用在比较专业的领域上,比如车联网、结构安全监控等。
主要分享设计的过程,包括以下一些知识点,可以帮助大家更好的掌握一些知识:
1、硬件电路原理,包括陶瓷片选型、激励控制、回波采集、信号放大、带通滤波等;
2、stm32单片机的编程,包括数字信号处理,dsp库的使用等;
3、fpga的编程,fpga与单片机的通讯,fpga信号采集,fifo IP核的使用等;
4、matlab上位机的编程,回波监控、软件算法验证等;
4、python的编程,用python做上位机,配置工具,在线升级等;
这一篇是理论篇,超声波测距的基本原理就是:
1、发出一个超声波信号,频率、大小可调;
2、检测回波信号,回波包络的检测,回波起点的检测;
3、计算出超声波传播时间;
4、由 距离 = 速度 * 时间,算出距离;
这里主要介绍一下超声波速度。
超声波在空气中的传播速度:
这个我们上学的时候知道,超声波在空气中的传播速度约 340m/s.
而实际情况,超声波在空气中的传播速度 受以下几个因素影响:
1、温度
2、气压
3、湿度
4、风速
5、超声波频率(论文里有提到,但影响非常小,我没研究)
1、温度影响是最大的,但是温度是比较好补偿的;
粗略的补偿公式是:
C ≈ 331.3 + (0.6 × T) (m/s)
精确的补偿公式是:
C = 331.3 × √ (1+(T / 273.15)) (m/s)
注:参考地址 http://www.sengpielaudio.com/calculator-speedsound.htm
2、气压、湿度、以及风速
气压和湿度影响比较小,但是实际不好测量,所以不好补偿:
它们之间的关系可以参考以下文章:
http://www.sengpielaudio.com/calculator-speedsound.htm
风速更不好控制,实际应用中应当避免有风的环境。
当然,声速还有一种测量方式可以得到,就是设计一个固定挡板距离,通过 速度 = 距离 ➗ 时间 得到,
但是这样做增加了设备以及其他问题,需要统合考虑。
超声波在水中的传播速度:
这个我研究了以下,有三个数据来源:
第一个是海洋中的声音速度:
c = 1449.2 + 4.6× T -0.055× T 2 + 0.00029× T 3 +(1.34-0.01× T)·( s -35)+ 0.0163× z
T =摄氏温度
s =盐度(千分之一)
z =深度(米)
来源:http://www.sengpielaudio.com/calculator-airpressure.htm
这个在蒸馏水中测不是很准。
第二个是:
v=1468+3.68(t-10)-0.0279(t-10)²
这个是在万方数据库 上 查论文找到的,但实际测量这个也不是很准,达不到我的精度要求;
上传这篇论文:
第三个是:
温度与水中声速对照表
上传这个表格:
这个我验证过了,很准。
你可以将数据导入到matlab,做出一条拟合曲线来:
例如三阶拟合:
V = 0.00017816f*T*T*T - 0.05177f*T*T + 4.9351f*T + 1402.8f; //水的声速
是不是很想知道我是怎么验证的,我们买了一个声速仪:
这东西是国外的,6万块,精度变态的高,误差到达 ±0.020 m/s ,上面那个表格才0.1m/s的精度,到现在我还没研究它是怎么做到的。
官网购买地址:https://www.valeport.co.uk/produ ... nd-velocity-sensor/
最后,这只是蒸馏水的速度,实际的水也没那么干净,如果你要测其他液体的声速,比如油、酸、防冻液等,
还是要在实验室环境下进行测量,再拟合出相关液体的温度曲线。
好了,这篇就写到这里了,都是个人经验,希望大家提出错误和补充。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|