一、产品特点:
HY-SRF05 超声波测距模块在单片机项目还是毕业设计中是比较常用的一个传感器,成本低精度高性价比是很高的,可提供2cm-450cm 的非接触式距离感测功能,
测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。
二、使用案例
使用超声波测距传感器sr04/srf05,搭配stm32单片机制作,测量障碍物距离
使用0.96oled显示实时距离,
蜂鸣器和led灯在不同距离进行不用频率和亮度的闪烁。距离远慢闪,距离越近闪烁越快 。
完整程序代码可在百度网盘下载:
下载链接https://pan.baidu.com/s/1W_sRHmMzod3TQ4X8S7o6Dw?pwd=ye1s
三、基本工作原理:
1、基本工作原理
(1)采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声
波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;
2、引脚定义
3、电气特性
四、超声波时序
以上时序显示只需要提供一个10uS以上脉冲触发信号,srf05超声波测距模块内部将发出8个40kHz
周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离
成正比。由此通过 发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米或者
uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;
建议测量周期为60ms以上,以防止发射信号对回响信号的影响。
五、proteus仿真
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "Ultrasound.h"
#include "LEDBuzzer.h"
#include "OLED.h"
uint16_t a; //定义变量,存放距离
int main(void)
{
/*模块初始化*/
Ultrasound_Init(); //超声波初始化
LEDBuzzer_Init(); //蜂鸣器LED初始化
OLED_Init(); //OLED初始化
/*显示静态字符串*/
OLED_ShowString(1,1,"Distance:");
OLED_ShowString(2,4,"cm");
while (1)
{
a = Test_Distance(); //超声波测得的距离存在变量a
OLED_ShowNum(2,1,a,3); //oled显示距离的值
if(a>20&&a<=30) //判断距离值范围
{
LEDBuzzer_ON(); //LED慢闪烁,蜂鸣器慢响
Delay_ms(100);
LEDBuzzer_OFF();
Delay_ms(50);
}
if(a>10&&a<=20) //判断距离值范围
{
LEDBuzzer_ON(); //LED快闪烁,蜂鸣器快响
Delay_ms(60);
LEDBuzzer_OFF();
Delay_ms(10);
}
if(a>5&&a<=10) //判断距离值范围
{
LEDBuzzer_ON(); //LED最快闪烁,蜂鸣器最快响
Delay_ms(30);
LEDBuzzer_OFF();
Delay_ms(10);
}
if(a>30) LEDBuzzer_OFF(); //判断距离值范围大于30,蜂鸣器LED不闪
}
}