HC-SR04是常用的测距模块,这里分享关于这个模块的使用方法。

基本原理:

Trig口输入一个大于10us的高电平做激励(一般用20us)

随后检测Echo口的电平,产生高电平时开始计时,直至低电平时止,得到的时间为超声波行进时间,正比于距离

注意5V供电(注意开发板没有升压变压器,开发板也必须5V供电!!!)

代码实现:

先开启定时器TIME1

72分频(1MHz),10000计数,也就是说1us计数一次、也就是10ms中断一次。

在TIME1中断回调函数中,设置每中断一次计数一次

int dis_t=0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance==TIM1){dis_t++;}
}

定义测距函数

先拉低trig口电平,再拉高20us(大于10us即可)

在检测到echo口高电平时开始计数

float get_distance()
{HAL_GPIO_WritePin(Trig_Port,Trig_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(Trig_Port,Trig_Pin,GPIO_PIN_SET);delay_us(20);HAL_GPIO_WritePin(Trig_Port,Trig_Pin,GPIO_PIN_RESET);while(HAL_GPIO_ReadPin(Echo_Port,Echo_Pin)==GPIO_PIN_RESET);int count1=__HAL_TIM_GetCounter(&htim1);dis_t=0;while(HAL_GPIO_ReadPin(Echo_Port,Echo_Pin)==GPIO_PIN_SET);int count2=__HAL_TIM_GetCounter(&htim1);//u1_printf("%d %d\n",dis_t*10000+count2-count1);return (dis_t*10000+count2-count1)*17.0/1000;
}

注意最终得到的时间差是:

定时器计数差*1us+中断计数(dis_t)*10ms

最后换算得出距离(单位厘米)

事实上,一般测距时几十厘米的距离用不到中断回调函数(10ms超声波能走3.4m),但为了防止中断后重置计数器导致count相减出现负值,也要考虑定时器中断。

实验结果:

数据测量较为准确,且稳定,一般不需特别的滤波

当然,如果对精度要求高,考虑到偶尔会出现一些奇怪的数据,也可以加上滤波

STM32 超声波测距模块HC-SR04 驱动相关推荐

  1. STM32——超声波测距模块(HAL库CubeMx)

    超声波测距 1. 超声波测距模块原理 2. CubeMx配置 3. 代码的编写 3.1 定时器计时的计算 3.2 接口函数 1. 超声波测距模块原理 (2021/11/28 16:25编辑) 超声波测 ...

  2. US100超声波测距模块的FPGA驱动

    一.说明书摘要 驱动时序说明: 串口模式的时序很简单,向US100发送一帧0x55的数据即为测距,发送0x50即为测温,测距US100会返回2帧8位数据,分两次发送回来,第一帧为距离高8位,第二帧是距 ...

  3. STM32—驱动HC-SR04超声波测距模块

    文章目录 超声波测距原理 HC-SR04工作原理 STM32实现驱动 1.引脚的配置 2.时序控制 3.时间差测量 4.如何将距离测出来 超声波测距原理 利用HC-SR04超声波测距模块可以实现比较精 ...

  4. hc sr04流程图_超声波测距模块工作原理_HC-SR04模块详解

    超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较 ...

  5. stm32蓝牙模块和超声波测距模块

    蓝牙 蓝牙概念 蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接. [1] 蓝牙使当前的一些便携移动设备和计算 ...

  6. STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)

    参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...

  7. stm32+超声波测距+蜂鸣器报警或JQ8900模块语音报警

    注:文末有完整工程链接(包含引脚连接.代码注释和使用说明),已实测通过,下载打开即用. 文章目录 前言 一.超声波测距 二.短距报警模块 1.使用无源蜂鸣器进行报警 2.使用JQ8900语音模块报警 ...

  8. STM32用超声波测距模块实现测距

    STM32用超声波测距模块实现测距 通过超声波测距模块可以实现超声波反射型距离测试.市面上的超声波测距模块主要有两种.一种是分体式模块(HC-SR04等),由超生波发射头和接收头组成,一种是一体式模块 ...

  9. stm32超声波测距代码_超声波模块另类用法,悬浮,你也能做到

    今天,给大家介绍一个 「超酷的DIY声波悬浮」研究项目. 虽然超声波悬浮,不能像磁悬浮那样悬浮比较重的物品.不过能把小泡沫球.水滴或者蚂蚁这样的小物体悬浮起来也是很有意思的. 制作这样一个简易的超声波 ...

最新文章

  1. 分享Kali Linux 2016.2最新镜像20160919
  2. python3网上学习资源汇总
  3. go gorm指定别名_GORM入门指南
  4. android系统账户管理(AccountManagerService+AccountAuthenticator)
  5. 40 个顶级 jQuery 图片、内容滑块和幻灯片
  6. 【C++基础】STL迭代器
  7. 缺失值处理 - 拉格朗日插值法 - Python代码
  8. linux 将程序链接到 usr bin,Linux / usr / bin文件在重新启动后消失
  9. SAP License:给SAP顾问的5个小贴士
  10. python语言接收信息的内置函数_python接收信息的内置函数是
  11. PHP查看IP时候能ping通
  12. Python 错误 RuntimeError: CUDA error (10): invalid device ordinal
  13. 婚纱纪实类照片调色思路 教你PS洋气的油画效果
  14. SHA-3标准(NIST.FIPS.202)阅读笔记
  15. 学习3dmax(三)
  16. python类计算器开发_开发一个简单的python计算器
  17. matlab常用指令
  18. java在文件中输出换行符
  19. IDEA+Java控制台实现医院管理系统
  20. 51单片机直流电机PID速度控制正反转控制(红外光电测速)LCD1602 L298N

热门文章

  1. Python爬虫基础:初探selenium——动态网页静态网页
  2. Python Django,静态资源托管
  3. javaScript 多线程并行编程 施工中~
  4. Linux环境下 制作U盘启动盘
  5. 文案怎么写?文案范例一次学会!
  6. 怎么将pdf文件压缩的小一点
  7. iOS 语音播报解决方案(实现支付宝语音收款功能)
  8. 低成本[200元以下]打造分布式WIFI
  9. Tensorflow基础教程5:循环神经网络(RNN)讲解
  10. 上海地铁事故人身损害赔偿办法