0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机超声波雷达

分享:

好的!我们来详细解释一下如何用 单片机 + 超声波模块 实现一个基础的 超声波测距系统,通常被称为“超声波雷达”。这类系统广泛应用于倒车雷达、避障机器人、液位测量等场景。

核心原理:

  1. 发射超声波: 单片机通过IO口触发超声波模块(如常见的HC-SR04)发射一束超声波脉冲(通常频率为40kHz)。
  2. 接收回波: 超声波遇到障碍物后会发生反射,部分声波返回被超声波模块的接收器捕捉。
  3. 测量时间差: 单片机精确测量从 发射时刻接收到回波时刻 之间的时间间隔 T (通常单位为微秒 μs)。
  4. 计算距离: 利用声波在空气中的传播速度 V (约340m/s = 0.034cm/μs),通过公式 距离 = (V * T) / 2 计算到障碍物的距离。除以2是因为声波走了个来回(发射到障碍物,再反射回来)。

系统构成:

  1. 主控制器: 单片机(如:STC89C52, STM32F103, Arduino UNO, ESP32等)。负责控制逻辑、时序、计算、数据显示/通信。
  2. 超声波测距模块:
    • 常见型号:HC-SR04(性价比高、易用)、US-100(支持串口/UART输出)、URM37(功能强大,支持多种接口)。
    • 关键引脚(以HC-SR04为例):
      • VCC: +5V电源
      • GND: 地线
      • Trig: 触发信号输入(连接单片机IO)。单片机发一个10μs以上的高脉冲来启动一次测距。
      • Echo: 回波信号输出(连接单片机IO)。当模块收到回波时,此引脚会输出一个高电平脉冲,脉冲宽度与距离成正比(时间差 T)。
  3. 显示/输出设备:
    • 简单显示: LED数码管、LCD1602液晶屏、OLED显示屏(用于实时显示距离)。
    • 蜂鸣器/LED: 用于报警提示(如距离过近时鸣叫)。
    • 上位机通信: 通过串口(UART)将距离数据发送给电脑或其他设备处理。
    • 控制输出: 连接继电器、舵机、电机驱动器等,实现自动控制(如自动刹车、转向避障)。
  4. 其他:
    • 电源模块: 为系统提供稳定电压(如5V, 3.3V)。
    • 旋转机构(可选): 如果需要做多角度扫描(更像雷达效果),需要舵机或步进电机带动超声波模块旋转。

单片机实现关键步骤:

  1. 初始化:

    • 配置单片机的时钟系统。
    • 配置 Trig 引脚为输出模式。
    • 配置 Echo 引脚为输入模式(或设置为带输入捕获功能的外部中断引脚)。
    • 初始化显示屏、串口等外设。
    • 初始化定时器(用于高精度测量时间差 T)。
  2. 启动测距:

    • 设置 Trig 为低电平,维持一小段时间(如2μs)进行复位。
    • 设置 Trig 为高电平,维持至少10μs (例如给一个10-15μs的高脉冲)。
    • 设置 Trig 恢复为低电平。 (此时模块会自动发射8个40kHz脉冲并开始检测回波)
  3. 检测回波并计时:

    • 方法1:查询法
      • 等待 Echo 引脚变高(表示测距开始)。
      • Echo 变高时,启动定时器清零并开始计数
      • 持续查询 Echo 引脚,等待其变低。
      • Echo 变低时,停止定时器,记录定时器计数值 Count
    • 方法2:输入捕获/外部中断法(更精确、不占用CPU)
      • 配置 Echo 引脚连接的外部中断或定时器的输入捕获功能。
      • Echo 引脚从低变高(上升沿) 时,触发中断或捕获事件。在中断或捕获回调函数中,记录当前定时器值 T1
      • Echo 引脚从高变低(下降沿) 时,再次触发中断或捕获事件。在中断或捕获回调函数中,记录当前定时器值 T2
      • 计算时间差:T = T2 - T1。如果定时器溢出,需考虑溢出次数。
  4. 计算距离:

    • 将定时器计数值 Count 或时间差 T (单位通常是微秒 μs) 转换成时间(秒)。这取决于定时器的预分频值和计数模式。
    • 使用公式:距离 (cm) = (时间差 (μs) * 声速 (cm/μs)) / 2 = (T * 0.034) / 2 = T * 0.017
    • 或者 距离 (cm) = T / 58 (因为 (1000000/340)/2 ≈ 58.8,取整或简化计算常用58或58.8)。
    • 注意: 声速受温度影响(温度越高,声速越快)。如需更高精度,需增加温度传感器进行补偿。常用补偿公式:V = 331.5 + 0.6 * T℃ (m/s)
  5. 显示/输出/控制:

    • 将计算得到的距离数值显示在LCD/OLED/数码管上。
    • 通过串口发送数据给电脑(如用串口助手查看)。
    • 判断距离是否小于安全阈值。如果小于,则点亮报警灯、启动蜂鸣器鸣叫或控制执行机构动作。
  6. 延时与循环:

    • 测一次完成后,延迟一段时间(如60ms以上),让超声波能量消散,避免误测,并让模块准备下一次测量。
    • 循环执行步骤2-6。

核心C代码示例片段(针对HC-SR04, STC单片机):

#include <stc89c5xrc.h> // 根据实际单片机选择头文件
#include <intrins.h>   // 用于 _nop_() 延时

#define TRIG P2_0     // 定义Trig引脚连接到P2.0
#define ECHO P2_1     // 定义Echo引脚连接到P2.1

void Timer0_Init(void);  // 初始化定时器0函数声明
void StartMeasure(void); // 启动测量函数声明
float GetDistance(void); // 获取距离函数声明

void main() {
    Timer0_Init();      // 初始化定时器
    while(1) {
        StartMeasure(); // 触发一次测量
        float dist = GetDistance(); // 获取距离值
        // ... 将dist显示在LCD上或通过串口发送出去 ...
        if (dist < 20) { // 如果距离小于20cm
            // ... 触发报警(蜂鸣器响、灯亮)...
        }
        // ... 延时60ms+ ...
    }
}

void StartMeasure() {
    TRIG = 0;         // 先拉低确保状态
    _nop_(); _nop_(); // 短暂延时约2us
    TRIG = 1;         // 拉高Trig
    _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); // 延时约10us (调整_nop_数量或使用定时器精延时)
    _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
    TRIG = 0;         // 拉低Trig,启动模块开始发送超声波
}

float GetDistance() {
    unsigned int echoTime = 0;
    while (!ECHO);         // 等待Echo变高 (测距开始)
    TR0 = 1;               // 启动定时器0开始计时
    while (ECHO);          // 等待Echo变低 (回波结束)
    TR0 = 0;               // 停止定时器0
    echoTime = TH0 * 256 + TL0; // 获取定时器计数值 (假设定时器工作在方式1,16位)
    TH0 = 0;               // 重置定时器高字节
    TL0 = 0;               // 重置定时器低字节
    return (echoTime * 0.017); // 计算并返回距离 (cm)
}

void Timer0_Init() {
    TMOD &= 0xF0;    // 设置定时器0为工作方式1 (16位定时器)
    TMOD |= 0x01;
    TH0 = 0;         // 初始值清零
    TL0 = 0;
    // 不需要开中断,这里使用查询法。ET0=0;
}

提升方向(更像“雷达”效果):

  1. 角度扫描: 将超声波模块安装在舵机或步进电机上,让单片机控制舵机以一定角度(例如0-180度)旋转扫描。在每个旋转角度上执行一次测距。这样就能获得不同角度上的距离信息。
  2. 二维/三维地图构建: 收集不同角度上的距离信息后,可以在单片机内存或上位机软件中构建环境轮廓图(极坐标或笛卡尔坐标)。
  3. 数据处理:
    • 滤波: 对连续测量的数据进行平均滤波、中值滤波等,消除偶尔的干扰读数。
    • 障碍物识别: 基于距离和角度的组合,区分不同位置的障碍物。
    • 目标跟踪: 记录相邻扫描中同一物体位置的变化。
  4. 多传感器融合: 结合红外、激光测距、摄像头等其他传感器,提高系统的鲁棒性和准确性。
  5. 显示增强: 在显示屏上模拟雷达扫描线,显示扇形区域和障碍点(LED点阵或图形LCD/OLED)。

重要注意事项:

  1. 最小测距距离: 模块有一个最小有效距离(HC-SR04约2cm),小于此距离测量无效。
  2. 最大测距距离: 模块有最大测距范围(HC-SR04理论4m,实际受环境影响)。确保障碍物在范围内。
  3. 测量精度:
    • 温度补偿: 如需要精确距离(如液位测量),必须加入温度传感器进行声速补偿。
    • 时钟精度: 单片机定时器的时钟精度直接影响时间差测量精度。
    • 回波质量: 表面光滑、角度合适的物体反射效果好。柔软、粗糙、吸声、极端角度的物体反射效果差甚至无效。
  4. 测量周期: 两次测量之间需要足够间隔让声波消散,否则前一次回波会干扰后一次测量。通常建议至少间隔60ms(HC-SR04)。
  5. 电磁干扰: 超声波模块容易受到电机等电气设备的干扰。注意电源滤波、远离干扰源。
  6. 盲区: 模块本身有物理结构造成的测量盲区(最小距离之外),声波发射接收也需要时间。在很近的距离内可能会测量不到或不准。

总结:

用单片机和超声波模块实现基本的“超声波雷达”(测距系统)是电子入门到中级的经典项目。核心在于掌握触发时序和精确测量高电平时间。通过添加角度扫描、数据处理和多传感器融合,可以大大增强其功能,使其更接近概念上的“雷达”扫描感知能力。仔细阅读所用超声波模块的数据手册并根据项目需求进行设计和优化是成功的关键。

基于单片机超声波测距系统实现

文章目录1 简介2 主要器件3 实现效果4 设计原理4.1 声波雷达原理5 部分实现代码6 最后1 简介Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目基于单片机超声波测距系统

fhbding 2021-11-10 08:53:35

怎么实现基于超声波检测的倒车雷达设计?

本文所设计的倒车雷达系统是保障汽车倒车安全的辅助系统,通过超声波探头发出超声波,使用高速单片机计算距离,并加入了温度补偿电路,提高了距离计算的精度。系统安装的液晶显示器可以直观的显示温度和距离,给

cKin_g 2021-05-14 06:04:41

基于51单片机超声波测距模块设计

超声波测距的模块,51单片机接上12864液晶,HC-SR04超声波模块,就可以了,具体程序没怎么看,超声波模块的硬件也不晓得。

2019-12-10 16:33:52

8051单片机超声波传感器制作的超声波测距仪

 在本文中,单片机开发工程师们使用了8051单片机超声波传感器制作了一个超声波测距仪。我们知道,有很多种方法可以用来测量距离。该方案制作的超声波测距仪系统可测量3米的距离,最远可达4米。

2020-06-29 10:45:33

如何利用51单片机实现一种超声波测距功能呢

利用51单片机实现超声波测距功能,利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。

2022-08-17 18:04:53

STM32单片机的高精度超声波测距系统设计

STM32单片机的高精度超声波测距系统的设计主要由STM32单片机超声波发射电路、接受电路、补偿电路和软件等构成。该系统将STM32单片机作为整个系统的核心,通过协调各部分电路工作,进而实现高精度的超声波测距口。

2019-10-17 15:10:04

超声波电动牙刷单片机方案

随着人们对口腔健康需求的升级,口腔护理产品超声波电动牙刷的需求也日益高涨。超声波电动牙刷可以去除牙菌斑,减少牙周炎和牙龈出血等问题。为应市场需求,宇凡微推出了超声波电动牙刷单片机方案。

2023-06-07 13:49:13

如何去设计一种STM32单片机的高精度超声波测量系统

相比于传统的单片机,STM32单片机具有更高的时间测量分辨率,其主频与定时器频率高达72MHz,且该单片机在开启定时器的同时,会启动PWM通道驱动超声波发射器和通道捕捉回波信号,提高了测量的精度

wang21cj 2021-12-06 06:06:19

基于51单片机超声波测距设计与实现

51单片机超声波测距设计与实现

Yimning 2020-04-24 19:34:01

超声波(Ultrasound,又称超声波雷达)定位

超声波(Ultrasound,又称超声波雷达)定位,即使用发射探头发出频率大于20KHz的声波和计算飞行时间来探测距离。常用的超声波频率有40KHz、

2022-03-11 19:29:37

基于单片机超声波测距系统的研究与设计

基于单片机超声波测距系统的研究与设计

duke刘 2023-09-26 07:54:27

基于单片机超声波测厚仪设计

设计一个基于超声波测厚的装置,包含硬件设计:单片机选择,数据采集与输出显示、键盘接口设计、开机关机控制、厚度标定、声速选择与调整等,及相应的软件设计。要用接触式测量方法有偿有的加我***

a65404 2022-05-12 21:00:11

基于atmegal16单片机超声波测距短信上传设计

,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。1、基于atmegal16单片机超声波测距短信上传设计-超声波-GSM-(原理图+程序源码)2017-507

迷你洼哇 2021-07-13 08:16:19

怎样去设计一种基于51单片机超声波避障小车

超声波避障程序随处可见,基于51单片机超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。这次主要给大家分享其Proteus仿真部分。涉及到的模块有:超声波

kdsnvjsnjk 2021-07-20 07:17:39

HC-SR04和51单片机是如何实现超声波测距的

超声波测距原理是什么?怎样去编写超声波测距模块的源代码?HC-SR04和51单片机是如何实现超声波测距的?

lumia.net 2021-10-20 06:09:27

双频超声波清洗

2024-01-12 23:23:02

超声波的相关资料分享

篇博文(OLED显示)写的,主要是写超声波测距的(US-015)一、超声波介绍利用TI公司的MSP430F5529单片机+超声波模块+OLED 实现这里主要是利用单片机定时器的捕获功能来捕获超声波高电平持续时间,再计算得到距离,最后再在OLED 屏幕上显示出来,上图

飞翔的贝壳 2022-01-25 07:30:30

基于NEC单片机田间超声波测距的应用有哪些

了电控液压转向系统和作业机具升降控制系统,实现了拖拉自动转向操纵控制和作业机具自动升降控制,但整套设备价格昂贵,推广尚需时日。本文提出了基于NEC单片机的田间超声波测距方法,设计了一种地面仿形装置,利用

滔滔不绝的滔滔 2020-08-26 06:23:34

如何去编写51单片机超声波测距(数码管显示)程序?

51单片机超声波测距(数码管显示)程序/*超声波模块的TRIG管脚接在单片机的P20口,ECHO管脚接在单片机的P21口 其他的电源管脚接在单片机 开发板上电源口即可。*/#include"

mxjuwer 2021-07-06 08:12:41

基于单片机超声波测距系统有什么优点?

廉。但是以往的超声波传感器由于高精度的要求,结构复杂,且不能够根据不同的环境自动调节,成本高,适应性差。本文介绍一种以AT89C2051 单片机为核心的低成本、高精度的数字显示超声波测距仪的研制。由于这种

60user56 2019-10-25 06:58:51

elmos E524.09超声波雷达配置问题

最近在做超声波雷达驱动这部分工作,发现用MEAS_STEUP命令配置雷达不成功。不知道大家在实际操作中有没有遇到过这种问题,或许是我哪里的操作有问题。控制器发出的波形我都用示波器看过了,数据内容和偶

qihixin 2020-05-22 13:32:45

单片机舵机与超声波相关资料分享

作为一个51单片机初学者,我用的是普中科技V2.0的板子我和队友分别学习超声波舵机和红外模块开学组装小车但是现在我的代码应该能够执行 但是不可行数码管可以显示超声波测出的距离但之后的for控制的舵机

南中南 2021-11-23 08:03:26

基于atmegal16单片机超声波测距短信上传设计

,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。1、基于atmegal16单片机超声波测距短信上传设计-超声波-GSM-(原理图+程序源码)2017-...

h1654155701.3944 2021-12-08 06:37:46

单片机如何使用超声波传感器进行距离测量

超声波传感器是一种利用超声波信号进行非接触式测量的传感器,广泛应用于工业、生物医学、自动化控制等领域。在单片机系统中,超声波传感器常被用来实现距离测量,具有测量精度高、不受光线和颜色影响、适应恶劣

2024-08-05 14:56:27

毫米波雷达VS激光雷达VS超声波雷达

近年来,随着雷达技术的发展和普及,科技大片中的无人驾驶离我们越来越近。全球很多中高档汽车已经开始配备汽车雷达。目前用于汽车上的雷达分为超声波雷达、毫米波雷达、激光雷达等,不同的雷达工作原理不同,性能

wo97306730 2019-09-19 09:05:02

超声波测距原理

蓝桥杯单片机必备知识-----(9)超声波测距超声波测距原理:超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即

暖暖暖 2021-07-19 09:08:54

怎样去设计一种基于51单片机超声波测距小车

超声波测距小车资料链接:51单片机超声波测距.rar项目展示:仿真展示 :一、项目要求(一)项目内密本课题的主要内容是,将超声波传感器安装在一台沿直线行走的小车上,由AT89C51 |控制超声波

山中老虎 2021-07-20 06:20:18

如何利用单片机实现汽车避障超声波测距汽车避障系统设计

测量距离的方法有很多种,短距离的可以用米尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,系统的测量精度理论上

qjqb 2022-01-10 08:28:59

基于STC89C52RC单片机超声波测距程序设计

网络上集的STC89C52RC单片机超声波测距程序及电子制作实物,使用单片机最小系统进行试验,超声波部分使用HC-SR04模块,测量范围:4-300cm,实际测量上最长可达到5.70m。

2020-03-12 15:25:53

加载更多