优秀毕业设计智能小车设计Word文档下载推荐.docx
《优秀毕业设计智能小车设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《优秀毕业设计智能小车设计Word文档下载推荐.docx(31页珍藏版)》请在冰点文库上搜索。
小车系统提供良好的测试模式,使设计人员可以调整观察行驶速度、方便的操作、调整小车运行模式;
在做这个项目的过程中不断的积累自己的技术水平,力求做出实用灵活的智能小车。
2.3应用环境
2.3.1系统硬件环境
Easyarm1138
内核:
32位ARMCortex-M3(ARMv7M架构);
运行频率:
50MHz
时钟周期:
快速可嵌套中断,6~12个时钟周期;
外设资源:
7组GPIO
内置:
看门狗定时器(WatchDogTimer)、USB接口的下载仿真器
外围电路设计:
5只LED指示灯、3只KEY、1只交流蜂鸣器、两排插针引出全部GPIO资源,以及ADC0~ADC7、5V、3.3V、GND等;
Easyarm1138各部位电路图如下:
图2-1Easyarm1138的MCU电路图
JTAG是由几家主要的电子制造商发起制订的PCB和IC测试标准。
其原理图如下:
图2-2JTAG电路图
USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。
是应用在PC领域的接口技术。
USB接口支持设备的即插即用和热插拔功能。
图2-3USB/PWR电路图
LED是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。
图2-4LED电路图
步进电机28BYJ-48-5V
额定电压:
5VDC
相
数:
4相8拍
步距角:
5.625°
/64
减速比:
1/64
步进角度:
5.625x1/64
牵入转矩:
>
34.3mN.m(120Hz)
自定位转矩:
34.3mN.m
直径:
28mm
重
量:
32g
步进电机28BYJ-48-5V工作原理图如下:
图2-5步进电机28BYJ-48-5V工作原理图
该步进电机为四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
步进电机28BYJ-48-5V电路图如下:
图2-6步进电机28BYJ-48-5V电路图
红外避障驱动
有障碍:
OUT输出持续(断点)低电平
无障碍:
OUT输出持续高电平
工作电压:
3.8v-5v
最大工作电流(5V时):
14mA
三条线:
VCC、GND、OUT
精密可调电位器:
根据使用环境调节
可调电位器调节范围:
5cm-100cm
反射距离:
跟具体的反射目标来决定,可根据情况调节
红色的LED:
探测到障碍时发光
数码管显示
共阴极数码管:
图2-7数码管原理图
小车轮子
轮宽:
26.6mm
轴外径:
13.8mm
轴孔宽:
3.66mm
轴孔长:
5.3mm
皮胎内径:
51.8mm
皮胎外径:
66mm
2.3.2系统软件环境
本系统的软件环境如下:
操作系统:
Windows2000或以上版本
开发工具包:
Stellaris外设驱动库
集成开发工具:
IAREmbeddedWorkbench
2.4功能规格
系统采用C语言、IAREmbeddedWorkbench软件及Stellaris外设驱动库进行小车的程序书写,采用Protell99SE进行红外避障以及步进电机驱动的硬件模块设计。
[2]
3系统设计
3.1系统总体设计
3.1.1总体设计
(1)根据需求分析生成的文档,对项目进行总体设计,使用模块流程图,组成模块元素清单,对系统进行设计与分析提供详细的指导。
(2)设计模块结构,将按功能需求划分为最小单元的功能模块。
确定各模块间的关系,将其连接起来进行整体分析。
3.1.2系统的功能模块
a.红外避障功能模块
此子系统主要功能模块有:
收发信号模块、预调电位器、LED显示模块。
收发信号模块的功能:
由发射器发射信号,若前方有障碍,则接收器能够接收到信号,最终将信号输送至Easyarm1138;
反之,若前方无障碍,则接收器不能接收到信号,因此仍保持小车前一秒的运行状态。
预调电位器的功能:
可调红外感应距离,使小车在复杂多变的地形环境中可以灵活多变的进行应用。
LED显示模块的功能:
有障碍时输出低电平,无障碍时输出持续高电平。
其显示作用在于提醒用户哪一端检测到了障碍物。
b.步进电机驱动功能模块
ULN2003AN、LED显示模块
ULN2003AN模块的功能:
交替为四相八拍步进电机提供4个交替的高低电平,通过对四相交替的输入高电平,使得电机开始转动。
高电平时其点亮,表明其对应的四相的工作正常。
c.蜂鸣功能模块
蜂鸣工作模块
蜂鸣工作模块的功能:
遇到障碍物时报警。
为以示区别,左侧红外检测到障碍时发出低沉的声音,右侧红外检测到障碍物时发出尖锐的声音。
d.加减速功能模块
KEY1键、KEY2键
KEY1键的功能:
加速,提高速度档位。
KEY2键的功能:
减速,降低速度档位。
e.速度显示模块
七段数码管
七段数码管的功能:
根据KEY1键及KEY2键的速度调整情况,实时的显示当前小车行驶的速度的档位情况。
3.1.3小车系统结构图
小车系统结构总设计图:
图3-1小车结构图
3.2详细设计
3.2.1详细设计的任务
根据总体设计生成的小车系统结构图,确定具体地实现智能小车其各种功能的具体方法,既在行驶中自动探测、躲避障碍物、自我车身调整、蜂鸣提醒、加减运行速度、显示行驶速度为目标加以确定核心代码的实现方案。
详细设计之后应该得出模块需求的精确描述,进行需求模块的流程图绘制,使得在设计时思路更加清晰,使代码编写阶段根据以上述描述编写具体代码。
3.2.2具体设计
a.红外避障流程图[4]
图3-2红外避障流程图
图解:
当小车向前行进时,左右两个红外避障检测仪实时监测左右两方是否遇到障碍物。
①当检测仪检测到有障碍物时,开始判断障碍物的位置,是在左、右、还是正前方,然后将信息输入Easyarm1138进行后续步进电机行动处理。
②当检测仪没有检测到障碍物时,开始判断此时是否有按键中断,即此时是否需要进行小车行进速度的调整。
b.步进电机驱动流程图
图3-3步进电机驱动流程图
当红外监测完毕后,小车按照监测结果选择行进方式。
①当左侧红外检测到障碍物时,左轮不动,右轮超前前进10°
,若右侧红外没有探测到障碍物,则左轮顺时针、右轮逆时针旋转20°
,进行二次调整,躲避障碍物之后向前行进。
②当左侧红外检测到障碍物时,左轮不动,右轮超前前进10°
,若右侧红外探测到障碍物,则左轮顺时针、右轮逆时针旋转90°
,躲避障碍物之后向前行进。
③当右侧红外检测到障碍物时,右轮不动,左轮超前前进10°
,若左侧红外没有探测到障碍物,则右轮顺时针、左轮逆时针旋转20°
④当右侧红外检测到障碍物时,右轮不动,左轮超前前进10°
,若左侧红外探测到障碍物,则右轮顺时针、左轮逆时针旋转90°
⑤当左右红外均没有探测到障碍物时,小车向前行进。
c.加减行驶速度模块流程图
图3-4加减行驶速度流程图
由中断后的按键选择进行行驶速度的调整。
①按下KEY1键,进行加速运动,即减小电机延迟。
②按下KEY2键,进行减速运动,即增加电机延时。
d.速度显示模块流程图
图3-5速度显示流程图
由中断后的按键选择进行当前速度档位的显示。
①每按下KEY1键一次,七段数码管所显示的数字逐个加1,每按下KEY2键一次,反之,七段数码管所显示的数字逐个减1。
②此次设计,为凸显行驶速度的突变,共设1-4的4个档位,因此档位最小为1,最大为4。
但程序中已写好可调整至9个档位的程序,使得此项功能灵活多变。
3.2.3总体设计流程图
4系统实现
4.1核心部分实现方法
4.1.1红外蔽障模块
红外蔽障模块包括,初始化红外蔽障函数和红外蔽障模块中断服务子程序。
这是小车在行进过程中遇到障碍及时调整的核心内容。
此外红外蔽障模块还有配合显示的LED子模块和配合发音的蜂鸣器子模块。
它们都是为方便我们判断小车当前行为状态的子模块。
其部分代码及代码分析见附件1。
4.1.25V4相步进电机的驱动模块[5]
5V4相步进电机的驱动是驱动程序中最大的一块,也是整个小车最主要的代码之一。
电机的驱动部分包括六个函数。
部分函数代码及详解见附件1。
4.1.3速度控制模块
为了提高智能小车的复杂性,使小车更加强大,速度控制则必不可少。
速度控制模块包括速度按键控制子模块和七段数码管速度显示子模块。
其中速度按键控制子模块是该模块的核心,它包括初始化按键函数和两个终端服务子程序。
七段数码管速度显示子模块起辅助作用主要用于显示当前的档位信息。
速度控制模块部分代码及说明见附件1。
4.2部分模块实现结果
4.2.1红外避障模块的实现
当一侧红外探测器探测到障碍物时,小车进行自身调整看另外一侧是否也探测到了障碍物,若另一侧也探测到了,则进行左/右的90°
旋转,若另一侧没有探测到,则小车进行左/右的20°
的修正,继续前行;
当两侧红外都没有探测到障碍物时,小车持续前行。
4.2.2电机驱动模块的实现
小车根据红外探测传输到arm板的结果,再结合对电机四相交替的供给正电的情况,实时的来执行向前、向左90°
、向右90°
、左探测10°
、右探测10°
、左调整20°
、右调整20°
这7条指令。
4.2.3蜂鸣器模块的实现
根据红外探测传输到arm板的结果,在arm板内进行判断,若左侧红外先检测到障碍物,则发出低沉的蜂鸣声;
若右侧红外先检测到障碍物,则发出尖锐的蜂鸣声。
[6]
4.2.4加减车速控制模块
通过中断的KEY1键、KEY2键进行小车行驶速度的加、减控制,使得小车可以依照人们的意愿进行速度的调整,使得其更加具有灵活性。
4.2.5车速显示模块
依照加减车速控制模块中KEY1键、KEY2键的按下及抬起状况,显示当前小车行驶的速度,使得整个小车的情况为人们所了解,便于掌控。
5小车系统测试
测试的目的是为了发现尽可能多的缺陷,设计完善的系统不应该害怕挑剔的用户进行测试。
因此,为了提高系统的执行效率我对项目进行了测试。
小车系统测试的规范是:
(1)及时发现问题,及时修改,每完成一个模块的设计就对其进行测试;
(2)设计合适的测试;
(3)根据测试结果生成测试报告。
小车系统测试的结果:
测试正常的模块:
红外避障模块、步进电机驱动模块、蜂鸣器模块、加减车速模块、车速显示模块
测试出现异常的模块以及出现的问题:
步进电机红外避障后的自我调整模块出现过问题。
由于最初设计的调整模块为不够完善,在此举例表述:
最初设计的当左侧红外先检测出障碍物时,左轮不动,右轮向前调整10°
若右侧红外没能检测到障碍物,则右轮不动,左轮向前行驶20°
进行向右自我调整,以防止左轮撞到左墙。
但在此设计中不妥的是当向右自我调整时,若右轮不动,左轮向前行驶20°
虽为向右自我调整设计,但仍十分容易撞到左墙,为防止此类情况发生,最终,我将程序设计为在向右自我调整时左轮向前、右轮向后同时旋转20°
,这样可以避免撞墙的尴尬事件发生。
该问题十分需要解决,因为智能小车设计本身就需要及时躲避障碍物,并且在复杂的地形环境下应该灵活应对各种情况。
6结束语
通过这次毕业设计,我更加熟悉了C语言的逻辑设计、硬件之间的紧密联系、以及Easyarm1138等方面的技术应用,对这些技术的了解从以前的略知一二,到现在的逐步掌握。
并将其充分应用到了项目中,使项目的专业化水平及自身学习能力都有大幅度的提升,同时也为日后的就业奠定了良好的基础。
在项目中我利用Easyarm1138的使用工程模板构建了写入arm板的语言框架、老师所讲内容、以及光盘中所带的各种资料,着重学习了Easyarm1138的程序书写逻辑设计及方式,通过请教老师、查阅大量相关书籍,最终编写完成了智能小车的程序,将其与硬件设备相结合,实现了可灵活躲避障碍物的智能小车的设计。
在程序编写的过程中也遇到了许多问题,其中最大的问题就是对写入arm中的语言结构没有具体的概念,这也是我们花费力气最大的地方,为此查阅了很多书籍。
尤其是arm板程序开发方面的,它直接关系到项目整体布局、实现等问题。
此外,对Easyarm1138开发板的不熟悉也严重影响了项目的进度,因此,也花费了大量的时间浏览网站,从而写出通用又满足功能的智能小车代码。
当项目逐个模块完成之后,自己有种说不出的高兴,在这几个月的项目开发中我获得的不仅是项目实训,更重要的是提升了自我学习的能力,这种经验将使我终身受益。
致谢
经过将近2个月的努力最终完成了智能小车的多项功能的设计,并且让设计的智能小车看起来比较灵活使用。
在这里起关键作用的正是我的指导老师王载阳老师,他不仅每周都认真细心的为我们答疑解惑,还在我最没有概念的时候为我耐心的画图指导。
他用他的丰富的实践经验带领我们走向了成功。
所以衷心的感谢王载阳老师对我的帮助,同时也感谢一切帮助过我的人,谢谢你们。
参考文献
[1]杜春雷主编.ARM体系结构与编程[M].北京:
清华大学出版社.2003
[2]范书瑞.ARM处理器与C语言开发应用[M].北京:
北京航空航天大学出版社.2008
[3]刘岚,尹勇,李京蔚.基于ARM的嵌入式系统开发[M].北京:
电子工业出版社.2008
[4]周立功.ARM嵌入式系统基础教程(第二版)[M].北京:
北京航空航天大学出版社.2006
[5]侯冬晴.ARM技术原理与应用[M].北京:
北京交通大学出版社.2009
[6]吴明辉.基于ARM的嵌入式系统开发与应用[M].北京:
人民邮电出版社.2004
[7]赵星寒,刘涛.从51到ARM—32位嵌入式系统入门[M].北京:
北京航空航天大学出版社.2005
7附件1:
系统实现
7.1核心部分实现方法
7.1.1红外蔽障模块
其部分代码及代码分析如下:
a.红外避障模块宏定义部分[3]
#defineIS_PERIPHSYSCTL_PERIPH_GPIOB//定义红外蔽障所在的GPIO模块
#defineIS_PORTGPIO_PORTB_BASE//定义红外蔽障的端口基地址
#defineIS_PIN_LEFTGPIO_PIN_0//定义红外蔽障的左传感器的针脚
#defineIS_PIN_RIGHTGPIO_PIN_1//定义红外蔽障的右传感器的针脚
b.定义配合红外避障模块起辅助显示作用的LED信息
#defineLED_PERIPHSYSCTL_PERIPH_GPIOG
#defineLED_PORTGPIO_PORTG_BASE
#defineLED_PIN_LEFTGPIO_PIN_2
#defineLED_PIN_RIGHTGPIO_PIN_3
c.定义配合红外避障模块起辅助发音作用的蜂鸣器信息,即音调
#defineLOW_DEGREE185//低音
#defineHIGH_DEGREE4000//高音
#defineFirst10//定义发现障碍调整的第一修正值
#defineSecend20//定义发现障碍调整的第二修正值
d.红外避障的函数声明部分
voidInitIS(void);
//初始化红外蔽障模块的函数声明
voidGPIO_Port_B_ISR(void);
//红外蔽障模块终端服务子程序的函数声明
voidInitBuzzer(void);
//初始化蜂鸣器
voidBuzzerSound(unsignedshortusFreq);
//是蜂鸣器发音
voidBuzzerQuiet(void);
//中断蜂鸣器的发音
e.初始化红外避障模块函数
voidInitIS(void)
{
SysCtlPeriEnable(LED_PERIPH);
//使能LED所在的GPIO端口
GPIOPinTypeOut(LED_PORT,LED_PIN_LEFT);
//设置左LED所在管脚为输出
GPIOPinTypeOut(LED_PORT,LED_PIN_RIGHT);
//设置右LED所在管脚为输出
SysCtlPeriEnable(IS_PERIPH);
//使能红外避障传感器所在的GPIO端口
GPIOPinTypeIn(IS_PORT,IS_PIN_LEFT);
//设置左红外避障传感器所在管脚为输入
GPIOPinTypeIn(IS_PORT,IS_PIN_RIGHT);
//设置红外避障传感器所在管脚为输入
GPIOI