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

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

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

一、基本原理:
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.mzph.cn/pingmian/10283.shtml

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

相关文章

融合Transformer与CNN,实现各任务性能巅峰,可训练参数减少80%

论文er看过来&#xff0c;今天给各位推荐一个热门创新方向&#xff1a;CNNTransformer。 众所周知&#xff0c;CNN通过多层卷积自动学习空间层级特征&#xff0c;能够有效提取图像局部特征。而Transformer通过自注意力机制全局建模&#xff0c;能够有效处理长距离依赖关系。 …

【RAG 论文】Contriever:对比学习来无监督训练文本嵌入模型

论文&#xff1a;Unsupervised Dense Information Retrieval with Contrastive Learning ⭐⭐⭐⭐⭐ Facebook Research, arXiv:2112.09118 Code&#xff1a;github.com/facebookresearch/contriever 一、论文速读 本文使用对比学习的方法来对文本检索模型做无监督学习训练&am…

windows设置软件开机自启动

winr 输入 shell:startup C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup把要开机自动启动的程序的快捷方式放进来 输入快捷键 ctrlshiftesc 打开任务管理器 同时在任务管理器也可以看到

已解决【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法

本文摘要&#xff1a;【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法。 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专…

【大数据·Hadoop】从词频统计由浅入深介绍MapReduce分布式计算的设计思想和原理

一、引入&#xff1a;词频统计问题 假如我们有一亿份文档&#xff0c;需要统计这一亿份文档的词频。我们会怎么做&#xff0c;有以下思路 使用单台PC执行&#xff1a;能不能存的下不说&#xff0c;串行计算&#xff0c;一份一份文档读&#xff0c;然后进行词频统计&#xff0…

视频号小店做店的最新最全攻略,小白也能快速上手轻松变现!

大家好&#xff0c;我是电商花花。 从开始接触视频号小店到现在已经两年多时间了&#xff0c;关于视频号小店也有不少经验和感触。 最近越来越多的人开始进入视频号小店的电商赛道&#xff0c;有人日均销售额做到几万甚至十几万。 想在视频号上变现赚钱&#xff0c;但是苦于…

【Android】Apk图标的提取、相同目录下相同包名提取的不同图标apk但是提取结果相同的bug解决

一般安卓提取apk图标我们有两种常用方法&#xff1a; 1、如果已经获取到 ApplicationInfo 对象&#xff08;假设名为 appInfo&#xff09;&#xff0c;那么我们获取方法为&#xff1a; appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象2、 如果还没获取到 Applica…

DPDK e1000 ring buffer

基本原理 如图&#xff08;盗图&#xff09; 内存&#xff08;RAM&#xff09;和网卡&#xff08;NIC&#xff09;之间通过Descriptor ring 交互网络报文数据内存中需要申请内存 packet buffer 的内存池&#xff0c;内存池中的每个实例&#xff0c;地址是物理连续的或者IOVA…

【Vue基础】Vue在组件数据传递详解

Vue核心基础-CSDN博客 先回顾Vue特性&#xff1a; Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;具有许多强大的特性。以下是一些主要的 Vue 特性&#xff1a; 响应式数据&#xff1a;Vue 使用双向绑定来实现数据的响应式更新。当数据发生变化时&#xff0c;视图会自…

JAVA毕业设计138—基于Java+Springboot+Vue的医院预约挂号小程序(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的医院预约挂号小程序(源代码数据库)138 一、系统介绍 本系统前后端分离带小程序和后台 小程序&#xff08;用户端&#xff09;&#xff0c;后台管理系统&a…

OpenCv中cv2.subtract(image,blurred)与(image-blurred)的区别

目录 一、cv2.subtract()函数二、cv2.subtract(image,blurred)和&#xff08;image-blurred&#xff09;处理效果对比2.1 代码2.2 输出结果 三、总结 一、cv2.subtract()函数 cv2.subtract是OpenCV库中的一个函数&#xff0c;用于进行图像减法运算。它可以很方便地进行两个图像…

鸿蒙OpenHarmony:【关于deps、external_deps的使用】

关于deps、external_deps的使用 在添加一个模块的时候&#xff0c;需要在BUILD.gn中声明它的依赖&#xff0c;为了便于后续处理部件间依赖关系&#xff0c;我们将依赖分为两种——部件内依赖deps和部件间依赖external_deps。 依赖分类 开发前请熟悉鸿蒙开发指导文档&#xff…

conan2 基础入门(01)-介绍

conan2 基础入门(01)-介绍 文章目录 conan2 基础入门(01)-介绍⭐什么是conan官网Why use Conan? ⭐使用现状版本情况个人知名开源企业 ⭐ConanCenter包中心github ⭐说明文档END ⭐什么是conan 官网 官网&#xff1a;Conan 2.0: C and C Open Source Package Manager 一句话来…

Array.map解析

map方法会创建一个新数组。该方法会循环数组中的每个值&#xff0c;如果仅仅是想循环数组不需要返回值使用数组的forEach方法就可以。原数组中的每个元素都调用一次提供的函数后的返回值组成。Array.map 它接收一个函数 这个函数可以接收三个参数 数组的每个值item 这个值的索引…

SC-Lego-LOAM建图与ndt_localization的实车实现

参考&#xff1a;https://blog.csdn.net/weixin_44303829/article/details/121524380 https://github.com/AbangLZU/SC-LeGO-LOAM.git https://github.com/AbangLZU/ndt_localizer.git 将建图和定位分别使用lego-loam和ndt来进行&#xff0c;实车上的效果非常不错&#xff0c;…

STM32F103学习笔记 | 7.使用寄存器点亮LED灯

int main(void) { // 分析指南者硬件原理图得知要实现点亮灯泡需要将PB0设置为低电位&#xff0c; // 查阅STM32F10x中文手册的端口配置低寄存器&#xff0c;得知一个PB有8个配置位&#xff0c;查阅手册找到了PB0的位置是3:2位置&#xff0c; // 插入未知知识&#xff1a;将端…

EMAIL-PHP功能齐全的发送邮件类可以发送HTML和附件

EMAIL-PHP功能齐全的发送邮件类可以发送HTML和附件 <?php class Email { //---设置全局变量 var $mailTo ""; // 收件人 var $mailCC ""; // 抄送 var $mailBCC ""; // 秘密抄送 var $mailFrom ""; // 发件人 var $mailSubje…

获取Android开发板已连接WiFi密码

硬件/软件环境&#xff1a; 1&#xff09;全志芯片开发板A40i 2&#xff09;Android Studio Giraffe | 2022.3.1 Patch 3 连接条件&#xff1a; 1)两端都是USB-A接口线&#xff0c;一端插入电脑端USB接口&#xff0c;另一端插入开发板USB接口&#xff1b; 2&#xff09;Andr…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; #Options local_llm llama3 llm ChatOllama(modellocal_llm, format"json", temperature0) #embeddings #embeddings OllamaEmbeddings(model"nomic-embed-text") embed…

作为网络安全工程师需要掌握的安全小知识!

网络安全风险无处不在&#xff0c;今天为大家梳理了一些网络安全相关的小知识&#xff0c;希望能进一步提升大家的安全意识&#xff0c;帮助大家建立更加安全的网络环境。 一、主机电脑安全 1、操作系统安全&#xff1a;安装操作系统时需要选择合适的版本&#xff0c;及时打补…