1. 项目概述
超声波测距系统在工业自动化、智能家居和机器人导航等领域有着广泛应用。这个基于STM32和HC-SR04模块的高精度测距方案,通过定时器输入捕获技术实现了毫米级的距离测量精度。相比市面上常见的轮询方式,这种方法不仅测量精度更高,还能显著降低CPU占用率。
我在实际项目中多次使用这种方案,发现它特别适合需要同时处理多个任务的嵌入式系统。比如在自动避障机器人上,采用输入捕获方式可以让主循环有更多资源处理传感器融合和路径规划。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件选型与原理分析
2.1 HC-SR04模块工作原理
HC-SR04是市面上最常见的低成本超声波模块,工作电压4.5-5.5V,测量范围2cm-400cm。它包含超声波发射器、接收器和控制电路三部分。
模块工作时序如下:
- 给Trig引脚至少10μs的高电平触发信号
- 模块自动发送8个40kHz的超声波脉冲
- 当接收到回波时,Echo引脚输出高电平
- 高电平持续时间与距离成正比(1ms对应34.3cm)
注意:模块的测量角度为15度锥形区域,实际使用时要考虑被测物体的反射特性。光滑表面比粗糙表面更容易获得稳定回波。
2.2 STM32定时器输入捕获模式
STM32的定时器输入捕获功能可以精确记录外部信号边沿的时间戳。我们主要利用以下特性:
- 上升沿/下降沿触发捕获
- 输入滤波减少噪声干扰
- 捕获中断自动记录时间
- 最高支持系统时钟频率计数(如72MHz)
以STM32F103为例,其通用定时器(TIM2-TIM5)的时钟源可以配置为内部时钟,通过预分频器获得所需的计数频率。例如:
- 系统时钟72MHz
- 预分频值71 → 计数频率1MHz(1μs分辨率)
- 自动重装载值65535 → 最大测量时间65.535ms
3. 系统设计与实现
3.1 硬件连接方案
推荐以下连接方式:
code复制HC-SR04 STM32
VCC → 5V
GND → GND
Trig → GPIO输出
Echo → 定时器通道输入引脚(如TIM2_CH1)
重要提示:Echo信号是5V电平,而STM32 GPIO通常耐受3.3V。建议:
- 使用电平转换芯片(如TXS0108E)
