当前位置: 首页 > news >正文

[STM32][HAL]stm32wbxx 超声波测距模块实现(HY-SRF05)

前言

在电子技术应用中,距离测量是一个常见且重要的需求。超声波模块因其测量精度较高、成本较低、易于使用等优点,被广泛应用于机器人避障、液位检测、智能停车系统等领域。该文主要讲解以stm32wb芯片为主控,用HAL库来对HY-SRF05超声波模块进行代码编写,实现基本的驱动和测距功能。代码的主要核心思路是通过polling对Echo信号进行捕获。
在这里插入图片描述

HY-SRF05 超声波模块工作原理

HY-SRF05 超声波模块包括超声波发射器、接收器和控制电路。可提供2cm – 450 cm的非接触式距离感测功能,测距精度可达到3mm.
在这里插入图片描述
基本工作原理

(1)采用IO口TRIG出发测距,给至少10us的高电平信号;

(2)模块自动发送8个40KHZ的方波,自动检测是否有信号返回;

(3)有信号返回,则通过IO口ECHO输出一个高电平,高电平的持续时间,结合超声波在空气中的传播速度(约 340m/s),可以计算出测量目标与模块之间的距离。测试距离 = (高电平持续时间 × 声速)/ 2。

引脚定义

在这里插入图片描述
其中OUT脚置空即可。

电气参数

工作电压 DC 5V
工作电流 15 mA
工作频率 40 HZ
最远射程 4.5 m
最近射程 2 cm
测量角度 15 度
输入触发信号 10us TTL脉冲
输出回响信号 输出TTL电平信号,与射程成比例
规格尺寸 45 * 20 * 12 mm

超声波时序图

在这里插入图片描述

注意事项

  • 模块的工作电压为 5V,而 STM32 的 GPIO 引脚通常为 3.3V。

STM32 代码实现

通过宏定义引脚,方便代码移植和修改

// define gpio for srf05 ultrasonic sensor
#define TRIG_PIN GPIO_PIN_2
#define TRIG_PORT GPIOC
#define ECHO_PIN GPIO_PIN_3
#define ECHO_PORT GPIOC

初始化以及发射和接收信号

TIM_HandleTypeDef htim2;  // 采用定时器2作为时长控制void TIM2_Init(void)  //定时器2 初始化
{TIM_ClockConfigTypeDef sClockSourceConfig 
http://www.xdnf.cn/news/1199359.html

相关文章:

  • selenium完整版一览
  • 三、搭建springCloudAlibaba2021.1版本分布式微服务-springcloud loadbalancer负载均衡
  • git 提交时排除一个或多个文件
  • 【H264视频编码】一、基本概念
  • 沪深L2逐笔十档委托队列分时Tick历史数据分析处理
  • 集合框架学习
  • day25
  • vulkan从小白到专家——YUV处理
  • Windows|CUDA和cuDNN下载和安装,默认安装在C盘和不安装在C盘的两种方法
  • 《谁在翻译机器的疼痛?》——故障诊断的认知鸿沟与产教破壁之战!
  • C++ 多线程(一)
  • 低精度训练一:低精度训练介绍与大模型下载
  • 09_opencv_遍历操作图像像素
  • net8.0一键创建支持(RabbitMQ)
  • 【AI论文】WebShaper:通过信息寻求形式化实现主动式数据合成
  • 深入理解Java内存与运行时机制:从对象内存布局到指针压缩
  • 【C++】红黑树实现
  • n8n “Run Once for All Items“和“Run Once for Each Item“区别
  • 基于Springboot+UniApp+Ai实现模拟面试小工具七:前端项目创建及框架搭建
  • cJSON在STM32单片机上使用遇到解析数据失败问题
  • Java面试全栈通关:从微服务到AI的技术深度解析
  • 一文读懂 JWT(JSON Web Token)
  • 【LeetCode刷题指南】--设计循环队列
  • 怎样让阿里云服务器(centos)有界面
  • 机械学习----knn实战案例----手写数字图像识别
  • Kotlin位运算
  • 板凳-------Mysql cookbook学习 (十二--------3_3)
  • BUG记录——Request接传Json数据中文乱码
  • Spring Boot + @RefreshScope:动态刷新配置的终极指南
  • Keepalived + LVS-DR 高可用与负载均衡实验