1.模块简介

GY-53 是一款低成本数字红外测距传感器模块。工作电压 3-5v,功耗小,体积小。
工作原理是,红外 LED 发光,照射到被测物体后,返回光经过 MCU 接收,MCU 计算出时间差得到距离,直接输出距离值。 此模块有两种方式读取数据,即 串口 UART(TTL 电平)+PWM(1 线) 或者芯片 IIC 模式,串口的波特率有 9600bps 与 115200bps,可配置,有连续,询问输出两种方式, 可掉电保存设置。模块另外可以设置单独传感器芯片工作模式, 作为简单传感器模块,MCU 不参与数据处理工作。

2.引脚说明

该模块共有12个引脚,两个VCC,两个GND,TX引脚为串口 USART_TX ,RX引脚为串口 USART_RX ,PWM引脚可以把距离转换为 PWM 形式输出 ,SDA即芯片SDA引脚,SCL即芯片SCL引脚,PS引脚为串口/IIC 模式转换引脚, 当ps=1(默认),串口UART模式,Pin3 为 TX,Pin4 为 RX,TTL 电平,PWM 输出工作;当ps = 0 (接 GND 时) IIC 模式,用户可自行操作芯片,模块自带 MCU 不对芯片操作,PWM 输出不工作。

3.使用介绍

我使用的是PWM模式,所以在这里就只介绍PWM模式的使用方法。
这款测距模块在PWM模式下使用和超声波模块十分类似(没有用过超声波模块也没有关系),编程思路大致如下:
当接收到高电平信号后,打开定时器开始计时,信号结束后关闭定时器,这样就得到了高电平的时间,模块内部芯片会输出周期为20HZ的PWM波,高电平的时间对应测得的距离(这是模块内部芯片决定的,我们不用管),公式如下:
*距离(mm)= 高电平时间(ms)100 = 高电平时间(us)/10
例如:测得高电平时间为10000us,则距离 = 10000/10 = 1000mm

4.代码实现

获取时间用的基本定时器TIM6,通过中断来计时。
然后通过调取这个函数,即可得到距离:

  float Hcsr04GetLength(void)  {  uint32_t t = 0;  float  lengthTemp = 0;  delay_ms(500);while (GY53_Receive == 0);      //等待接收口高电平输出  OpenTimerForGY();               //打开定时器  while (GY53_Receive == 1);    //CloseTimerForGY();             //关闭定时器 t = GetGYTimer();              //获取时间,分辨率为1US   lengthTemp = (float)t / 10;return lengthTemp;
}

打开定时器的函数:

static void OpenTimerForGY(void)
{
//设置TIM计数器寄存器的值
TIM_SetCounter(BASIC_TIM,0); //清除计数
time = 0;
TIM_Cmd(BASIC_TIM,ENABLE);  //使能TIMX外设
}

关闭定时器的函数:

static void CloseTimerForGY(void)
{  TIM_Cmd(BASIC_TIM,DISABLE); //使能TIMX外设
}

获取时间的函数:

uint32_t GetGYTimer(void)
{  uint32_t t = 0;  t = time * 1000;      //将ms转化为us t = t + TIM_GetCounter(BASIC_TIM);    //得到总us  TIM6-> CNT = 0;       //将TIM6计数寄存器的计数值清零 (上一个函数返回值)  delay_ms(50);return t;
}

5.结果

在main函数里调用上述函数,通过串口将得到的数据打印出来。
main函数如下:

int main (void)
{BASIC_TIM_Init();//基本定时器初始化USART_Config();  //串口初始化GY53_Init();TIM_Init();                         //高级定时器初始化delay_ms(500);  while(1){printf("距离为%3fmm\n",Hcsr04GetLength());delay_ms(500);}
}

显示结果如下:

注意:我在使用中发现,此模块在使用时如果倾角变化,对测量值会有较大影响,所以在使用时要尽量使模块垂直与水平面,以便得到较为准确的值。

原代码下载地址:https://download.csdn.net/download/weixin_43737995/11574506

GY-53红外激光测距模块的使用以及pwm模式代码的实现相关推荐

  1. STM32F103驱动VL53L0X激光测距模块

    STM32F103驱动VL53L0X激光测距模块 简介 引脚定义 STM32F103ZET6开发板与VL53L0X模块接线 测试代码 实验结果 简介 TOF 是飞行时间(Tlme of Flight) ...

  2. 红外感应模块+蜂鸣器实现简易报警(转)

    拿到了一个红外感应模块HC-SR501,于是就用它和蜂鸣器简单试验了下.主要是试验一下这个红外感应模块的功能,所以代码也写的很随便啦,逻辑上也欠考虑. 实现基本功能:运行脚本后,感应模块每隔一定时间检 ...

  3. 【STM32训练—TOF激光测距模块】第一篇、STM32驱动TOF10120测量距离

    目录 第一部分.前言 1.TOF10120激光测距模块的基本知识 2.TOF的引脚 3.与单片机的接线 第二部分.工程代码 1.代码功能描述 2.tof.h文件 3.tof.c文件 4.main.c文 ...

  4. STM32与人体红外感应模块的简单使用——入门级

    工作原理 人体有恒定的温度,可以发出10UM的红外波,而人体红外感应模块就可以探测出这些红外波,从而产生电平转换.由此人们可以使用人体红外检测模块来检测是否有人. 模块工作环境 工作电压:5V至20V ...

  5. Arduino - 驱动HC-SR501 人体红外感应模块

    参考文章: Arduino - 驱动HC-SR501 人体红外感应模块 Arduino 使用人体红外感应模块 HC-SR501 代码如下: /* Arduino 驱动HC-SR501 人体红外感应模块 ...

  6. 树莓派4B-Python-控制HC_SR501(微型人体红外感应模块)

    树莓派4B-Python-控制HC_SR501(微型人体红外感应模块) 文章目录 树莓派4B-Python-控制HC_SR501(微型人体红外感应模块) 前言 一.微型HC_SR501模块 二.参数介 ...

  7. [转载]HC-SR501 人体红外感应模块

    热释电红外感应模块 原文地址:HC-SR501 人体红外感应模块作者:XingHeStudio 技术参数: 1.工作电压:DC5V至20V 2.静态功耗:65微安 3.电平输出:高3.3V,低0V 4 ...

  8. 树莓派hc sr501 c语言,树莓派人体红外感应模块HC-SR501安装配置

    前言 人体和有生动物每时每刻身体都会想外部辐射红外,这些红外波长在9.6微米的样子.这些辐射出来的红外线可以被人体红外感应模块HC-SR501检测到并变成电信号然后就可以被树莓派处理,结合PYTHON ...

  9. 微信控制树莓派运行python_Python+树莓派+人体红外感应模块 实现微信监控

    上一篇文章<Python+树莓派 实现微信拍照.摄相机器人>中简单的实现了由手机微信控制树莓派摄像头拍摄照片及录像,并将拍摄文件回传至微信的功能,程序比较简单, 今天要和大家分享的是在上一 ...

  10. stm32f4红外传感器模块 和人体感应模块HCSR501

    也同时买了个红外传感器模块 还买了一个长这样的 这个好容易随便写写了 初始化一下gpioB引脚 __HAL_RCC_GPIOB_CLK_ENABLE(); GPIO_Initure.Pin=GPIO_ ...

最新文章

  1. 计算机应用基础是高中吗,职业高中学业水平测试计算机应用基础试卷(A)及答案...
  2. python3 清除asyncio队列 方法
  3. scala条件替换_scala - 有没有办法用scala中的高阶方法替换嵌套的For循环 - SO中文参考 - www.soinside.com...
  4. OnlineJudge 离线题库采集
  5. 计算机对教育的影响雅思听力,雅思听力机考带来的两大影响
  6. Java二叉搜索树转循环链表,关于java:二叉搜索树转换为单向链表interview1712
  7. Redis在项目中的使用及性能测试
  8. 开启Hadoop/Yarn的日志监控功能,配置Spark历史服务,解决web端查看日志时的Java.lang.Exception:Unknown container问题
  9. python 导入excel至oracle,Python读取Excel数据并将其导入Oracle数据库,导入到
  10. 手把手教学电信天翼校园接入无线路由器(通用版)
  11. 花了三天三夜才收集整理出来的经典 SQL 数据库笔试题及答案
  12. 怎么在html中加水印,如何在h5网页添加水印
  13. python画双y轴图像
  14. 视频教程-Spring Boot实战入门视频课程-Java
  15. android高级UI之Paint Xfermode
  16. 服务器后台设计与大型网站设计,「大型网站架构设计」—— 前言
  17. Adobe Magento 2 认证证书的变化
  18. 使用ruby获取yobo的飙升榜
  19. 高新技术企业评分项目及分值
  20. MODIS Swath数据的几何校正-Python批处理

热门文章

  1. camera中文版软件 ip_网络摄像机监控(IP Camera Viewer)下载-摄像头监控(IP Camera Viewer)官方版-华军软件园...
  2. 什么是GSD文件以及如何在STEP7和TIA博途中安装GSD文件?
  3. Icode编程>>>图形化编程>>>1级训练场>>>基础训练【1】
  4. django项目介绍
  5. 最新VMware虚拟机安装kali Linux详细教程
  6. 计算机的excel的知识,计算机基础知识excel题「附答案」
  7. 使用STM8S003F3P6的硬件I2C读写AT24C16的EEPROM的经验心得
  8. linux下桌面编程软件,慧编程桌面端下载|慧编程桌面版 V1.2.0 Linux版 下载_当下软件园_软件下载...
  9. ResNet网络结构详解(Tensorflow2.6.0实现网络结构)
  10. php电子书mobi,EPUB / PDF / MOBI 電子書下載