最新消息:

Arduino提高篇07—超声波测距

Arduino 少儿编程 2130浏览 0评论
Arduino提高篇
Arduino提高篇07—超声波测距
超声波测距

超声波是振动频率高于20KHz的机械波,它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点,在工业、国防、生物医学等方面有广泛应用,本篇介绍利用超声波进行测距。

1. 测距原理

超声波传感器的发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。根据计时器记录的时间t,声波在空气中的传播速度为340m/s,就可以计算出发射点距障碍物的距离s,即:s=340m/s × t / 2 。这就是所谓的时间差测距法。

2. 超声波传感器介绍

超声波传感器是将超声波信号转换成其他能量信号「通常是电信号」的传感器。HC-SR04是比较常用的超声波传感器模块,广泛应用于机器人测距、小车避障等场合。

Arduino提高篇07—超声波测距
超声波模块

主要参数

  • 电压:DC5V
  • 电流:15mA
  • 频率:40KHz
  • 感应角度:<15度
  • 探测距离:2cm—400cm
  • 精度:3mm

使用说明

  • 采用Trig引脚触发测距,给至少10us的高电平信号。
  • 模块自动发送8个40KHz的方波,自动检测是否有信号返回。
  • 有信号返回后,通过Echo引脚输出高电平,通过高电平持续时间获取到时间量。

3. 实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 面包板及配套连接线
  • HC-SR04超声波传感器模块

4. 实验步骤

1. 根据原理图搭建电路图。

超声波传感器模块的VCC、GND分别连接到开发板的5V、GND。传感器的Trig引脚、Echo引脚分别连接到开发板的数字引脚2、3。

实验原理图如下图所示:

Arduino提高篇07—超声波测距
实验原理图

实物连接图如下图所示:

Arduino提高篇07—超声波测距
实物连接图

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

 1#define TrigPin 2

 2#define EchoPin 3

 3

 4float Value_cm;
 5

 6void setup() {
 7  Serial.begin(9600);
 8  pinMode(TrigPin, OUTPUT);
 9  pinMode(EchoPin, INPUT);
10}
11

12void loop() {
13  digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin

14  delayMicroseconds(2);
15  digitalWrite(TrigPin, HIGH);
16  delayMicroseconds(10);
17  digitalWrite(TrigPin, LOW);
18  Value_cm = float( pulseIn(EchoPin, HIGH) * 17 ) / 100019  //读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。

20  //接收到的高电平的时间(us)*340m/s/2=接收到高电平的时间(us)*17000cm/1000000us = 接收到高电平的时间*17/1000(cm) 

21  Serial.print(Value_cm);
22  Serial.println("cm");
23  delay(1000);
24}

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

Arduino提高篇07—超声波测距
程序下载

5. 实验现象

打开串口监视器,波特率设置成与程序中相一致的9600。改变超声波传感器与遮挡物的距离,监视器中将显示对应的距离。

Arduino提高篇07—超声波测距
实验现象

转自公众号:
TonyCode

您必须 登录 才能发表评论!