亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

Arduino超声波测距精准指南:HC-SR04与LCD1602实现

Arduino超声波测距项目实战

超声波测距广泛应用于定位、测距、液位、轮廓扫描、机器人避障等领域。结合数学运算还可测速等物理量。

超声波传感器利用回声原理非接触测量小距离。本项目演示HC-SR04对接Arduino,在16×2 LCD显示距离。

测距项目电路图

Arduino超声波测距精准指南:HC-SR04与LCD1602实现

接线简易:HC-SR04的Trig/Echo接Arduino A4/A5,VCC/GND接5V/GND。LCD RS/EN接D12/D11,D4-D7接D5-D2,10K电位器调对比度。

所需元件

HC-SR04超声波模块

非接触测距模块,量程2cm–400cm,精度3mm。内含超声发射/接收器。工作原理:IO触发发10μs高电平,模块发8个40kHz周期超声波并检测回波。若收到回波,Echo脚保持高电平,高电平持续时间=发射到接收往返时间。

距离 = (高电平时间 × 声速340m/s) ÷ 2

时序图

触发脉冲10μs后,模块发8周期40kHz超声波检测反射。有障碍物则回波返回接收器。距离按上述公式计算,除以2因往返时间对半为单程时间。时序图如下:Arduino超声波测距精准指南:HC-SR04与LCD1602实现

技术参数
引脚定义

单片机给Trig发10μs高脉冲触发,等待Echo高电平,读取时间经公式算距离。

Arduino UNO

开源单片机广泛用于嵌入式项目。本项目用UNO:廉价易用。14数字I/O、6模拟输入。开源特性允许随意修改软硬件。

16×2 LCD模块

嵌入式常用,廉价易对接。计算器/万用表常见。显示16字符×2行,每字符5×8像素矩阵,总像素1280。需指定字符位置较麻烦,HD44780控制器接管数据/指令处理,极简接口。技术规格:

16×2 LCD引脚定义表

引脚号 名称 功能描述
1VSS地,接电路地
2VDD供电(4.7-5.3V),典型5V
3VE对比度调节,接电位器中间脚调节显示对比度
4RS寄存器选择,切换命令/数据寄存器,接单片机
5RW读/写控制,通常接地(写模式)
6EN使能脚,接单片机,给1/0确认数据
7D0-D78位数据总线,也可4位模式(仅接D4-D7)
8A背光阳极,可选,接则亮屏,不接更省电
9K背光阴极

Arduino对接LCD基础接法:RS/EN接D12/D11,D4-D7接D5-D2,RW/VSS/K接地,VDD/A接5V,VE接电位器调对比度。

代码部分:引入LiquidCrystal库,定义引脚变量传入LiquidCrystal构造函数,setup中lcd.begin(16,2)初始化,打印"Hello, World!",loop中setCursor(0,1)显示毫秒计时器。

#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
  lcd.begin(16, 2);
  lcd.print("Hello, World!");
}
void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis() / 1000);
}

上传后旋钮调对比度即可看到显示。

超声波测距Arduino编程

引入LCD库,定义Trig/Echo宏映射A4(18)/A5(19):

#include <LiquidCrystal.h>
#define trig 18
#define echo 19

定义LCD引脚变量并初始化,定义距离d与时间t变量:

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
float t=0, d=0;

setup初始化LCD、Trig设输出、Echo设输入:

void setup() {
  lcd.begin(16,2);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

loop:清屏,Trig发10μs高脉冲触发,pulseIn读Echo高电平时间,按公式算距离(单位换算为cm),LCD显示,延时1秒刷新:

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  t = pulseIn(echo, HIGH);
  d = t * 0.0340 / 2;
  d = t * 0.01330 / 2;
  lcd.setCursor(0, 0);
  lcd.print("Distance: ");
  lcd.print(d);
  lcd.print(" cm");
  delay(1000);
}

测距电路工作验证

上传代码,手/物体在传感器前移动,观察LCD读数变化,精度良好。

触发后模块发8周期40kHz超声波,遇障碍反射回接收器,模块给出往返时间,经公式得距离。Arduino超声波测距精准指南:HC-SR04与LCD1602实现

工业技术

  1. 树莓派与 Python 构建远程温度传感器:分步实战指南
  2. 用 Arduino 制作超声波悬浮装置:分步指南
  3. Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
  4. 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
  5. 基于Arduino UNO的精准频率与占空比测量
  6. 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
  7. 紧凑型Arduino雷达系统:HC-SR04超声波传感器配1.8英寸显示屏
  8. Arduino 电容式触控开关:一枚硬币点亮 LED 的极简 DIY
  9. 使用 Arduino UNO 和 SR04 超声波传感器构建超声波测距仪
  10. 测距传感器工作原理与关键应用
  11. Arduino传感器:类型、应用与实战项目
  12. PIR传感器电路工作原理、设计与实际应用全解析