51HCSR04\
时间: 2025-06-26 09:23:34 浏览: 16
### HCSR04模块传感器使用方法及驱动代码
#### 一、HCSR04模块简介
HC-SR04超声波传感器通过声纳技术测量物体的距离,适用于多种嵌入式平台。该模块的工作电压通常为5V,具有四个主要引脚:Vcc(电源正极)、Trig(触发信号输入)、Echo(回响信号输出)以及GND(接地)。其有效测量范围是从2厘米到450厘米[^1]。
#### 二、基本工作流程
为了使HC-SR04正常运行,需向Trig引脚发送至少10微秒的高电平脉冲以启动测距功能。随后,模块会自动发出8个40kHz的方波并检测是否有回响信号。当接收到反射信号时,Echo引脚会产生一个与其传播时间成比例的高电平脉冲。计算公式如下:
\[ \text{Distance (cm)} = \frac{\text{Pulse Width (μs)}}{58} \]
或者更精确的方式为:
\[ \text{Distance (cm)} = \frac{\text{Pulse Width (μs)} \times 340}{2 \times 10,000} \]
其中,340表示声音在空气中的速度(单位:m/s),乘以2是因为考虑了往返的时间差。
#### 三、基于STM32的驱动实现
以下是针对STM32单片机的一个典型驱动程序设计案例,采用HAL库完成初始化和数据采集过程。
##### 1. 初始化函数定义
```c
#include "hcsr04.h"
#include "stm32f1xx_hal.h"
// 超声波模块初始化
void Hcsr04Init(uint32_t NVIC_PriorityGroup, uint32_t PreemptionPriority, uint32_t SubPriority){
GPIO_InitTypeDef GPIO_InitStruct;
// TRIG 引脚配置
__HAL_RCC_GPIOA_CLK_ENABLE();
HAL_NVIC_SetPriorityGrouping(NVIC_PriorityGroup);
HAL_NVIC_SetPriority(EXTI9_5_IRQn, PreemptionPriority, SubPriority);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
GPIO_InitStruct.Pin = GPIO_PIN_TRIG;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// ECHO 引脚配置
GPIO_InitStruct.Pin = GPIO_PIN_ECHO;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
```
##### 2. 数据读取逻辑
```c
volatile uint32_t pulse_start_time = 0;
volatile uint32_t pulse_end_time = 0;
// 中断服务例程处理ECHO变化事件
void EXTI9_5_IRQHandler(void){
if(__HAL_GPIO_EXTI_GET_FLAG(GPIO_PIN_ECHO)){
pulse_start_time = HAL_GetTick(); // 记录上升沿时刻
}else{
pulse_end_time = HAL_GetTick(); // 记录下降沿时刻
}
}
// 获取当前距离值
uint16_t Hcsr04GetLength(){
uint32_t duration_us = (pulse_end_time - pulse_start_time)*1000;
return ((duration_us / 58)); // 返回距离(cm),简化版算法
}
```
上述代码片段展示了如何利用STM32的外部中断机制捕获Echo信号的变化,并据此推算目标物的实际位置信息[^4]^。
#### 四、注意事项
- **硬件连接**: 确保供电稳定且符合规格;对于某些敏感应用场合可能还需要额外增加滤波电路减少干扰。
- **软件调试**: 如果发现测量误差较大,则可能是由于环境温度湿度等因素影响所致,在必要情况下可引入补偿因子加以修正[^5].
---
###
阅读全文
相关推荐
















