首页 > 其他分享 >超声波_HC-SR04

超声波_HC-SR04

时间:2024-07-14 11:40:53浏览次数:16  
标签:SR04 Pin 引脚 InitStructure 信号 GPIO HC 超声波

模块说明

**HC-SR04**超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。
两个压电陶瓷超声传感器,一个用于发出超声波信号,一个用于接收反射回来的超声波信号。由于发出信号和接收信号都比较微弱,所以需要通过外围信号放大器提高发出信号的功率,和将反射回来信号进行放大,以能更稳定地将信号传输给单片机。模块如图所示:
image.png

模块引脚

  • VCC引脚:5V电源
  • TRIG引脚:触发信号引脚,单片机给超声波模块一个信号,超声波模块就会工作。
  • ECHO引脚:回响信号引脚,当超声波模块已经测量距离成功后,通过该引脚告诉单片机当前超声波传输的时间。
  • GND:信号地。

电气参数

image.png

注意要点

image.png
image.png

  1. 不同的温度,声音的传播速度是不一样的

超声波代码可简单编写如下,测量距离须根据温湿度传感器提供的温度代入上述公式,动态切换声音传播速度值。
image.png

  1. 超声波的测量精度为3mm,需要根据3mm进行计算测量时间(简化计算)

image.png

  1. 时序图

image.png

程序代码

  1. 初始化GPIO和定时器

首先,需要初始化STM32单片机的GPIO和定时器,用于控制HC-SR04模块和测距。配置Trig引脚为输出模式,设置Echo引脚为输入模式。同时,配置一个定时器,用于测量Echo信号的脉冲宽度。

  1. 发送触发信号

在测距之前,需要发送一个触发信号给HC-SR04模块。将Trig引脚置高一段时间,然后再置低。高电平脉冲的持续时间决定了发送的触发信号。

  1. 接收回波信号

测距模块发送触发信号后,开始测量回波信号的宽度。当Echo引脚检测到高电平时,记录当前时间戳。当Echo引脚下降为低电平时,停止计时,并记录下时间戳。通过计算时间差,可以得到回波信号的宽度。

  1. 计算距离

根据声速和回波信号的宽度,可以计算出测距的距离。公式为:距离 = 回波信号宽度 * 声速 / 2。将计算得到的距离进行显示或进一步处理。(公式:uS/58=厘米或者uS/148=英寸)

这个公式用于超声波测距。超声波测距是通过测量超声波从发射到接收到回波的时间来计算距离的。

  1. 声速:在干燥、摄氏20度的空气中,声速大约是343米/秒,或者34,300厘米/秒。
  2. 时间换算:1秒等于1,000,000微秒(uS),所以声速可以表示为0.0343厘米/微秒。
  3. 距离计算:超声波从发射到接收到回波的时间实际上是声波走过的总距离的两倍。因此,1厘米的距离对应的时间是29.15微秒。
  4. 公式推导:为了得到实际距离,我们需要将总时间除以2,然后再除以29.15微秒/厘米。简化后,公式变为:

距离(厘米) = 时间(微秒)/58

代码示例

void  sr04_init(void)
{	

	GPIO_InitTypeDef  GPIO_InitStructure;
	
	/* 使能硬件时钟:端口硬件时钟 */
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
		
	/* PB6初始电平状态为低电平,看数据手册 */
	GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_NOPULL;
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_6;
	GPIO_Init(GPIOB, &GPIO_InitStructure);	
	
	GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_RESET);
	
	/* PE6配置为输入模式 */
	GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_IN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_NOPULL;
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_6;
	GPIO_Init(GPIOE, &GPIO_InitStructure);	
}

int32_t sr04_get_distance(void)
{
	int32_t t=0;
	//发送10us的高电平信号触发测距
	GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_SET);
	delay_us(10);
	GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_RESET);
	
	//等待回响信号出现
	while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6)==Bit_RESET);
	
	//测量回响信号高电平的持续时间,而该高电平的持续时间就是超声波发送到返回的时间
	while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6)==Bit_SET)
	{
		t++;
		delay_us(9);//9us的时间,声音传播了3mm
	}
	
	return 3*t/2;
}

标签:SR04,Pin,引脚,InitStructure,信号,GPIO,HC,超声波
From: https://www.cnblogs.com/banon/p/18301294

相关文章

  • OSPF基础实验(HCIA)
    一、实验拓扑二、实验需求1.除R4环回以外,其他所有设备的网段基于192.168.0/24划分2.全网启动OSPF协议,不能宣告R4环回3.R1-R3各存在一个环回4.R1-R3为区域0,R3-R4为区域1,R3的环回工作在区域15.全网可达,保证更新安全,减少路由条目数量,避免环路6.R1-R3之间,R3为DR,该网段无BD......
  • HashCode方法
    HashCode方法总结publicinthashcode()提高具有哈希结构的容器的效率;两个引用,如果指向的是同一个对象,则哈希值肯定是一样的;两个引用,如果指向的是不同对象,则哈希值是不一样的;哈希值主要根据地址号来的,不能完全将哈希值等价于地址;例子:Aobj1=newA();Aobj2=newA()......
  • VLAN原理与配置(HCIA)
        以太网是一种基于CSMA/CD的数据网络通信技术,其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。在这种情况下出现了VLAN(VirtualLocalAreaNetwork)技术解决以上问题。什么是VLAN    在典型交换网络......
  • 零基础STM32单片机编程入门(十二) HC-SR04超声波模块测距实战含源码
    文章目录一.概要二.HC-SR04主要参数1.模块引脚定义2.模块电气参数3.模块通讯时序4.模块原理图三.STM32单片机超声波模块测距实验四.CubeMX工程源代码下载五.小结一.概要HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR......
  • 搭建自己的局域网,在自己电脑上搭建DHCP服务器
    文章目录前言一、dhcp是什么?二、软件下载2.开启服务总结前言我用我的笔记本直接用一根网线连接B的电脑,这样可以进行共享吗?答案是否。那怎么才能通过一根网线就实现上述功能呢?答案就是在自己电脑上搭建一个dhcp服务器。搭建dhcp服务器的作用:自己电脑搭建完dhcp服......
  • C# Equals 和 GetHashCode 方法认知及Distinct方法解析
    参照:生成C#Equals和GetHashCode方法重写-VisualStudio(Windows)|MicrosoftLearn如何修改字符串内容-C#|MicrosoftLearn在C#中,Equals 和 GetHashCode 方法用于对象的比较和哈希值计算。它们在值类型和值类型的行为上有所不同。值类型(ValueTypes)Equals......
  • 基于STM32设计的智能台灯(HC05蓝牙控制)179
    基于STM32设计的智能台灯(HC05蓝牙控制)(179)文章目录一、前言1.1项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2设计思路【1】整体设计思路【2】整体构架1.3项目开发背景【1】选题的意义【2】可行性分析【3】参考......
  • 华为HCIP Datacom H12-821 卷30
    1.单选题以下关于OSPF协议报文说法错误的是?   A、OSPF报文采用UDP报文封装并且端口号是89B、OSPF所有报文的头部格式相同C、OSPF协议使用五种报文完成路由信息的传递D、OSPF所有报文头部都携带了Router-ID字段正确答案:A解析:OSPF用IP报文直接封装协议报文,协议号......
  • L3VPNv4 over SRV6 TE Policy(HCIE)
    配置思路:①基础配置(1)IPv6地址配置(2)配置ISIS(开启ipv6功能)(3)CE与PE之间创建VPN实例,建立vpn实例EBGP(4)PE之间创建VPNv4邻居关系(5)启用SRv6,locater从ISIS中通告出去②设置路径列表,SRv6设置源,定义color绑定SID(SID需要在本地范围内)(列表也需要写回程)③设置color......
  • ENSP模拟实验-HCIA综合大实验
    实验拓扑图:实验要求:ISP路由器仅配置IP地址内网基于192.168.1.0/24网段进行IP划分R1.R2之间使用OSPF做到内网全通,单区域PC1-PC4使用DHCP获取地址PC2-PC4可以访问PC5,PC1不行R2出口只拥有一个公网IPtest-1设备可以登录内网telnet服务器,test-2不行实验过程:1.IP地址规划内网......