迷宫电脑鼠的设计课程设计论文.docx
- 文档编号:12880797
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:20
- 大小:212.69KB
迷宫电脑鼠的设计课程设计论文.docx
《迷宫电脑鼠的设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《迷宫电脑鼠的设计课程设计论文.docx(20页珍藏版)》请在冰点文库上搜索。
迷宫电脑鼠的设计课程设计论文
目录
摘要2
1、课程设计的目的及要求3
2、题目分析3
1.1功能分析3
1.2性能需求分析3
1.3算法分析3
3、系统设计3
3.1系统整体设计3
3.2硬件设计4
3.2.1硬件结构设计4
3.2.2传感器组设计4
3.2.3电机驱动电路设计4
3.3软件设计4
3.3.1电脑鼠正常行走程序设计4
3.3.2电脑鼠记路径程序设计4
3.3.3电脑鼠找终点程序设计5
摘要
“电脑鼠”是使用嵌入式或单片机微控制器、传感器和机电运动部件构成的一种微型机器人,可以在 “迷宫”中自动记忆和选择路径,快速地达到所设定的目的地。
电脑鼠走迷宫竞赛是一项具有一定难度、富有挑战性和趣味性的比赛。
本研究性课程重点对电脑鼠硬件、迷宫算法进行分析研究。
本研究性课程通过对电脑鼠自动穿越迷宫过程的研究,综合嵌入式专业的电路设计、传感器控制、单片机程序开发和算法研究等多学科知识,熟悉掌握嵌入式应用开发的全过程。
关键词:
嵌入式或单片机微控制器,电脑鼠,智能算法
1、课程设计的目的及要求
本项目要实现的是用电脑鼠找出迷宫中通往终点的最短路径并以最快速度到达迷宫的终点。
电脑鼠从迷宫起点位置前进,由程序判断通过前视距离探测器探测到的迷宫状况,控制驱动机构前进或转向并记录路径和距离(控制车轮编码器可完成),由于起点位置和终点位置是已知的,虽然不知道具体路径,但通过编写算法程序即可找到最短路径,在重新开始时便可以最快速度从最短路径到达终点。
设计的电脑鼠应该具有三种最基本的能力:
•拥有稳定、准确、快速的行走能力
•能争取判断环境的能力(如有墙、有路)
•记忆路径的能力
总之,电脑鼠的设计目标是:
在最短的时间内找到一条通往总店的最短路径,并以最快速度从起点到达终点。
如何衡量:
迷宫时间(搜索时间):
电脑鼠激活到每次运行开始的时间;
注:
搜索结束,从终点返回到起点的时间不算在迷宫时间内;
运行时间:
电脑鼠从起点走到终点的时间;
如果电脑鼠在比赛时需要手动辅助,这个动作就成为“碰触”。
若“碰触”了,则需要失去10秒的奖励时间。
2、题目分析
2.1电脑鼠的构成
电脑鼠主要包括三部分:
机械部分(执行机构)、电子控制装置、软件。
电脑鼠是指由车身、轮子、和相关软件构成。
车体是电脑鼠最基本的架构,它的设计在电脑鼠的整体规划中战友想到重要的地位,应当遵守整体结构坚固耐用、材质轻、重心低的原则。
在设计中,既要考虑到符合各零件的规格,又要考虑到配合迷宫的规格。
2.2功能分析
1、拥有稳定、准确、快速的行走能力
通过电动带动车轮转动,使小车向前行走。
2、能争取判断环境的能力(如有墙、有路)
运用传感器来探测,是否有障碍物,路径是否可以行走,达到随意在迷宫里行走的能力。
3、记忆路径的能力
4、能够迷宫电脑鼠能够在找到终点坐标并能返回原点。
2.3算法分析
根据要求,电脑鼠要在迷宫里穿行,不会碰到障碍,避开障碍的到达指定的坐标,迷宫电脑鼠要设计到的算法。
1、90和180度转弯的算法
2、找到终点,需要用到右手法则和向心法则
3、电脑鼠需要记忆路径,所以记忆路径的算法
4、电脑鼠的方向有可能发生偏移,所以要有修正方向的算法。
3、系统设计
3.1系统整体设计
迷宫为8*8,迷宫格大小为18*18cm,选取电脑鼠底盘大小为迷宫格一半8*8cm左右。
图29迷宫形状
4.2算法流程
如图30所示,是电脑鼠主程序流程图。
启动按键按下后,电脑鼠启动,然后根据设定的终点坐标,探索迷宫,通过到达终点子程序找到终点后,蜂鸣器发出提示音,说明找到终点。
之后电脑鼠根据记忆通过返回起点子程序按原路返回起点,不再去走走不通的路。
电脑鼠到达起点后,调用冲刺子程序立即掉头,根据先前探索阶段记忆下的路径冲刺到终点后停止,完成电脑鼠走迷宫。
图30主程序流程图
3.2硬件设计
3.2.1硬件结构设计
电脑鼠的硬件电路结构图如下。
图8硬件电路结构框图
(1)微控制器
微控制器是电脑鼠的核心,可以选择单片机,若RAM需求量大或者算法复杂或者性能要求高时,需要使用ARM等高性能的微处理器。
(2)传感器
传感器的作用是用来感知环境,探测电脑鼠的左、前、右是否有路可走。
本设计中采用的是红外线方式,发射和接收分别受微控制器控制。
由硬件电路部分结构框图可知,在电脑鼠的前、左、右、左前、右前方共有5组,其中左、右、前三组传感器是用于探测电脑鼠在当前迷宫格左、右、前三个方向上是否有支路的,左前、右前两组传感器呈45度安装,用于电脑鼠行进过程中进行姿态矫正,防止电脑鼠走偏而撞到迷宫墙。
(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管脚图:
图14138译码器管脚图
74HC138功能表:
由上表可见74HC138译码器输出低电平有效。
为增加译码器功能,除三个输入端A0、A1、A2外,还设置了S1、
,
,使译码器具有较强的抗干扰能力且便于扩展。
当S1=0时,不管其他输入如何,电路输出均为“1”,即无译码输出;只有当S1=1,且
=
=0时,译码器才处于允许工作状态,输出与输入二进制码相对应,如A2A1A0=110时,Y6输出低电平。
如图15所示,是硬件电路部分3-8译码选择器电路。
图153-8译码选择器电路
(2)载波发生器
红外传感器是由红外发射管和红外一体化接收头构成的障碍检测器。
为了能够让传感器组正常工作,红外发射管需要一个38KHz的方波来驱动,使红外发射管发射出调制频率与接收头接收频率匹配的红外光。
如图16所示,是产生38KHz方波的载波发生器电路。
图1638KHz载波发生器电路
(3)传感器电路
传感器电路由红外发射LED和红外一体化接收头HS0038构成,红外LED由载波发生器产生的CLOCK信号驱动产生38KHz红外调制光。
RP1为可调电阻,通过调节RP1来调节红外LED发光强度,从而调整传感器组检测迷宫墙障碍物的距离,RP1电阻越大,检测距离越近,电阻越小,检测距离越远。
图17所示是传感器1的电路,用于电脑鼠的环境感知,另外四组传感器也与该组传感器相同的。
电脑鼠通过对这五组传感器信息的融合,实现环境感知功能。
图17传感器组电路
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、管脚定义如下:
3、L9110的逻辑关系表如表3所示:
表3L9110逻辑关系
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管测距时,发射管和接收管平行安装在电脑鼠的前方或左﹑右方。
当发送管发射的红外光线遇到迷宫隔墙后,红外光线发生反射并被接收管所接收。
接收管收到的信号转换为电压,它和电脑鼠与迷宫隔墙之间的距离有确切的对应关系。
检测该输出电压的大小就可以测定电脑鼠与迷宫隔墙之间的距离。
首先设定电脑鼠离左右墙的安全距离,由于各电脑鼠在硬件方面有一定的差异,所得到的检测数据也有一定的差异,那么安全距离的设定大家可以根据自己的电脑鼠进行相应的调整。
当然左右的安全距离也可以设定为不一样的值,只要能保证电脑鼠前进的时候能走直线,而不撞到墙就可以了。
如图所示:
读出左前方LED的数据之后用来跟左边安全距离比较,当偏向左边的时就要修正电脑鼠的位置了,我们可以通过减慢右边轮子的速度来调整电脑鼠的位置。
接着就读出右前方LED的数据之后用来跟右边安全距离比较,当偏向右边的时就要修正电脑鼠的位置了,我们可以通过减慢左边轮子的速度来调整电脑鼠的位置。
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表示是。
3.3.3电脑鼠找终点程序设计
如图31所示,是电脑鼠到达终点子程序流程图。
电脑鼠到达终点子程序就是根据设定的终点坐标,采用一定的规则不断的去搜索迷宫,直到找到一条通往终点的路为止。
如下流程图所示,电脑鼠每走一格就将当前坐标与终点坐标进行比对,如果比对相同说明找到终点子程序退出返回,不相同则继续探索迷宫,判断当前坐标格是否走过,对于没有走过的迷宫格采用向心法则选路。
对于走过的迷宫格,选一个未走过的方向进行探索或返回上一个路口探索。
如果所有路都走不通,使电脑鼠返回到了起点,则电脑鼠蜂鸣器提示目的坐标不可到达。
图31到达终点子程序流程图
附录:
主要程序:
//********************从终点返回起点函数**************************
voidmouseBack()
{
unsignedchari;
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();
delay05();
}
}
//电脑鼠冲刺函数
voidmouseSpurt()
{
unsignedchari;
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度
voidleft(unsignedcharl)
{
//90度l参数49
//T0初始化
EA=1;
ET0=1;//开T0中断
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 { if(intCount0 { stopML(); runMR (1); } else { stopMR(); runML(0); } } stopML(); stopMR(); } //右转90度 voidright(unsignedcharl) { //90度l参数49 //T0初始化 EA=1; ET0=1;//开T0中断 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 { if(intCount0 { stopML(); runMR(0); } else { stopMR(); runML (1); } } stopML(); stopMR(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迷宫 电脑 设计 课程设计 论文