怎么自制一个超声波测距仪(还在用卷尺测量距离吗)
怎么自制一个超声波测距仪(还在用卷尺测量距离吗)需要准备以下相关材料:超声波测距原理简单介绍下超声波测距的原理:超声波顾名思义,它是一种超过人耳听力范围的一种声波,所以我们人耳是无法听到的,是一种频率高于20000赫兹的声波,它的特性是方向性好,穿透能力强,如今已经超声波已经广泛应用于测距、测速等方面。超声波也是属于声音,所以它在空气中传播的速度为340m/s,可以利用时间差测距法进行距离测算,所以超声波传感器可以根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s× t / 2 。
大家好,我是机器侠!旨在用最简单的语言,让大家学习更多的知识!前两天要去测量一套毛胚房的相关数据,发现卷尺使用起来很是不方便。
便找了一块arduino和超声波传感器设计了超声波测距仪,用于测量距离,考虑到将arduino连接电脑显示数据显然很不可就靠。
为了不用电脑就可显示测量出来的数据,所以此次设计的测距仪通过LCD1602显示器对测量数据进行实时显示,以便使用者直接从显示屏上观察数据。
超声波传感器
简单介绍下超声波测距的原理:
超声波顾名思义,它是一种超过人耳听力范围的一种声波,所以我们人耳是无法听到的,是一种频率高于20000赫兹的声波,它的特性是方向性好,穿透能力强,如今已经超声波已经广泛应用于测距、测速等方面。
超声波也是属于声音,所以它在空气中传播的速度为340m/s,可以利用时间差测距法进行距离测算,所以超声波传感器可以根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s× t / 2 。
超声波测距原理
需要准备以下相关材料:
- arduino一块(此次实验我用的arduino uno,也可以使用其它型号的arduino,当然体 积越小越好,推荐用arduino por mini,价格便宜体积小,自带的端口也基本够用)
- USB 2.0数据线(用于arduino与电脑连接,进行程序下载和调试)
- 超声波传感器一个(此次实验我用的型号是HC-SR04)
- 显示屏一块(此次实验我用的型号是lcd1602)
- 杜邦线若干
- 9V的电池一块(包含与arduino连接的DC端口)
arduino uno
如下图所示,首先将arduino uno与超声波传感器相连接。
连接方法:传感器电源正极VCC——5v正极
传感器触发控制端Trig——D7数字口
传感器接收端Echo——D6数字口
传感器电源地GND——5v负极
arduino与超声波传感器连接图
对于电子爱好者来说,基本上对液晶显示模块都不陌生。常见的液晶显示屏幕有LCD1602和LCD12864等,它们都是由若干个字符点阵位组成的,一个点阵位可以显示一个字母、数字或文字。
接下来就是将LCD1602连接到arduino uno上,LCD1602上有16个引脚,其中在于arduino uno链接时,是不需要全部接入的,如下图为LCD1602的引脚说明图。
lcd1602引脚说明
连接方法:LCD1602 RS端口——D12数字口
LCD1602 E端口——D11数字口
LCD1602 D4端口——D5数字口
LCD1602 D5端口——D4数字口
LCD1602 D6端口——D3数字口
LCD1602 D7端口——D2数字口
LCD1602 BLA(背光电源正极)端口和VDD电源正极——5V正极
LCD1602 BLA(背光电源正极)端口和GND电源负极——5V负极
其它引脚滞空
连接图
最后就是程序的设计,打开arduino IDE,将代码下载到arduino中,就可以实现相应的测距功能了。其中本程序加载了<LiquidCrystal.h>库函数,附上全部代码:
#include <LiquidCrystal.h> //库函数
LiquidCrystal lcd(12 11 5 4 3 2);
const int TrigPin = 7;
const int EchoPin = 6;
float cm;
void setup() {
lcd. begin(16 2);
pinMode(TrigPin OUTPUT);
pinMode(EchoPin INPUT) ;
}
void loop()
{
digitalWrite(TrigPin LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin HIGH);
delayMicroseconds(10);
digitalWrite (TrigPin LOW);
int timer=-500;
cm=pulseIn(EchoPin HIGH)/58.0; //将回波时间换算成cm
cm=(int (cm*100.0))/100.0; //保留两位小数
delay(500);
if(millis()>timer 500)
{
lcd. print ("Dist:");
lcd. setCursor(6 1);
lcd. print (cm);
lcd. print ("cm ");
lcd. home();
timer=millis() 500;
}
}
附上实物图:
测距实物图
到此为止,一个超声波测试仪就大功告成啦,其中部分内容只是简单说明,有些新手朋友看着肯定有点吃力,不过没关系。后面会对相应的一些模块进行分开详细解释和说明。