【mcuclub】超声波测距模块HC-SR04
一、实物图
二、原理图
编号 | 名称 | 功能 |
1 | VCC | 电源正 |
2 | TRIG | 触发控制信号输入 |
3 | ECHO | 回响信号输出 |
4 | GND | 电源地 |
三、简介
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物体测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。
HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度3mm,模块包括超声波发射器、接收器与控制电路。
基本工作原理:
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回,超声波接收器收到反射波就立即停止计时。测试距离=(计时时间*声速)/2
四、电器特性
五、时序解析
(1)采用IO口TRIG触发测距,给最少10us的高电平触发信号。
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
(4)测试距离=(高电平时间*声速)/2;
代码如下:
/****
*******获取距离函数
Hcsr04_temp:当前的环境温度
返回值:测得的距离(距离单位cm)
*****/
uint Hcsr04_GetDistance(uint Hcsr04_temp)
{
uint Hcsr04_distance; //用于记录测得的距离
float Hcsr04_speed; //保存超声波的速度值
TH2 = 0; //使用定时器2作为计时器
TL2 = 0;
HCSR04_Trig = 0; //给超声波模块一个高电平的开始脉冲
Hcsr04_Delay(20);
HCSR04_Trig = 1;
Hcsr04_Delay(20);
HCSR04_Trig = 0;
while(!HCSR04_Echo); //等待超声波模块的返回脉冲
TR2 = 1; //启动定时器,开始计时
while(HCSR04_Echo); //等待超声波模块的返回脉冲结束
TR2 = 0; //停止定时器,停止计时
Hcsr04_speed = 0.607*Hcsr04_temp+331.4; //根据公式 v=0.607T+331.4 计算出当前温度值对应的超声波速度,这时的单位是“米/秒”
Hcsr04_speed = Hcsr04_speed/10000; //将超声波的速度从单位“m/s”转为“cm/us”,方便后面的计算
Hcsr04_distance=((TH2*256+TL2) * (12/FOSC) * Hcsr04_speed) / 2; // 距离cm = (时间us * 速度cm/us) / 2
if(Hcsr04_distance > 500) //把检测结果限制500厘米内
Hcsr04_distance = 500;
return Hcsr04_distance;
}
六、流程设计
首先初始化引脚,然后复位定时器计数值,接着给超声波一个高电平的开始信号,等待超声波模块的返回脉冲,接到返回脉冲,则开始计时,然后等待超声波模块的返回脉冲结束,如果结束,则停止计时。接下来通过温度补偿计算声波速度,通过距离=(时间*速度)/2最终得到距离值。最后判断距离值是否超过量程,如果超过量程则将距离值设置成最大量程值。
【mcuclub】超声波测距模块HC-SR04相关推荐
- hc sr04流程图_超声波测距模块工作原理_HC-SR04模块详解
超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较 ...
- arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)
这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发 ...
- STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)
参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...
- HC-SR04超声波测距模块
1.产品特点 HC-SR04超声波测距模块可提供2cm-400cm 的非接触式距离感测功能,测距精度可达高到3mm:模块包括超声发射器.接收器与控制电路. 基本工作原理: (1)采用 ...
- stm32蓝牙模块和超声波测距模块
蓝牙 蓝牙概念 蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接. [1] 蓝牙使当前的一些便携移动设备和计算 ...
- Arduino系列之超声波测距模块代码(一)
这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发 ...
- 通过串口打印--超声波测距模块测得距离
通过串口打印--超声波测距模块测得距离 原理 超声波测距模块 串口传输 实战代码 原理 超声波测距模块 在这里首先需要了解超声波测距模块的原理.在我的这篇博客有很多介绍.超声波模块介绍 串口传输 串口 ...
- 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发
基于MCS51单片机的超声波测距模块的开发 采用C51程序设计语言,完成下列功能要求. l 必选功能: (1) 超声波模块和单片机的接口设计,画出完整的电路原理图.(15分) (2) 开发板上电时,显 ...
- 学习HC-SR04超声波测距模块,代码附带卡尔曼滤波
硬件引脚 VCC-供5V的电压(一定要是5v) GND-接地 Trig-HC-SR04超声波测距模块上的触发引脚,用于向模块发送一个10微秒的高电平触发信号,触发模块开始进行距离测量 Echo-用于接 ...
最新文章
- 剑指offer:面试题37. 序列化二叉树
- 鸿蒙系统2.0什么时候上线,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
- django中csrftoken跨站请求伪造的几种方式
- Visualization Document Feb 12 16:42
- 【luogu P3378 堆】 模板
- Linux基础之-网络配置,主机名设置,ssh登陆,scp传输
- java 中iterator 和 collection接口源码
- how is my appointment opened in HCP
- 一维数组和二维数组的区别_数组指针和指针数组的区别
- 【HDU - 1254 】推箱子 (双bfs)
- java算法判断链表有没有闭环_前端算法系列之二:数据结构链表、双向链表、闭环链表、有序链表...
- 【Spring 工厂】注入详解 — Set注入(JDK内置类型,用户自定义类型)、构造注入(重载)
- php代码里面的居中,css代码如何居中
- java关闭服务_实现优雅地关闭Docker中的java服务
- 任意文件夹下打开cmd窗口
- mos管结电容等效模型_【详解各元器件等效电路】电阻、电容、电感、二极管、MOS管!...
- 停车场管理系统 Java语言
- Secure DFU环境搭建
- 关于ASP木马提升权限
- 108个Python精选库,看完收获丰富
热门文章
- 新字体引用本地运行可以获得,放到服务器上报404
- OllyDBG反汇编入门教程
- 我拿到了梦寐以求的字节跳动和腾讯双offer!知乎上转疯了!
- 计算机网络vtp,简单理解 VTP 协议与实战单臂路由
- python数学建模(四)微分方程模型
- Python : UnicodeEncodeError: 'gbk' codec can't encode character '\u200b' in position
- tcp_tw_reuse对客户端的作用
- 计算机应用标准化考场,标准化考场建设的方案.doc
- 从2019看2020前端发展趋势
- 可以吗?从 FireWire 设备引导 Linux