DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1308|回复: 0
打印 上一主题 下一主题

[待整理] 基于Arduino的超声测距系统的设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-10 07:17:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Arduino是目前较为流行的电子互动平台,基于嵌入式系统开发,具有使用简单,功能多样,价格低廉等优点,广泛应用于电子系统设计和互动产品开发方面。我们采用Arduino作为主控制器,结合超声测距模块,1602液晶模块,进行了超声波测距系统的软硬件设计。
       
        一、“电子积木”Arduino
       
        近几年,欧美大学皆相当流行应用Arduino作为基础的技术,在国内使用Arduino的人也越来越多。
       
        Arduino为什么会这样流行?首先因为它是一个基于开放源代码的硬件项目平台:
       
        1.硬件平台是开放的,任何人都可以在Arduino官方网站上下载最新的PCB设计进行复制,硬件平台包括基于AVR ATmega128微控制器的主控制电路板,以及大量的各式输入/输出电子模块。输入/输出模块包括开关输入模块、温度压力传感器输入模块、超声测距传感器输入模块、各类显示输出模块、电机控制模块等,甚至还有以太网接入模块。这些模块与主控制电路板的连接,不需焊接,只要像积木一样拼在一起即可。因此,Arduino也被称为“电子积木”。
       
        2.在软件方面,Arduino有一个属于自己的基于Eclipse的IDE软件开发环境,开发语言采用类C++语言的高级语言,容易被使用者掌握。有大量的库文件可以通过互联网下载免费获得,大大简化了程序开发工作。
       
        二、超声波测距原理
       
        由于超声波具有指向性强,在传输中能量消耗低,传播的距离较远等优点而被经常用于工业控制、建筑测量、汽车倒车系统等领域。
       
        超声波测距仪是利用超声波发射器向某一方向发射超声波,在发射时刻开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。根据计时器记录的超声波传播时间,以及超声波在相应介质中的传播速度就可以计算出发射点距障碍物的距离S=C*t/2,其中C为超声波在空气中的传播速度,t为声波往返所用的时间。
       
        超声波的传播主要受空气密度的影响,空气的密度越高其速度就越快,而空气的密度又与温度有着密切的关系。空气中的声波传播速度可近似地表示为C=331.4+0.607*T,其中T是空气介质的温度。超声波的传播速度式中:
       
        C=331.4m/S为零度时的声波速度;T为实际温度(℃)。在测距精度不是很高的情况下,一般认为c为常数340m/s.
       
        三、超声波测距仪的硬件设计
       
        超声波测距仪的硬件设计主要有ArduinoUNO主控制板、超声测距模块LCD1602液晶显示模块。
       
        1.超声波板主要技术参数的介绍:
       
        (1)工作电压:DC5V;
       
        (2)静态电流:小于2mA;
       
        (3)电平输出:高5V;
       
        (4)电平输出:底0V;
       
        (5)感应角度:不大于15度;
       
        (6)感应距离:4cm-5米;
       
        (7)高精度:0.3cm.
       
        板上接线如图1所示(左数起):
       
       
        图1 超声测距模块
       
        (1)VCC;
       
        (2)trig(控制端);
       
        (3)echo(接收端);
       
        (4)out(空脚);
       
        5)GND.
       
        2.Arduino与超声测距的连接方式:
       
        Arduino的数字6脚与超声测距模块的第2脚连接,Arduino的数字7脚与超声测距模块的第3脚连接。
       
        3.1602液晶与Arduino板连接图如图2所示:
       
       
        图2  Arduino板与1602液晶连接图
       
        4.实物连接图如图3所示:
       
       
        图3 超声测距系统实物图
       
        四、软件代码
       
        1.在采用Arduino编程的过程中,主要用pulseIn()函数,pulseIn()函数用来读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。计时范围从10微秒至3分钟。
       
        (1秒=1000毫秒=1000000微秒)语法:
       
        pulseIn(pin,value)或pulseIn(pin,value,timeout)
       
        参数:
       
        pin:你要进行脉冲计时的引脚号(int)。
       
        value:要读取的脉冲类型,HIGH或LOW(int)。
       
        Timeout(可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long)超声测距的主要代码:
       
       
       
       
        五、总结
       
        本文以Arduino为工作处理器核心,设计了超声测距模块,准确度达到测距模块精度。由于Arduino是一个开源的系统,可以通过互联网下载免费获得库文件,从而大大简化了程序开发工作。Arduino是适合电子爱好者进行开发产品的一个平台。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-26 12:34 , 耗时 0.085124 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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