STM32 超声波测距模块HC-SR04 驱动
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 驱动相关推荐
- STM32——超声波测距模块(HAL库CubeMx)
超声波测距 1. 超声波测距模块原理 2. CubeMx配置 3. 代码的编写 3.1 定时器计时的计算 3.2 接口函数 1. 超声波测距模块原理 (2021/11/28 16:25编辑) 超声波测 ...
- US100超声波测距模块的FPGA驱动
一.说明书摘要 驱动时序说明: 串口模式的时序很简单,向US100发送一帧0x55的数据即为测距,发送0x50即为测温,测距US100会返回2帧8位数据,分两次发送回来,第一帧为距离高8位,第二帧是距 ...
- STM32—驱动HC-SR04超声波测距模块
文章目录 超声波测距原理 HC-SR04工作原理 STM32实现驱动 1.引脚的配置 2.时序控制 3.时间差测量 4.如何将距离测出来 超声波测距原理 利用HC-SR04超声波测距模块可以实现比较精 ...
- hc sr04流程图_超声波测距模块工作原理_HC-SR04模块详解
超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较 ...
- stm32蓝牙模块和超声波测距模块
蓝牙 蓝牙概念 蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接. [1] 蓝牙使当前的一些便携移动设备和计算 ...
- STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)
参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...
- stm32+超声波测距+蜂鸣器报警或JQ8900模块语音报警
注:文末有完整工程链接(包含引脚连接.代码注释和使用说明),已实测通过,下载打开即用. 文章目录 前言 一.超声波测距 二.短距报警模块 1.使用无源蜂鸣器进行报警 2.使用JQ8900语音模块报警 ...
- STM32用超声波测距模块实现测距
STM32用超声波测距模块实现测距 通过超声波测距模块可以实现超声波反射型距离测试.市面上的超声波测距模块主要有两种.一种是分体式模块(HC-SR04等),由超生波发射头和接收头组成,一种是一体式模块 ...
- stm32超声波测距代码_超声波模块另类用法,悬浮,你也能做到
今天,给大家介绍一个 「超酷的DIY声波悬浮」研究项目. 虽然超声波悬浮,不能像磁悬浮那样悬浮比较重的物品.不过能把小泡沫球.水滴或者蚂蚁这样的小物体悬浮起来也是很有意思的. 制作这样一个简易的超声波 ...
最新文章
- 分享Kali Linux 2016.2最新镜像20160919
- python3网上学习资源汇总
- go gorm指定别名_GORM入门指南
- android系统账户管理(AccountManagerService+AccountAuthenticator)
- 40 个顶级 jQuery 图片、内容滑块和幻灯片
- 【C++基础】STL迭代器
- 缺失值处理 - 拉格朗日插值法 - Python代码
- linux 将程序链接到 usr bin,Linux / usr / bin文件在重新启动后消失
- SAP License:给SAP顾问的5个小贴士
- python语言接收信息的内置函数_python接收信息的内置函数是
- PHP查看IP时候能ping通
- Python 错误 RuntimeError: CUDA error (10): invalid device ordinal
- 婚纱纪实类照片调色思路 教你PS洋气的油画效果
- SHA-3标准(NIST.FIPS.202)阅读笔记
- 学习3dmax(三)
- python类计算器开发_开发一个简单的python计算器
- matlab常用指令
- java在文件中输出换行符
- IDEA+Java控制台实现医院管理系统
- 51单片机直流电机PID速度控制正反转控制(红外光电测速)LCD1602 L298N