HY-SRF05 五针超声波测距模块 在stm32f4上实现 附代码 个人经验

本文介绍了使用HC-SRF05超声波测距模块在STM32F4上的实现,通过发送20us高电平触发测距,并分享了在编程过程中遇到的问题及解决方法,如电源电压、定时器配置等,最终成功实现超声波测距功能。
摘要由CSDN通过智能技术生成

测距原理

HC-SRF05超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。像智能小车的测距以及转向,或是一些项目中,常常会用到。智能小车测距可以及时发现前方的障碍物,使智能小车可以及时转向,避开障碍物。
在这里插入图片描述
原理:
1.给超声波模块接入电源和地;
2.给脉冲触发引脚(trig)输入一个长为20us的高电平方波;
3.输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚(echo)端的电平会由0变为1;(此时应该启动定时器计时);
4.当超声波返回被模块接收到时,回波引 脚端的电平会由1变为0;(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长;
5.根据声音在空气中的速度为344米/秒,即可计算出所测的距离。
在这里插入图片描述
时序图表明你只需要提供一个10us以上脉冲信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。

个人经验

上面的理论大可不必了解,这个东西无非就是通过声波测距,重点还是在代码上,搞了将近两周,踩了一些坑,和大家分享下:
1、5v的电压一定要接好,不然串口就会返回一个固定的值!
2、如果使用一般的延时来计时的话,配置好定时器就好了;但如果选择输入捕获来完成,注意配置时通道要对应好,否则串口会返回0或者很大的数。
在这里插入图片描述
3、如果使用不同定时器进行则分别配置,如使用同一个定时器的不同通道,则注意逻辑:不能接到上升/下降沿就关闭定时器,会相互影响。
4、注意定时器时32位还是16位,可能存在数据位数导致的错误。

代码

我使用的是stm32f4,两个定时器,两路超声波,如果需要一个定时器稍稍改一下逻辑即可:
初始化定时器:(正点原子例程也有):

     TIM_ICInitTypeDef  TIM3_ICInitStructure;
	 GPIO_InitTypeDef GPIO_InitStructure;
	 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	 NVIC_InitTypeDef NVIC_InitStructure;
//定时器3通道4,定时器9通道1输入捕获配置
void HC_Reci_TIM3_Init(u16 arr,u16 psc)
{
   
	 GPIO_InitTypeDef GPIO_InitStructure;
	 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	 NVIC_InitTypeDef NVIC_InitStructure;
	
	 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);  	//TIM3时钟使能 
	 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); 	//使能PORTB时钟	
	 	
	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PB1定时器3通道4
	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能

	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;	//速度100MHz
	 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
	 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉
	 GPIO_Init(GPIOB,&a
  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值