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. 看了极光推送技术原理的几点思考
  2. 在VC6.0中创建工程并输入源代码
  3. Gantt Chart in JavaScript (HTML5) | FusionCharts
  4. python 中的pickle库
  5. C#利用反射将实体类ListT转化为Datatable
  6. 51单片机中断interrupt……using……
  7. Solr4.3整合到Tomcat中并添加MMSeg4j中文分词器
  8. 写给自己的23条好习惯
  9. 某大型银行深化系统技术方案之八:核心层之异步流程控制机制
  10. msn邮箱在哪里登录?
  11. window下使用tail -f查看tomcat日志
  12. Linux开发(驱动应用)学习路线规划
  13. Sun jdk、Open jdk、Icedtea jdk 之间的关系
  14. Cloudera Manager6.3.1+CDH6.3.2本地仓库方式搭建(超详细版)
  15. Centos7安装加速下载工具aria2
  16. 为表的添加中文属性时出现的Incorrect string value: '\xE7\x9A\x84\xE6\xB1\xEA...
  17. 个人信贷评估模型研究
  18. postgresql 12.0 源码编译安装
  19. IntelliJ IDEA 13 皮肤/编辑器字体设置
  20. SICTF2023 misc-wp

热门文章

  1. .so文件导致的算法运行失败
  2. 计算机的操作系统ppt,计算机基础及操作系统.ppt
  3. 【转】Linux开启FTP服务和修改FTP密码
  4. 微机原理复试问题整理
  5. 计算机英语mask,英语单词mask怎么读,mask的音标是什么,mask是什么意思 - 音标网
  6. 调试InfoPath 2007脚本
  7. 旗鱼云梯SaaS化云服务器集群运维管理平台发布
  8. caffe 画损失曲线和准确率曲线
  9. 智能门锁里的大市场,凯迪仕签署上市辅导协议,冲击A股上市
  10. webstorm 2018 激活破解方法大全(转)