弘毅 发表于 2014-4-25 16:11:04

OCROBOT入门教程016--超声波传感器测距

本帖最后由 董董soul 于 2016-10-27 11:06 编辑

科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。我们人类耳朵能听到的声波频率为20Hz~20000Hz。当声波的振动频率小于20Hz或大于 20000Hz时,我们便听不见了。因此,我们把频率高于20000赫兹的声波称为“超声波”。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。

超声波测距原理
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。这就是所谓的时间差测距法。
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。
测距的公式表示为:L=C×T
式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。

这节课我们就介绍一下怎样使用SR04超声波模块来进行距离测量。会用到上节课脉冲计时所学到的知识,通过计算脉冲时常来算出来超声波传感器所感知到的距离。


参数SR04超声波模块

工作电压DC5V
工作电流15mA
工作频率40kHz
最远射程4m
最近射程2cm
测量角度15度
输入触发信号10uS的TTL脉冲
输出回响信号输出TTL电平信号,与射程成比例




const int TrigPin = 8;
const int EchoPin = 9;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
}


http://player.youku.com/player.php/sid/XNzE3NzQ1NzE2/v.swf

Friday 发表于 2014-7-26 10:48:46

digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);

这段代码能再解释下吗?

弘毅 发表于 2014-7-26 14:30:40

Friday 发表于 2014-7-26 10:48 static/image/common/back.gif
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
di ...

这段是这个模块就要求这样子来触发,这个是根据模块的手册来定的。

Friday 发表于 2014-7-26 19:59:33

弘毅 发表于 2014-7-26 14:30 static/image/common/back.gif
这段是这个模块就要求这样子来触发,这个是根据模块的手册来定的。

就是说这个段就是这个超声波传感器的说明书里面来的么?

弘毅 发表于 2014-7-27 18:39:41

Friday 发表于 2014-7-26 19:59 static/image/common/back.gif
就是说这个段就是这个超声波传感器的说明书里面来的么?

是滴,严格按照说明书写。

Friday 发表于 2014-8-5 21:16:54

avrdude: stk500_getsync(): not in sync: resp=0x00

upload done以后出现这个错误 然后 没法显示出距离来

Friday 发表于 2014-8-5 21:57:08

解决了。。原来不能占用1 0 这两个口

弘毅 发表于 2014-8-6 08:02:52

Friday 发表于 2014-8-5 21:57 static/image/common/back.gif
解决了。。原来不能占用1 0 这两个口

恩,这两个占用了就无法下载程序了。

190258039 发表于 2015-8-18 21:29:49

读得数据混乱,中间夹杂很多野值为什么?
页: [1]
查看完整版本: OCROBOT入门教程016--超声波传感器测距