前言
在电子技术应用中,距离测量是一个常见且重要的需求。超声波模块因其测量精度较高、成本较低、易于使用等优点,被广泛应用于机器人避障、液位检测、智能停车系统等领域。该文主要讲解以stm32wb芯片为主控,用HAL库来对HY-SRF05超声波模块进行代码编写,实现基本的驱动和测距功能。代码的主要核心思路是通过polling对Echo信号进行捕获。
HY-SRF05 超声波模块工作原理
HY-SRF05 超声波模块包括超声波发射器、接收器和控制电路。可提供2cm – 450 cm的非接触式距离感测功能,测距精度可达到3mm.
基本工作原理
(1)采用IO口TRIG出发测距,给至少10us的高电平信号;
(2)模块自动发送8个40KHZ的方波,自动检测是否有信号返回;
(3)有信号返回,则通过IO口ECHO输出一个高电平,高电平的持续时间,结合超声波在空气中的传播速度(约 340m/s),可以计算出测量目标与模块之间的距离。测试距离 = (高电平持续时间 × 声速)/ 2。
引脚定义
其中OUT脚置空即可。
电气参数
工作电压 | DC 5V |
---|---|
工作电流 | 15 mA |
工作频率 | 40 HZ |
最远射程 | 4.5 m |
最近射程 | 2 cm |
测量角度 | 15 度 |
输入触发信号 | 10us TTL脉冲 |
输出回响信号 | 输出TTL电平信号,与射程成比例 |
规格尺寸 | 45 * 20 * 12 mm |
超声波时序图
注意事项
- 模块的工作电压为 5V,而 STM32 的 GPIO 引脚通常为 3.3V。
STM32 代码实现
通过宏定义引脚,方便代码移植和修改
// define gpio for srf05 ultrasonic sensor
#define TRIG_PIN GPIO_PIN_2
#define TRIG_PORT GPIOC
#define ECHO_PIN GPIO_PIN_3
#define ECHO_PORT GPIOC
初始化以及发射和接收信号
TIM_HandleTypeDef htim2; // 采用定时器2作为时长控制void TIM2_Init(void) //定时器2 初始化
{TIM_ClockConfigTypeDef sClockSourceConfig