必备模块知识——超声波传感器

一、超声波传感器

1、什么是超声波

        人们能听到声音是由于物体振动产生的,它的频率在20HZ-20KHZ范围内,超过20KHZ称为超声波,低于20HZ的称为次声波。常用的超声波频率为几十KHZ-几十MHZ。

2、什么是超声波传感器(常用的HC-SR04超声波测距传感器)

        超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

简单来说:通过发送和接收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。

2.1、  HC-SR04 超声波测距模块特点

           可提供2cm-400cm 的非接触式距离感测功能,测距精度可达高3mm;

3、HC-SR04 超声波测距模块

 分析:

         怎么让它发送波
         Trig ,给Trig端口发送信号
         
怎么知道它开始发了
          Echo信号,由低电平跳转到高电平,表示开始发送波
         
怎么知道接收了返回波
          Echo,由高电平跳转回低电平,表示波回来了

 4、超声波的原理图(了解)

 二、超声波的时序图与使用(重点)

1、超声波时序图

 2、分析

3、如何测距

1、使用定时器,当我们超声波模块的echo端口由低电平变为高电平时,开始计时。

2、当我们超声波模块echo端口变为低电平时,表示结束,即停止定时器

3、运用公式:距离 =(  速度(340m/s)   时间/  2

三、代码示例(以51单片机为例)

#include "reg52.h"

//定义端口引脚
sbit Trig = P1^5;
sbit Echo = P1^6;

//延迟10us程序,用来触发
void Delay10us() //@11.0592MHz
 {
   unsigned char i;
    i = 2;
   while (--i);

}

//选择定时器0、工作模式为1,初始值设定0开始数数,先不开始数数
void Time0Init()
{
  TMOD &= 0xF0; //设置定时器模式
  TMOD |= 0x01;
  TH0 = 0;
  TL0 = 0;
}

//触发超声波传感器
void startHC()
{
Trig = 0;
Trig = 1;
Delay10us();
Trig = 0;
}

//主程序
   void main()
{
   double time;    //定义变量double类型的时间
   double dis;      //定义变量double类型的距离
   Time0Init();   //初始化定时器
}
   while(1)
{
                     
   startHC();
                   
  //等待开始发送波,while(Echo == 0)表示等待,当发送波时Echo == 1,运行下一个代码,即开始计数
   while(Echo == 0);

   //开始启动定时器
   TR0 = 1;

   //等待波回来,即Echo==0时, 而while(Echo == 1)表示等待
   while(Echo == 1);

   //波回来的那一下,我们开始停止定时器
   TR0 = 0;

   //计算出中间经过多少时间
   time = (TH0 * 256 + TL0)*1.085;    //us为单位

   // 距离 = 速度 (340m/s)* 时间/2
   dis = time * 0.017;
    
    
}

物联沃分享整理
物联沃-IOTWORD物联网 » 必备模块知识——超声波传感器

发表评论