极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16085|回复: 8

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

[复制链接]
发表于 2014-4-25 16:11:04 | 显示全部楼层 |阅读模式
本帖最后由 董董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电平信号,与射程成比例




  1. const int TrigPin = 8;
  2. const int EchoPin = 9;
  3. float cm;
  4. void setup()
  5. {
  6.   Serial.begin(9600);
  7.   pinMode(TrigPin, OUTPUT);
  8.   pinMode(EchoPin, INPUT);
  9. }
  10. void loop()
  11. {
  12.   digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
  13.   delayMicroseconds(2);
  14.   digitalWrite(TrigPin, HIGH);
  15.   delayMicroseconds(10);
  16.   digitalWrite(TrigPin, LOW);

  17.   cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
  18.   Serial.print(cm);
  19.   Serial.print("cm");
  20.   Serial.println();
  21.   delay(1000);
  22. }
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-7-26 10:48:46 | 显示全部楼层
  digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);

这段代码能再解释下吗?
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-7-26 14:30:40 | 显示全部楼层
Friday 发表于 2014-7-26 10:48
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
  delayMicroseconds(2);
  di ...

这段是这个模块就要求这样子来触发,这个是根据模块的手册来定的。
回复 支持 反对

使用道具 举报

发表于 2014-7-26 19:59:33 | 显示全部楼层
弘毅 发表于 2014-7-26 14:30
这段是这个模块就要求这样子来触发,这个是根据模块的手册来定的。

就是说这个段就是这个超声波传感器的说明书里面来的么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-27 18:39:41 | 显示全部楼层
Friday 发表于 2014-7-26 19:59
就是说这个段就是这个超声波传感器的说明书里面来的么?

是滴,严格按照说明书写。
回复 支持 反对

使用道具 举报

发表于 2014-8-5 21:16:54 | 显示全部楼层
avrdude: stk500_getsync(): not in sync: resp=0x00

upload done以后出现这个错误 然后 没法显示出距离来
回复 支持 反对

使用道具 举报

发表于 2014-8-5 21:57:08 | 显示全部楼层
解决了。。原来不能占用1 0 这两个口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-6 08:02:52 | 显示全部楼层
Friday 发表于 2014-8-5 21:57
解决了。。原来不能占用1 0 这两个口

恩,这两个占用了就无法下载程序了。
回复 支持 反对

使用道具 举报

发表于 2015-8-18 21:29:49 | 显示全部楼层
读得数据混乱,中间夹杂很多野值为什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 08:26 , Processed in 0.061111 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表