示例七、超声波传感器测距

通过以下几个示例来具体展开学习,了解超声波传感器原理及特性,学习超声波传感器的应用:

示例七、超声波传感器测距

一、基本原理:
1、超声波测距仪的系统结构
利用超声测距原理测量物体之间的距离,当此距离小于某一设定值时,及时提醒系统以AT89C51单片机为控制核心,用HC-SRO4超声波测距模块测量距离,经温度补偿后,用液晶显示距离,超过指定距离,用蜂鸣器报警提示,如图8-22所示。系统分为五个模块:单片机、超声模块、温度传感器、液晶显示、声音播报。
在这里插入图片描述

2、超声波测距仪的硬件设计
1)超声波测距模块
超声波测距仪系统选用HC-SRO4超声测距模块,如图8-23所示。测量范围为2-450cm,精度可达0.3cm。当单片机给TRIG引脚提供至少10s的高电平时,模块会自动发送八个40kHz的方波,并自动检测是否有信号返回:当有信号返回时,通过ECHO端输出一个高电平,该高电平持续的时间为超声波发射到返回的时间测试距离=(ECHO高电平时间×声速(340m/s)
在这里插入图片描述

1)结构及引脚
引脚说明如下。
Uc:供5V电源。
GND:地线。
TRIG:触发控制信号输入。
ECHO:回响信号输出。
+5V
在这里插入图片描述

HC-SR4模块的工作时序如图8-24所示。只需要提供持续10s以上的脉冲触发信号,此模块就会自动发出八个40kIz周期的电平并检测回波。当检测到有回波信号,就设置出回呼信号为高电平。回响信号的脉冲宽度与所测的距离成正比。根据从发射信号到收到回响信号的时间间隔可以计算得到距离。建议测量周期为60ms以上,以防止发射信号的影响。
在这里插入图片描述
图8-24 HC-SRO4模块的时序
此模块不宜带电连接,若要带电连接,则先让模块的GND端接地,否则会影响模块的正常工作。测距时,被测物体的面积不能小于0.5m2,且要求平面尽量平整,否则将影响测量的结果。
2)超声波测距仪系统电路原理
超声波测距仪系统电路原理如图8-25所示,HC-SRO4超声波测距模块的测距信号ECHO为高电平时,启动单片机定时器定时, ECHO为低电平时,停止定时。根据式(8-5)即可计算出距离,发给液晶显示模块显示,单片机将计算出的距离和警戒距离作比较,当物体距离小于警戒距离时,驱动蜂鸣器报警。

在这里插入图片描述

二、超声波测距仪的软件设计
1.主程序
系统启动后,首先进行初始化,然后进行距离测量。最后将测量结果送到LCD1602上显示。如果测量距离超出规定范围,则报警提示。单片机定时器T0用于测距定时,距离计算公式为:
s=(334.1m/s)time(ms)/1,000,000/2 (8-7)
s=1.7
time/100 (单位:cm)
超声波测距仪的主程序流程如图8-26所示。

在这里插入图片描述

2.HC-SRO4测距仪的流程
单片机的P3.3口接HC-SRO4的Tig端口,P3.2口接HC-SRO4的Echo端口,HC-SRO4模块收到测试回波信号后,Echo口输出一个高电平,并开始测试距离,单片机检测到Echo口高电平后即启动计数器开始计数,直到单片机检测到Echo口变成低电平时,停止计数,计数器的计数值乘以单片机计数周期就是超声波从发射到接收的往返时间,即距离s=V*t/2。
3.超声波测距仪的源程序:

#include <reg52.H>//器件配置文件
#include <intrins.h>
//传感器接口
sbit RX  = P3^2;
sbit TX  = P3^3;
//按键声明
sbit S1  = P1^4;
sbit S2  = P1^5;
sbit S3  = P1^6;
//蜂鸣器
sbit Feng= P2^0;sbit W1=P1^0;
sbit W2=P1^1;
sbit W3=P1^2;
sbit W4=P1^3;
//变量声明
unsigned int  time=0;
unsigned int  timer=0;
unsigned char posit=0;
unsigned long S=0;
unsigned long BJS=200;//报警距离200CM
//模式 0正常模式 1调整
char Mode=0;
bit  flag=0;
bit flag_KEY=0;//距离的计算
void Conut(void)
{time=TH0*256+TL0;	  //读出T0的计时数值TH0=0;TL0=0;				  //清空计时器S=(time*1.7)/100;     //算出来是CM//声音的速度是340m/s,时间的单位是us,计算到秒需要将时间数据/1000000,//长度=速度*时间,340*time/1000000,长度数据单位是m转换成cm需要乘以100得到340*time/10000,//小数点都向左移两位得到3.4*time/100,因为超声波是往返了,所以再除以2,得到距离数据(time*1.7)/100if(Mode==0)			  //非设置状态时{if((S>=700)||flag==1) //超出测量范围显示“-”{	Feng=0; 		   //蜂鸣器报警flag=0;disbuff[1]=10;	   //“-”disbuff[2]=10;	   //“-”disbuff[3]=10;	   //“-”}else{//距离小于报警距if(S<=BJS){Feng=0;	//报警}else  //大于{Feng=1;		//关闭报警	}disbuff[1]=S%1000/100;		 //将距离数据拆成单个位赋值disbuff[2]=S%1000%100/10;disbuff[3]=S%1000%10 %10;}}else{Feng=1;disbuff_BJ[1]=BJS%1000/100;disbuff_BJ[2]=BJS%1000%100/10;disbuff_BJ[3]=BJS%1000%10 %10;}
}

三、数据记录:
1、减小传感器距离,查看系统的报警阈值;把阈值调整到150,在进行验证。
当距离小于200cm时警报器发生警报,大于200cm时不会警报。
同理,当阈值为150cm时小于150cm时警报器发生警报,大于150cm时不会警报。

2、从示波器中读出激活超声波传感器的脉冲周期,并分析传感器输入输出信号的时序关系(显示距离为1.50时,输出信号高电平的时长有何关系)。
11.820.17=2.0094
8.82
0.17=1.499
在这里插入图片描述

11.820.17=2.0094
8.82
0.17=1.499

四、思考:
proteus系统元件库中暂时没有HC-SRO4超声测距模块的数据,为了能在系统仿真时使用,实际由8051微处理器机器接口模拟了超声测距模块功能和接口,trig、echo,VCC、GND,以及虚拟的+、-按钮,试分析他们的逻辑关系。
单片机的P3.3口接HC-SRO4的Tig端口,P3.2口接HC-SRO4的Echo端口,HC-SRO4模块收到测试回波信号后,Echo口输出一个高电平,并开始测试距离,单片机检测到Echo口高电平后即启动计数器开始计数,直到单片机检测到Echo口变成低电平时,停止计数,计数器的计数值乘以单片机计数周期就是超声波从发射到接收的往返时间,即距离s=V*t/2。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689407.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM【Spring SpringMVC Mybatis】——Mybatis

目录 1、初识Mybatis 1.1Mybatis简介 1.2 官网地址 2、搭建Mybatis框架 2.1 准备 2.2 搭建Mybatis框架步骤 1. 导入jar包 2. 编写核心配置文件【mybatis-config.xml】 3. 书写相关接口及映射文件 4. 测试【SqlSession】 2.3 添加Log4j日志框架 导入jar包 编写配置文…

2024年4月12日饿了么春招实习试题【第二题:魔法师】-题目+题解+在线评测【二分】

2024年4月12日饿了么春招实习试题【第二题:魔法师】-题目题解在线评测【二分】 题目描述&#xff1a;输入格式输出格式样例输入样例输出评测数据与规模 解题思路一&#xff1a;解题思路二&#xff1a;解题思路三&#xff1a;动态规划 题目描述&#xff1a; 塔子哥是一名魔法师…

信息系统架构模型_3.企业数据交换总线

1.企业数据交换总线 实践中&#xff0c;还有一种较常用的架构&#xff0c;即企业数据交换总线&#xff0c;即不同的企业应用之间进行信息交换的公共通道&#xff0c;如图1所示。 图1 企业数据交换总线架构 这种架构在大型企业不同应用系统进行信息交换时使用较普遍&am…

【18-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

CSS 定位

为什么需要浮动? 我们在访问一些网站的时候, 经常会遇到如下这种情况, 有一个组件, 一直固定在屏幕的固定位置, 无论你如何滑动这个网页, 就会固定在哪里, 如下, 下图是王者荣耀的一个官网: 要实现上面的效果, 标准流或者是浮动是无法快速实现的, 此时就需要使用定位来实现.…

力扣刷题--数组--第一天

一、数组 数组特点&#xff1a; 连续内存空间存储得数据元素类型一致数组可以通过下标索引查找数据元素&#xff0c;可以删除、替换、添加元素等 1.1 二分查找 使用二分查找需满足得条件&#xff1a; 数组是有序的&#xff1b;数组中没有重复元素&#xff1b;查找的target…

Excel实用技巧持续学习

1、Excel高效设置图标格式&#xff1a; 2、饼图可以统一设置数据标签在图外面&#xff01;&#xff01; 环形图不可以&#xff0c;但是可以中间手动加上白色圆形&#xff0c;将饼图变为圆环。 可以设置标签的文本显示&#xff1a; 3、饼图和环形图最好进行排序&#xff01;显得…

解决docker安装Wordpress速度过慢的问题

先可以在dockerhub上查看Wordpress的详情&#xff1a; Dockerhttps://hub.docker.com/search?qwordpress 具体速度慢的问题如下&#xff1a; 现在打开docker右上角的设置图标&#xff0c;并进入docker engine&#xff0c;添加如下代码&#xff1a; "registry-mirrors&…

即插即用篇 | YOLOv8引入局部自注意力 HaloAttention | 为参数高效的视觉主干网络扩展局部自注意力

本改进已集成到 YOLOv8-Magic 框架。 我们提出了Axial Transformers,这是一个基于自注意力的自回归模型,用于图像和其他组织为高维张量的数据。现有的自回归模型要么因高维数据的计算资源需求过大而受到限制,要么为了减少资源需求而在分布表达性或实现的便捷性上做出妥协。相…

1290.二进制链表转整数

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1&#xff1a; 输入&#xff1a;head [1,0,1] 输出&#xff1a;5 解释&#xff1a;二进制数 (101) 转化为十进制…

Python大数据分析——Logistic回归模型

Logistic回归模型 概念理论分析模型评估混淆矩阵ROC曲线KS曲线 函数示例 概念 之前的回归的变量是连续的数值变量&#xff1b;而Logistics回归是二元离散值&#xff0c;用来解决二分类问题。 理论分析 上式中的hβ(X)也被称为Loqistic回归模型&#xff0c;它是将线性回归模型…

Zotero 使用入门(笔记)

参考文献&#xff1a;Zotero入门完整教程-共27节-免费&#xff0c;李长太>&#xff0c; 仅供参考学习