STM32ExampleCode-11-HCSR04

STM32ExampleCode-11-HCSR04

1. 简介

HC-SR04 超声波测距模块是最常用的超声波传感器之一,可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到的非接触式距离感测功能,测距精度可达高到 3mm ;超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点。2CM盲区,4.5M典型最远测距,2.2mA作电流。模块包括超声波发射器、接收器与控制电路。可应用于机器人/小车避障、物体测距、液位检测、公共安防、停车场检测等场景。

article011_01.png

2. 工作原理

  • 采用IO 口 TRIG触发测距,给最少10us的高电平信号。
  • 模块自动发送8个40khz的方波,自动检测是否有信号返回(高电平)
  • 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间 * 声速(340M/S))/2;
    article011_02.png
    以上时序图表明编程时我们只需要提供一个10uS 以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:距离=高电平时间 * 声速(340M/S)/2;建议测量周期为60ms 以上,以防止发射信号对回响信号的影响。

3. 编程原理

本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出,MCU一旦接收到这一回响信号的输出就可以开定时器计时,直到此段端口变为低电平时就可以停止定时器,然后读定时器的值,这个时间为测距的时间,根据公式(高电平时间 * 声速(340M/S))/2即可计算出距离,如此不断的周期测,即可以达到移动测量距离的目的。

4. 注意事项

  • 此模块不宜带电连接,如果要带电连接,则先让模块的Gnd端先连接。否则会影响模块工作。
  • 测距时,被测物体的面积不少于0.5平方米且要尽量平整。否则会影响测试结果。
  • 严禁反接,正负极接反会烧坏模块且发烫严重,如果模块发烫请立刻断电

5. HCSR04例程

1) 下载例程

Gitee下载:STM32ExampleCode-11-HCSR04
article011_06.png

2) HCSR04驱动

在目录“.\HARDWARE\HCSR04”下有超声波的驱动文件,HCSR04.c和HCSR04.h文件
article011_03.png

3) HCSR04驱动使用

首先需要导入头文件
#include "hcsr04.h"
然后调用:
HCSR04_init(); //超声波初始化 distance = Get_Distance(); //读取超声波采集的距离 printf("距离为:%.3fmm\r\n",distance);

4) 编译烧录运行

打开目录“.\USER”下有keil工程的启动文件,编译烧录运行:
article011_04.png
article011_05.png

Licensed under CC BY-NC-SA 4.0