JSN-SR0T4-2.0 超声波测距模块可提供 20cm-600cm 的非接触式距离感测功能,测距精度可达高到 2mm,采用工业级一体化超声波探头设计,防水型,性能稳定,兼容市场上所有的 MCU 工作。

基本原理

作为超声波测距模块,本模块与HC-SR04雷同,二者可相互作为参考。
(JSN-SR04T和HC-SR04似乎是同一家公司的产品,其中,JSN-SR04T的模式一与HC-SR04的基本使用相兼容)

超声波测距模块,原理自然而然就是超声波测距,通过计算超声波在空气中经过的路程来测量距离,具体原理为:

对模块的Trig引脚发送一个持续时间不小于10us的高电平脉冲作为触发信号,当模块接收到触发信号后,模块内部向外界发出8个40kHz的超声波脉冲,同时Echo引脚由0置1。当超声波脉冲遇到被测障碍物并反射回测距模块时,Echo引脚电平由1置0,一次测距结束。通过计算Echo引脚高电平持续时间即可求得超声波传输时间,进而求解出所测距离。
.
.
.

代码思路

代码思路有两种,一种是通过定时器的输入捕获来计算时间,另一种是通过外部中断结合定时器的开闭来计算时间,个人觉得第二种比较简单,故采用第二种。

具体思路为:
通过MPU不断控制Trig控制端发送触发信号,使得模块处于实时测距状态,定时器和外部中断开启,每当测距模块向外发送高频信号时,将触发Echo引脚的外部中断,外部中断中,通过控制定时器的开闭来测量反应时间,从而通过换算得到距离。
.
.
.

部分代码

初始化函数

简单对GPIO进行初始化

//initialize the pin of jsn-sr04t
void JSN_SR04T_Init(void)
{//定义GPIO初始化结构体GPIO_InitTypeDef GPIO_InitStruct;//初始化相应IO口时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//初始化GPIO参数    引脚Trig,用于输出一个持续10us的高电平触发信号,触发超声波模块开始发送超声波GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;     //这里的推挽是针对输出的GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;  //速度是针对输出的GPIO_Init(GPIOE, &GPIO_InitStruct);//初始化GPIO参数    引脚Echo,用于检测超声波的发射/接收状态GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_DOWN;      //这里的上拉是针对输入来说的,下拉先复位,等待高电平GPIO_Init(GPIOE, &GPIO_InitStruct);
}

.
.

触发函数

根据模块工作原理进行简单的电平处理

//let jsn-sr04t to let out a signal to begin to detecting
void JSN_SR04T_Start(void)
{GPIO_SetBits(GPIOE,GPIO_Pin_0);        //置位delay_us(10);                       //持续10us的高电平GPIO_ResetBits(GPIOE,GPIO_Pin_0);   //复位,实现一次触发超声波测距模块
}

.
.

外部中断响应函数

用于对定时器的控制进而计算反应时间

/*外部中断用于检测触发引脚Echo的状态:*/
/*当模块Trig发出一次触发信号,模块将向外发送高频信号,同时Echo将被拉高;当模块接收到反射回来的高频信号,Echo将被拉低;*/
/*当Echo被拉高进入外部中断函数,不断readBit判断Echo是否被拉低,从而得到TIM4的持续时间*/u8 exti_i = 0;                    //用于表示求和次数
float temp = 0;                    //用于暂存Distance,以便求和
float Distance;                 //超声波测到的距离
float sum = 0;                 //用于累加Distance,以便求平均
float Distance_error = 0.717;  //超声波测距模块的系统误差//中断响应函数
void EXTI1_IRQHandler(void)
{delay_us(10);      //延时消抖if( EXTI_GetITStatus(EXTI_Line1) != RESET ){TIM_SetCounter(TIM4,0);                              //重置计时器的值TIM_Cmd(TIM4,ENABLE);                              //使能定时器开始计数while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_1));      //定时器计数的同时,死循环等待低电平,即接收到反射超声波TIM_Cmd(TIM4,DISABLE);                               //失能定时器,定格计数值//先换算成时间单位秒,然后乘以声速344得到路程,再除以2得到距离,最后转换成cm单位//Distance = TIM_GetCounter(TIM4) * 0.0001f * (344.0f+5.0f*0.607f) * 0.5f + Distance_error; //频率1Mhz,计数一次为0.001ms,TIM_GetCounter(TIM4)*(10^-6)*344m/s*0.5*10^2//通常所指的常温是指20℃时的气温(344m/s),气温每升高1℃,声速就增加0.607m/s                //实际拿来计算的值为:得到的值再加上系统误差Distance_errortemp = TIM_GetCounter(TIM4) * 0.0001f * (344.0f+5.0f*0.607f) * 0.5f + Distance_error;       //频率1Mhz,计数一次为0.001ms,TIM_GetCounter(TIM4)*(10^-6)*344m/s*0.5*10^2    //这里之所以乘的是0.0001是因为单位换算m换成cmsum += temp;exti_i++;if(exti_i==10)//求和10次之后求平均{Distance = sum / 10.0f;exti_i = 0;sum = 0;}EXTI_ClearITPendingBit(EXTI_Line1);     //清除LINE0上的中断标志位}
}

.
.
这样,main函数里只要反复触发反复向串口打印测得数据即可:

与HC-SR04模块的区别

使用这个模块,一个原因是因为其一体化防水设计,将主控板和收发器件分离,使得模块能够在潮湿甚至多水的环境下正常工作。

另外,HC-SR04测距范围为2cm-400cm,较适用于短距离的测距;
而JSN-SR04T的测量范围为20cm-600cm,能够满足大空间的距离测量;

但是,本模块的测量角度高达75°,测距时容易受周边环境的影响;
而 HC-SR04的测量角度为15°,受周边环境的影响较小;
如果要对管道内物体的距离进行测量,则要求模块的测量角度越小越好,否则容易影响模块的正常使用。

JSN-SR04T倒车雷达超声波测距模块相关推荐

  1. 通过串口打印--超声波测距模块测得距离

    通过串口打印--超声波测距模块测得距离 原理 超声波测距模块 串口传输 实战代码 原理 超声波测距模块 在这里首先需要了解超声波测距模块的原理.在我的这篇博客有很多介绍.超声波模块介绍 串口传输 串口 ...

  2. 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发

    基于MCS51单片机的超声波测距模块的开发 采用C51程序设计语言,完成下列功能要求. l 必选功能: (1) 超声波模块和单片机的接口设计,画出完整的电路原理图.(15分) (2) 开发板上电时,显 ...

  3. arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)

    这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发 ...

  4. 学习HC-SR04超声波测距模块,代码附带卡尔曼滤波

    硬件引脚 VCC-供5V的电压(一定要是5v) GND-接地 Trig-HC-SR04超声波测距模块上的触发引脚,用于向模块发送一个10微秒的高电平触发信号,触发模块开始进行距离测量 Echo-用于接 ...

  5. 超声波测距模块HC-SR04详解(基于51单片机)

    本篇文章是个人整理的包含超声波测距模块HC-SR04的基本介绍与基本工作原理以及分别通过LCD1602.数码管和串口显示距离的实例讲解与代码的笔记,部分内容来自<HC-SR04超声波测距模块说明 ...

  6. US-016超声波测距模块

    1.  概述 US-016超声波测距模块可实现2cm~3m的非接触测距功能,供电电压为5V,工作电流为3.8mA,支持模拟电压输出,工作稳定可靠.本模块根据不同应用场景可设置成不同的量程(大测量距离分 ...

  7. 利用51单片机+HC-SR04+51单片机制造超声波测距模块

    利用HC-SR04和51单片机制造超声波测距模块 完整的项目链接: https://github.com/linxinloningg/51_chip_core.git 硬件电路分析: 1.HC-SR0 ...

  8. 使用超声波测距模块控制LED灯

    本文章为你介绍如何使用Arduino开发板和超声波测距模块来控制LED灯的明灭. 所需硬件 -Arduino开发板 -LED -超声波测距模块 下面主要为大家说明一下超声波模块. 超声波传感器通过采用 ...

  9. Micropython——HC-SR04超声波测距模块

    文章目录 HC-SR04超声波测距模块 超声波测距原理 接线 代码 HC-SR04超声波测距模块 超声波测距模块HC-SR04是市面上常见的超声波测距模块,价格便宜,精度高,可提供2cm-400cm的 ...

最新文章

  1. 8086汇编语言命令速查与详解
  2. 清华大学:人工智能之知识图谱(附PPT)
  3. AgileEAS.NET平台开发实例-药店系统-数据库还原
  4. 对想进入Unity开发新人的一些建议
  5. python连接access 参数太少_带参数的PypyODBC:[ODBC Microsoft Access Driver]参数太少。预期4...
  6. 【规范】前端编码规范——css 规范
  7. drools。drools_Drools Planner重命名为OptaPlanner:宣布www.optaplanner.org
  8. SpringMVC配置没问题却却找不到页面,页面显示404
  9. 一步一步学ROP之linux_x64篇
  10. MySQL备份shell_shell---mysql备份
  11. j2ee不同数据库的驱动和URL写法
  12. java布尔类型比较器_浅谈Java中几种常见的比较器的实现方法
  13. Dummary、Fake、Stub、Spy、Mock
  14. 引用阿里图标库的三种方式——多色图标我选symbol
  15. XShell切换全屏快捷键
  16. Dagger2的使用示例
  17. 兽药促销发展分析及新策略谈
  18. Vue 2.x + Element后台模板开发教程(三)后台首页模板设计
  19. 浏览器提示“此网站的安全证书有问题“,你还敢继续访问吗?
  20. netty系列之:真正的平等–UDT中的Rendezvous

热门文章

  1. 【推荐系统】新闻相似度计算
  2. android气球上升的属性动画,CSS3 不断有气球上升的动画背景效果
  3. 遵义微红科技社群直播分销系统解决私域流量直播难题
  4. 腾讯-- TDW数据仓库数据安全
  5. 腾讯大数据之 TDW 计算引擎解析——Shuffle
  6. 计算机的所有功能都是由,计算机的所有功能都是由CPU一条一条地执行________来完成的。...
  7. 利用语义分割(FCN)区分两种有文字和无文字区域
  8. 使用 Docker 和 Nginx 打造高性能二维码服务(二)
  9. 图像识别技术——验证码识别
  10. vista系统服务器,Windows 7:二十个特色忘却Vista系统