0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >消费电子 > 基于 Arduino 的 DIY 避边机器人

基于 Arduino 的 DIY 避边机器人

来源: 电路城
2021-11-03
类别:消费电子
eye 27
文章创建人 拍明

原标题:基于 Arduino 的 DIY 避边机器人

基于Arduino的DIY避障机器人设计详解

在智能家居与自动化技术蓬勃发展的当下,DIY避障机器人成为电子爱好者与创客群体热衷的实践项目。本文将围绕基于Arduino平台的避障机器人展开,从元器件选型、功能实现到设计原理进行系统性解析,为读者提供一套完整的开发指南。

image.png

一、核心控制模块:Arduino Uno R3

元器件型号与作用

Arduino Uno R3作为机器人控制核心,搭载ATmega328P微控制器,具备14个数字I/O引脚(含6个PWM输出)、6个模拟输入引脚,支持USB与外部电源双模式供电。其5V逻辑电平与开源生态特性,使其成为机器人开发的理想选择。

选型依据

  1. 资源适配性:14个数字引脚可同时连接超声波传感器、电机驱动模块及红外传感器,满足多传感器协同需求。

  2. 开发便捷性:内置USB转串口芯片,无需额外烧录器即可完成程序上传与调试。

  3. 社区支持:全球数百万开发者共享的开源库(如NewPing、AFMotor)可大幅缩短开发周期。

  4. 成本优势:市场价约30元,性价比远超同类开发板。

功能实现

  • 传感器数据采集:通过数字引脚读取超声波传感器距离值,模拟引脚监测电池电压。

  • 电机控制:利用PWM引脚输出占空比信号,调节电机转速实现差速转向。

  • 逻辑决策:根据传感器输入执行避障算法,动态调整运动轨迹。

二、环境感知系统:超声波传感器HC-SR04

元器件型号与作用

HC-SR04超声波模块通过发射40kHz声波并计算回波时间,实现2-400cm非接触式测距,精度达0.3cm,响应时间≤30ms。其Trig(触发)与Echo(回波)引脚分别连接Arduino数字引脚,构成核心测距单元。

选型依据

  1. 测距范围:2cm最小盲区与400cm最大量程覆盖室内外场景需求。

  2. 抗干扰能力:8个40kHz脉冲群设计可有效过滤环境噪声。

  3. 接口兼容性:5V供电与TTL电平输出直接匹配Arduino,无需电平转换。

  4. 成本效益:单价约5元,远低于激光雷达等高端传感器。

功能实现

long getDistance() {
 digitalWrite(Trig, LOW);
 delayMicroseconds(2);
 digitalWrite(Trig, HIGH);
 delayMicroseconds(10);
 digitalWrite(Trig, LOW);
 long duration = pulseIn(Echo, HIGH);
 return duration * 0.034 / 2; // 声速340m/s换算为cm/μs
}

优化策略

  • 采用5次测量取平均值降低随机误差(for(int i=0; i<5; i++) {distance += getDistance();} distance /= 5;)。

  • 设置60ms间隔避免传感器余震干扰。

三、动力执行系统:L298N电机驱动模块

元器件型号与作用

L298N集成双H桥电路,支持2路直流电机独立控制,最大输出电流2A,峰值可达3A。其IN1/IN2、IN3/IN4引脚接收Arduino控制信号,ENA/ENB引脚通过PWM调速,VS与VSS分别提供电机电源与逻辑电源。

选型依据

  1. 驱动能力:2A持续电流可驱动6-12V直流电机,适配6V减速电机(额定扭矩≥5kg·cm)。

  2. 保护机制:内置续流二极管防止电机反电动势损坏电路。

  3. 扩展性:支持步进电机驱动,为后续功能升级预留空间。

  4. 接口简化:螺丝端子与排针设计便于快速接线。

功能实现

// 电机控制引脚定义
#define IN1 6
#define IN2 7
#define IN3 8
#define IN4 9
#define ENA 5
#define ENB 10

void setup() {
 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
 pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
}

void goForward() {
 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
 digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
 analogWrite(ENA, 200); analogWrite(ENB, 200); // 中速前进
}

void turnRight() {
 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
 digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
 analogWrite(ENA, 180); analogWrite(ENB, 180); // 差速右转
}

调优要点

  • 通过analogWrite()参数调整PWM占空比(0-255),实现0-100%转速控制。

  • 电机并联0.1μF电容滤除高频噪声。

四、辅助传感器:GP2Y0A21YK红外接近传感器

元器件型号与作用

GP2Y0A21YK红外传感器利用物体反射红外光强度计算距离,检测范围10-80cm,输出模拟电压值。其OUT引脚连接Arduino模拟引脚,用于补充侧方障碍物检测。

选型依据

  1. 响应速度:15ms响应时间优于超声波传感器,适合快速避障场景。

  2. 功耗优势:工作电流仅33mA,适合电池供电系统。

  3. 安装灵活性:小巧体积(29.5×13×13.5mm)便于侧向布置。

  4. 成本平衡:单价约8元,提供比超声波更精准的近距离检测。

功能实现

int readLeftIR() {
 return analogRead(A0); // 连接左侧红外传感器
}

int readRightIR() {
 return analogRead(A1); // 连接右侧红外传感器
}

// 阈值校准函数
void calibrateIR() {
 int leftVal = 0, rightVal = 0;
 for(int i=0; i<10; i++) {
   leftVal += readLeftIR();
   rightVal += readRightIR();
   delay(50);
 }
 leftThreshold = leftVal / 10 * 0.8; // 设置80%阈值
 rightThreshold = rightVal / 10 * 0.8;
}

应用场景

  • 当超声波传感器检测到前方障碍物时,启动红外传感器扫描侧方空间。

  • 若左侧红外值<阈值,执行右转;若右侧红外值<阈值,执行左转。

五、电源管理系统:7.4V锂电池组与DC-DC降压模块

元器件型号与作用

采用2000mAh 7.4V锂电池组供电,通过LM2596 DC-DC降压模块输出5V稳定电压。电池组直接为电机驱动模块供电,降压模块为Arduino及传感器供电。

选型依据

  1. 能量密度:2000mAh容量支持1.5小时持续运行,满足家庭清扫需求。

  2. 输出稳定性:LM2596模块转换效率达75%,输出纹波<50mV。

  3. 保护功能:集成过流、过压、短路保护电路。

  4. 充电便捷性:支持TP4056充电模块实现1A恒流充电。

功能实现

// 电池电压监测
float readBattery() {
 int raw = analogRead(A2); // 连接降压模块反馈引脚
 float voltage = raw * (5.0 / 1023.0) * ( (7.4 + 0.7) / 5.0 ); // 分压电阻比1:1
 return voltage;
}

// 低电压报警
void checkBattery() {
 if(readBattery() < 6.8) {
   digitalWrite(LED_BUILTIN, HIGH); // 启动LED报警
   delay(1000);
 }
}
  • 在电池组与降压模块间串联0.5Ω保险电阻。

  • 使用0.1μF陶瓷电容与10μF电解电容并联滤波。

六、机械结构设计:三层亚克力底盘

元器件型号与作用

采用3mm厚亚克力板切割为30cm×20cm长方形底盘,通过M3螺丝固定驱动轮、万向轮、电机及传感器。底盘分为三层:

  • 底层:安装驱动轮(直径6cm橡胶轮)与万向轮(直径3cm)。

  • 中层:固定电机、电池组与L298N驱动模块。

  • 顶层:放置Arduino主板与传感器,层间用10cm高铜柱支撑。

选型依据

  1. 结构强度:亚克力板抗冲击性优于PCB,可承载2kg负载。

  2. 布局合理性:三层设计避免线缆缠绕,预留导线穿孔(直径5mm)。

  3. 重心优化:电池组置于尾部(占总重40%),确保行驶稳定性。

  4. 成本可控:单块亚克力板成本约15元,加工精度达±0.1mm。

功能实现

  • 驱动轮安装:通过联轴器连接电机轴与驱动轮,传动效率≥90%。

  • 传感器定位:超声波传感器固定于前端中心,距离地面10cm以避免地面杂物误判。

  • 侧方传感器布置:红外传感器安装于机身两侧中部,距离前端5cm,探测方向与机身垂直。

七、核心算法与程序逻辑

避障策略设计

采用三级避障机制:

  1. 一级避障:超声波传感器检测前方障碍物,距离<15cm时停止并后退50cm。

  2. 二级避障:启动红外传感器扫描侧方空间,选择障碍物较少方向转向。

  3. 三级避障:若两侧均存在障碍物,执行180°原地掉头。

程序实现

#define Trig 2
#define Echo 3
#define LeftIR A0
#define RightIR A1
#define safeDist 15

void setup() {
 Serial.begin(9600);
 pinMode(Trig, OUTPUT); pinMode(Echo, INPUT);
 pinMode(LeftIR, INPUT); pinMode(RightIR, INPUT);
 // 电机引脚初始化...
}

void loop() {
 long distance = getDistance();
 if(distance > 0 && distance < safeDist) {
   stopCar();
   delay(500);
   backCar();
   delay(500);
   if(analogRead(LeftIR) < leftThreshold && analogRead(RightIR) < rightThreshold) {
     turnAround(); // 两侧均有障碍物
   } else if(analogRead(LeftIR) < leftThreshold) {
     turnRight(); // 左侧有障碍物
   } else {
     turnLeft(); // 右侧有障碍物
   }
 } else {
   goForward();
 }
 checkBattery();
}

八、调试与优化技巧

  1. 传感器校准

    • 超声波传感器需在无障碍物环境下测试,确保输出距离稳定(误差≤1cm)。

    • 红外传感器通过电位器调整检测阈值,避免误检测地面纹理。

  2. 电机同步调整

    • 若直行时跑偏,在forward()函数中微调PWM值(如左电机200,右电机220)。

    • 转向角度通过delay()参数优化(每增加100ms约增加10°转向)。

  3. 电源管理优化

    for(int i=0; i<255; i+=10) {
     analogWrite(ENA, i); analogWrite(ENB, i);
     delay(20);
    }
    • 在电机启动瞬间增加软启动逻辑,避免电流冲击:

九、元器件采购指南

方案元器件采购找拍明芯城www.iczoom.com,拍明芯城提供型号查询、品牌、价格参考、国产替代、供应商厂家、封装、规格参数、数据手册等采购信息查询,PDF数据手册中文资料及引脚图功能一应俱全。

核心元器件清单

元器件型号数量单价(元)
微控制器Arduino Uno R3130
超声波传感器HC-SR0415
红外传感器GP2Y0A21YK28
电机驱动模块L298N110
直流减速电机6V 150rpm(带编码器)212
锂电池组7.4V 2000mAh130
DC-DC降压模块LM259618
亚克力底盘30cm×20cm×3mm115

通过系统化选型与精细化调试,基于Arduino的DIY避障机器人可实现高效避障、稳定运行与低成本开发,为电子爱好者提供极具价值的实践平台。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告