HC-SR04超声波模块

2023-05-16

1.硬件原理图

在这里插入图片描述

2.传感器参数表

电气参数HC-SR04 超声波模块
工作电压DC 5 V
工作电流15mA
工作频率40kHz
最远射程4m
最近射程2cm
测量角度15 度
输入触发信号10uS 的 TTL 脉冲
输出回响信号输出 TTL 电平信号,与射程成比例
规格尺寸452015mm

3.引脚功能表

HC-SR04实物图
在这里插入图片描述

HC-SR04功能引脚表

引脚说明
VCC接5V
GND地线
TRIG触发控制信号输入
ECHO回响信号输出

4.工作原理

(1)给超声波模块接入电源和地
(2)给脉冲触发引脚(trig)输入一个长为20us的高电平方波
(3)输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚echo端的电平会由0变为1;(此时应该启动定时器计时)
(4)当超声波返回被模块接收到时,回波引脚端的电平会由1变为0;(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长
(5)根据声音在空气中的速度为344米/秒,即可计算出所测的距离。

超声波时序图

在这里插入图片描述

  • 以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出 8个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
  • 建议测量周期为 60ms 以上,以防止发射信号对回响信号的影响。
  • 公式: uS/58=厘米 uS/148=英寸; 距离= 高电平时间*声速(340M/S)/2

5.流程图

硬件运行流程图
在这里插入图片描述

时间的输入捕获流程图
在这里插入图片描述

6.注意事项

(1)公式中为什么要除以58?

  • 我们作一下单位换算,34,300除以1,000,000厘米/微秒。 即为:0.0343厘米/微秒

  • 再换一个角度,1/(0.0343 厘米/微秒) 即:29.15 微秒/厘米。1厘米就29.15微秒。

  • 但是发送后到接收到回波,声音走过的是2倍的距离。所以实际距离就是1厘米,对应58.3微秒。

(2)高电平的测量

  • 我们使用通用定时器的输入捕获来测量高电平时间,所以使用的过程中要注意结果是否溢出

(3)消抖

  • 由于超声波测量一次的时间很短,测量一次很有可能出错,所以我们可以多测几次求平均值来进行消抖。

(4)使用的注意事项

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

7.基于stm32-mini的代码模块

Ultrasonic.h模块

#ifndef __ULTRASONIC_H
#define __ULTRASONIC_H
#include "sys.h"

#define trig PBout(2)  //超声波输出
#define echo PBin(3)  //超声波输入


void TIM3_Int_Init(u16 arr,u16 psc);  //计数器使能
void Ultrasonic_Init(void);          //超声波初始化

void open_Ultrasonic(void);   //打开超声波
void close_Ultrasonic(void);  //关闭超声波

int accept_Ultrasonic(void);  //计算距离
int get_val(void);  //消抖


#endif

Ultrasonic.c模块

#include "Ultrasonic.h"
#include "delay.h"
#include "usart.h"	
#include "sys.h"
int flag=0;

void TIM3_IRQHandler(void){
	if(TIM3->SR&0X0001)
	{
		flag++;
	}
	TIM3->SR&=~(1<<0);
}

void TIM3_Int_Init(u16 arr,u16 psc)   //计数器使能
{		 					 
	RCC->APB1ENR|=1<<1; 	//TIM3时钟使能    

	TIM3->ARR=arr;			//设定计数器自动重装值 
	TIM3->PSC=psc;			//预分频器设置
	TIM3->DIER |= 1<<0;
	MY_NVIC_Init(1,3,TIM3_IRQn,2);
}

void Ultrasonic_Init(void){   //超声波初始化
	
	TIM3_Int_Init(5000,71);
	
	RCC->APB2ENR|=1<<3;      //时钟使能
	
	GPIOB->CRL&=0XFFFFF0FF;  //pb2  trig推挽输出
	GPIOB->CRL|=0X00000300;
	GPIOB->ODR&=~(1<<2);       
	
	GPIOB->CRL&=0XFFFF0FFF;  //pb3  echo浮空输入
	GPIOB->CRL|=0X00004000;
	

}

void open_Ultrasonic(void){  //发射超声波
	trig=1;  
	delay_us(20);
	trig=0;  
	flag=0;	
}

void close_Ultrasonic(void){  //关闭超声波
	TIM3->CR1&=0<<0;    	//关闭定时器1 	
	TIM3->CNT=0;
}

int accept_Ultrasonic(void){  //计算距离
	int val=0;
	open_Ultrasonic();
	
	while(echo==0){ }
	TIM3->CR1|=0x01;    	//使能定时器1 
	TIM3->CNT=0;
	
	while(echo==1){ }
	val=(flag*5000+TIM3->CNT)*0.017;
	close_Ultrasonic();
	return val;
}

int get_val(void){   //消抖
	int i;
	int val,sum=0;
	for(i=0;i<10;i++){
		sum += accept_Ultrasonic();
	}
	val=sum*0.1;
	return val;
}




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HC-SR04超声波模块 的相关文章

  • 【Pytorch】交叉熵损失函数 CrossEntropyLoss() 详解

    文章目录 一 损失函数 nn CrossEntropyLoss 二 什么是交叉熵三 Pytorch 中的 CrossEntropyLoss 函数参考链接 一 损失函数 nn CrossEntropyLoss 交叉熵损失函数 nn Cross
  • 【Linux】rm 命令:删除文件/文件夹

    文章目录 一 删除文件 文件夹 xff1a rm 命令二 删除文件 xff08 即这个文件被删除 xff09 三 删除文件夹四 注意参考链接 一 删除文件 文件夹 xff1a rm 命令 rm 是强大的删除命令 xff0c 它可以 永久性地
  • 【Pytorch】torch.max() 函数详解

    文章目录 一 一个参数时的 torch max 1 函数介绍2 实例 二 增加指定维度时的 torch max 1 函数介绍2 实例 三 两个输入张量时的 torch max 1 函数介绍2 实例 参考链接 一 一个参数时的 torch m

随机推荐

  • 【机器学习】KNN 算法介绍

    文章目录 一 KNN 简介二 KNN 核心思想实例分析 xff1a K 值的影响 三 KNN 的关键1 距离计算1 闵可夫斯基距离2 曼哈顿距离3 欧氏距离4 切比雪夫距离5 余弦距离总结 2 K值选择 四 KNN 的改进 xff1a KD
  • 【机器学习】Radius Neighbors Classifier(rNN,radius nearest neighbors)

    文章目录 一 半径近邻分类器 简介二 半径近邻分类器算法三 Radius Neighbors Classifier With Scikit Learn参考链接 一 半径近邻分类器 简介 Radius Neighbors Classifier
  • 扫盲:单片机入门分享 晶振 复位电路与电源

    学单片机走过许多弯路 xff0c 挖过许多坑 xff0c 浪费了很多时间 xff0c 做过实际产品后回顾过去的学习经历 xff0c 发现很多坑其实是可以避免的 xff0c 单片机的入门应该可以更轻松一点 xff0c 借CSDN论坛一方宝地
  • VR技术原理分析,【VR原理入门理论篇】

    VR技术原理分析 xff0c VR原理入门理论篇 xff0c 学习研究VR技术必须要了解的理论知识 目录 1 VR沉浸感和交互作用产生的原理 xff1a 2 关于沉浸感和交互作用的定义 3 如何生成符合VR要求的虚拟世界 4 最主流的VR开
  • ST-Link驱动安装不正确,设备管理器黄色感叹号,win10安装stlink驱动

    这是由于驱动没有安装好导致的 xff0c 从该链接下载驱动文件 xff1a http pan baidu com s 1bog5FZ5 我是win10 win7 win8一样的办法 解压缩后 xff0c 直接以管理员身份运行其中的dpins
  • 使用CIDR计算划分子网个数

    概念 CIDR xff08 无类别域间路由 xff0c Classless Inter Domain Routing xff09 是一种IP地址划分的方法 xff0c 其目的是更加有效地使用IPv4地址空间 CIDR的原理是将一个IP地址划
  • 关于字符串的长度和大小的定义

    char a 61 aaaaa 字符串长度为5 xff0c 数组长度 xff08 大小 xff09 为6 xff1b char b 5 61 aaaaa 字符串长度不确定 xff0c 数组长度 xff08 大小 xff09 为5 xff1b
  • 用安卓设备识别ArUco码

    先来看下效果 静态图片中的ArUcon码识别 在之前程序的基础上再添加一个Button和TextView xff0c 点击 识别 按钮检测照片中的ArUco码后 xff0c 在屏幕最下方显示识别到的ArUco的id和四个角点坐标 xff0c
  • VSCode集成Git

    VSCode集成Git流程 一 xff0c 下载git并配置环境变量 1 从git官网下载一个git安装包 xff0c 官网下载地址 git下载 2 下载完成后 xff0c 一路NEXT走下去 xff0c 只需注意下面这几个页面的配置 xf
  • Vscode使用clang-format格式化代码

    使用Vscode格式化代码 使用Vscode格式化代码操作步骤 使用Vscode格式化代码 可以在vscode上使用clang format对C C 43 43 代码自动格式化 xff0c 配置自己想要的格式规范 xff0c 解脱代码格式的
  • 二维数组转稀疏数组的思路

    二维数组转稀疏数组的思路 遍历 原始的二维数组 xff0c 得到有效数据的个数sum根据sum就可以创建稀疏数组sparseArr int sum 43 1 3 将二维数组的有效数据存入到稀疏数组 span class token comm
  • 实例方法和静态方法常识

    1 调用方式上 静态方法依赖于类 xff0c 通过类 静态方法调用 xff1b 实例方法依赖于类的对象 xff0c 需要创建对象后 xff0c 对象 实例方法使用 2 使用上 实例方法内部不能定义静态变量 xff0c 会出现编译错误 xff
  • 设计模式(1)

    设计模式的作用 代码重用性 可读性 可扩展性 可靠性 使程序呈现高内聚 xff0c 低耦合的特性 设计模式常用的七大原则有 单一职责原则 接口隔离原则 依赖倒转原则 里式替换原则 开闭原则OCP 迪米特法则 合成复用原则 单一职责原则 对类
  • windows安装配置zookeeper后启动出现的错误:java.io.IOException: Unable to create data directory

    今天学习zookeeper集群部署在Windows10上出现了很多问题现在一一叙述一下 问题1 再点击zkServer cmd出现闪退 需要用编译工具打开在最后一行加入pause命令 问题2datadir权限问题 在c盘部署是是需要系统管理
  • IDEA 查找接口的实现 的快捷键

    IDEA 风格 ctrl 43 alt 43 B Eclipse 风格 ctrl 43 T 例子
  • WebPack4学习实践笔记(一)

    一 准备 nodejs安装教程 xff1a https blog csdn net FED AF article details 105747632 xff09 二 安装 xff08 1 xff09 全局安装 初始化npm C Users
  • 可重入锁(又名递归锁)

    可重入锁 指的是同一线程外层函数获得锁之后 xff0c 内层递归函数仍能获取该锁的代码 xff0c 在同一线程的外层获取锁的时候 xff0c 在进入内层方法会自动获取锁 xff0c 也就是说线程可以任意进入它已经拥有的锁的同步代码块 syn
  • Java 读取TXT文件-行读取

    Java 读取TXT文件 行读取 span class token keyword public span span class token keyword static span String span class token funct
  • springMVC 指定文件 压缩下载

    span class token keyword package span span class token namespace com span class token punctuation span lyt span class to
  • HC-SR04超声波模块

    1 硬件原理图 2 传感器参数表 电气参数HC SR04 超声波模块工作电压DC 5 V工作电流15mA工作频率40kHz最远射程4m最近射程2cm测量角度15 度输入触发信号10uS 的 TTL 脉冲输出回响信号输出 TTL 电平信号 x