HY-SRF05超声波测距模块的使用

测距模块介绍

  1. VCC和GND:接电源的正负极,也可接单片机的5V或3.3V,注意与单片机共地
  2. Trig:触发控制信号输入。通过这个引脚输入10us以上的高电平触发信号,然后模块自动发送8个40KHz的方波进行一次测距。
  3. Echo:回响信号接收。该引脚可以在接收到回响信号后输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
  4. OUT:该引脚在手册中提到为开关量输出,可以做报警模块使用,应该是一个模块状态口,通过判断OUT的高低电平来判断模块是否上电,基本不用。
  5. 时序图

距离=高电平持续时间340/2*


代码说明

  1. 先利用基本定时器6实现微秒级别的延时函数,再在此基础上完成控制信号发送
    延时函数
void Delay_us(uint16_t myus)//基于TIM6定时器的μs级延时函数
{uint16_t differ = 0xffff-myus-5;HAL_TIM_Base_Start(&htim6);__HAL_TIM_SetCounter(&htim6,differ);while(differ < 0xffff-5){differ = __HAL_TIM_GetCounter(&htim6);}HAL_TIM_Base_Stop(&htim6);
}

控制信号发送

void Send_Trig(void)
{HAL_GPIO_WritePin(Trig_GPIO_Port, Trig_Pin, SET);Delay_us(20);HAL_GPIO_WritePin(Trig_GPIO_Port, Trig_Pin, RESET);
}
  1. 利用通用定时器6的输入捕获功能测出高电平持续时间
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim==&htim3){switch(polarity){case PO_Rising:{Period_Num=0;Capture_Value1=HAL_TIM_ReadCapturedValue(&htim3, TIM_CHANNEL_1);__HAL_TIM_SET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_1,TIM_ICPOLARITY_FALLING);polarity=PO_Falling;break;}case PO_Falling:{Capture_Value2=HAL_TIM_ReadCapturedValue(&htim3, TIM_CHANNEL_1);Distance_Value[Distance_Num]=(Capture_Value2+Period_Num*65536-Capture_Value1)*170/1000;Distance_Num++;if(Distance_Num>=100)Distance_Num=0;__HAL_TIM_SET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_1,TIM_ICPOLARITY_RISING);polarity=PO_Rising;break;}}}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim==&htim3){Period_Num++;}
}
  1. 主函数循环里实现初始化和周期测距,周期须大于60ms
 polarity=PO_Rising;Distance_Num=0;Period_Num=0;HAL_GPIO_WritePin(Trig_GPIO_Port, Trig_Pin, RESET);HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_1);/* USER CODE END 2 */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */Send_Trig();HAL_Delay(100);}
  1. 一些全局变量定义和函数声明
/* USER CODE BEGIN PD */
#define PO_Rising 1
#define PO_Falling 2
/* USER CODE END PD *//* USER CODE BEGIN PV */
uint8_t polarity;
uint16_t Capture_Value1;
uint16_t Capture_Value2;
float Distance_Value[100];
uint16_t Distance_Num;
uint16_t Period_Num;
/* USER CODE END PV *//* USER CODE BEGIN PFP */
void Delay_us(uint16_t myus);
void Send_Trig(void);/* USER CODE END PFP */

一定要记得开启定时器输入捕获中断
HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_1);

  1. 图形化配置

记得开启中断

经实际测距发现,同一距离下的测量最大值和最小值差值最大为30mm 左右,并有部分数据出现溢出

HY-SRF05超声波测距模块的使用相关推荐

  1. arduino UNO 与 超声波测距模块 实验详情

    US-015 超声波测距模块 超声波传感器 US-020升级版 送全套资料 资料下载地址:http://pan.baidu.com/s/1c0AfkIG US-015超声波测距模块 1. 概述 US- ...

  2. 通过串口打印--超声波测距模块测得距离

    通过串口打印--超声波测距模块测得距离 原理 超声波测距模块 串口传输 实战代码 原理 超声波测距模块 在这里首先需要了解超声波测距模块的原理.在我的这篇博客有很多介绍.超声波模块介绍 串口传输 串口 ...

  3. 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发

    基于MCS51单片机的超声波测距模块的开发 采用C51程序设计语言,完成下列功能要求. l 必选功能: (1) 超声波模块和单片机的接口设计,画出完整的电路原理图.(15分) (2) 开发板上电时,显 ...

  4. arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)

    这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发 ...

  5. 学习HC-SR04超声波测距模块,代码附带卡尔曼滤波

    硬件引脚 VCC-供5V的电压(一定要是5v) GND-接地 Trig-HC-SR04超声波测距模块上的触发引脚,用于向模块发送一个10微秒的高电平触发信号,触发模块开始进行距离测量 Echo-用于接 ...

  6. 超声波测距模块HC-SR04详解(基于51单片机)

    本篇文章是个人整理的包含超声波测距模块HC-SR04的基本介绍与基本工作原理以及分别通过LCD1602.数码管和串口显示距离的实例讲解与代码的笔记,部分内容来自<HC-SR04超声波测距模块说明 ...

  7. US-016超声波测距模块

    1.  概述 US-016超声波测距模块可实现2cm~3m的非接触测距功能,供电电压为5V,工作电流为3.8mA,支持模拟电压输出,工作稳定可靠.本模块根据不同应用场景可设置成不同的量程(大测量距离分 ...

  8. 利用51单片机+HC-SR04+51单片机制造超声波测距模块

    利用HC-SR04和51单片机制造超声波测距模块 完整的项目链接: https://github.com/linxinloningg/51_chip_core.git 硬件电路分析: 1.HC-SR0 ...

  9. 使用超声波测距模块控制LED灯

    本文章为你介绍如何使用Arduino开发板和超声波测距模块来控制LED灯的明灭. 所需硬件 -Arduino开发板 -LED -超声波测距模块 下面主要为大家说明一下超声波模块. 超声波传感器通过采用 ...

  10. Micropython——HC-SR04超声波测距模块

    文章目录 HC-SR04超声波测距模块 超声波测距原理 接线 代码 HC-SR04超声波测距模块 超声波测距模块HC-SR04是市面上常见的超声波测距模块,价格便宜,精度高,可提供2cm-400cm的 ...

最新文章

  1. 河北师范大学C语言试题,2017年河北师范大学信息技术学院838C语言程序设计考研题库...
  2. 十周后,62%的PHP网站将运行在一个不受支持的PHP版本上
  3. [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
  4. PPT 下载 | 神策数据朱静芸:电商行业精细化运营四大场景
  5. UCSC数据库数据调用cruzdb
  6. [机器学习]AutoML --- NNI (Microsoft)
  7. 怎么设置电脑壁纸_电脑怎么设置双屏或多屏显示?
  8. 太强了,300分钟撸一个基于redis的亿级用户高并发系统
  9. js正则表达式验证密码
  10. java 抽象类 注入,spring向抽象类注入问题
  11. [置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了
  12. JavaScript的DOM操作.
  13. 高德地图 API 搜索服务 搜索定位 用不了
  14. JSP还有必要学吗 这篇文章告诉你
  15. Redis数据类型及编码
  16. SEO优化:如何挖掘谷歌关键词-实例讲解(2022最新)
  17. 如何彻底卸载wamp
  18. itext实现横向pdf打印
  19. 学习自旋电子学的笔记04:模拟自旋波在弯曲磁畴壁中传播
  20. webservice安全验证

热门文章

  1. WPF实现蜘蛛纸牌游戏
  2. 盘点益生菌的8大益处
  3. 笔记——三维世界坐标和二维画布/屏幕坐标转换
  4. 助眠好物排行榜,有了这些就不怕睡不着了
  5. java获取电脑麦克风_Java的API的声音 - 捕捉麦克风(Java Sound API - capturing microphone)...
  6. file mask 是什么idea 配置file mask​html include
  7. 拥挤的自动驾驶赛道,谁会成为最终赢家
  8. 求解热传导方程matlab
  9. ajax写入json数据格式化,java ajax解析json数据格式化
  10. 【opencc for mac】