一、关于HC-SR04超声波测距模块
1.硬件介绍
HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。
相关引脚:
VCC:电源
GNN:接地
Trig:触发信号输入
Echo:回响信号输出
[注]: 1、此模块不宜带电连接,若要带电连接,则先让模块的 GND 端先连接,否则会影响模块的正常工作。
2、测距时,被测物体的面积不少于 0.5 平方米且平面尽量要求平整,否则影响测量的结果。
2.工作原理
通过脉冲触发引脚(trig)提供一个 10uS 以上高电平信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波,一旦检测到有回波信号则通过Echo引脚输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
由此可得出计算公式:
测试距离=(高电平时间*声速(340M/S))/2;
我这里使用的是定时器的输入捕获功能来直接读取高电平的持续时间。
二、基于STM32的驱动代码
main.c
#include "delay.h"
#include "sys.h"
#include "hcsr04.h"
#include "usart.h"
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
delay_init(); //延时函数初始化
uart_init(9600); //9600
HCSR04_TRIG_Init();
TIM3_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数 ARR取最大
while(1)
{
delay_ms(1000);
HCSR04_TRIG_Send();
HCSR04_Distance();
}
}
Trig的相关设置:
void HCSR04_TRIG_Send(void)
{
TRIG=1;