基于FPGA的超声波测距(HC_SR04)

一、实验环境设备

1、硬件

FPGA:小梅哥 AC101-EDA 开发板
超声波测距传感器:HC_SR04
杜邦线

2、软件

Quartus ll

二、模块设计

使用开发板驱动 超声波检测模块(HC_SR04 ),并将所测得数据显示到开发板上的数码管上。
Alt

在这里插入图片描述

三、超声波模块原理

主要技术参数

1、使用电压:DC—5V

2、静态电流:小于2mA

3、电平输出:高5V

4、电平输出:底0V

5、感应角度:不大于15度

6、探测距离:2cm - 450cm

超声波原理

  • 采用IO口TRIG触发测距,给至少10us的高电平信号

  • 模块自动发送8个40khz的方波,自动检测是否有信号返回

  • 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2

本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值

测距原理

Alt

模块时序

Alt
Alt
以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号

回响信号的脉冲宽度与所测的距离成正比。 由此通过发射信号到收到的回响信号时间间隔可以计算得到距离

公式: uS/58=厘米或者 uS/148=英寸; 或是: 距离 = 高电平时间*声速(340M/S) / 2

建议测量周期为 60ms 以上, 以防止发射信号对回响信号的影响

系统架构设计

Alt

这里主要分为六个模块:

1、trig_driver 输出控制模块:主要负责控制 10μS 持续电平输出,按照系统设计,平均每 1s 先等待 10μS,信号稳定后输出 10μS 持续电平

2、echo_driver 信号输入转换:输入信号处理,回响电平输出与检测距离正比,通过计算输出距离数据

3、time_counter 计时模块:通过计时给出需要输出电平、数吗管段选位移或进行数据处理的信号

4、seg_drver 数码管显示模块:计算得到数码管需要输出的内容并实时显示

5、HC_SR_top 顶层模块:将上述模块连接起来,作为系统的顶层模块

6、fiter 高斯滤波模块:处理数码管显示的数据,使用高斯滤波来减小因环境因素导致的数据波动情况

四、实现效果及代码

在这里插入图片描述

项目源码:
https://github.com/vers17/-FPGA-

五、参考资料

https://blog.csdn.net/m0_59161987/article/details/130788410?spm=1001.2014.3001.5502
https://blog.csdn.net/m0_59161987/article/details/130788412?spm=1001.2014.3001.5502
https://blog.csdn.net/qq_47281915/article/details/125592938?spm=1001.2014.3001.5502

猜你喜欢

转载自blog.csdn.net/chenyu128/article/details/130881539