目录
1、功能定义
1.1 超声波测距原理
利用单片机编程产生频率为40KHz的方波,经过发射驱动电路放大,使超声波传感器发射端震荡,发射超声波。超声波经目标体(障碍物)反射回来,由传感器接收端接收,再经过接收电路放大、整形。当收到超声波的反射波时,接收电路输出端产生一个跳变。通过定时器计数,计算时间差,就可以计算出相应的距离。
计算公式如下:
l
=
t
/
2
∗
C
l = t/2*C
l=t/2∗C
其中,
C
C
C 为超声波在空气中的传播速度,室温下约为
340
m
/
s
340 m/s
340m/s,
t
t
t 为从发射到接收超声波所经历的时间,
l
l
l 为传感器到目标体(障碍物)之间的距离。
1.2 距离检测及信息反馈
初级功能
------------设置不同的检测距离值,反馈不同的LED颜色,串口显示数值
中级功能
------------将距离值实时反馈至LCD屏幕上
2、硬件结构
2.1 STM32F10X主控板
引脚接线
2.2 HY-SRF05 超声波模块
2.3 工作原理
该模块一共有5个引脚,分别是VCC、GND、Trig、Echo、Out。
-
其中VCC和GND用于供电,手册上说VCC需要接5V,但是很多人都是接的3.3V也可以照常使用。
-
Trig:触发控制,信号输入。通过这个引脚输入触发信号,输入10us的高电平触发模块,模块自动发送8个40KHz的方波进行一次测距。
-
Echo:信号输出,回响信号接收。该引脚可以在接收到回响信号后输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
-
OUT:该引脚在手册中提到为开关量输出,可以做报警模块使用,应该是一个模块状态口,通过判断OUT的高低电平来判断模块是否上电,基本不用。
2.4 超声波模块的工作时序图
2.5 实现思路
通过上面的分析,STM32主控板提供2个IO口分别用于信号的输出(PB8)和输入(PB9),VCC和GND用于供电。
- PB8输出10us的高电平
- PB9设置为上拉输入,当接收到高电平时,计时器开始计数,当PB9接收到低电平时,计时器停止计数
- 计算发射和接收超声波期间的时间,利用公式得到测距值
- 与设定值比较,点亮LED
- 向LCD屏幕输出测距值
3、软件代码
3.1 编程思路
(1)配置GPIO以及定时器;
(2)给TRIG端口发送大于10us的高电平,当收到ECHO回响信号时,打开定时器开始定时;
(3)当回响信号消失,关闭定时器;
(4)通过定时器定时时间来确定距离
(5)测量周期60ms以上