一、超声波传感器
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;
}