找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5323|回复: 0
收起左侧

Arduino学习2-Arduino连接超声波传感器测距

[复制链接]
ID:114115 发表于 2016-4-14 02:46 | 显示全部楼层 |阅读模式
注:方法已经过时,新方法使用timer去计时,请看https://code.google.com/p/arduino-new-ping/

超声波传感器适用于对大幅的平面进行静止测距。普通的超声波传感器测距范围大概是2cm~450cm,分辨率3mm(淘宝卖家说的,笔者测试环境没那么好,个人实测比较稳定的距离10cm~2m左右,超过此距离就经常有偶然不准确的情况发生了,当然不排除笔者技术问题。)

测试对象是淘宝上面最便宜的SRF-04超声波传感器,有四个脚:5v电源脚(Vcc),触发控制端(Trig),接收端(Echo),地端(GND)
附:SRF系列超声波传感器参数比较
http://www.acroname.com/robotics/info/articles/devantech/srf.html

012929fin9fr8q8q2i2iik.jpg
模块工作原理:
  • 采用IO触发测距,给至少10us的高电平信号;
  • 模块自动发送8个40KHz的方波,自动检测是否有信号返回;
  • 有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340m/s))/2;
电路连接方法:
012930bu230wfvkzf23ogv.gif

Arduino程序例子:
const int TrigPin = 2;
const int EchoPin = 3;
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
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
}

172919oymwkpkq3c747ew3.jpg




支持,正好找了一个传感器,用手水平转了一圈扫的数据~~
150143zs77y8qphi68s28q.jpg
右上的平面是电脑的屏幕,旁边突出来的是热水壶,右下应该是本人(那个尖尖是啥玩意),左下的平面是座位的隔板,左边的突出是我的包。左上是空档,超过100cm的都按100算了。

这种方式可以用来做为智能车判断路径的依据哎,一边走一边分析数据,就像即时战略游戏的战争黑雾设计一样,我们的小车就是一个探路兵。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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