超声波测距HY-SRF05模块的学习总结
文章目录
- 超声波测距
- 一、HY-SRF05
- 1.短的介绍
- 2.引脚介绍
- 二、实现思路
- 三、部分代码
- 1.Trig、Echo的初始设置
- 2.主函数中的相关代码
- 总结
- 写在最后
超声波测距
超声波测距模块可以让我们大致检测到前方的障碍物以及大致的距离,本次学习就是为了让我的小车可以检测到前方是否有障碍物,配合红外循迹的使用达到循迹避障的功能。
一、HY-SRF05
1.短的介绍
如图所示,这就是我打算使用的模块外观,单独看背部的PCB会觉得他很复杂,但其实使用起来并没有这么夸张。
该模块的工作流程就是给他一个10us的高电平触发,两个“眼睛”一样的东西会发出超声波,如果前方有障碍物则会弹回部分超声波,再由这两个“眼睛”接受,通过判断这一段过程的时间就可以大致计算出障碍物的距离。该模块的检测距离范围在手册上写的为:2cm-450cm,精度在3cm,其实这个精度也取决于单片机的晶振。
2.引脚介绍
该模块一共有5个引脚,分别是VCC、GND、Trig、Echo、Out
其中VCC和GND不多介绍,手册上说VCC需要接5V,但是我看网上很多人都是接的3.3V也可以照常使用。
OUT:该引脚在手册中提到为开关量输出,可以做报警模块使用,根据我的理解,他应该是一个模块状态口,通过判断OUT的高低电平来判断模块是否上电,查阅很多博主的博客发现对该接口都是假装看不到也压根没用到,因此我也没打算用这个引脚。
Trig:触发控制,信号输入。就是这个引脚输出那个触发信号,该引脚发出10us的高电平触发模块进行一次测距。
Echo:接收端,回响信号接收。该引脚可以在接收到回响信号后产生一个和距离成比例的方波,可以通过计时器进行计时,我认为也可以用输入捕获进行计时。
二、实现思路
通过控制寄存器,控制一个IO口和Trig相连接,发出一个10us的触发信号。在用一个上拉输入的IO口和Echo相连接,当模块Echo引脚返回高电平时,用计时器开始计数,Echo低电平时计时器停止计时,通过计算收到的波长时间,根据公式us/29.4即可得出对应的距离(单位为厘米)。
三、部分代码
1.Trig、Echo的初始设置
//控制寄存器使得PA6输出高电平,对应Trig
RCC->APB2ENR|=1<<2;
GPIOA->CRL&=0XF0FFFFFF;
GPIOA->CRL|=0X03000000;
GPIOA->ODR|=1<<6;
//PA15设置为上拉输入
GPIOA->CRH&=0X0FFFFFFF;
GPIOA->CRH|=0X80000000;
GPIOA->ODR|=1<<15;
上面的代码为.c文件里的,我们为了使用方便还会在.h文件中做这样的定义
这样操作后,会使得我们的32像51板子一样更直接的使用IO口。
例如下面这个触发信号的函数就变得十分简单。
void trig signal()
{PA6=1;delay_us(12);PA6=0;
}
2.主函数中的相关代码
Sendsignal();if(Echo == 1)length=Getlength();
在主函数中我们只需要用Sendsignal()函数进行一次触发信号的发送,而后进行对Echo的判断,当接受到Echo的高电平后开始计时,用Getlength()函数进行求距离。
下面给出Sendsignal()函数
void Sendsignal(void)
{Trig = 1;delay_us(12);Trig = 0;}
Getlength()函数
u16 Getlength(void)
{ u16 time,length;for(time=0;Echo==1;time++)delay_us(1);length = time/29.4;return length;
}
总结
为了减少硬件以及我的工作压力,所以并没有选择用输入捕获进行更精准的测距,因为用在小车上,只需要能知道大概距离甚至是前方有没有就可以了,所以仅使用了像51系列的程序,但是也是比较实用的。
写在最后
本人小白一枚,这些仅仅是我个人的经验与认知,也许含有多处错误,希望读者给我指正。
超声波测距HY-SRF05模块的学习总结相关推荐
- 史上最细超声波测距LCD显示距离模块(HC-SR04)
首先介绍硬件配置 超声波模板: HC-SR04 单片机型号: STC89C52RC 液晶显示屏: LCD1602 接线: Trig 接P2.0Echo接P2.1,VCC接VCC,GND接GND 介绍基 ...
- 学习HC-SR04超声波测距模块,代码附带卡尔曼滤波
硬件引脚 VCC-供5V的电压(一定要是5v) GND-接地 Trig-HC-SR04超声波测距模块上的触发引脚,用于向模块发送一个10微秒的高电平触发信号,触发模块开始进行距离测量 Echo-用于接 ...
- 学习并使用HC-SR04超声波测距模块+STM32
** 超声波测距原理 ** 参考博客: https://blog.csdn.net/qq_40734815/article/details/105992801 https://blog.csdn.ne ...
- HC-SR04超声波测距模块学习记录
文章目录 一.关于HC-SR04超声波测距模块 1.硬件介绍 2.工作原理 二.基于STM32的驱动代码 一.关于HC-SR04超声波测距模块 1.硬件介绍 HC-SR04 超声波测距模块可提供 2c ...
- STM32学习笔记4——HC_SR04超声波测距模块的调试记录
项目场景: STM32F103单片机和HC_SR04超声波测距模块测量距离. 其中HC_SR04模块采用5V供电. 问题描述: 代码编写完成以后,HC_SR04超声波测距模块传递模块返回来的高电平一直 ...
- STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)
参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...
- STM32蓝牙控制循迹避障小车源代码——3.舵机、超声波测距模块
STM32蓝牙控制循迹避障小车源代码--3.舵机.超声波测距模块 注意-所需模块: US-015超声波模块 SG90舵机云台 接线:舵机超声波: A1–P2.7 B8–Trig B9–Echo 代码 ...
- 基于HC-SR04的超声波测距模块
目录 前言: HC-SR04硬件概述: HC-SR04引脚介绍: HC-SR04的超声波测距模块工作原理: 软件设计: 超声波初始化函数:(代码如下) 超声波测距模块:(代码如下) 前言: 2022. ...
- 51单片机学习篇-- --超声波测距(HC--SR04)笔记
开篇先说一句废话···· 本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛! 开篇 本单片机购买的时候带的超声波模块是HC-SR04,根据好多材料都说用这个的原因是便宜,,,不过没关系 ...
最新文章
- 图的算法专题——最小生成树
- Ms Press China MVP-书评活动-王万利 Microsoft Active Directory Administrator's Pocket Consultant...
- 七点建议,帮助你编写出简洁、干练的Java代码
- 上不了网,我的解决过程
- 使用VB.net建立excel文件
- Linux-2.6.25 TCPIP函数调用大致流程
- C#开发微信公众平台-就这么简单(附Demo)
- 智能硬件开发神器免费送!距离产品智能化,只差一个“三明治”的距离
- 2021年了,Redis复制原理你应该理解!
- 网页悬浮按钮php,Javascript实现带关闭按钮的网页漂浮广告代码_javascript技巧
- viper4android 2.5正版,VIPER4Android最新版本
- 函数的基本概念以及函数封装
- 入手对比:华为mate40pro和mate40pro+区别
- From.Designer.cs和From.cs的关系
- Zeppelin打开定时调度
- 通信工程项目管理如何控制成本
- python虚拟机原理_pvm虚拟机基本原理
- python和netlogo软件模拟病毒传播仿真模型(一)
- 【放置江湖】LUA手游 基于HOOK 解密修改流程
- 易语言时间转化linux格式,易语言取时间年月日格式化
热门文章
- 【多线程笔记02】多线程之CyclicBarrier的介绍和使用
- Windows 8 应用隐私声明——AnyRadio
- 英属哥伦比亚大学计算机科学专业,加拿大英属哥伦比亚大学计算机专业解析
- rd650服务器安装linux,联想RD650RAIDLinux6.6.pdf
- 河北计算机课本初中,《信息技术》初中版(第一册)
- npm run build打包产生的build文件夹通过nginx部署到服务器上访问(centos8)
- python生成中文字符画_Python 图片转字符画
- android pc游戏模拟器哪个好用,安卓模拟器吃鸡,哪款更好用? PC玩《绝地求生:刺激战场》实战体验...
- Intel CPU架构处理器漏洞越捅越大 打补丁将损失30%性能
- 论文翻译-阿里小蜜,基于检索模型和生成模型相结合的聊天引擎