【特纳斯电子】超声波的测距原理分析(51单片机+HC-SR04 超声波测距)

2023-10-29 00:40

本文主要是介绍【特纳斯电子】超声波的测距原理分析(51单片机+HC-SR04 超声波测距),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 超声波的简单分析

超声波传感器是一种常用的传感器,它利用超声波的特性来测量距离或探测物体的存在。超声波传感器发射超声波脉冲,并通过测量超声波的反射时间来计算距离。当超声波遇到物体时,会发生回波,并被传感器接收到。通过测量回波的时间延迟,可以确定物体与传感器之间的距离。

超声波传感器常用于测距应用,例如机器人导航、停车辅助系统、无人机避障等。它具有非接触式、高精度和快速响应的特点。超声波传感器的工作原理类似于蝙蝠利用声波来探测周围环境。

超声波传感器通常由发射器和接收器组成。发射器发出超声波信号,接收器接收回波信号。超声波传感器可以测量的范围取决于超声波的频率和传感器的设计。一般而言,超声波传感器可以测量几厘米到几米的距离范围。下面对我们使用的HC-SR04详细讲解。

HC-SR04是一种常用的超声波测距模块。它由超声波发射器和接收器组成,可以测量物体与模块之间的距离。以下是HC-SR04模块的详细介绍:

  1. 工作原理:HC-SR04通过发射超声波脉冲并计时接收到的回波时间来确定距离。它利用超声波在空气中的传播速度(约为343米/秒)来计算物体与传感器之间的距离。
  2. 组成部分:
    • 发射器(Transmitter):发射超声波脉冲。
    • 接收器(Receiver):接收从物体反射回来的超声波信号。
    • 控制电路:控制发射和接收的时序。
  3. 使用方法:
    • 发射器发射超声波脉冲,脉冲经过空气传播到目标物体上。
    • 如果有物体存在,超声波脉冲将被物体表面反射,并由接收器接收。
    • 接收器将接收到的回波转换成电信号,并传递给控制电路进行处理。
    • 控制电路计算回波时间,然后根据回波时间和超声波传播速度计算出物体与模块之间的距离。
  4. 技术参数:
    • 工作电压:一般为5V直流电源。
    • 工作频率:一般为40kHz。
    • 测量范围:2厘米到400厘米。
    • 测量精度:约为3毫米。
  5. 应用领域:HC-SR04模块在许多物联网和机器人项目中被广泛使用,包括但不限于以下应用:
    • 避障:通过测量与障碍物的距离,实现避障功能。
    • 测距:用于测量物体与传感器之间的距离。
    • 位置检测:通过距离的变化来确定物体的位置。
    • 自动驾驶:在自动驾驶车辆中用于障碍物检测和定位等。

2 超声波测距的驱动

2.1 模块介绍

超声波测距模块是根据超声波遇障碍反射的原理进行测距的,能够发送超声波、接收超声波并通过处理,输出一段和发送与接收间隔时间相同的高电平信号,是常用的测距模块之一。HC-SR04是最常用的超声波测距模块之一,HC-SR04超声波模块可提供2cm~400cm的非接触式距离感测功能,测距精度可达3mm,工作电压为5V;内部模块包括超声波发射器、接收器与控制电路。如下为实物与对应端口:

  • Vcc:+5V电源供电;
  • Trig:输入触发信号(可以触发测距);
  • Echo:传出信号回响(可以传回时间差);
  • GND:接地。

2.2 基本工作原理

(1)采用I/O口连接Trig触发测距,给最少10us的高电平后即可发送超声波;

(2)模块自动发送8个40kHz的方波,并自动检测是否有信号返回;

(3)若有信号返回,经内部电路处理后,通过Echo到I/O口输入一个高电平,高电平持续的时间就是超声波从发射到返回的时间

(4)测试距离=(高电平时间*音速)/2;音速=340m/s=0.034cm/us

2.3 时序图

以上时序图表明你只需要向模块提供一个10us以上的脉冲触发信号,然后该模块内部将发出8个40kHz周期电平并检测回波,一旦检测到有回波信号,模块就向I/O口输出回响信号。回响信号的脉冲宽度与所测的距离成正比,由此通过回响信号的高电平时间计算得到距离。建议先将单位转换为cm/us,便于数据显示;测量周期为60ms以上,以防止发射信号对回响信号的影响。

  • 此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作;
  • 测距时,被测物体的面积不少于0.5平方米且平面尽量要求平整,否则会影响测量的结果。

3 获取测距数据

​ 先将端口初始化(置0),再通过Trig输入一个12us的高电平作为触发信号,最后接收回响信号,回响信号高电平的时间通过定时器0测量——当Echo为1时开始计时,Echo为0时结束计时,不需要打开中断。得到时间后根据公式: 测试距离=(高电平时间*音速)/2;音速=340m/s=0.034cm/us,计算出实际距离。

首先初始化定时器0

/*********************************************************
函数功能:T0定时器初始化
传入值:无
返回值:无
*********************************************************/
void Time0_Init(void)
{TMOD|=0x01;	//设T0为方式1,GATE=1;TH0=0;TL0=0;          ET0=1;           //允许T0中断EA=1;		//开启总中断		
}

然后撰写超声波获取的距离程序,如下所示。

/*********************************************************
函数功能:计算测到的距离
传入值:当前的环境温度
返回值:测得的距离(距离单位cm)
*********************************************************/
uint Hcsr04_GetDistance(uint Hcsr04_temp)
{uint distance;			// 用于记录测得的距离float gSpeed;			// 保存超声波的速度值// 根据公式 v=0.607T+331.4 计算出当前温度值对应的超声波速度,这时的单位是“米/秒” gSpeed = 0.607*Hcsr04_temp+331.4;	// 将超声波的速度从单位“m/s”转为“cm/us”,方便后面的计算	gSpeed = gSpeed/10000;		TH0 = 0;	 TL0 = 0;HCSR04_Trig = 1;		// 给超声波模块一个开始脉冲Hcsr04_DelayMs(1);HCSR04_Trig = 0;TR0 = 1;while(!HCSR04_Echo)	// 等待超声波模块的返回脉冲{if(TH0*256+TL0 >= 50000)	//防止超声波卡死break;}TH0 = TL0 = 0;			//计时清零TR0 = 1;			// 启动定时器,开始计时while(HCSR04_Echo)		// 等待超声波模块的返回脉冲结束{if(TH0*256+TL0 >= 50000)	//防止超声波卡死break;}TR0 = 0;		// 停止定时器,停止计时distance=((TH0*256+TL0)*gSpeed)/2;	// 距离cm=(时间us * 速度cm/us)/2if(distance > 500)		// 把检测结果限制500厘米内distance = 500;return distance;
}

 

这篇关于【特纳斯电子】超声波的测距原理分析(51单片机+HC-SR04 超声波测距)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/297078

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实