一、实验环境设备
1、硬件
FPGA:小梅哥 AC101-EDA 开发板
超声波测距传感器:HC_SR04
杜邦线
2、软件
Quartus ll
二、模块设计
使用开发板驱动 超声波检测模块(HC_SR04 ),并将所测得数据显示到开发板上的数码管上。
三、超声波模块原理
主要技术参数
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以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值
测距原理
模块时序
以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号
回响信号的脉冲宽度与所测的距离成正比。 由此通过发射信号到收到的回响信号时间间隔可以计算得到距离
公式: uS/58=厘米或者 uS/148=英寸; 或是: 距离 = 高电平时间*声速(340M/S) / 2
建议测量周期为 60ms 以上, 以防止发射信号对回响信号的影响
系统架构设计
这里主要分为六个模块:
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