基于Arduino的超声测距系统的设计
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是适合电子爱好者进行开发产品的一个平台。
- 牛人DIY:关注空气质量 自制Arduino检测器(01-29)
- 七个经典的Arduino创意制作实例,有图有真相(软硬件资料齐全)(06-03)
- ARM11后现代时:Cortex开枝散叶(06-04)
- 十个中文例程教会你轻松上手制作Arduino智能小车(06-04)
- [开发案例] 为Arduino模拟量传感器添加物联App功能(03-23)
- 研究arduino支持Atmega8作为主控制芯片(11-30)