Arduino机器人开发指南(三)超声波传感器篇

首先认识一下两个新的模块

如图,左边的是传感器扩展版,这里选择的是 Electronic Brick Shield 系列,另一个是超声波发射接收装置。

传感器扩展版将Arduino复杂的传感器线路连接进行了规整,类似于一个线路整理器,我们可以看到在上面除去两个电阻之外就没有别的元件了,基本上都是引脚的归纳。同时,扩展版是支持完美插入Arduino板卡的,在后面的图片中可以看到。

扩展板对传感器的连接,以超声波模块为例,其传输的是数字信号,所以我们需要将其对接至于扩展板的数字信号接口,接线如图

红线是VCC(电源+)接在VCC上,黑线为GND(电源-)接在GND上,这两个比较好理解。
棕线为Trip(触发控制信号)因为是数字信号所以任意找一个2-13的引脚口,白线Echo(回响信号)同理任意连接一个数字信号引脚上,到时代码调用这两个引脚即可。

这里我们的Trip接在了D2(2号引脚),Echo接在了D3上。(注意,接在D0,D1上是无效的,后面会解释)

可以看到,这次我们的接线都较为集中,因为在扩展版对vcc和gnd接口进行了归纳。

所有连接都应当在断电状态下进行。完成硬件连接之后接下来我们进入编码环节:
先看一下超声波模块的一些参数

注意输入触发信号——10uS的TTL脉冲,这里的意思是我们需要给Trip口输入一个10毫秒的脉冲信号来触发超声波发射。同时会经过Echo口返回一个表示距离值的回响电平,这个电平值即是声波来回经过的时间以微秒计算。了解这一点之后我们就知道如何着手编程了。

先看代码,这里先简单测试一下超声波模块是否工作正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int TrigPin = 2;
const int EchoPin = 3;
long distance;

void setup() {
    Serial.begin(9600);
    pinMode(TrigPin, OUTPUT);
    pinMode(EchoPin, INPUT);
}

void loop() {

    digitalWrite(TrigPin, HIGH);//发送高电平脉冲
    delayMicroseconds(10);//延迟10ms
    digitalWrite(TrigPin, LOW);//关闭高电平脉冲
    distance = pulseIn(EchoPin, HIGH);//读取电平值
    Serial.println(distance);
    delay(1000);

}

将代码烧入arduino中,打开串口监听,按一下板卡上的reset,然后用手掌或远或近在超声波感应模块前移动,回显数据如下

说明此刻超声波模块已经正常工作了。

接下来,我们需要将电平数据值即时间换算成距离,这里需要用到一段公式,官方给出的是:uS/58=厘米,uS/148=英寸 或者 高电平时间*音速(340m/s)/2 = 米,其实最后得出的结果即是 uS/58 , 这里的uS即我们之前得出的电平值。修改下代码,比较简单就不列出来了

最终效果如图

出现3646cm这个值说明测试距离已经远远超出了有效接收范围(此超声波模块的接收范围是2-400cm)。
初步测试了下,作为机器人的壁障系统这个精确度还是非常足够的,甚至你可以在自己的车上自己加装一个倒车雷达。

关于传感器的使用这里仅仅只是很小的一部分,更多功能欢迎大家一同讨论开拓。
本篇到此,谢谢关注。

BeiTown
2013.03.26

本文链接:Arduino机器人开发指南(三)超声波传感器篇

转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢


Tags: , , ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>