STM32驱动HC_SR04超声波测距模块
STM32篇驱动HC_SR04超声波测距模块 项目地址: https://gitcode.com/Resource-Bundle-Collection/9d980
简介
本资源文件详细介绍了如何在STM32F103ZET6开发板上驱动HC_SR04超声波测距模块。通过配置GPIO、TIM和外部中断,实现了精确的测距功能,并提供了相关的中断服务函数和代码示例。
产品特点
- 非接触式测距:HC_SR04超声波测距模块可提供2cm-400cm的非接触式测距感测功能。
- 高精度:测距精度高达3mm。
- 模块组成:包括超声波发射器、接收器与控制电路。
基本工作原理
- 采用IO口TRIG触发测距,需要给最少10us的高电平。
- 模块自动发送8个40kHz的方波,自动检测是否有信号返回。
- 有信号返回时,通过IO口ECHO输出一个高电平,高电平持续时间就是超声波从发射到返回的时间。
距离计算公式
- 距离(厘米) = 高电平时间(微秒) / 58
- 距离(英尺) = 高电平时间(微秒) / 148
硬件连接
- TRIG:连接到STM32的PD_0引脚。
- ECHO:连接到STM32的PD_1引脚。
程序设计
准备
- 硬件:STM32F103ZET6开发板、HC-SR04超声波测距模块、0.96寸OLED屏、杜邦线。
- 主芯片相关外设:RCC时钟、GPIO、TIM定时器、EXTI外部中断、Systick系统滴答定时器。
- 开发环境:KEIL_5。
驱动编写
- TRIG:配置为输出模式,输出高电平持续10us以上再输出低电平。
- ECHO:配置为输入模式,并配置外部中断,检测IO电平变化。
- 使用TIM6记录ECHO高电平持续时间,使用TIM7定时发送触发信号。
中断服务函数
- EXTI1_IRQHandler:处理ECHO信号的上升沿和下降沿。
- TIM6_IRQHandler:辅助ECHO高电平期间计数。
- TIM7_IRQHandler:定时发送HC_SR04触发信号。
实验结果
测量值在2cm-400cm范围内表现良好,但在测量距离小于2cm或测量斜面时,数值可能会有较大跳动。可通过排序取中间值等方式减小误差。
代码示例
提供了完整的GPIO配置、TIM配置、中断优先级配置以及中断服务函数的代码示例。
注意事项
- 建议测量周期为60ms以上,以防止发射信号对回波信号的影响。
- 被测物体的面积不少于0.5平方米且平面尽量要求平整,否则影响测量结果。
STM32篇驱动HC_SR04超声波测距模块 项目地址: https://gitcode.com/Resource-Bundle-Collection/9d980