重庆理工大学计算机学院(37专业)综合课程设计报告-迷宫电脑鼠的设计
题目: 迷宫电脑鼠的设计
二级学院 计算机科学与工程学院
专 业 计算机科学与技术
班 级 111030702
学生姓名 学号 91103070109
学生姓名 学号 91103070112
指导教师 刘小洋、杨宏雨
时 间 2014.01.09
重庆理工大学综合课程设计报告
目 录
摘 要 ......................................................................................................................................2
1、课程设计的目的及要求 ........................................................................................................3 2、题目分析 .............................................................................................................................3
1.1 功能分析 .....................................................................................................................3
1.2 性能需求分析 ..............................................................................................................3
1.3 算法分析 .....................................................................................................................3 3、系统设计 .............................................................................................................................4
3.1系统整体设计 ...............................................................................................................4
3.2硬件设计 ......................................................................................................................6
3.2.1 硬件结构设计 ...................................................................................................6
3.2.2 传感器组设计 ...................................................................................................6
3.2.3 电机驱动电路设计 ............................................................................................7
3.3软件设计 .................................................................................................................... 11
3.3.1 电脑鼠正常行走程序设计 ............................................................................... 11
3.3.2 电脑鼠记路径程序设计 ................................................................................... 13
3.3.3 电脑鼠找终点程序设计 ................................................................................... 14
1
重庆理工大学综合课程设计报告
摘 要
“电脑鼠”是使用嵌入式或单片机微控制器、传感器和机电运动部件构成的一种微型机器人,可以在 “迷宫”中自动记忆和选择路径,快速地达到所设定的目的地。电脑鼠走迷宫竞赛是一项具有一定难度、富有挑战性和趣味性的比赛。本研究性课程重点对电脑鼠硬件、迷宫算法进行分析研究。本研究性课程通过对电脑鼠自动穿越迷宫过程的研究,综合嵌入式专业的电路设计、传感器控制、单片机程序开发和算法研究等多学科知识,熟悉掌握嵌入式应用开发的全过程。 关键词:嵌入式或单片机微控制器,电脑鼠,智能算法
2
重庆理工大学综合课程设计报告
1、课程设计的目的及要求
本项目要实现的是用电脑鼠找出迷宫中通往终点的最短路径并以最快速度到达迷宫的终点。
电脑鼠从迷宫起点位置前进,由程序判断通过前视距离探测器探测到的迷宫状况,控制驱动机构前进或转向并记录路径和距离(控制车轮编码器可完成),由于起点位置和终点位置是已知的,虽然不知道具体路径,但通过编写算法程序即可找到最短路径,在重新开始时便可以最快速度从最短路径到达终点。
设计的电脑鼠应该具有三种最基本的能力:
, 拥有稳定、准确、快速的行走能力
, 能争取判断环境的能力(如有墙、有路)
, 记忆路径的能力
总之,电脑鼠的设计目标是:在最短的时间内找到一条通往总店的最短路径,并以最快速度从起点到达终点。如何衡量:
迷宫时间(搜索时间):电脑鼠激活到每次运行开始的时间;
注:搜索结束,从终点返回到起点的时间不算在迷宫时间内;
运行时间:电脑鼠从起点走到终点的时间;
如果电脑鼠在比赛时需要手动辅助,这个动作就成为“碰触”。若“碰触”了,则需要失去10秒的奖励时间。
2、题目分析
2.1 电脑鼠的构成
电脑鼠主要包括三部分:机械部分(执行机构)、电子控制装置、软件。
电脑鼠是指由车身、轮子、和相关软件构成。车体是电脑鼠最基本的架构,它的设计在电脑鼠的整体规划中战友想到重要的地位,应当遵守整体结构坚固耐用、材质轻、重心低的原则。在设计中,既要考虑到符合各零件的规格,又要考虑到配合迷宫的规格。
2.2 功能分析
1、拥有稳定、准确、快速的行走能力
通过电动带动车轮转动,使小车向前行走。
3
重庆理工大学综合课程设计报告
2、能争取判断环境的能力(如有墙、有路)
运用传感器来探测,是否有障碍物,路径是否可以行走,达到随意在迷宫
里行走的能力。
3、记忆路径的能力
4、能够迷宫电脑鼠能够在找到终点坐标并能返回原点。
2.3 算法分析
根据要求,电脑鼠要在迷宫里穿行,不会碰到障碍,避开障碍的到达指定的坐标,迷宫电脑鼠要设计到的算法。
1、90和180度转弯的算法
2、找到终点,需要用到右手法则和向心法则
3、电脑鼠需要记忆路径,所以记忆路径的算法
4、电脑鼠的方向有可能发生偏移,所以要有修正方向的算法。 3、系统设计
3.1系统整体设计
迷宫为8*8,迷宫格大小为18*18cm,选取电脑鼠底盘大小为迷宫格一半8*8cm左右。
图29 迷宫形状
4.2 算法流程
4
重庆理工大学综合课程设计报告
如图30所示,是电脑鼠主程序流程图。启动按键按下后,电脑鼠启动,然后根据设定的终点坐标,探索迷宫,通过到达终点子程序找到终点后,蜂鸣器发出提示音,说明找到终点。之后电脑鼠根据记忆通过返回起点子程序按原路返回起点,不再去走走不通的路。电脑鼠到达起点后,调用冲刺子程序立即掉头,根据先前探索阶段记忆下的路径冲刺到终点后停止,完成电脑鼠走迷宫。
开始
初始化
N
按下启动,
Y
设定终点坐标
到达终点
蜂鸣器提示
返回起点
冲刺
结束
图30 主程序流程图
5
重庆理工大学综合课程设计报告
3.2硬件设计
3.2.1 硬件结构设计
电脑鼠的硬件电路结构图如下。
电机1 传感器组1 显操蜂
示作鸣
器 器 按
键
传感器组2
驱动电路1
传感器组3 单片机
驱动电路2 传感器组4
3-8译码选择器
传感器组5 38KHz载波发生器 电机2
图8 硬件电路结构框图
(1)微控制器
微控制器是电脑鼠的核心,可以选择单片机,若RAM需求量大或者算法复杂或者性能要求高时,需要使用ARM等高性能的微处理器。
(2)传感器
传感器的作用是用来感知环境,探测电脑鼠的左、前、右是否有路可走。本设计中采用的是红外线方式,发射和接收分别受微控制器控制。由硬件电路部分结构框图可知,在电脑鼠的前、左、右、左前、右前方共有5组,其中左、右、前三组传感器是用于探测电脑鼠在当前迷宫格左、右、前三个方向上是否有支路的,左前、右前两组传感器呈45度安装,用于电脑鼠行进过程中进行姿态矫正,防止电脑鼠走偏而撞到迷宫墙。
6
重庆理工大学综合课程设计报告
(3)显示器
显示器是用来显示当前位置等相关信息的,是电脑鼠的可选部分。 (4)电源
电源用来为单片机供电,选择哪种电池,这也将影响电路的设计。 3.2.2 传感器组设计
本电脑鼠设计有5组传感器。这5组传感器分别安装于电脑鼠的左、左前、前、右前、右5个不同的方向,其中左、右、前三组传感器是用于探测电脑鼠在当前迷宫格左右前三个方向上是否有支路的,左前、右前两组传感器呈45度安装,用于电脑鼠行进过程中进行姿态矫正,防止走偏而撞到迷宫墙。
(1)译码器
由于单片机引脚有限,为了节约引脚接口,采用74HC138译码器将单片机的三位二进制编码译码为8位控制线,使用其中的5位控制线分别控制5个传感器组的分时工作(采用分时检测传感器,主要为了防止多组传感器之间的相互干扰)。通过单片机的P37、P13、P14分别为3-8译码选择器的地址输入A0、A1、A2,通过地址选择对应的传感器组。 例如A0A1A2地址为000时,74HC138输出Y0有效,从而使第一组传感器工作,而其他组传感器处于没有工作的状态。这样就可以实现单片机的3个引脚控制5个或者更多的传感器组。
74HC138管脚图:
图14 138译码器管脚图
74HC138功能
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
:
7
重庆理工大学综合课程设计报告
由上表可见74HC138译码器输出低电平有效。为增加译码器功能,除三个输入端A0、A1、A2 外,还设置了S1、,,使译码器具有较强的抗干扰能力且便于扩S2S3
展。
当S1,0时,不管其他输入如何,电路输出均为“1”,即无译码输出;只有当S1,1,且,,0时,译码器才处于允许工作状态,输出与输入二进制码相对应,S2S3
如 A2 A1A0=110 时,Y6输出低电平。如图15所示,是硬件电路部分3-8译码选择器电路。
图15 3-8译码选择器电路
(2)载波发生器
红外传感器是由红外发射管和红外一体化接收头构成的障碍检测器。为了能够让传感器组正常工作,红外发射管需要一个38KHz的方波来驱动,使红外发射管发射出调制频率与接收头接收频率匹配的红外光。如图16所示,是产生38KHz方波的载波发生器电路。
8
重庆理工大学综合课程设计报告
图16 38KHz载波发生器电路
(3) 传感器电路
传感器电路由红外发射LED和红外一体化接收头HS0038构成,红外LED由载波发生器产生的CLOCK信号驱动产生38KHz红外调制光。RP1为可调电阻,通过调节RP1来调节红外LED发光强度,从而调整传感器组检测迷宫墙障碍物的距离,RP1电阻越大,检测距离越近,电阻越小,检测距离越远。图17所示是传感器1的电路,用于电脑鼠的环境感知,另外四组传感器也与该组传感器相同的。电脑鼠通过对这五组传感器信息的融合,实现环境感知功能。
图17 传感器组电路
9
重庆理工大学综合课程设计报告
3.2.3 电机驱动电路设计
如图4-1-1所示,是用来驱动电脑鼠伺服电机的驱动电路。由于单片机I/O口电流输出能力有限,不能直接驱动电机转动。为了能让单片机控制电机运转,需要使用电机驱动电路,将单片机I/O口弱电流放大到足以驱动电机的电流。
图4-1-1
4.1.1 驱动电路芯片L9110
1、器件的管脚图如图4-1-1-1所示。
图4-1-1-1
2、管脚定义如下:
10
重庆理工大学综合课程设计报告
3、L9110的逻辑关系表如表3所示:
表3 L9110逻辑关系
IA IB OA OB
H L H L 正转
L H L H 反转
L L L L 停止
H H L L 停止
如图4-1-1所示,是左电机驱动电路,右电机驱动电路和这个也是一样的。ML为左电机,1、2脚是电机组绕,与驱动芯片L9110输出相连。3脚是电机光电码盘A相脉冲输出,连接到T1定时/计数器1外部计数引脚,通过脉冲计数,计算电机角位移和速度。电路图中引脚与驱动电路中的引脚编号一一对应。通过L9110驱动芯片IA、IB输入的逻辑值的组合,控制电机正转、反转、停转。
3.3软件设计
3.3.1 电脑鼠正常行走程序设计
迷宫隔墙构成的通道宽度为18厘米,通常所制作的电脑鼠的宽度为8厘米左右。在这种情况下,如果电脑鼠行进在通道中央,其边缘与迷宫隔墙间的距离在3~4厘米左右;如果偏离了,那么一边的距离会增加,另一边的距离会减少。通过安装在电脑鼠上的传感器能够快速)准确地测量这些距离信息,以便不断地调整电脑鼠的行进方向。
使用红外LED管测距时,发射管和接收管平行安装在电脑鼠的前方或左)右方。
11
重庆理工大学综合课程设计报告
当发送管发射的红外光线遇到迷宫隔墙后,红外光线发生反射并被接收管所接收。接收管收到的信号转换为电压,它和电脑鼠与迷宫隔墙之间的距离有确切的对应关系。检测该输出电压的大小就可以测定电脑鼠与迷宫隔墙之间的距离。
首先设定电脑鼠离左右墙的安全距离,由于各电脑鼠在硬件方面有一定的差异,所得到的检测数据也有一定的差异,那么安全距离的设定大家可以根据自己的电脑鼠进行相应的调整。当然左右的安全距离也可以设定为不一样的值,只要能保证电脑鼠前进的时候能走直线,而不撞到墙就可以了。如图所示:
读出左前方LED的数据之后用来跟左边安全距离比较,当偏向左边的时就要修正电脑鼠的位置了,我们可以通过减慢右边轮子的速度来调整电脑鼠的位置。
接着就读出右前方LED的数据之后用来跟右边安全距离比较,当偏向右边的时就要修正电脑鼠的位置了,我们可以通过减慢左边轮子的速度来调整电脑鼠的位置。
12
重庆理工大学综合课程设计报告
3.3.2 电脑鼠记路径程序设计
记录电脑鼠的轨迹的方法1:
(1) 当电脑鼠一次也未经过该处时,设定D=-1
(2) 当电脑鼠通过该处一次以上,而且以后还有可能通过时,设定电脑鼠
最后离开此处的方向为东侧时D=3,西侧时D=1,
北侧时D=0,南侧时D=2。
(3) 当方块最多只能通过一次时D=4
电脑鼠走完图8.4.3迷宫的轨迹,用D值来表示时,如下图所示:
记录电脑鼠的轨迹的方法2:
用八位寄存器来记录路径,各位对应的关系如下:
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
北 西 南 东 北 西 南 东 0~3四位表示各方块东南西北各面是否有墙,0表示没有;1表示有。 4~7四位表示电脑鼠是从东南西北哪个方向离开的,0表示不是;1表示是。
13
重庆理工大学综合课程设计报告
3.3.3 电脑鼠找终点程序设计
如图31所示,是电脑鼠到达终点子程序流程图。电脑鼠到达终点子程序就是根据设定的终点坐标,采用一定的规则不断的去搜索迷宫,直到找到一条通往终点的路为止。如下流程图所示,电脑鼠每走一格就将当前坐标与终点坐标进行比对,如果比对相同说明找到终点子程序退出返回,不相同则继续探索迷宫,判断当前坐标格是否走过,对于没有走过的迷宫格采用向心法则选路。对于走过的迷宫格,选一个未走过的方向进行探索或返回上一个路口探索。如果所有路都走不通,使电脑鼠返回到了起点,则电脑鼠蜂鸣器提示目的坐标不可到达。
14
重庆理工大学综合课程设计报告
开始
Y 当前坐标是终点,
N 返回
当前坐标走过,
Y N
Y 有未走过方向, 向心法则选路
N
返回上一个路口 走未走过的方
向
N 当前坐标是起点,
Y
报告目标不可
达
返回
图31 到达终点子程序流程图
15
重庆理工大学综合课程设计报告
附录:
主要程序:
//********************从终点返回起点函数**************************
void mouseBack()
{
unsigned char i;
mouseTurnback();
if(mouseGoahead(1)!=1)
{
goOffset();
}
repair();
delay05();
while(1)
{
if((x==0)&&(y==0))
{
mouseTurnback();
return;
}
i=motion[x][y]>>4;//获得当前坐标进入方向,目的方向
if(i>now_direct)
{
i=i-now_direct;
if(i==1){mouseTurnright();}
if(i==2){mouseTurnright();mouseTurnright();}
if(i==3){mouseTurnleft();}
}
else
{
i=now_direct-i;
if(i==1){mouseTurnleft();}
if(i==2){mouseTurnleft();mouseTurnleft();}
if(i==3){mouseTurnright();}
}
delay05();
if(mouseGoahead(1)!=1)
{
goOffset();
}
repair();
16
重庆理工大学综合课程设计报告
delay05();
}
}
//电脑鼠冲刺函数
void mouseSpurt()
{
unsigned char i;
while(1)
{
if((x==Xfinish) && (y==Yfinish))
{
return;
}
i=motion[x][y]&0x0f;//获得当前坐标出去方向,目的方向
if(i>now_direct)
{
i=i-now_direct;
if(i==1){mouseTurnright();}
if(i==2){mouseTurnright();mouseTurnright();}
if(i==3){mouseTurnleft();}
}
else
{
i=now_direct-i;
if(i==1){mouseTurnleft();}
if(i==2){mouseTurnleft();mouseTurnleft();}
if(i==3){mouseTurnright();}
}
if(mouseGoahead(1)!=1)
{
goOffset();
}
repair();
}
}
//左转90度
void left(unsigned char l) {
//90度l参数49
//T0初始化
EA=1;
ET0=1;//开T0中断
17
重庆理工大学综合课程设计报告
TMOD&=0xf6;
TMOD|=0x06;//设定T0模式2,8位自动重装值定时计数器
TH0=256-ICP;
TL0=256-ICP;//设定T0计数初值,定义中断脉冲数
TR0=1;//启动T0计数
//T1初始化
EA=1;
ET1=1;//开T1中断
TMOD&=0x6f;
TMOD|=0x60;//设定T1模式2,8位自动重装值定时计数器
TH1=256-ICP;
TL1=256-ICP;//设定T1计数初值,定义中断脉冲数
TR1=1;//启动T1计数
intCount0=0;
intCount1=0;
while((intCount0
本文档为【重庆理工大学计算机学院(37专业)综合课程设计报告-迷宫电脑鼠的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。