超声波模块的使用

C-SR04超声波测距模块可提供约2cm400厘米的非接触式距离感测功能,测距精度可达高到3毫米;模块包括超声波发射器,接收器与控制电路像智能小车的测距以及转向,或是一些项目中,常常会用到。智能小车测距可以及时发现前方的障碍物,使智能小车可以及时转向,避开障碍物。

注意是5v输入,但是我用stm32的3.3v输入也是没有问题的。
超声波模块的使用_第1张图片工作原理

1.给超声波模块接入电源和地
。2.给脉冲触发引脚(trig)输入一个长为20us的高电平方波

3.输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚(echo)端的电平会由0变为1;(
当此时应该启动定时器计时)4.当超声波返回被模块接收到时,回波引脚端的电平会由1变为0;(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长
5 。根据声音在空气中的速度为344米/秒,即可计算出所测的距离。

要学习和应用传感器,学会看懂传感器的时序图是很关键的,所以我们来看一下HC-SR04的时序触发图。

在这里插入图片描述在这里插入图片描述在这里插入图片描述代码实现
超声波的初始化

void initCSB()
{
	Trig=0;
	Trig=1;
	delay(500);
//	delay10us(); 
	Trig=0;
}

定时器开启

void startTime()
{
	TMOD |=0x1;
	 	TH0=0;
	TL0=0;
	TR0=1;
}

开启完后我们需要关闭定时器来计算发送超声波和接收的时间
计算时间

unsigned int gettime()
{
 	unsigned int time;
	time = TH0*256+TL0;
	return time;
}

main函数执行功能

	  while(!Echo);
	  startTime();
	  while(Echo);
	  endTime();
	  time =gettime();
	  dis=getDis(time);

在一些初始化函数调用后,对Echo的引脚进行测量。倘若改引脚变为高,则是开始推测。当它变成0的时候,则是探测结束。之后对于时间进行计算便可以得到距离。

你可能感兴趣的:(超声波模块的使用)