避障车

视频教程

https://www.bilibili.com/video/BV1nJ411P7dR/?spm_id_from=333.788.recommend_more_video.-1

中英文对照表:

ULTASONIC SENSOR:超声波雷达传感器

L293D电机驱动模块:

  1. L293D(双H桥路)工作原理详解:https://blog.csdn.net/acktomas/article/details/115389622
  2. 电机及底盘的介绍:https://www.bilibili.com/video/BV1EZ4y1s7BK
  3. L298N模块的使用:https://www.bilibili.com/video/BV1Xt411372X
  4. arduino智能车巡线原理实验及代码讲解
    原文链接:https://blog.csdn.net/qq_40593308/article/details/105563369
    这是一款常用的直流电机驱动模块,采用293D芯片小电流直流电机驱动芯片。管脚被做成了rduino兼容的,也方便了爱好者快速的基于rduino的开发。
  • 2个5V伺服电机(舵机)端口 联接到Arduino的高解析高精度的定时器-无抖动!
  • 多达4个双向直流电机及4路PWM调速(大约0.5%的解析度)
  • 多达2个步进电机正反转控制,单/双步控制,交错或微步及旋转角度控制。
  • 4路H-桥:L293D 芯片每路桥提供.0.6A(峰值1.2A)电流并且带有热断电保护,4.5V to 36V。
  • 下拉电阻保证在上电时电机保持停止状态。
  • 大终端接线端子使接线更容易(10 - 22AWG)和电源。
  • 带有Arduino复位按钮。
  • 2个大终端外部电源接线端子 保证逻辑和电机驱动电源分离。
  • 兼容Mega, Diecimila, & Duemilanove。
  • 提供全套散件可供想自己动手的爱好者DIY。
    -下载方便使用的Arduino软件库快速进行项目开发

    注意,使用步进电机会占用2个直流电机接口,电机驱动电源需要单独供电给电机,电路驱动电源需要使用51单片机提供的电源,也可以单独供电,但是必须要跟单片机共地,否则会无法将数据写入模块。

模块引脚说明(该模块是为arduino设计的,所以使用51单片机驱动该模块有些引脚是没用的,如:0,1,2,13,ARef):

3:直流电机M2的PWM信号端,与左边的L293D芯片(IC1)的9号脚相连

4:74HC595芯片的数据输入时钟端(上升沿有效),与中间的74HC595芯片(IC3)的11号脚相连

5:直流电机M4的PWM信号端,与右边的L293D芯片(IC2)的1号脚相连

6:直流电机M3的PWM信号端,与右边的L293D芯片(IC2)的9号脚相连

7:74HC595芯片的输出使能端(低电平有效),与中间的74HC595芯片(IC3)的13号脚相连

8:74HC595芯片的串行数据输入端,与中间的74HC595芯片(IC3)的14号脚相连

9:舵机2的PWM信号端

10:舵机1的PWM信号端

11:直流电机M1的PWM信号端,与左边的L293D芯片(IC2)的1号脚相连

12:74HC595芯片的并行数据输出时钟端(上升沿有效),与中间的74HC595芯片(IC3)的12号脚相连

A0~A5可以自行焊接排针作为扩展,可以提供给舵机也可以提供给测速模块,接线柱的电机驱动电源是提供给4个直流电机的,引脚的5V电路驱动电源是提供给芯片和舵机的,以及右下脚的5V电源,黄色的跳线帽将电机驱动电源和9V引脚相连,电机驱动电源提供多少伏的电压,9V接脚就是多少伏的,并不是固定9V,所以请注意,关于电机驱动电源资料上说的是4.5V到36V,建议在12V之内,L293D的芯片是4.5V到36V的,但是该模块上的其他元件不一定能承受,本人就弄坏一个板子,起初是74HC595芯片莫名其妙的烧坏,然后更换芯片后,在20V电压下调压时拧错了反向,导致一个电容爆炸了,但是肯定是没有超过36V的,该模块的电容的击穿电压是16V,20V以下是没有问题的,还要注意的是电流,不能过大,一般12V的电压绝对够用了。

模块上还有一些被焊死的接口,是和直流电机接线柱相邻的(蓝色区域其他引脚是GND),可以自行焊上排针,这样就可以使用杜邦线连接电机了或者串上电阻接上LED做指示灯,我的板子是自己把引脚都焊上来了。

连接程序图

程序代码:

上传代码前确保已经安装了下面三个类库

  1. 驱动板介绍:AFMotor Library https://learn.adafruit.com/adafruit-motor-shield/library-install
    L293驱动板库函数: https://github.com/adafruit/Adafruit-Motor-Shield-library 版本1.0
  2. NewPing Library https://bitbucket.org/teckel12/arduino-new-ping/downloads/
    NewPing库介绍: https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home
  3. Servo Library https://github.com/arduino-libraries/Servo.git //
//ARDUINO OBSTACLE AVOIDING CAR//#include <AFMotor.h>
#include <NewPing.h>
#include <Servo.h>
#define ECHO_PIN A0 //定义接受回传超声波信号为模拟引脚A0
#define TRIG_PIN A1 //定义发送超声波信号为模拟引脚A1
#define MAX_DISTANCE 200 //定义超声波信号发射的最大距离为200
#define MAX_SPEED 200 // 设置电机的最高速200
#define MAX_SPEED_OFFSET 20 设置最大速度补偿为20
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); //使用构造函数新建一个超声波传感器对象
AF_DCMotor motor1(1, MOTOR12_1KHZ); //定义电机M1
AF_DCMotor motor2(2, MOTOR12_1KHZ); //定义电机M2
Servo myservo; //新建舵机对象
boolean goesForward = false;
int distance = 100;
int speedSet = 0;
void setup() {//Serial.begin(115200);myservo.attach(9);   //若连接在servo1则端口号是10myservo.write(115);delay(1000);distance = readPing();delay(100);distance = readPing();delay(100);distance = readPing();delay(100);distance = readPing();delay(100);
}
void loop() {int distanceR = 0;int distanceL = 0;delay(40);//如果检测到障碍物小于15cm就往后退,再对比左右两边障碍距离,再转弯然后直行if (distance <= 15){moveStop();delay(100);moveBackward();delay(300);moveStop();delay(200);distanceR = lookRight();delay(200);distanceL = lookLeft();delay(200);if (distanceR >= distanceL){turnRight();moveStop();} else{turnLeft();moveStop();}} else{moveForward();}distance = readPing();
}
int lookRight()
{myservo.write(50);delay(500);int distance = readPing();delay(100);myservo.write(115);return distance;
}
int lookLeft()
{myservo.write(170);delay(500);int distance = readPing();delay(100);myservo.write(115);return distance;delay(100);   //acktomas:此语句是否执行?
}
int readPing() {delay(70);int cm = sonar.ping_cm();//Serial.println(cm);if (cm == 0){cm = 250;}return cm;
}
void moveStop() {motor1.run(RELEASE);motor2.run(RELEASE);
}
void moveForward() {if (!goesForward){goesForward = true;motor1.run(FORWARD);motor2.run(FORWARD);for (speedSet = 0; speedSet < MAX_SPEED; speedSet += 2) // 缓慢增加电机速度{motor1.setSpeed(speedSet);motor2.setSpeed(speedSet);delay(5);}}
}
void moveBackward() {goesForward = false;motor1.run(BACKWARD);motor2.run(BACKWARD);for (speedSet = 0; speedSet < MAX_SPEED; speedSet += 2) // 后退逐步增加电机速度{motor1.setSpeed(speedSet);motor2.setSpeed(speedSet);delay(5);}
}
void turnRight() {motor1.run(FORWARD);motor2.run(BACKWARD);delay(500);motor1.run(FORWARD);motor2.run(FORWARD);
}
void turnLeft() {motor1.run(BACKWARD);motor2.run(FORWARD);delay(500);motor1.run(FORWARD);motor2.run(FORWARD);
}

避障车(L293D电机驱动)相关推荐

  1. python避障小车_MicroPython实战:DIY一台会思考的避障车

    * 本文作者:bodasister,本文属FreeBuf原创奖励计划,未经许可禁止转载 1.什么是会思考的避障车? 在日常生活中,大家会经常见到各种各样的遥控车,它需要我们人为的操作,控制它的前进.后 ...

  2. 基于STM32F103单片机的智能扫地机器人 循迹避障车 原理图PCB设计

    系统功能设计 (末尾附文件) 本系统由STM32F103C8T6单片机核心板.2路红外避障模块.2路按键.风扇驱动.电机驱动.升压模块.锂电池充电模块及电池盒供电组成. 1.按下启动按键后,小车启动, ...

  3. python遥控汽车玩具_[详细实例]MicroPython拼插编程实战:DIY一台会思考的壁障车...

    (转载请注明文章来源,更多教程可自助参考www.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇) 在日常生活中,大家会经常见到各种各样的遥控车,它需 ...

  4. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 接线过程

    电池电源线接线 电机线接线 避障模块接线 电机驱动板信号引脚和电源引脚接线 电机驱动板电源线接线 循迹模块接线

  5. 基于Azure Percept 避障乐高汽车

    本项目使用 LEGO Boost 汽车避障,由 Azure Percept 提供支持. 硬件组件 微软 Azure ×    1 LEGO BOOST 创意工具箱×    1 软件应用程序和在线服务 ...

  6. 波士顿动力机器狗测评来了!售价堪比豪车,避障、导航、舞蹈样样都行,买不起还能租...

    乾明 郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI 如果你忽然看到有人遛波士顿动力的机器狗,千万不要惊讶. 因为它现在已经正式商业化了. 近日,波士顿动力宣布,正式对外出售机器狗Spo ...

  7. 实车采集的数据重建场景_避障、探测、采样......华理这套系统让无人小车“身手非凡”...

    原标题:避障.探测.采样......华理这套系统让无人小车"身手非凡" 无论是坑洼不平.灌木丛生的荒地,还是土丘遍布的山坡,抑或是突发爆炸毒害未知的灾后现场,只要装备上这套系统,无 ...

  8. 从头开始制作51智能车——循迹+遥控+避障(一)——总览

    本篇文章主要介绍智能车实现的功能和相关硬件结构及软件配置. 实现功能: 此项目可实现智能车的遥控.循迹.避障.Led灯显示.蜂鸣器示警.状态显示等功能. 模块分类: 小车部分:51最小系统.电源模块. ...

  9. 从头开始制作51智能车——循迹+遥控+避障

    本系列将要详细介绍由51系列单片机控制的智能车,共分为五篇文章,本文作为本系列的第一篇文章,主要介绍各篇文章的主要内容及相互的关系. 从头开始制作51智能车--循迹+遥控+避障(一)--总览_Tian ...

  10. 在虚拟机中对阿克曼转向车进行导航及避障的仿真测试

       本篇文章,依旧是在虚拟机中对阿克曼转向车的仿真测试,本篇文章进行导航及避障的测试,依旧借助于古月学院<如何在Gazebo中实现阿克曼转向车的仿真>课程资料进行测试    本篇文章,主 ...

最新文章

  1. 《贝叶斯方法:概率编程与贝叶斯推断》一导读
  2. Java基础知识回顾--线程
  3. Effulgent的《深入理解Direct3D9》整理版(转)
  4. mysql 磁盘组_有效管理 ASM 磁盘组空间
  5. TLS配置和流量分析实验
  6. 创建Struts 2简单应用的流程
  7. C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
  8. ssas连接mysql_BI-SSAS简介篇
  9. ArcGIS Engine中添加点、线、面元素
  10. 互联网常用系统监控工具
  11. HDTunePro v5.00 硬盘专业工具(绿色版)
  12. C# 提取PDF中的表格
  13. 【揭秘】过于真实,培训机构那些不为人知的秘密(二)
  14. 【遥感专题系列】微波遥感(一、基础入门)
  15. peewee mysql_peewee基本使用
  16. 本地搭建自己的电影网站,并发布公网访问 3-3
  17. Python实现流星雨效果的代码
  18. Linux文件系统保护最佳实践:Tripwire
  19. 北京律师事务所名称大合集
  20. 关于雷达隐身的一些事

热门文章

  1. 全国31省份实体经济发展水平数据 (2004-2017年)
  2. 【Winform】知识竞赛抢答计分管理系统 分普通答题 和 抢答答题2种模式 待完善。。。...
  3. matlab filter freqz
  4. 上采样(upsampling)(图像内插)——最邻近内插法、双线性内插法与双三次内插法
  5. 5V 升压 8.4V供电5V 转转 8.4V 做两节锂电池充电芯片FS2114
  6. 内网穿透工具之NATAPP使用教程
  7. 几个分形的matlab实现1,基于MATLAB实现分形图形的绘制.doc
  8. docker搭建linux集群,搭建mpi环境,并使用MTT benchmark测试集群性能
  9. spss数据分析_排序数据_计算变量
  10. javassist 学习笔记