• 【mcuclub】超声波测距模块HC-SR04


    一、实物图

     

    二、原理图

    编号名称功能
    1VCC电源正
    2TRIG触发控制信号输入
    3ECHO回响信号输出
    4GND电源地

    三、简介

    由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物体测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。

    HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度3mm,模块包括超声波发射器、接收器与控制电路。

    基本工作原理:

    超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回,超声波接收器收到反射波就立即停止计时。测试距离=(计时时间*声速)/2

     

    四、电器特性

     

    五、时序解析

     

    (1)采用IO口TRIG触发测距,给最少10us的高电平触发信号。

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

    (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

    (4)测试距离=(高电平时间*声速)/2;

    代码如下:

    /****

    *******获取距离函数

    Hcsr04_temp:当前的环境温度

    返回值:测得的距离(距离单位cm)

    *****/

    uint Hcsr04_GetDistance(uint Hcsr04_temp)

    {

       uint Hcsr04_distance;           //用于记录测得的距离

       float Hcsr04_speed;             //保存超声波的速度值

       TH2 = 0;             //使用定时器2作为计时器

       TL2 = 0;

       HCSR04_Trig = 0;     //给超声波模块一个高电平的开始脉冲

       Hcsr04_Delay(20);

       HCSR04_Trig = 1;

       Hcsr04_Delay(20);

       HCSR04_Trig = 0;

       while(!HCSR04_Echo);    //等待超声波模块的返回脉冲

       TR2 = 1;                //启动定时器,开始计时

       while(HCSR04_Echo);     //等待超声波模块的返回脉冲结束

       TR2 = 0;                //停止定时器,停止计时

       Hcsr04_speed = 0.607*Hcsr04_temp+331.4;             //根据公式 v=0.607T+331.4 计算出当前温度值对应的超声波速度,这时的单位是“米/秒”

       Hcsr04_speed = Hcsr04_speed/10000;                  //将超声波的速度从单位“m/s”转为“cm/us”,方便后面的计算

      Hcsr04_distance=((TH2*256+TL2) * (12/FOSC) * Hcsr04_speed) / 2;           // 距离cm = (时间us * 速度cm/us) / 2

       if(Hcsr04_distance > 500)  //把检测结果限制500厘米内

       Hcsr04_distance = 500;

       return Hcsr04_distance;

    }

    六、流程设计

    首先初始化引脚,然后复位定时器计数值,接着给超声波一个高电平的开始信号,等待超声波模块的返回脉冲,接到返回脉冲,则开始计时,然后等待超声波模块的返回脉冲结束,如果结束,则停止计时。接下来通过温度补偿计算声波速度,通过距离=(时间*速度)/2最终得到距离值。最后判断距离值是否超过量程,如果超过量程则将距离值设置成最大量程值。

  • 相关阅读:
    【解决问题思路分析】记录hutool默认使用服务端上次返回cookie的问题解决思路
    awvs 中低危漏洞
    【推荐】数字化转型和数据治理资料合集124篇
    WebGL 用鼠标控制物体旋转
    post 和get参数 请求
    Zepplin 安装配置
    2.TCP/IP协议系统
    共享日志。 vCorfu: A Cloud-Scale Object Store on a Shared Log
    C++封装着色器
    MVC架构模式实现银行转账
  • 原文地址:https://blog.csdn.net/weixin_61121477/article/details/127746468