模块发出一定频率的超声波,超声波遇到物体发生反射,返回到发射处可以被模块检测到
通过x=v*t,可得distance=x/2
模块工作原理:
以常见的HY-SRF05模块为例介绍,其它型号的工作原理与此模块大相径庭。
5个引脚分别为vcc、trig、echo、out、gnd,5v供电,采用io引脚trig触发测距,给至少10us的高电平,即可开启测距功能。如果自动检测到有信号返回时,通过io引脚echo输出一个高电平。
由上面的工作原理结合单片机的中断定时器可以确定如下的工作方案,我以51单片机为例进行说明:
开始给trig一个大于10us的脉冲,使模块开始工作,同时开启定时器开始计时,将外部中断接到echo引脚上,当模块检测到回波时echo被置高电平,这时外部中断被触发,进入中断程序,因此我们可以在中断程序中将时间读出来,有了时间就可以根据distance=v*t/2,计算出距离,距离值就可以用于进一步的工作
以51为控制,数码管显示距离的代码:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
int time,flag;
uchar timeL,timeH;
uint distance;