基于HC-SR04超声波微型雷达设计与研究
徐州一中综合实践活动(研究性学习)
课题实施方案申报表
课题名称 |
基于HC-SR04超声波微型雷达设计与研究 |
课组人员 |
组 长:zp06g05n01刘奕菡 组 员:zp06g05n02邵彦豪 zp06g05n03郁智恒 zp06g05n04李铭一 zp06g05n05魏楷宸 指导老师:邵馨阅老师
|
课题研究 背景及意义 |
随着智能传感技术发展,超声波雷达在近距离探测领域应用广泛,本研究旨在探索其微型化设计的可行性与应用价值。 |
实验内容 |
设计并组装基于HC-SR04传感器的微型雷达装置,探究不同因素对探测效果的影响 |
研究方式 |
观察/实验/数据搜索及整理 |
成果形式 |
PPT、论文、vlog视频 |
徐州一中综合实践活动(研究性学习)记录表
一、HC-SR04超声波雷达装置设计与制作 |
|
装置整体 设计方案 |
采用HC-SR04超声波传感器作为核心探测元件,配合Arduino控制器实现数据采集与处理,设计简易机械支架调整探测角度 |
关键组件 选型优势 |
HC-SR04传感器测距范围2-400cm,精度达3mm,适合近距离探测需求;Arduino Uno开发板具备良好的扩展性和编程便捷性,可以帮助我们实现雷达功能 |
主要内容 |
硬件组装、软件安装、程序烧录、可视化软件安装 |
主要表现 |
共同合作:通过巧妙调整螺丝,既平衡了底板高度,同时让大小不一的螺丝各得其所。 分工明确:刘奕菡负责电路连接与数据整理,邵彦豪、魏楷宸、李铭一、负责硬件组装,郁智恒发挥个人无人机编程优势完成与电脑的连接。 |
过程记录 |
|
二、被测物材质对识别效果的影响 |
|
实验设计 方案 |
控制变量:固定距离(20cm左右)、探测角度(90°),改变被测物材质(海绵、高密度泡沫、塑料、木头),每组材质重复测量3次取平均值 |
实验数据 整理 |
|
初步实验 结论 |
高密度泡沫反射信号最强,探测误差最小; 海绵材料的障碍物不能被超声波雷达检测到; 超声波雷达检测能被检测到的物体的距离有细微差异。 |
实验过程 记录 |
|
三、被测物角度对识别效果的影响 |
|
实验参数 设置 |
固定材质(塑料板)、距离(50cm),调整被测物与传感器法线夹角(0°、15°、30°、45°、60°),记录是否检测到有物体与物体视角。 |
实验过程 及结果整理 |
|
实验结论 |
当障碍物与雷达角度范围为0~12度时,雷达可以检测到障碍物;在此范围内其关系为:探测角宽度随着物体水平方向的角度增大而减小。 |
实验过程 记录 |
|
四、被测物宽度对识别效果的影响 |
|
实验设计 方案 |
固定材质(高密度泡沫)、距离(20cm)、角度(0°),改变被测物宽度(1cm、2cm、3cm、4cm、5cm),记录传感器能否准确估算障碍物宽度。 |
实验数据 整理 |
|
初步 实验结论 |
检测物体的实际宽度越宽,超声波雷达监测到的宽度就越宽;物体的实际宽度和超声波雷达检测到的宽度不一致;雷达检测宽度数据=实际宽度数据*2/3 |
实验过程 记录 |
|
五、三角测距法障碍物方位指示装置 |
|
装置改进 方案 |
在原单传感器基础上增加1个HC-SR04模块,构成间距10cm的双传感器阵列,基于三角测距原理计算障碍物方位角(θ=arctan(d/10)),从而指示障碍物方位 |
测试 预期与结果 |
运用弧度制函数转角度制函数degree,协同L、R函数中的微妙延迟计算,可以实现小范围角度内的障碍物距离测量 |
实验过程 记录 |
|
六、利用matlab探究天线数量对二维相控雷达主瓣波束宽度的影响 |
|
实验设计 方案 |
改变Number of Elements雷达的主瓣波束宽度,用matlab记录各个宽度值下的最高功率,并沿用先前课题的算法测量其角度值。 |
实验数据 整理 |
|
初步 实验结论 |
Matlab模拟相控阵雷达中,天线序列元素数量越高,信号主瓣的角宽度越小;反之则越大。 |
实验过程 记录 |
|
超声波雷达创新课题 |
|
影响雷达检测效果的因素 |
电磁波的衰减、大气折射、地球曲率、波束宽度、地球回波、虚假回波…… |
虚假回波的 定义 |
由于多径效应(电磁波经多个路径反射)或者电子干扰产生了非真实目标信号,会导致虚警或者目标误判。 |
初步思考 |
之前实验中的误差是否与此有关? 我们能否做些什么来避免它们呢? …… |
了解虚假回波的种类 |
1、旁瓣回波 雷达天线旁瓣发射的电磁波在近距离遇到强反射目标(如金属物体)时,可能产生虚假回波。 2、间接反射 高大物体(如烟囱、建筑)可能反射雷达波,导致目标回波通过多条路径返回,形成额外的虚假回波。 3、固定回波 储罐内搅拌装置或入料口附近的机械运动可能引发固定模式的虚假回波。 |
关于虚假回波的应对方法 |
1、安装优化 调整雷达位置,避免靠近强反射物 2、信号过滤 通过算法或硬件过滤器剔除固定模式的虚假回波 3、多传感器融合 结合视觉、激光等多数据交叉验证,降低单一传感器的误判风险 |
实验过程 记录 |
|
致谢 |
感谢邵老师在研究过程中给予的答疑! 感谢0605小组全体成员及家长的倾力支持与配合! 感谢徐州一中科探方舟项目给予我们这个宝贵的学习机会&展示平台! 仅以此次经历,献给我们的十六岁!
|
基于超声波三角测距法的障碍物方位指示装置设计与实现
摘要:
本课题设计并实现了一种基于超声波传感器与舵机联动的障碍物方位指示装置。装置核心采用三角测距原理,通过固定在塑料板上的两个超声波传感器进行水平扫描,采集距离数据。Arduino Uno微控制器作为处理中枢,控制扫描流程并解算障碍物方位,最终通过舵机指示指明障碍物方向。实验结果表明,该装置能够在一定角度和距离范围内有效探测并指示障碍物的方位,验证了三角测距法在简单环境感知中的应用可行性。本研究为机器人避障、盲人辅助等应用提供了低成本、高可行性的技术参考。
一 、引言
随着自动化与机器人技术的飞速发展,环境感知与避障能力成为智能设备的核心功能之一。障碍物探测技术多种多样,如激光雷达、视觉相机、毫米波雷达等,但其成本高昂或算法复杂,不适用于教学普及或简单应用场景。超声波传感器因其成本低廉、原理简单、易于实现,被广泛应用于近距离测距领域。
单一的超声波传感器只能提供前方障碍物的距离信息,而无法判断其具体方位。本课题旨在探索一种基于三角测距法的低成本解决方案。通过让两个超声波传感器进行扫描,获取一系列数据,从而探测出前方障碍物的距离,并最终通过舵机指示出障碍物所在的方位。本项目依托徐州一中科探方舟平台,旨在通过动手实践,深入理解传感器应用、数据采集与处理以及系统集成等工程概念。
二 、系统设计与硬件安装
2.1 系统设计原理
本装置的核心原理是三角测距法。系统使用三角测距法,通过两个超声波传感器的指示范围的重叠部分,计算出前方障碍物在二维平面上的指示位置。
2.2 硬件组件清单
组件名称 |
型号/规格 |
数量 |
作用 |
微控制器 |
Arduino Uno开发板 |
1 |
系统控制核心,处理数据和逻辑 |
超声波传感器 |
HC-SR04 |
2 |
发射和接收超声波,测量距离 |
舵机 |
SG90 |
1 |
通过超声波传感器的数据指出障碍物的大致方位 |
杜邦线 |
公对公、公对母 |
若干 |
连接各组件 |
塑料板 |
长25cm,宽10cm |
1套 |
固定舵机和超声波传感器 |
2.3 硬件安装与电路连接
机械结构安装: 使用热熔胶枪将舵机、超声波传感器固定在塑料板上,确保装置工作时传感器能稳定平移而非晃动。
电路连接:
接线方式 |
|||
元器件 |
元器件引脚 |
开发板引脚 |
|
超声波传感器(左) |
GND |
GND |
|
3.3V |
VCC |
||
10 |
Trig |
||
11 |
Echo |
||
超声波传感器(右) |
GND |
GND |
|
5V |
VCC |
||
2 |
Trig |
||
3 |
Echo |
||
舵机 |
5V |
红线 |
|
GND |
棕线 |
||
12 |
黄线 |
||
三 、软件设计与调试
3.1 程序流程设计
程序流程图如下所示:
3.2 核心代码编写与注释
#include <Servo.h>
const int SONAR_L_TRIG = 10;
const int SONAR_L_ECHO = 11;
const int SONAR_R_TRIG = 2;
const int SONAR_R_ECHO = 3;
const int SERVO = 12;
const double D_LR = 10.5;
const double D_RS = 13.2;
const double D_LS = D_LR + D_RS;
const uint32_t SONAR_DELAY = 50;
static Servo servo;
void setup() {
pinMode(SONAR_L_TRIG, OUTPUT);
pinMode(SONAR_L_ECHO, INPUT);
pinMode(SONAR_R_TRIG, OUTPUT);
pinMode(SONAR_R_ECHO, INPUT);
pinMode(SERVO, OUTPUT);
Serial.begin(9600);
servo.attach(SERVO, 500, 2500);
}
static double pow2(double x) {
return x * x;
}
static double degree(double rad) {
return rad * 180 / M_PI;
}
static double detect_single(double dL, double dR) {
return degree(dL < dR ? atan(dL / D_LS) : atan(dR / D_RS));
}
static double detect() {
double dL = CalculateDistanceL();
delay(SONAR_DELAY);
double dR = CalculateDistanceR();
delay(SONAR_DELAY);
Serial.print("L: ");
Serial.print(dL);
Serial.print(",R: ");
Serial.println(dR);
if (dL + dR <= D_LR || dL + D_LR <= dR || dR + D_LR <= dL) {
return detect_single(dL, dR);
}
double cosL = (pow2(dL) + pow2(D_LR) - pow2(dR)) / (2 * dL * D_LR);
double dS = sqrt(pow2(dL) + pow2(D_LS) - 2 * D_LS * dL * cosL);
return degree(asin(dL * sin(acos(cosL)) / dS));
}
void loop() {
const int TIMES = 3;
double res = 0;
for (int i = 0; i < TIMES; i++) {
res += detect();
}
res /= TIMES;
Serial.print("Angle:");
Serial.println( res);
servo.write(round(180 - res));
}
float CalculateDistanceL(void) //测量距离L
{
digitalWrite(SONAR_L_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(SONAR_L_TRIG, LOW);
float duration = pulseIn(SONAR_L_ECHO, HIGH);
float distance = duration*340/2/10000;
return float(distance);
}
float CalculateDistanceR(void) //测量距离R
{
digitalWrite(SONAR_R_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(SONAR_R_TRIG, LOW);
float duration = pulseIn(SONAR_R_ECHO, HIGH);
float distance = duration*340/2/10000;
return float(distance);
}
3.3 调试过程与问题解决
距离计算错误问题:初始代码中计算函数出现错误,导致无法正常指示方位,在弧度制转角度值中增加了“degree”,并修正了测量距离的L、R函数中的微秒延迟计算;
其他障碍物干扰:进行试验时,桌面上其他障碍物干扰舵机指示方位,将桌面清空即可解决。
四 实验数据与实验结论
程序版本 |
相比上版本改动 |
重复 |
能否正确检测方位 |
1 |
\ |
1 |
否 |
否 |
|||
否 |
|||
2 |
修正了若干计算角度中的bug,增加了弧度制转角度制函数degree; |
2 |
否 |
否 |
|||
否 |
|||
3 |
修正了测量距离L、R函数中的微秒延迟计算,将delayMicroseconds命令转移到两次digitalWrite中间; |
3 |
是 |
是 |
|||
是 |
五 结论与展望
本项目成功设计并实现了一套基于Arduino的超声波三角测距方位指示装置。通过硬件搭建、软件编程和系统调试,验证了利用低成本传感器进行障碍物方位感知的可行性。该装置能够在一定范围内,较为准确地探测并指示出最近障碍物的方位,达到了预期的设计目标。
本课题作为徐州一中科探方舟的探索项目,不仅巩固了我们在传感器应用、编程控制方面的知识,更极大地锻炼了我们的动手能力、问题解决能力和科学探究思维,为今后的深入学习奠定了坚实的基础。
课题:基于HC-SR04超声波传感器的微型雷达设计与研究
组 别:0605小组
撰写人:郁智恒 刘奕菡














