"Arduino实验13超声波测距"
本实验主要涉及超声波传感器的基本性能、超声波测距原理、编程实现超声波测距的 LCD 数字显示。通过本实验,学生能够熟悉超声波传感器的基本性能、掌握超声波测距原理,并编程实现超声波测距仪。
一、实验目标:
1. 熟悉超声波传感器基本性能;
2. 掌握超声波测距原理;
3. 掌握超声波测距的编程方法;
4. 编程实现一个数字显示超声波测距仪。
二、实验设备与环境:
* Arduino UNO 套件
* Arduino IDE
* 计算机
* 超声波传感器
* 1602 LCD 显示屏等
三、实验重点:
1. 超声波测距编程;
2. 编程实现超声波测距的 LCD 数字显示。
四、实验难点:
1. 超声波测距原理代码。
五、实验内容:
5.1 实验任务:
任务描述:超声波传感器的使用与参数测定;脉宽测量函数 pulseIn() 的使用;编程实现超声波测距与 LCD 显示。
5.2 实验原理:
1. 超声波传感器:
超声探头性能指标包括:工作频率、工作温度、灵敏度、指向性等。超声波具有频率较高,沿直线传播、方向性好、绕射小、穿透力强、传播速度慢等特点。
2. 超声波测距原理:
由超声波发射探头发出超声波脉冲,经媒质(空气)传到物体表面,反射后通过媒质(空气)传到接收探头,测定出超声脉冲从发射到接收所需的时间,根据传输媒质中的声速,计算从探头到物体表面之间的距离。
距离的计算:设探头到物体表面的距离为 L,超声波在空气中的传播速率为 v,从发射到接收所需的传播时间为 t,则距离 L = v×t/2。
超声波测距信号电平:
(1) 传感器 Trig 引脚触发信号电平脉冲:
DitigalWrite(TrigPin,LOW);
delayMicroseconds(2);
DitigalWrite(TrigPin,HIGH);
delayMicroseconds(10);
DitigalWrite(TrigPin,LOW);
(2) 传感器被触发后,发射探头发出 8 个 40KHz 检测超声波脉冲,接收探头自动检测回波信号:
pulseIn() 函数检测电平持续时间:
语法:pulse(EchonPin,HIGH|LOW)
参数说明:EchonPin,检测电平引脚;HIGH|LOW,读取引脚的高电平或低电平脉冲
continueTime = pulseIn(EchoPin,HIGH)//检测高电平持续时间(单位 us)并赋值给变量
3. 1602 LCD 显示屏:
显示屏电路、显示屏库函数(略)
4. 超声波测距电路:
5.3 实验内容:
1. 超声波传感器参数测试:
步骤 1:如图所示,连接电路
步骤 2:编写超声波测距、串口显示程序
程序功能:间隔 500ms 测定一次距离;串口监视器以 cm 为单位实时显示测定的距离值
步骤 3:程序调试(略)
2. LCD 数字显示超声波测距:
步骤 1:如图所示,连接电路
步骤 2:数字显示超声波测距程序代码实现
程序功能:超声波测距;1602 LCD 实时显示测定的距离值
步骤 3:程序调试
源代码:
#include <LiquidCrystal.h>
#define LM35 A0
#define Trig 8
#define Echo 9
float cm;
float temp;
LiquidCrystal lcd(12,11,5,4,3,2);
int val = 0;
void setup(){
lcd.begin(16, 2);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
void loop(){
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
int duration = pulseIn(Echo, HIGH);
cm = duration * 0.034 / 2;
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(cm);
lcd.print(" cm");
delay(500);
}
本实验通过对超声波传感器和 Arduino 板的使用,实现了数字显示超声波测距仪的编程和实现,熟悉了超声波测距原理和编程方法。
评论0
最新资源