一、超声波测距原理
》》超声波测距原理是在超声波发射装置发出超声波,在发射超声波的同时开始计时,超声波在空气中传播,在传播的时刻碰到障碍物,就会返回一个信号给超声波接收器,超声波接收器接收到信号后立即停止计时,这时候会有一个时间t,而超声波在空气中传播的速度为340m/s,通过公式s=340 x t / 200,即可计算出待测距离是多少。(公司用的是HC-SR04,可提供2cm-400cm的非接触式测距功能)
1、采用单片机I/O口TRIG触发测距,给定至少10us的高电平;
2、模块自动发送8个40khz的方波,自动检测是否有信号返回;
3、有信号返回,通过I/O口ECHO输出一个高电平,高电平持续的时间(用定时器进行定时)就是波从发射到返回的时间。测试距离=(高电平时间 x 声速(340m/s))/2;

二、HC-SR04超声波测距模块工作原理
1、采用I/O口触发方式测距,通过单片机发出至少10us的高电平信号到超声波模块的Trig引脚,用于触发超声波模块工作;
2、模块会自动发送8个40KHz的方波信号,自动检测是否有信号返回;
3、有信号返回,通过Echo引脚连接单片机的I/O口输出一高电平,高电平持续时间就是超声波从发射到返回的时间;
4、声音在空气中的传播速度为340米/秒,即可计算出所测的距离;

三、具体代码测距方式
1、定时器方式
2、延时方式

四、测距离公式
1、正常的计算距离的公式
测试距离=[ 高电平时间 x 速度(340m/s)/2 ](除以2表示,从发出到接收)
测量单位:测量距离(米)、速度(米/秒)、高电平时间(秒)
2、将单位改变后的测距离的公式
测试距离=[ (高电平时间us/1000000)x 340 / 2 x 100 ] =高电平时间us/58
测量单位:测量距离(厘米)、速度(厘米/秒)、高电平时间(微秒)

五、HC-SR04模块(工作电压:DC 5V)
该模块包括超声波发射器、接收器与控制电路

六、注意事项
1、此模块不宜带电连接,若要带电连接,则先让模块的GND端接地,否则会影响模块的正常工作;
2、测距时,被测物体的面积不少于0.5平方米且平面要求平整,否则会影响测量的结果;

七、编程思路
1、HC-SR04超声波发出8个40KHz的方波,然后再遇到障碍物通过ECHO给单片机返回一个高电平,从触发HC-SR04工作开始计时,到ECHO返回高电平停止计时,这段时间计为t;
2、然后通过公式就可以算出此时的距离s;

main函数:
#include "stm32f10x.h"
#include "delay.h"
#include "hc_sr04.h"
#include "stdio.h"
#include "usart.h"
u8 count=0;
int main()
{delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);HC_SR04_Init();NVIC_Config();uart_init(9600);Time2_Init(20,3600);//1ms中断1次
//  while(1)
//  {hc_sr04_calculate();count = 0;delay_ms(1000);printf("HC-SR04测距计算完成!over\n");
//  }
}
hc_sr04.c源文件:
#include"stm32f10x.h"
#include"hc_sr04.h"
#include"stdio.h"
//hc_sr04引脚初始化
void HC_SR04_Init(void)//初始化hc_sro4的连接引脚
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB时钟GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//将hc_sr04的Trig引脚连接到单片机的PB5引脚上,单片机给HC_SR04提供至少10us的脉冲GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//将hc_sr04的Echo引脚连接到单片机的PB6引脚上,HC_SR04反馈高电平信号给单片机GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);
}//通用定时器Tim2初始化
void Time2_Init(u32 Period , u32 Prescaler)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启定时器TIM2的时钟TIM_TimeBaseStructure.TIM_Period = Period;//自动重装载寄存器的值TIM_TimeBaseStructure.TIM_Prescaler = Prescaler;//时钟预分频数TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//采样分频TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);TIM_ClearFlag(TIM2,TIM_FLAG_Update);//清除溢出中断标志位TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//TIM2中断使能
//  TIM_Cmd(TIM2,ENABLE);//使能定时器Tim2
}//NVIC配置
void NVIC_Config(void)
{NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;//中断通道号配置为TIM2NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//无占先优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//无副优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//中断使能NVIC_Init(&NVIC_InitStructure);//NVIC初始化
}//给hc_sr04一个启动信号
void hc_sr04_start(void)
{Trig=1;delay_us(20);Trig=0;
}//计算hc_sr04测出来的值
void hc_sr04_calculate(void)
{float temp;while(Echo==1);hc_sr04_start();//启动hc_sr04超声波传感器while(Echo==0);printf("收到20us的脉冲,开始发送8个40KHz的方波信号!\r\n");delay_ms(500);printf("hc_sr04正在开始测距.......\r\n");TIM_SetCounter(TIM2,0);//清空计数器TIM_Cmd(TIM2,ENABLE);//开启定时器while(Echo==1);//如果hc_sr04返回低电平说明还未检测到前面有障碍物,就一直执行该程序TIM_Cmd(TIM2,DISABLE);//停止计数temp=TIM_GetCounter(TIM2)*340/(2*1000);printf("距离:%6.2fm\n",temp);
}hc_sr04.h头文件:
#ifndef _HC_SRO4_H
#define _HC_SR04_H#include "stm32f10x.h"
#include "delay.h"#define Trig PBin(5)
#define Echo PBout(6)
void HC_SR04_Init(void);
void Time2_Init(u32 Period , u32 Prescaler);
void NVIC_Config(void);
void hc_sr04_start(void);
void hc_sr04_calculate(void);
void delay_init();
void uart_init(u32 bound);#endif

传感器:HC-SR04超声波传感器原理(底部附代码)相关推荐

  1. 传感器:SHT30温湿度传感器检测环境温湿度实验(底部附代码)

    一.导言 SHT30温湿度传感器模块是通过IIC驱动,所以大家使用该模块时,需要具备IIC的基本知识,这篇文章带领大家一起使用SHT30模块进行温湿度的测量,当然DHT10/DHT10原理都一样,好了 ...

  2. 超声波测距仪编程_北邮小学期pic单片机-超声波测距仪实验报告(附代码).docx

    北邮小学期pic单片机-超声波测距仪实验报告(附代码) 2014年小学期单片机设计实验报告 题目:超声波测距仪 目录 TOC \o "1-3" \h \z \u HYPERLINK ...

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

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

  4. US100超声波测距传感器linux,US100超声波传感器手册

    US100超声波传感器手册 (2011-08-13 17:42:47) 标签: 杂谈 US-100 超声波测距模块 1. 概述 US-100 超声波测距模块可实现2cm~4.5m 的非接触测距功 能, ...

  5. Wemos D1 Arduino超声波测距原理讲解加代码、超声波驱动SG90电机(垃圾桶感应开关)

    先介绍一下超声波模块: 总共有四个端子,分别为VCC.GND.Trig.Echo. VCC一般接5V电压:GND接地 Trig为输出接口,Echo为输入接口 Trig和Echo与超声波测距原理有关, ...

  6. [carla入门教程]-3 在carla中遥控汽车并采集传感器数据(一个简单Demo,附代码)

    本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 第 ...

  7. 独家 | 浅谈强化学习原理(附代码链接)

    作者:Michel Kana 翻译:王琦 校对:王雨桐 本文约4900字,建议阅读15分钟. 本文介绍了强化学习的基本原理,并通过代码实例来讲解如何找到最优策略. Google在2017年年底发布了A ...

  8. hc sr04流程图_HC-SR04超声模块示例代码/原理图/说明书等全套资料

    本设计分享的是HC-SR04超声模块实例代码/原理图/说明书等全套资料.HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm:该HC-SR04超声模块包括 ...

  9. shazam 音频指纹 听歌识曲 原理(附代码)

    shazam 音频指纹 听歌识曲 原理 如何用java来实现shazam? 几天以前我读了一篇论文 :How shazam works?(shazam的工作原理) 这让我有了自己写一个java版本的s ...

  10. 智能优化算法——粒子群算法原理(附代码)

    目录 基本概念 算法实现 粒子群算法的构成要素分析 C++程序测试Sphere函数 总结 visual studio2017c++源代码 源文件下载地址 基本概念 粒子群优化算法(particle s ...

最新文章

  1. 服务器端linux发行版的选择
  2. JAXB--@XmlElementWrapper注解和泛型一起使用
  3. 对GC垃圾收集的一点整理
  4. laravel CURD
  5. 一键自动化部署web架构
  6. Java讲课笔记29:Swing入门
  7. Alibaba代码规约插件使用IDEA
  8. 10-ESP8266 SDK开发基础入门篇--上位机通过串口控制ESP8266灯亮灭
  9. 谷歌大脑发布神经架构搜索新方法:提速1000倍
  10. 网站漏洞修复方案防止SQL注入攻击漏洞
  11. Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码
  12. C/C++[PAT B1022]D进制的A+B
  13. element-ui input 身份证号码验证
  14. python find_peaks 源码理解
  15. 【自动驾驶】华为车BU介绍(2021-11-23晚直播记录)
  16. 《R3Det:Refined Single-Stage Detector with Feature Refinement for Rotating Object》论文笔记
  17. 有一个已经排好序的数组,输入一个数,将其插入到数组中,使得数组还是有序的。要求数组元素的值来自初始化
  18. kubectl port-forward 踩坑记录
  19. php设置pst时区,PHP时区标识符含义
  20. 爱创课堂分享web前端学习路线自学如何找到工作

热门文章

  1. OSChina 周三乱弹 —— 你们的女神宣布结婚了
  2. POJ 3537 Crosses and Crosses 博弈论 SG函数 记忆化搜索
  3. 视频融合技术解决方案,三维全景拼接赋能平台
  4. 力扣:714.买卖股票的最佳时机含手续费
  5. Python编程通过出生日期判断星座
  6. Android之多媒体视频的播放和录制
  7. 2020-11-04 浏览器主页被毒霸劫持的解决方案
  8. SPSS统计分析过程包括描述性统计、均值比较、一般线性模型、相关分析、回归分析、对数线性模型、聚类分析、数据简化、生存分析、时间序列分析、多重响应等几大类...
  9. opencv Mat指针读取、修改像素值
  10. redis的原理和源码-数据持久化方式AOF的介绍和源码解析