【STM32】详解超声波测距模块工作原理

简介: 【STM32】详解超声波测距模块工作原理

一、产品介绍

超声波测距模块可提供2cm-400cm的非接触距离感测功能,测距精度3mm,模块包括超声波发射器,接收器与控制电路。


二、基本工作原理

(1)采用IO口trig出发测距,给Echo最少10us的高电平信号。

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

(3)有信号返回,通过IO口ECHO(如上图)输出一个高电平,高电平持续时间就是超声波从发射到返回的时间。

公式:距离=(高电平时间*340m/s)/ 2


三、时序图

如何看时序图?

从上到下,从左到右


四、示例代码

超声波模块初始化

void sr04_init(void)
{
  //使能端口B、端口E的硬件时钟
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE );
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE );
  
  
  //PB6为输出模式,因为该引脚连接到Trig
  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;//指定第6根引脚 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT ;//配置为输出模式
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz ;//配置引脚的响应时间=1/100MHz .
  //从高电平切换到低电平1/100MHz,速度越快,功耗会越高
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP ;//推挽的输出模式,增加输出电流和灌电流的能力
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL ;//不使能内部上下拉电阻
  GPIO_Init(GPIOB ,&GPIO_InitStructure);  
  
  
  //PE6为输入模式,因为要检测ECHO输出高电平的持续时间
  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;//指定第6根引脚 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN ;//配置为输出模式
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz ;//配置引脚的响应时间=1/100MHz .
  //从高电平切换到低电平1/100MHz,速度越快,功耗会越高
  //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP ;//推挽的输出模式,增加输出电流和灌电流的能力
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL ;//不使能内部上下拉电阻
  GPIO_Init(GPIOE ,&GPIO_InitStructure);  
  
  
  //PB6引脚初始状态为低电平,根据时序图可以了解到
  PBout(6)=0;

}


测距

uint32_t sr04_get_distance(void)
{
  uint32_t t=0;

  //PB6输出高电平
  PBout(6)=1;
  
  //延时10us
  delay_us(10);

  //PB6输出低电平
  PBout(6)=0; 
  
  //PE6要等待高电平出现
  while(PEin(6)==0);
  
  
  //测量高电平的持续时间
  while(PEin(6))
  {
  
    t++;
    delay_us(9);//超声波每传输9us时间,距离为3mm
  
  }
  
  //因为该时间是包含发射和返回的时间,需要除以2
  t/=2;
  
  return 3*t;
}
相关文章
|
7月前
【STM32】NRF24L01模块的收发调试(三)
【STM32】NRF24L01模块的收发调试
240 0
|
7月前
【STM32】NRF24L01模块的收发调试(二)
【STM32】NRF24L01模块的收发调试
149 0
|
7月前
【STM32】NRF24L01模块的收发调试(一)
【STM32】NRF24L01模块的收发调试
221 0
|
13天前
|
存储 监控 数据处理
【STM32】详细讲述 USART_IRQHandler() 的工作流程和原理
- UART5_IRQHandler的主要任务是响应各种UART中断事件并执行相应的处理。 - 典型的处理中断步骤包括检查中断类型、读取或写入数据寄存器、处理数据或错误、清除中断标志等。 - 实际的中断处理逻辑会根据具体应用的需求进行调整。
44 1
|
5月前
|
传感器
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
491 0
|
5月前
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
307 0
|
6月前
|
传感器 数据格式
【STM32】DHT11温湿度模块传感器详解&代码
【STM32】DHT11温湿度模块传感器详解&代码
|
7月前
|
传感器
STM32循迹小车原理介绍和代码示例
STM32循迹小车原理介绍和代码示例
|
7月前
STM32控制SG90舵机原理及代码
STM32控制SG90舵机原理及代码
222 1