ionicons-v5-f

基于Arduino的智能小车

实验题目:基于 Arduino 的智能小车

1. 课程简要信息

电子综合设计,32 学时(课内课外各 16 学时),电气工程及其自动化,一年级

2. 实验内容与任务(限 500 字)

从培养学生自学能力及解决“复杂工程问题”能力的角度,并针对大学一年级学生知识储备量少的特点,采用积木式智能小车组件和 Arduino UNO 开展实验,实验要求与内容分为以下三个层次。

基础实验

  1. 查阅资料,了解智能车的发展与应用情况,自学 Arduino UNO 及 Arduino IDE的使用;了解红外循迹和超声测距传感器工作原理;
  2. 焊接电机引线及传感器连接板,装配小车;测试电机引线与转动方向的关系;
  3. 编写小车前进、后退、左/右转弯和调速程序,然后上传至小车控制板,观察小车运动状态;
  4. 观察瓷砖与黑色电工胶带对循迹传感器输出的影响;
  5. 编写超声波测距程序,通过Arduino IDE的“串口监视器”观察测距结果;
  6. 编写循迹程序,使小车能在 40s 内完成 5m 椭圆轨道循迹一周运动;分析造成小车循迹失败的原因。

拓展实验

  1. 降低小车循迹所用时间,并实现顺、逆时针连续多周循迹;2) 实现检测轨道障碍物(距障碍物 15cm 处停车),移走障碍物后,小车能够继续循迹;分析循迹与测距的时序关系,画出程序流程图;

提高实验

能绕过轨道上的障碍物并继续循迹;分别从红外传感器相应速度、超声测距范围、轨迹线反光性能和软件算法等方面,分析造成小车避障循迹失败的原因,并提出解决办法;画出程序流程图。

3. 实验过程及要求(限 300 字)

实验以小组形式开展,每组3人;实验前,提交预习报告、程序流程图、源代码;实验时,记录小车“反常”现象,并保存该现象所对应的程序代码;对“反常”现象进行组内讨论分析,给出分析结果与解决方案。

  1. 自学智能小车控制原理和Arduino开发方法,撰写预习报告;
  2. 焊接引线并装配小车;
  3. 实现小车前进、后退和转弯;
  4. 观察红外传感器响应与轨迹线、瓷砖及检测距离之间的关系;
  5. 实现小车循迹,讨论转弯半径、测速及传感器响应对循迹的影响;
  6. 实现测距功能,通过Arduino串口监视器观察测距结果。
  7. 循迹时检测障碍物;讨论分析检测障碍物时,导致循迹失败的原因。
  8. 实现小车避障循迹。
  9. 撰写实验报告(附小组分工、源代码及讨论纪要等)。

4. 相关知识及背景(限 150 字)

智能小车(即轮式机器人)是集中运用嵌入式技术、传感器技术、自动控制技术、人工智能及机器人学等高新技术的综合体,可广泛地应用于厂矿企业固定场物料搬运等技术领域,也可应用于复杂、恶劣的工作环境,具有良好的民用和军用应用前景。Arduino是一个开源的电子综合设计平台,软硬件兼容性强,易于开发使用。

5. 教学目标与目的(限 100 字)

通过小车循迹实验营造生动活泼的实验氛围,培养学生学习兴趣、求知欲;通过讨论分析小车“异常”现象,使学生认识专业知识的重要性和设计思路的严谨性;通过调试小车,培养学生以问题为导向的科研实践与创新能力。

6. 教学设计与引导

本实验是面向电气工程及自动化类学生,在大学第2学期开设的综合设计类实验课,先导课程为C语言程序设计。实验设计以“能力为导向”,侧重于学生解决“复杂工程问题”能力的培养,提升其工程文化素质,使其掌握“将科学转化为技术,创造一个世界原本不存在的事物”的方法。在整个教学设计中,充分考虑了大学一年级学生知识储备量较少的特点,着重在一下几个方面加强引导:

  1. 预习与实验准备阶段,指导学生通过图书馆、中国知网和 Arduino 中文社区等获取智能小车/机器人等相关知识和资源,使学生初步了解智能小车的基本结构和基本工作原理,了解 Arduino UNO 功能特点,学习在 Arduino IDE中编写、调试程序。明确实验预习报告中要包含智能小车工作原理、循迹原理和测距原理,同时包含Arduino编程规范和常用函数的说明。实验前,检查预习报告,不合格的同学,要延后实验。

  2. 组装小车前,采用类比法介绍小车结构和工作原理。电机类比为水车,电流方向类比为水流方向,将H桥类比为水管组合,将PWM电机调速类比为汽车的连续点刹,特别要强调左侧两电机相向安装方式要求电流方向必须是相反的,否则左侧轮子将会反向运动,导致小车无法行进;将红外循迹模块类比为盲杖;将超声测距模块类比蝙蝠的回声定位。

  3. 小车组装完毕后,指导教师讲解 Arduino 程序结构,着重介绍 setup()和loop()函数的作用,然后基于小车演示 pinMode()、digitalRead ()、digitalWrite() 、 analogWrite() 、 pulseIn() 、 Serial.begin() 、Serial.print()和 delay()等函数的使用方法和作用。结合程序流程图和 C语言,介绍 if-else 和 for 语句。

  4. 根据学生实验进展,讲解造成循迹失败的原因以及避障与循迹程序的时序匹配问题,强调先修改流程图,然后再修改程序,务求做到先“纸上谈兵”而后再实地操练,引导同学进行组内讨论。

  5. 循迹和避障循结果以循迹时间为验收指标。循迹并检测障碍物(只检测不避障)以功能验证为主,不计时间。

7. 实验原理及方案

实验针对大学一年级学生的特点,选用了智能小车套件和Arduino UNO开发板;程序开发使用对应的Arduino集成开发软件。由于Arduino语言同 C语言相似度高,且实验前已经开设了 C 语言程序设计,学生的编程经验可以较好地应用于 Arduino

程序开发。

  1. 机械部分组装

智能小车各个部件如图1所示,图中1为底盘,用于车体总支撑;图中 2为带有减速机构的直流电机,用于为小车提供动力;图中 3 为车轮;图中 4 为电机支架,用于安装电机;图中5为电池盒;图中 6为Arduino UNO,即智能小车的主控制器。


图 1 智能小车部件实物

车形机器人有4个轮子作为行走装置,4个轮子的安装方法相同,如图2(a)所示。首先将两个电机支架放入底盘的相应的槽中;然后将电机放在两个电机支架中间,输出轴朝向车头或车尾,并将电机上的安装孔与电机支架上的孔对齐;接着将螺丝插入孔中,装上螺母,拧紧;最后将轮子装在电机的输出轴上。

将电池盒底部的安装孔与底盘上的相应孔对齐,装上螺丝螺母,拧紧。如图2(b)所示,图中标记的孔为底盘上的电池盒安装孔。

在安装核心板时,需要在底盘与核心板之间安装尼龙柱,将螺丝依次穿过核心板板、尼龙柱与底盘,拧上螺母即可,如图2(c)所示,标记的孔为核心板安装孔。


图 2 智能小车机械部分装配

2) 电路部分连线

智能小车电路部分连接如图 3 所示,但在连接时一定要注意以下几点:

a) 接线时一定要看准电源正负极,不能接错接错会烧毁模块。
b) 红色线7.2V电源接到核心板正极 $+$ 。
c) 黑色线 7.2V 电源负极接到核心板-GND。

3) Arduino IDE

Arduino 是一种开源的电子平台,该平台最初主要基于 AVR 单片机的微控制器和相应的开发软件,目前在国内正受到电子发烧友的广泛关注。自从 2005 年Arduino 腾空出世以来,其硬件和开发环境一直进行着更新迭代。现在 Arduino 已经有将近十年的发展历史,因此市场上称 Arduino 的电路板已经有各式各样的版本了。Arduino 开发团队正式发布的是 Arduino UNO 和 Arduino Mega 2560。本实验中使用的是 Arduino UNO,如图 3 红色椭圆圈注。


图 3 智能小车电路连接


图 4 Arduino IDE 配置

由于 Arduino 核心板的程序下载方式为 ISP(在线系统编程),通过 USB 转串口的通讯方式实现,所以为了实现Arduino核心板与计算机的通讯从而实现程序下载,需要在计算机上安装 USB 驱动程序,驱动程序安装后,会把 Arduino UNO 的通信接口映射成计算机的一个串口,COM 端口号会因计算机配置不同而不同。然后,在Arduino IDE的端口设置中,一定要与所映射的COM端口对应。同时需要注意的是,Arduino IDE 的“板”选项一定要设为“Arduino UNO”。

  1. 电路原理

电机驱动

智能小车的直流电机采用L293D驱动,驱动原理如图5所示。L293D实际为一个双 H 桥驱动电路。如图 5 所示,要想让右电机转动,应该让三极管 T1 和 T4(或者T3和T2,但是转动方向相反)同时导通,此时ENA和IN1应该接高电平而IN2接低电平,如此右电机就可以实现正转(或者 ENA 和 IN2 接高电平而 IN1 接低电平实现电机反转)。同理可以控制左电机的正反转。要实现小车前进,只需让连接ENA、ENB、IN1和IN3的单片机引脚输出高电平,而连接IN2和IN4的单片机引脚输出低电平即可,如果要控制小车的行进速度只需改变 PWM 的占空比。同理要实现小车的后退,只需让连接 ENA、ENB、IN2 和 IN4 的单片机引脚输出高电平,而连接 IN1 和 IN3 的单片机引脚输出低电平即可,如果要控制小车的行进速度只需改变 PWM 的占空比。要实现小车的左转,只需让连接小车的左轮停止转动,右轮转动即可。具体实现方式是:让连接 ENA、IN1 和 IN3 的单片机引脚输出高电平,而连接 IN2、ENB 和 IN4的单片机引脚输出低电平。要实现小车的右转,只需让连接小车的右轮停止转动,左轮转动即可。具体实现方式是:让连接ENB、IN2和IN4的单片机引脚输出高电平,而连接IN1、ENA和IN3的单片机引脚输出低电平。

车速控制

车速控制采用 PWM 方式。在 PWM 驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。因此,PWM 又被称为“开关驱动装置”。脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律改变通、断电的时间,即可让电机转速得到控制。


图 5 双 H 桥驱动电路


图 6 循迹传感器工作原理

特别需要注意的是:智能小车工四个轮子,每个轮子一个电机,但是左前和左后两个电机、右前后右后两个电机是分别并联的,所以只需考虑控制左右两个电机就行。

循迹原理

循迹采用红外传感方式,利用轨迹线和地板对红外线的吸收作用不同来实现的。工作原理如图6所示。

左边的地面是白色的,红外光被地面反射的数量较多,右边地面是黑色的,很多红外光被地面吸收,反射到三极管的红外光较少,不足以使其导通。

小车进入循迹模式后,即开始不停地扫描与传感器连接的单片机 I/O 口,一旦检测到某个 I/O 口有信号,即进入判断处理程序,先确定两个传感器中的哪一个探测到了黑线。如果是两个都没有检测到黑线,就一直往前走,如果左边的传感器检测到黑线就右转,如果右边的传感器检测到黑线就左转,然后再继续直走。

障碍物检测

障碍物检测采用超声测距传感器实现。首先利用单片机输出一个40kHz的触发信号,把触发信号通过TRIG管脚输入到超声波测距模块,再由超声波测距模块的发射器向某一方向发射超声波,在发射时刻的同时单片机通过软件开始计时,超声波在空气中传播,途中碰到障碍物返回,超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过ECHO脚反馈给单片机,此时单片机就立即停止计时。时序如图 7 所示。由于超声波在空气中的传播速度为 $3 4 4 \mathsf { m } / \mathsf { s }$ ,根据计时器记录的时间 t,就可以计算出发射点距障碍物的距离,即: $\scriptstyle { \mathsf { S } } = { \mathsf { V } } { \mathsf { T } } / 2$ ,通过单片机来算出距离。


图 7 超声测距工作原理

8. 教学实施进程

  1. 任务安排

目标:明确实验任务,强调实验纪律。

采用集中进行方式,介绍实验内容,布置预习要求,重点讲授:文献检索、分析和整理方法;以及 Arduino 资源获取及初步应用。提醒并强调:未提交或未按要求撰写预习报告的同学不能进行实验,可以在符合要求后插入到后面的班级。

  1. 预习自学

目标:让学生掌握有针对性的文献检索与分析,

不要求同学掌握相关电路、模块的具体工作原理,但要尽量理解其工作方式、使用方法;要求同学到官方网站自行下载 Arduino 开发软件,对照 C 语言编程方式,学习并初步掌握Arduino下简单程序编写、调试。

  1. 检查预习报告

目的:严格执行以确保实验效果。

未提交或未按要求撰写预习报告的同学不能进行实验,可以在符合要求后插入到后面的班级。

  1. 现场教学

思路:授之以渔,不授之以鱼,可以讲解思路,但尽量不替学生解决问题。

首先介绍导线焊接方法,强调焊接中的人身、设备和器件安全;然后简要介绍小车装配方法,提醒同学注意电机方向与接线关系;经指导确认电源线连接无误后,发放电池。

智能小车装配、接线完成后,结合程序代码介绍小车前进、后退、转弯、识别轨迹线、检测障碍物的工作原理,代码采用逐行讲解。循迹程序、避障程序,须由学生自行设计。

指导学生分析小车未按要求工作的原因,先从细化后的流程图入手,再逐行分析代码,强调小组讨论,并要有纪要,杜绝个别同学“打酱油”。

5) 实验验收

验收循迹与避障循迹时,记录循迹时间,精确到秒。对于未能完成避障循迹的同学,验收其是否实现检测障碍物功能,只记录其完成情况,对于完成避障循迹的学生,该项不再验收。

6) 报告批改

目的:合理评分,发现问题以利改进。

根据实验报告完成情况和现场验收结果,确定实验成绩。根据实验完成情况,重点关注学生调试过程中出现的问题、学生对实验的意见和建议、以及学生的总结,发现并总结实验环节设置与安排上存在的问题,以利后续改进。

9. 实验报告要求

  1. 预习、自学

了解智能循迹小车结构、工作原理,自学Arduino UNO使用及编程,掌握常用函数的使用;

  1. 预编实验程序

画出小车循迹流程图,编写循迹程序;画出小车循迹检测障碍物流程图,编写程序;画出小车避障循迹流程图,编写程序

  1. 小车循迹、避障调试

写出小车程序调试过程中碰到的问题、错误及其排查、解决方法;附小组讨论纪要;

  1. 实验总结

a) 总结项目需求分析对系统设计的影响;
b) 总结本次实验中走过的弯路、碰到的问题、排查的故障和错误;
c) 探讨红外传感器性能和程序流程等对小车寻、避障的影响;

  1. 附小组分工及问题分析讨论纪要。

10.考核要求与方法(限 300 字)

考核侧重于智能小车运动故障、循迹失败等问题的分析、排查及解决过程。考核内容及分值如表1所示。

表 1 考核内容

序号考核内容考核要求分值
1预习部分1)直流减速电机驱动级调速原理,循迹与测距原理;2)Arduino UNO 功能特点,Arduino IDE 使用及预编程序。10分10分
2循迹实验40s 内完成循迹一周,40分;每个完整故障/异常的讨论分析与解决过程,另计5分,总分不超100分。40分
3障碍物检测验证测距功能5分,循迹时检测障碍物10分。15分
4避障循迹循迹时能绕开障碍物并继续循迹,时间小于40s再加5分10分
5讨论、总结小组讨论中对关键问题的意见、看法;对解决复杂工程问题的认识。15分

11.项目特色或创新(可空缺,限 150 字)

智能小车集机械、电子、人工智能等技术于一体,具有较强的综合性和趣味性。在大学一年级开设基于智能小车的电子综合设计,可以让学生尽早接触科学研究的基本流程,激发学习兴趣,增进对理论和实验内容的认知与理解,学会灵活地、创造性地运用自学和已学的基础知识和基本技能,有助于养成良好的科学研究习惯和思维。

实验案例信息表

案例提供单位中国矿业大学信控学院相关专业电气工程及其自动化
设计者姓名陈世海电子邮箱Cumt_007@126.com
移动电话18914881521通讯地址(含邮编)江苏 徐州 风华园西14-4-601邮编:221008
设计者姓名毛会琼电子邮箱Mhq0123456789@126.com
移动电话13952260331通讯地址(含邮编)江苏 徐州 风华园西14-4-601邮编:221008
设计者姓名牛小玲电子邮箱niuxiaoling76@163.com
移动电话13814443872通讯地址(含邮编)江苏 徐州 风华园西14-4-601邮编:221008
相关课程名称电子综合设计学生年级一年级学时(课内+课外)16+16
支撑条件仪器设备电脑,万用表,烙铁,斜口钳,尖嘴钳,螺丝刀等
软件工具Arduino IDE
主要器件智能小车套件、Arduino UNO

获奖信息

获奖等级 二等奖
年份 2017

作品信息

作者信息

作者
陈世海,毛会琼,牛小玲
学校
中国矿业大学

电工电子实验教学资源平台 苏ICP备09069895号-19