51单片机两路/三路/多路超声波HC-SR04的实现

1、本模块性能稳定,测度距离精确,模块高精度,盲区小。 产品应用领域: 机器人避障 物体测距 液位检测 公共安防 停车场检测 。

2、 主要技术参数:

1:使用电压:DC---5V

2:静态电流:小于2mA

3:电平输出:高5V

4:电平输出:底0V

5:感应角度:不大于15度

6:探测距离:2cm-450cm

7:高精度 可达0.2cm

接线方式:VCC、trig(控制端)、 echo(接收端)、 GND

基本工作原理:

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

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

(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值

5、 操作:初始化时将trig和echo端口都置低,首先向给 trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s× t / 2 。这就是所谓的时间差测距法。本实验利用超声波测得的距离从串口中显示。

知识要点:

pulseIn():用于检测引脚输出的高低电平的脉冲宽度。

pulseIn(pin, value)

pulseIn(pin, value, timeout)

Pin---需要读取脉冲的引脚

Value---需要读取的脉冲类型,HIGH或LOW

Timeout---超时时间,单位微秒,数据类型为无符号长整型。

使用方法及时序图:

!!!  只用一个定时器,实现多路超声波的测距,只需要对每一个超声波进行扫描就行。

因为有时间间隔,适合静态,不适合高速运动的小车等。 (其实对一些慢速的小车,影响并不大,具体还要自己多调试成品看看情况)

代码亲测可行,核心扫描代码就是这段,其实并不难,就是一个思路而已。


超声波扫描 
void shengbo()
{
int i=0;
超声波1	
if(i==0)
{	
	while(!Echo);		//当RX为零时等待
		  TR0=1;			    //开启计数
	   while(Echo);			//当RX为1计数并等待
		 TR0=0;				//关闭计数
Conut();	
		if(S<10)
		{
			LED1=0;
		}
		else
		{
			LED1=1;
		}
}
//超声波2
if(i==1)
{	
	while(!Echo2);		//当RX为零时等待
		  TR0=1;			    //开启计数
	   while(Echo2);			//当RX为1计数并等待
		 TR0=0;				//关闭计数
Conut();	
		if(S>5)
		{
			LED2=0;
		}
		else
		{
			LED2=1;
		}
}
//超声波3
if(i==2)
{	
	while(!Echo3);		//当RX为零时等待
		  TR0=1;			    //开启计数
	   while(Echo3);			//当RX为1计数并等待
		 TR0=0;				//关闭计数
Conut();	
		if(S>5)
		{
			LED0=0;
		}
		else
		{
			LED0=1;
		}
}
i++;
if(i==3)
{
i=0;
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@fang.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值