1.硬件原理图

2.传感器参数表

电气参数 HC-SR04 超声波模块
工作电压 DC 5 V
工作电流 15mA
工作频率 40kHz
最远射程 4m
最近射程 2cm
测量角度 15 度
输入触发信号 10uS 的 TTL 脉冲
输出回响信号 输出 TTL 电平信号,与射程成比例
规格尺寸 452015mm

3.引脚功能表

HC-SR04实物图

HC-SR04功能引脚表

引脚 说明
VCC 接5V
GND 地线
TRIG 触发控制信号输入
ECHO 回响信号输出

4.工作原理

(1)给超声波模块接入电源和地
(2)给脉冲触发引脚(trig)输入一个长为20us的高电平方波
(3)输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚echo端的电平会由0变为1;(此时应该启动定时器计时)
(4)当超声波返回被模块接收到时,回波引脚端的电平会由1变为0;(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长
(5)根据声音在空气中的速度为344米/秒,即可计算出所测的距离。

超声波时序图

  • 以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出 8个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
  • 建议测量周期为 60ms 以上,以防止发射信号对回响信号的影响。
  • 公式: uS/58=厘米 uS/148=英寸; 距离= 高电平时间*声速(340M/S)/2

5.流程图

硬件运行流程图

时间的输入捕获流程图

6.注意事项

(1)公式中为什么要除以58?

  • 我们作一下单位换算,34,300除以1,000,000厘米/微秒。 即为:0.0343厘米/微秒

  • 再换一个角度,1/(0.0343 厘米/微秒) 即:29.15 微秒/厘米。1厘米就29.15微秒。

  • 但是发送后到接收到回波,声音走过的是2倍的距离。所以实际距离就是1厘米,对应58.3微秒。

(2)高电平的测量

  • 我们使用通用定时器的输入捕获来测量高电平时间,所以使用的过程中要注意结果是否溢出

(3)消抖

  • 由于超声波测量一次的时间很短,测量一次很有可能出错,所以我们可以多测几次求平均值来进行消抖。

(4)使用的注意事项

  • 此模块不宜带电连接,若要带电连接,则先让模块的 GND 端先连接,否则会影响模块的正常工作。
  • 测距时,被测物体的面积不少于 0.5 平方米且平面尽量要求平整,否则影响测量的结果

7.基于stm32-mini的代码模块

Ultrasonic.h模块

#ifndef __ULTRASONIC_H
#define __ULTRASONIC_H
#include "sys.h"#define trig PBout(2)  //超声波输出
#define echo PBin(3)  //超声波输入void TIM3_Int_Init(u16 arr,u16 psc);  //计数器使能
void Ultrasonic_Init(void);          //超声波初始化void open_Ultrasonic(void);   //打开超声波
void close_Ultrasonic(void);  //关闭超声波int accept_Ultrasonic(void);  //计算距离
int get_val(void);  //消抖#endif

Ultrasonic.c模块

#include "Ultrasonic.h"
#include "delay.h"
#include "usart.h"
#include "sys.h"
int flag=0;void TIM3_IRQHandler(void){if(TIM3->SR&0X0001){flag++;}TIM3->SR&=~(1<<0);
}void TIM3_Int_Init(u16 arr,u16 psc)   //计数器使能
{                            RCC->APB1ENR|=1<<1;  //TIM3时钟使能    TIM3->ARR=arr;            //设定计数器自动重装值 TIM3->PSC=psc;         //预分频器设置TIM3->DIER |= 1<<0;MY_NVIC_Init(1,3,TIM3_IRQn,2);
}void Ultrasonic_Init(void){   //超声波初始化TIM3_Int_Init(5000,71);RCC->APB2ENR|=1<<3;      //时钟使能GPIOB->CRL&=0XFFFFF0FF;  //pb2  trig推挽输出GPIOB->CRL|=0X00000300;GPIOB->ODR&=~(1<<2);       GPIOB->CRL&=0XFFFF0FFF;  //pb3  echo浮空输入GPIOB->CRL|=0X00004000;}void open_Ultrasonic(void){  //发射超声波trig=1;  delay_us(20);trig=0;  flag=0;
}void close_Ultrasonic(void){  //关闭超声波TIM3->CR1&=0<<0;        //关闭定时器1    TIM3->CNT=0;
}int accept_Ultrasonic(void){  //计算距离int val=0;open_Ultrasonic();while(echo==0){ }TIM3->CR1|=0x01;       //使能定时器1 TIM3->CNT=0;while(echo==1){ }val=(flag*5000+TIM3->CNT)*0.017;close_Ultrasonic();return val;
}int get_val(void){   //消抖int i;int val,sum=0;for(i=0;i<10;i++){sum += accept_Ultrasonic();}val=sum*0.1;return val;
}

HC-SR04超声波模块相关推荐

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

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

  2. hc sr04流程图_超声波传感器HC-SR04完整应用以及程序讲解

    带有Arduino的超声波传感器HC-SR04完整应用指南 本文是有关流行的超声波传感器HC – SR04的应用指南.我们将解释其工作原理,向您展示其某些功能,并分享一个您可以遵循的Arduino项目 ...

  3. 基于51单片机驱动HC-SR04超声波模块(LCD1602显示)

    基于51单片机驱动HC-SR04超声波模块(LCD1602显示) 一.基本参数 二.通信时序 三.部分代码展示 四.实际效果 总结 一.基本参数 点击图片购买 HC- SR04+是一款宽电压工作的超声 ...

  4. HC-SR04超声波模块的使用(stm32f103c8t6/HAL)(超详细)

    系列文章目录(STM32常用外设/HAL库版) 一.HC-SR04超声波模块的使用(本篇) 二.OLED的HAL库代码介绍及使用 三.编码电机以及双电机驱动 本文主要介绍超声波模块HC-SR04的两种 ...

  5. Linux驱动 | HC-SR04超声波模块驱动

    HC-SR04超声波模块 工作原理参考: 超声波模块_star-air的博客-CSDN博客_超声波模块 https://blog.csdn.net/qq_41262681/article/detail ...

  6. arduino 多个超声波模块HC-SR04 Newping.h库的使用——摆脱万恶的阻塞等待

    目录 前言(一点废话) 问题的发现 Newping.h库 简介 安装 例程1:定时器示例TimerExample 例程2:超声波模块的读取NewPingExample 例程3:中断读取超声波NewPi ...

  7. 收发一体超声波测距离传感器模块_超声波模块HC-SR04简介以及编程

    之前做避障车用到了超声波模块,总结了下资料 1.本模块性能稳定,测度距离精确,模块高精度,盲区小. 产品应用领域: 机器人避障 物体测距 液位检测 公共安防 停车场检测 . 2. 主要技术参数: 1: ...

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

    硬件材料: Arduino UNO R3.超声波模块.面包板一块.连接线若干 超声波模块如下图,一个超声波模块价格在5元以内. arduino实物连接图如下:  源码: void setup() { ...

  9. 【雕爷学编程】Arduino动手做(58)---SR04超声波传感器

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  10. 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上

    文章目录 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上 实现效果: 模块说明: 引脚接线方法: 程序源码 附录 快速上手Arduino – 打印超声波模块测距信息到OLED屏幕 ...

最新文章

  1. 微信朋友圈里的十五种类型,笑死了!
  2. 使用repeater,遍历数据,不规则排序,不同的样式之间切换
  3. 虚拟机+可信+云计算
  4. 《构建之法》(第四、十七章)读书笔记
  5. SQL基本语法 case when 应用
  6. poj 3071 Football 概率dp
  7. C# WPF DataGrid在Grid中自适应窗体大小
  8. Excel:INDIRECT函数
  9. 立创EDA超详细的PCB设计流程
  10. 删除微云同步助手计算机快捷访问,腾讯微云同步助手使用说明:设置同步文件,方便随时查看...
  11. 数据结构与算法碎碎念之运用递归处理问题
  12. 三问新能源车险:亲自下场卖保险,意欲何为?
  13. 拿到别人提供的虚拟机需要做的几件事情
  14. Kafka 的 Java 消费者如何管理 TCP 连接?
  15. 昆十四中2021年高考成绩查询,昆明第十四中学2021年排名
  16. linux vim取消加密,linux 使用vim文件加密/解密的方法
  17. mysql用了索引为什么还是查询很慢?
  18. 小白练打字:金山打字通
  19. 《程序员的七堂课》读书笔记:职业规划
  20. 计算机基础里适合做微课的知识点,微课在计算机基础教学中的要求和应用

热门文章

  1. 一个人最多能考取几个教师资格证?
  2. python零基础二
  3. (转)iOS Wow体验 - 第四章 - 为应用的上下文环境而设计
  4. 嵌入式Linux驱动笔记(十六)------设备驱动模型(kobject、kset、ktype)
  5. Linux 之pureftp 的部署和优化
  6. 关于Gradle新版插件依赖方式
  7. 服务器主板性能排行榜,四路绝佳!华硕服务器主板性能强劲
  8. Java获取基金接口天天基金_天天基金网数据接口
  9. python画美图_用python做个街拍美图手册
  10. powershell解压缩文件