0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用超声波模块

lhl545545 来源:FPGA之旅 作者:FPGA之旅 2022-09-26 09:59 次阅读

一. 简介

本例为FPGA之旅设计99例中的第十五例,本例将介绍如何使用超声波模块,进行测距。这个模块在智能小车中使用的比较多,使用起来比较方便,仅需四个引脚即可驱动。

二. 超声波测距方法

先来了解一下模块的四个引脚

VCC:接3.3V - 5V 供电

GND:接地

Trig:控制超声波进行测距引脚,默认为高电平,当其拉高后,模块启动超声波测距。

Echo:用于表示超声波发送到接收到的时间,默认为低电平,高电平表示超声波在空气中传播的时间。

从图中,可以很清

f4c34b12-3bfb-11ed-9e49-dac502259ad0.png

楚地看到模块的工作原理

首先,FPGA先将Trig引脚拉高10us,通知模块启动超声波测距。然后模块内部发出8个40khz的脉冲,即发送超声波,这个FPGA是不需要管的。发送完成之后,Echo就拉高,直到接收到返回到的超声波,拉高时间表示离物体的距离。通过下面格式可以转换到CM。

D =(拉高时间 * 声速(340M/S)) /2

除以二是以为从发送到接收,一个来回。

三. 代码实现

通过上面的工作原理图可以看出,状态机一共可以分为以下几个状态

空闲态 : 没有测距请求时,所处的状态

trig态 : 当测距请求到来时,所处的状态,这个状态中,会将trig信号拉高

echo态: 当trig态结束的时候,转入echo态,这个状态中,将会检测echo信号高电平的持续时间

结束态 :echo信号变为低电平的时候,进入结束态,并且根据echo高电平的持续时间,计算距离

localparam  S_IDLE      = 'd0;localparamS_SEND_Trig='d1;localparam  S_WATI_Echo   = 'd2;localparamS_END='d3;

主要代码是状态的转移以及trig态的计数和echo高电平计数,代码如下。

always@(posedge sys_clk or negedge rst_n)begin if( rst_n == 1'b0)  trig_cnt <= 'd0;  else if (state == S_SEND_Trig)    trig_cnt <= trig_cnt + 1'b1;  else    trig_cnt <= 'd0;end
always@(posedge sys_clk or negedge rst_n)begin  if( rst_n == 1'b0)    echo_cnt <= 'd0;  else if(state == S_WATI_Echo && echo == 1'b1)    echo_cnt <= echo_cnt + 1'b1;  else if(state == S_END)    echo_cnt <= echo_cnt;  else    echo_cnt <= 'd0;end

这基本上完成了全部驱动代码的编写,模块比较简单,下面通过signal tap抓取一下波形图

f4eb04fe-3bfb-11ed-9e49-dac502259ad0.png

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 引脚
    +关注

    关注

    16

    文章

    1177

    浏览量

    50182
  • 高电平
    +关注

    关注

    6

    文章

    144

    浏览量

    21310
  • 超声波模块
    +关注

    关注

    1

    文章

    21

    浏览量

    13481

原文标题:FPGA实现超声波测距

文章出处:【微信号:FPGA之旅,微信公众号:FPGA之旅】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    超声波模块参考

    说明: DYP-ME007超声波模块AVRmega16程序 DYP-ME007 超声波模块DYP-ME007和89c51的数据资料 超声波模块参考
    发表于 08-12 10:27

    超声波模块参考

    超声波模块参考
    发表于 08-20 23:31

    超声波模块参考

    超声波模块参考
    发表于 07-22 20:33

    超声波模块的原理

    最近在造小车 需要用到超声波模块 现将调试时用到的代码分享出来。所用超声波模块为HC-SR04单片机开发板是吴鉴鹰的先理解超声波模块的原理,它有四个接口 Vcc Trig Echo Gnd 。Vcc
    发表于 07-21 08:54

    有关超声波模块的基本知识总结

    什么是超声波模块超声波模块的连接问题有哪些?超声波模块编程思路有哪些步骤?
    发表于 08-06 06:34

    常见的超声波模块有哪些

    常用模块程序详解——超声波模块HC-SR04前言超声波模块小介绍原理和两种程序原理程序前言首先,来说说大伙常见的超声波模块,一般就俩,HC-SR04和HY-SRF05,这两种
    发表于 12-06 07:24

    超声波模块测量距离防碰撞分析

    超声波模块测量距离防碰撞1.超声波测距:原理:超声测距其实就是通过单片机控制超声波模块发出一系列超声波,当
    发表于 01-05 06:02

    怎么使用STM32F1驱动超声波模块

    STM32驱动超声波模块实验开篇闲篇:耀风(鄙人)是一个STM32才入门的小白所以文章写的不是很严谨,如果有错误欢迎大家指正。我写这篇文章的目的有两个:第一,记录本次实验方便自己以后查看(毕竟卡了我
    发表于 01-17 07:32

    超声波模块的相关资料分享

    340m/s)推算距离(注意:一来一回是两次的距离)。在编写程序前首先要了解超声波模块在CT107D上的驱动方式:向超声波模块发送8次脉冲蓝桥板子上的探头需要的为40KHZ的脉冲(由原理...
    发表于 01-21 07:35

    超声波模块的编程资料分享

    历年的省赛都没有考到超声波模块,但是超声波模块还是非常重要的一个模块,还有就是既然很久没有考过,那么突然考一波也是很有可能的喔。还不抓紧学起来。其实呢超声波模块的编程并不难,其实非常的
    发表于 02-23 07:05

    超声波模块为什么测距不准?

    超声波模块为什么测距不准,只有在拿一本书靠近模块时,测得比较准,但是测到人的距离就不怎么准
    发表于 10-31 07:23

    HC-SRF04超声波模块

    超声波模块简单用法,用于diy小制作,包括c程序
    发表于 05-13 16:06 0次下载

    超声波模块

    超声波模块的资料,在使用的或者学习的烧友可以来看看。
    发表于 06-17 16:33 32次下载

    超声波模块电路工作原理图

    超声波模块电路工作原理图
    发表于 03-10 09:38 55次下载
    <b class='flag-5'>超声波模块</b>电路工作原理图

    基于CW32的超声波模块的应用

    C-SR04超声波模块是一种常用的测距模块,其通过发射超声波并接收其反射信号来实现测距功能。
    的头像 发表于 09-06 09:13 936次阅读