凤凰体育平台 HC-SR04超声波原理图说明,时序分析和arduino的使用

日期:2021-04-01 22:10:13 浏览量: 153

简介

我最近想制作自己的超声模块。我在互联网上发现了很多信息。其中大多数是一般性的解释。其中一些仍然包含误导性数据。我很生气,我只是自己整理了一下。

在这里插入图片描述

示意图

在这里插入图片描述

在Internet上流通的大多数与此电路图相似,但是另一种加密的电路图在市场上很流行(接收部分芯片擦除丝网),但是它们的工作原理基本相同。也就是说,放大->频率选择(40KHz)->放大->比较。 (频率成分和设计参数的具体选择是半桶水,希望伟大的上帝留下信息来告知)

计时

在这里插入图片描述

比较引脚被拉低:NET9,接收到触发信号:NET10

以上时序图无法使用逻辑分析仪根据正常接线来测量。内部有一个凹坑,即NET9引脚实际上是一个漏极开路凤凰彩票 ,直接连接到逻辑分析仪将干扰超声模块的正常运行万狗体育 ,并且无法捕获时序图。在这里超声波测距电路原理图,我从外部强制上拉一个1K电阻。尽管超声接收的数据是错误的,但至少我可以捕获其工作原理的时序图。

触发引脚需要一个10us的高电平触发脉冲->然后将NET9引脚拉低(以消除干扰信号)->模块发送8个40KHz脉冲->启动计时器,启动中断->等待NET10接收触发中断信号->关闭计时器,关闭中断,然后计算计时器时间->通过回显引脚输出与计时器时间相同的高电平脉冲。

摘要分析

比较器

在这里插入图片描述

1、 UC DC分析:

当超声模块未接收到任何信号时,B点的电压为2. 5V(由于R7和R16的分压2. 5V)。

2、 NET9是漏极开路的(忽略R10的作用):

A点的电压为2. 41V,B-A = 0. 09V,很容易触发UD输出高电平和低电平,并且容易受到干扰信号的影响。

3、 NET9输出低电平(忽略R10的影响):

A点的电压约为0. 96V,BA = 1. 54V,不易触发UD输出高低电平,不易受到干扰信号的影响。

4、 NET9输出低电平,假设点B输出0-5V交流信号(考虑R10的影响):

这时,A点的电压约为0. 96V。

当B点为0V时,C点的电压约为0. 075V,电压:A> C,晶体管Q1截止,D点的电压约为4. 62V。当B点的电压为0- 0. 89V时,Q1晶体管始终处于截止状态。

当B点的电压约为0. 90V,C点的约为0. 962V时,电压:C> A,UD输出高电平,Q1晶体管导通。当Q1晶体管导通时诈金花官网 ,D点的电压瞬时变为0. 3V(晶体管的导通压降),而C点的电压瞬时变为0. 89V。此时,电压:A> C,UD输出低电平,Q1晶体管断开;此时,Q1晶体管处于重复的导通和截止状态;点B处于0. 90- 0. 972V之间的电压,并且Q1晶体管始终处于重复开关状态,如时序图的接收触发部分所示。

在这里插入图片描述

当B点的电压在0. 973-5V之间时,Q1晶体管始终导通。

4、 NET9输出高电平(漏极开路):

超声模块被中断并关闭,计时器不计数,并且未处理NET10信号。 UD处于高度敏感状态,并输出带有干扰信号的脉冲。

备注:这是个人的理解。有不同意见的伟大神灵希望留下信息。

了解超声

可以在空气中传播的超声波频率大约在20〜200KHz之间,其衰减与频率成正比(即频率越高超声波测距电路原理图,传播距离越短)

在室温为20°C的环境中,声波的传输速度约为344m / s(在水中传播的声音速度是在空气中传播的速度的60倍)。因此,假设超声往返时间为600μs,则可以使用以下公式:

计算:被测物体的距离为1 0. 3cm。

影响声音传播速度的因素:

1、空气的密度会影响声音的传播速度。空气密度越高,声音传播的速度越快。空气的密度与温度密切相关。考虑温度变化的声音传播速度的近似公式:

Speed = V0 + 0. 6×T

其中,V 0 V_0 V0:0摄氏度下的声音传播速度为每秒33 1. 5米。 T:温度

2、对象的形状和材料会影响超声传感器的效果和准确性。当检测具有平坦表面的墙壁和玻璃时,声波将以入射角反射回去。只要物体表面上的凹坑的尺寸小于声波4 \ frac {1} {4} 41的波长的1即可,该声波可以视为平坦的表面。波长计算公式:

超声波传感器简介

超声传感器模块上通常有两个超声组件,一个用于发送,一个用于接收。电路板上有4个引脚:VCC(正),Trig(触发),Echo(响应),GND(接地),主要参数:

工作电压与电流 :5V、15mA。
感测距离 :2~400cm
感测角度:不大于15°。
被测物的面积不要小于50cm²并且尽量平整。

将超过10微秒的高电势输入到超声模块的触发针中以传输超声波。在发送超声波之后,在接收返回的超声波之前,“响应”针脚呈现高电位。因此,该程序可以根据“响应”引脚的高电位脉冲的持续时间转换被测物体的距离。

代码和分析:

pulseIn():用于检测引脚输出的高电平和低电平的脉冲宽度。

pulseIn(引脚,值)

pulseIn(引脚,值,超时)

Pin-需要读取脉冲的引脚

Value-要读取的脉冲类型,HIGH或LOW

超时-超时时间(以微秒为单位)澳洲幸运5 ,数据类型为无符号长整数。

使用方法和时序图:

1、使用Arduino数字引脚向SR04的Trig引脚提供至少10μs的高电平信号,以触发SR04模块的测距功能。

触发2、后,模块将自动发送8个40KHz超声波脉冲,并自动检测是否有信号返回。该步骤将由模块自动完成。

3、如果有信号返回,则Echo引脚将输出一个高电平,并且该高电平的持续时间是从发射超声波到返回超声波的时间。此时华体会 ,我们可以使用pulseIn()函数获取距离测量结果,并通过公式计算到被测物体的实际距离。

接线图:

在这里插入图片描述

Arduino UNO R3HC-RS04

+ 5V

+ 5V

D7

触发

D6

回声

GND

GND

代码:

const int pingPin = 7; // Trigger Pin of Ultrasonic Sensor
const int echoPin = 6; // Echo Pin of Ultrasonic Sensor
void setup() {
   Serial.begin(9600); // Starting Serial Terminal
}
void loop() {
   long duration, inches, cm;
   pinMode(pingPin, OUTPUT);
   digitalWrite(pingPin, LOW);
   delayMicroseconds(2);
   digitalWrite(pingPin, HIGH);
   delayMicroseconds(10);
   digitalWrite(pingPin, LOW);
   pinMode(echoPin, INPUT);
   duration = pulseIn(echoPin, HIGH);
   inches = microsecondsToInches(duration);
   cm = microsecondsToCentimeters(duration);
   Serial.print(inches);
   Serial.print("in, ");
   Serial.print(cm);
   Serial.print("cm");
   Serial.println();
   delay(100);
}
long microsecondsToInches(long microseconds) {
   return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
   return microseconds / 29 / 2;
}