HC-SR04驱动记录

article/2025/7/5 22:53:31

文章目录

    • 1、工作原理
    • 2、读取数据方式
    • 3、驱动记录

1、工作原理

常用的HC-SR04模块如下所示:
在这里插入图片描述
引脚说明:

引脚说明
VCC电源,常用5v
Trig控制端
Echo接收端
GND

使用说明:
控制端发送一个10us的高电平脉冲,之后再接收口等待高电平输出,一有高电平输出就开始计时,直到低电平到来就可以结束计时,速度X时间,就是我们测量到的距离了。

时序图说明
在这里插入图片描述

其他说明:

  • 调节测距长短
    在这里插入图片描述
    图中标志的电阻可以调节最大探测距离。R3电阻为392,探测距离最大4.5M左右,探测角度小于15度;R3电阻为472,探测距离最大7M左右,探测角度小于30度;出厂默认392,即最大探测距离4.5M左右。R3电阻大,接收部分增益高,检测距离大,但检测角度会相应变大,容易检测到前方旁边的物体。
  • 提高测距有效性:
    测距时,被测物体的面积不少于0.5平方米且要尽量平整。否则会影响测试结果。

2、读取数据方式

说白了就是发脉冲然后计数,所以关键问题在于计数的方式上,可以选的方式如下:

  • 延时函数
  • 定时器计数
  • 输入捕获

这里用延时函数的方法肯定是会打断整个系统的进程的,虽然时间很短,但是也会有一定影响,使用定时器输入捕获应该是要配合中断来使用,缺点是要废掉一个定时器,采用输入捕获应该是最高精度的方法了,但是同样的也要废掉一个定时器!!!

关于定时器的使用可以看我之前的一篇文章,较全面的总结了定时器的使用方法:stm32外设总结-定时器使用

3、驱动记录

这里还是采用输入捕获的方法来测试,其他两个方法都比较直白,只是编写下逻辑函数就行的,就不做演示了

用的就是PWM输入的方式

在这里插入图片描述
CH1上升沿,CH2下降沿
在这里插入图片描述

打开中断
在这里插入图片描述

配置控制引脚
在这里插入图片描述

之后就可以生成代码了

编写测量函数
在这里插入图片描述
源代码:

#include "HC-SR04.h"
#include "tim.h"#define fac_us 72   //时钟频率,单位MHZ/*微秒级延时函数*/
void delay_us(uint32_t nus)
{uint32_t ticks;uint32_t told,tnow,tcnt=0;uint32_t reload=SysTick->LOAD;			//LOAD的值ticks=nus*fac_us; 						//需要的节拍数told=SysTick->VAL;        				//刚进入时的计数器值while(1){tnow=SysTick->VAL;if(tnow!=told){if(tnow<told)tcnt+=told-tnow;	//这里注意一下SYSTICK是一个递减的计数器就可以了.else tcnt+=reload-tnow+told;told=tnow;if(tcnt>=ticks)break;			//时间超过/等于要延迟的时间,则退出.}}
}static void HC_SR04_Start()
{HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_SET);delay_us(10);HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_RESET);
}static uint16_t HCSR04_get_measure()
{HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_1);HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_2);measure_flag = 1;HC_SR04_Start();while(measure_flag);return pulse_time;
}float HCSR04_get_distance_cm()
{float distance_cm;distance_cm = HCSR04_get_measure() / 58.0f;return distance_cm;
}

中断的数据处理函数
在这里插入图片描述
源代码

float dis = 0;void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim == &htim1){if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1){IC_RisingEdge = __HAL_TIM_GET_COMPARE(&htim1, TIM_CHANNEL_1);HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_1);}else if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2){pulse_time = __HAL_TIM_GET_COMPARE(&htim1, TIM_CHANNEL_2) - IC_RisingEdge;measure_flag = 0;HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_2);}}
}

之后读数据就OK了
在这里插入图片描述
将程序下载到开发板,调试查看数据效果如下,基本OK 的
在这里插入图片描述


http://chatgpt.dhexx.cn/article/DJ5MTZbD.shtml

相关文章

【STM32篇】驱动HC_SR04超声波测距模块

CH_SR04 一、简介 1.产品特点 HC_SR04超声波测距模块可提供2cm-400cm的非接触式测距感测功能&#xff0c;测距精度高达3mm&#xff1b;模块包括超声波发射器&#xff0c;接收器与控制电路。 基本工作原理&#xff1a; &#xff08;1&#xff09;采用IO口TRIG触发测距&#xff0…

HC-05蓝牙模块配置

目录 1、连接蓝牙模块a.蓝牙模块通过USB转TTL连接电脑b.打开串口助手&#xff0c;波特率设置为38400c.检验是否连接成功 2、配置波特率3、修改密码4、设置主从模式5、设置蓝牙连接模式6、查询自身地址7、添加配对蓝牙地址8、测试 1、连接蓝牙模块 a.蓝牙模块通过USB转TTL连接电…

HC-06蓝牙模块使用方法

接线方式&#xff1a; 配套资料&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1_8-d1LoHuhpIBC9Ygu4aJQ 参考&#xff1a; (1272条消息) HC-05/06蓝牙模块的原理及使用方法_hc-05蓝牙模块原理图_小小少年123的博客-CSDN博客 注意&#xff1a;蓝牙灯闪烁分析 如果…

初次使用HC-08蓝牙模块01

基础连接 1.接线 2.测试&#xff0c;手机APP和测试架&#xff0c;成功互发AT指令即成功 3.完整教学 测试结果 起初手机APP搜索不到蓝牙&#xff0c;以测试架为主&#xff0c;另一个为从&#xff0c;从上面的蓝灯不亮&#xff0c; 后面重新恢复出厂设置&#xff08;在串口…

HC-05的基本使用(STM32)

目录 一、HC-05 1、HC-05简介 2、接线方式 二、AT指令 1.基本指令 2、基本的使用 3、手机连接HC-05 三、CubuMX配置&#xff08;基于stm32f407zgt6&#xff09; 总结 一、HC-05 1、HC-05简介 HC-05 蓝牙串口通信模块&#xff0c;是基于 Bluetooth Specification V2.0 带 EDR 蓝…

智慧小区 HC 系统安装配置简单流程(V2022-09-28)

首先感谢官方 HC 开发&#xff08;一纸荒年&#xff09;的指导 ------------- 我的系统为&#xff1a; conetos 8.2(官方建议 7.6 版本较稳定) 登陆空间系统打开 SSH 终端# 第一步骤 1&#xff1a;先安装梓豪平台 1.1:梓豪平台安装是非常简单的&#xff0c;我们可以通过以…

Media Player Classic - HC 源代码分析 1:整体结构

Media Player Classic - HC 源代码分析系列文章列表&#xff1a; Media Player Classic - HC 源代码分析 1&#xff1a;整体结构 Media Player Classic - HC 源代码分析 2&#xff1a;核心类 &#xff08;CMainFrame&#xff09;&#xff08;1&#xff09; Media Player Cla…

HC-08蓝牙模块与电脑进行蓝牙远程通信! 支持HC-02、HC-08、HC-42蓝牙

因项目接触HC-08蓝牙模块&#xff0c;一直想电脑与STM32上接的HC-08蓝牙模块进行远程通信&#xff01;在网上未能找到解决办法&#xff0c;此方式为广州汇承公司提供&#xff08;蓝牙生产厂家&#xff09;&#xff0c;亲测有效&#xff01; 一、适用型号及PC条件&#xff1a; 1…

蓝牙模块(HC-05/HC-06)详解

这里写目录标题 0. 蓝牙概述蓝牙技术的特点 1. 常见的蓝牙模块2. HC-05/HC-062.1 概念2.2 区别 3. STM32使用HC-05通信3.1 方法3.2 示例代码 0. 蓝牙概述 蓝牙&#xff08;Bluetooth&#xff09;是一种用于无线通信的技术标准&#xff0c;允许设备在短距离内进行数据交换和通信…

经验分享帖 汇承HC-12无线模块的简单使用说明

** 汇承HC-12无线模块的简单使用说明 ** 无意间在网上看到HC-12的功能介绍,最吸引我的是他的通信距离。于是我从网上买了两个&#xff0c;想着替代两个蓝牙&#xff0c;实现远距离通信控制。 这两张图是我手上的HC-12无线模块&#xff0c;其他引脚我就不多说了&#xff0c;与…

HC-05主从模式蓝牙配对说明v1.0

HC-05主从模式蓝牙配对说明 在参加电赛或者做毕业设计的时候&#xff0c;可能需要进行无线通信传输数据。 无线通信的方案有NRF24L01的射频传输。 有esp8266的wifi。 使用HC-05蓝牙的方式进行无线透传使用简单&#xff0c;延时较低&#xff0c;用于调试场景非常方便&#xff0c…

【51】HC-06蓝牙模块使用

说到蓝牙模块&#xff0c;就不得不说下主、从机&#xff1a; 主机 : 用于向从机下发指令&#xff0c;能够搜索从机并主动建立连接的一方。 从机 : 用于接收主机下发的命令&#xff0c;不能主动建立连接&#xff0c;只能等别人连接自己。 主从一体 : 能够在主机和从机模式间切换…

hc-05 模块教程2 (两个hc-05连接)

http://www.arduino.cn/thread-21735-1-1.html 最近在做项目需要建立两个hc-05通讯&#xff0c;但网上教程有限和有很多都不是很清楚所以整合了下资料重新做了一份个人认为比较详细的教程和大家一起分享学习。 这个教程说明怎么样用hc-05查找附近的hc-05模块并与它建立通讯。 …

面向对象在python中的实践---如何定义类、对象?

一、如何定义一个类 1.1基本语法 class Money:pass 类可以分为经典类和新式类 注意点&#xff1a; 类名Money中的首字母必须要大写 二、怎样通过类&#xff0c;创建一个对象 2.1根据类创建一个对象 #定义一个类 class Money:pass #根据这个类来实例化出一个对象 oneMon…

python的安装教程

Python 是这两年来比较流行的一门编程语言&#xff0c;主要的特点是其相对简单的语法以及丰富的第三方库。下面是python的下载安装过程。 1.python的官方下载网站&#xff1a; Welcome to Python.orghttps://www.python.org/ 选择自己适合的版本进行下载 * 我们以最新的3X为例…

java和python应该学哪一个,纠结?

小孩子才做选择&#xff0c;必须两个都学&#xff01; 不用纠结&#xff0c;又不是说学校让你选一个学&#xff0c;你就真的只学一个了&#xff01;&#xff08;别被课本知识限制了&#xff09; 从一名开发工程师的角度&#xff0c;我的建议是&#xff0c;将 Java 作为主武器&…

Python循环语句

Python 循环语句 本章节将向大家介绍Python的循环语句&#xff0c;程序在一般情况下是按顺序执行的。 编程语言提供了各种控制结构&#xff0c;允许更复杂的执行路径。 循环语句允许我们执行一个语句或语句组多次&#xff0c;下面是在大多数编程语言中的循环语句的一般形式&…

python 安装教程(附安装包)

有没有小伙伴想安装python,可发现官网的英文看不懂&#xff0c;而且加载很慢,想找找现成的安装包却五花八门&#xff0c;不知道下什么好了。 现在我教你怎么安装python&#xff0c;下载点我下64位(密码:61rn),如果下载32位点我(密码:dguv) 下好后点击这个文件 这个是你刚刚下…

尝试用python解概率题,并祝大小朋友儿童节快乐

实题操作 1. 三个人独立地去破译一份密码&#xff0c;每人能独立译出这份密码的概率分别为1/5&#xff0c; 1/3&#xff0c; 1/4。则这份密码被译出的概率为&#xff08;3/5&#xff09;。 def success():p 1/5,1/3,1/4t 1for i in p:t * 1-ireturn 1-tprint(f成功概率&…

华为OD机试用Python实现 -【组合出合法最小数】(2023-Q1 新题)

华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题解:…