跳到主要内容

基于8051的超声波测距仪

在本项目中,我们基于 8051 微控制器超声波传感器 构建了一个超声波测距仪。我们有多种方法可以测量距离,其中一种方法是使用 超声波传感器或模块 进行距离测量。本文将向你解释如何使用 8051 微控制器 测量距离。该超声波测距系统可以测量 最长4米 的距离,精度可达 3毫米

1. 超声波测距仪原理

一般来说,距离可以通过 脉冲回波法相位测量法 进行测量。这里采用的是 脉冲回波法。超声波模块向物体发射信号,然后接收从物体反射回来的回波信号,并产生一个输出信号,该输出信号的时间周期与物体的距离成正比。

超声波传感器的工作机制与 RADAR(无线电探测与测距) 类似。

alt text

该电路根据 正常温度下声波的传播速度 计算物体的距离,并将距离显示在 LCD 液晶显示屏 上。

2. 电路原理图

基于8051的超声波测距仪电路图

alt text

3. 超声波测距仪所需元件

  • AT89C51 微控制器
  • 8051 编程板
  • 编程线缆
  • HC-SR04 超声波模块
  • 16x2 LCD 液晶显示屏
  • 10KΩ 电位器
  • 10µF / 16V 电解电容
  • 2 x 10KΩ 电阻(1/4瓦)
  • 0592 MHz 晶体振荡器
  • 2 x 33pF 电容
  • 按钮开关
  • 连接导线
  • 电源模块
  • Keil µVision 软件
  • Proteus 软件
  • Willar 软件
alt text
alt text
alt text
alt text

4. 电路设计

本项目的主要元件是 AT89C51 微控制器超声波传感器LCD 显示屏

  • 超声波传感器的 TRIGGER 引脚和 ECHO 引脚分别连接到 P3.1P3.2 引脚。

  • LCD 的数据引脚连接到微控制器的 PORT1,控制引脚 RSRWEN 分别连接到 P3.6GNDP3.7

  • LCD 用于显示物体的距离。

  • 使用 10KΩ 电位器 调节 LCD 的对比度。

  • 微控制器、LCD 和超声波传感器的电源引脚均连接到 5V 直流电源

5. 超声波模块(超声波传感器)

HC-SR04 超声波模块

HC-SR04 超声波模块基于 声纳原理(SONAR) 工作,专为在小型嵌入式项目中测量物体距离而设计。它具有 高精度高稳定性 的特点,并且测量不受 阳光黑色物体 的影响。

主要特性

  • 分辨率:3mm
  • 测距范围:2cm ~ 400cm(4米)
  • 测角:30°
  • 触发输入脉宽:10µs
  • 工作电流:15mA
  • 工作频率:40KHz

引脚定义

  • Vcc:连接到 +5V DC

  • Trigg:触发信号输入引脚,需要 10µs 的高电平信号,接收有效触发信号后,模块会发出 8个40KHz脉冲

  • Echo:输出引脚,输出信号的周期与测量距离成正比

  • GND:接地引脚

6. 基于8051的超声波测距仪工作原理

当在 TRIG 引脚上施加 10µs 的高电平脉冲 时,超声波模块会发射 8个连续的40KHz脉冲

  • 发射完第8个脉冲后,传感器的 ECHO 引脚会变为高电平
  • 当模块接收到从物体反射回来的回波信号时,ECHO 引脚会变为低电平
  • 通过计算信号发射与返回的总时间即可得到物体的距离

计算公式

物体距离(厘米):

Dcm=T58D_{\text{cm}} = \frac{T}{58}

物体距离(英寸):

Dinch=T148D_{\text{inch}} = \frac{T}{148}

其中,T 为信号往返时间(微秒)。

距离也可以通过声波传播速度 340m/s 计算.

alt text

7. 程序算法

  1. TRIG 引脚上发送一个 10 微秒的高电平脉冲。

    // 初始状态
    P3.1 = 0;

    // 设置 TRIG 引脚为高电平
    P3.1 = 1;

    // 延迟 10 微秒
    delay_ms(10);

    // 设置 TRIG 引脚为低电平
    P3.1 = 0;
  2. 等待超声波模块完成 40KHz 脉冲的发射。当第 8 个脉冲发射完成后,ECHO 引脚变为高电平,此时 TIMER0 开始计数。当 INT0 输入变为低电平时,定时器停止计数。

    // 等待 ECHO 引脚变高
    while (INT0 == 0);

    // 等待 ECHO 引脚变低
    while (INT0 == 1);
  3. TIMER0 的值等于超声波信号发出并返回所需的总时间,因此只需取 一半时间

    Time required=TIMER0 VALUE2\text{Time required} = \dfrac{\text{TIMER0 VALUE}}{2}

  4. 超声波的传播速度等于声速,大约为:

    v=340.29 m/s=34029 cm/sv = 340.29\ \text{m/s} = 34029\ \text{cm/s}

  5. 根据速度和时间计算距离:

    Distance=v×t=34029×TIMER02\text{Distance} = v \times t = \dfrac{34029 \times \text{TIMER0}}{2}

  6. 当系统时钟频率为 11.0592 MHz 时,TIMER01 微秒递增一次。因此可以得到:

    Range=17015×TIMER0×106\text{Range} = 17015 \times \text{TIMER0} \times 10^{-6}

  7. 或者,也可以直接通过经验公式计算目标距离:

    Target Range=TIMER058 cm\text{Target Range} = \dfrac{\text{TIMER0}}{58}\ \text{cm}

8. 操作步骤

  1. 首先将程序烧录到微控制器中

  2. 按照电路图正确连接各元件

  3. 确保超声波模块的 Vcc 接到 5V DC

  4. 打开电源开关

  5. 将障碍物放在超声波模块前方,在 LCD 上即可观察到距离显示

  6. 关闭电源

9. 应用场景

  • 用于测量障碍物距离

  • 应用于汽车 倒车雷达障碍物警示系统

  • 用于地形监测机器人

10. 电路局限性

  • 无法测量较远的距离