电子设计竞赛报告.docx
- 文档编号:9373098
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:467.51KB
电子设计竞赛报告.docx
《电子设计竞赛报告.docx》由会员分享,可在线阅读,更多相关《电子设计竞赛报告.docx(14页珍藏版)》请在冰豆网上搜索。
电子设计竞赛报告
2013年“TI”杯电子设计竞赛报告
——A组:
智能小车
组号:
组员:
试题要求:
(一)环境要求:
(1)在一个120CM见方的白色平板的四周设立一道木质围墙,围墙高度为20CM,简称“院子”,在某一边院墙上开设一个缺口,称为大门。
大门的初始位置居中,提高难度时可以改变;大门的初始宽度为30CM,提高难度时可以变窄。
在大门门槛的下面埋有一条金属片,宽度为2CM左右,长度等于门宽,可以作为出门的标记。
(2)院子中间地面上,用1.5CM宽度的黑色胶带贴出一个闭环的轨迹,形状初始为正方形或圆形,提高难度时可以改变形状,增加分支。
(2)请使用组委会指定的电动小车套件(外形尺寸为22CMX16CM),组装一个电池供电的智能小车,应具有黑白条检测、障碍物检测和光强检测的能力。
(3)不得使用遥控等装置进行人为干预,完全由小车自己进行识别和运动。
(4)测试环境亮度为一般房间灯光照明的情况,没有特别的光源,不需要设置特殊的光线遮挡。
(二)试题要求:
(1)小车放在院子中间静止不动,车头朝向任意。
通过按键,通知小车测试开始,小车应自己找到黑色胶带的位置,并开始沿黑色闭环路径行走,没有接到停止命令(通过按键)就连续行走,测试人员将记录重复一周所用的时间。
(2)小车放在院子的中心静止不动,车头的朝向任意。
通过按键,进入灯光搜寻追踪模式。
由一个100W的白炽灯作为引领光源,固定在院外的某一个地方,高度在30CM左右。
小车发现光源后,用最短的时间,绕出围墙,走到离光源最近的位置停下,并发出“完成”的提示(蜂鸣或指示灯)。
整个过程不得碰撞院墙,出现碰撞的情况时,需将小车放到中点重新开始,最多测试三次,失败一次将会扣除一定分数。
(3)显示累计运行时间和所走路长。
(三)、发挥部分:
1)改变黑色胶带所布线路的复杂程度,可增加一些需要倒车的断路分支,测试完成效果和每周所用时间。
(2)调偏大门的位置,减少大门的宽度,测试完成效果和所用时间。
(3)减少白炽灯的瓦数,提高搜寻难度,测试完成效果和所用时间。
(4)调整白炽灯所在位置,增加出门后找寻的难度(如离大门角度最偏,距离最远和移动光源)。
(5)其他扩展功能(如可以记住、计算光源位置,不需要长期点亮光源、使用较少的传感器等)。
一、拼装过程:
根据竞赛提供的器件和拼装图,完成对小车的拼装,如图:
二、设计过程:
(一)、电机驱动
根据竞赛提供的器件,采用L298N作为直流电机驱动。
当各引脚满足如下关系时,控制电机的不同状态。
在程序中设置一个开关,当开关位于高电平时,进入避障和寻找出口模式,当开关位于低电平时,进入寻迹模式。
(二)、寻迹模块
寻迹部分采用五通道黑白线检测模组,如下图所示:
该模组以RPR220光电传感器为探测传感器,共分为五路,分为两行五列。
通过对每个传感器数据的检测,通过单片机对电机驱动进行控制,即可完成对黑线轨迹的跟踪和检测。
当没有传感器检测到黑线时,控制小车后退直到感应到黑线为止。
从左至右分别定义五个传感器为S1,S2,S3,S4,S5,当S1或S5检测到黑线时,说明小车偏移轨迹较远,控制小车急转弯,即一边轮正转另一边轮反转;当S2或S4检测到黑线时,控制小车转小弯,即一边轮正转另一边轮不转。
控制程序见程序设计部分中的寻迹部分blacktrace()。
(三)、避障和寻找出口模块
此部分采用竞赛提供的E18-D80NK-N光电传感器,如图:
通过检测前方两条线是否有反射判断是否有障碍物,并通过控制电机转速和转向来控制小车的方向,使小车避开障碍物并找到出口。
当两个传感器均未检测到障碍物时,控制小车直行;当左边传感器检测到障碍物时,控制小车右转弯;当右边传感器检测到障碍物时,控制小车左转弯;当两个传感器均检测到障碍物时,也控制小车右转弯。
此模块中的转弯均为一边轮正转另一边轮反转,以达到迅速转弯完成避障和寻找出口的功能。
避障和寻找出口程序见程序设计部分中的避障部分avoid()。
(四)、测速模块
测速部分采用WTK-10槽式光电开关,如下图:
车轮一端相连带有缝隙的圆盘,由于该传感器为无遮挡时输出低电平,所以可通过测量低电平的时间和缝隙的宽度计算转速。
(五)、显示模块
该模块主要是将测得的转速通过LCD液晶显示屏显示出来,显示屏采用LCD1602,线路连接如下图所示:
三、程序设计:
小车寻迹及寻找出口程序如下:
#include"reg52.h"
#include"intrins.h"
sbitL_IN0=P1^0;
sbitL_IN1=P1^1;
sbitL_EN=P1^2;
sbitR_IN0=P1^3;
sbitR_IN1=P1^4;
sbitR_EN=P1^5;
sbitIL=P1^6;
sbitIR=P1^7;
sbit BKWTLINE1=P0^0;
sbit BKWTLINE2=P0^1;
sbit BKWTLINE3=P0^2;
sbit BKWTLINE4=P0^3;
sbit BKWTLINE5=P0^4;
sbitctrl=P3^3;
intt=0,wide=100,lw=100,rw=92;
void forward();
void backward();
void turnleft_small();
void turnleft_big();
void turnright_small();
void turnright_big();
voidblacktrace()
{
while
(1)
{
if(BKWTLINE1)
{
if(BKWTLINE1)
turnleft_big();
}
elseif(BKWTLINE2)
{
if(BKWTLINE2)
turnleft_small();
}
elseif(BKWTLINE3)
{
if(BKWTLINE3)
forward();
}
elseif(BKWTLINE4)
{
if(BKWTLINE4)
turnright_small();
}
elseif(BKWTLINE5)
{
if(BKWTLINE5)
turnright_big();
}
else
backward();
}
}
//========================================================================
//函数:
voidforward(void)
//描述:
小车前进程序
//参数:
无
//返回:
无
//备注:
//版本:
V1.0
// 2012/09/22 Firstversion
//========================================================================
voidforward(void)
{
R_IN0=0;
R_IN1=1;
L_IN0=0;
L_IN1=1;
t++;
if(t>wide)t=0;
if(t>lw)L_EN=0;
elseL_EN=1;
if(t>rw)R_EN=0;
elseR_EN=1;
}
//========================================================================
//函数:
voidturnleft_small(void)
//描述:
小车左转程序,左轮停止,右轮前进
//参数:
无
//返回:
无
//备注:
//版本:
V1.0
// 2012/09/22 Firstversion
//========================================================================
voidturnleft_small(void)
{
L_IN0=0;
L_IN1=0;
L_EN=1;
R_IN0=0;
R_IN1=1;
t++;
if(t>=100)t=0;
if(t<50)R_EN=1;
elseR_EN=0;
}
//========================================================================
//函数:
voidturnleft_big(void)
//描述:
小车左转程序,左轮反转,右轮正转
//参数:
无
//返回:
无
//备注:
//版本:
V1.0
// 2012/09/22 Firstversion
//========================================================================
voidturnleft_big(void)
{
L_IN0=1;
L_IN1=0;
R_IN0=0;
R_IN1=1;
t++;
if(t>=100)t=0;
if(t<50)R_EN=1;
elseR_EN=0;
if(t<50)L_EN=1;
elseL_EN=0;
}
//========================================================================
//函数:
voidturnright_small(void)
//描述:
小车右转程序,右轮停止,左轮前进
//参数:
无
//返回:
无
//备注:
//版本:
V1.0
// 2012/09/22 Firstversion
//========================================================================
voidturnright_small(void)
{
L_IN0=0;
L_IN1=1;
R_IN0=0;
R_IN1=0;
R_EN=1;
t++;
if(t>=100)t=0;
if(t<50)L_EN=1;
elseL_EN=0;
}
//========================================================================
//函数:
voidturnright_big(void)
//描述:
小车右转程序,右轮反转,左轮正转
//参数:
无
//返回:
无
//备注:
//版本:
V1.0
// 2012/09/22 Firstversion
//========================================================================
voidturnright_big(void)
{
L_IN0=0;
L_IN1=1;
R_IN0=1;
R_IN1=0;
t++;
if(t>=100)t=0;
if(t<50)R_EN=1;
elseR_EN=0;
if(t<50)L_EN=1;
elseL_EN=0;
}
voidbackward(void)
{
R_IN0=1;
R_IN1=0;
L_IN0=1;
L_IN1=0;
t++;
if(t>=wide)t=0;
if(t elseR_EN=0; if(t elseL_EN=0; } voidcircle(void) { L_IN0=0; L_IN1=1; L_EN=1; R_IN0=1; R_IN1=0; R_EN=1; } voidavoid(void) { while (1) { if(IL==1&&IR==1) forward(); elseif(IR==1&&IL==0) turnright_big(); elseif(IL==1&&IR==0) turnleft_big(); elsecircle(); } } voidmain() { if(ctrl==0) blacktrace(); else avoid(); } 四、竞赛中遇到的问题: 1、未能实现寻光的功能。 2、寻找出口的设计中未用到超声波传感器,导致寻找出口的方案设计不是很合理,所需时间较长且偶然性太大。 3、线路排布不是很合理,导致线路较混乱。 五、总结 这次参加电子设计竞赛是对我们综合能力的一个考验,是对以往学过的模电,数电,程序设计以及动手能力的综合应用。 包括获取资料的能力、理解前人思路的能力、系统设计能力、动手能力、分析排除故障能力、表达能力等很多方面,电子设计竞赛的赛制决定了上述能力缺一不可 同时,此次竞赛有利于我们团队精神的培养。 在竞赛中,三个人必须互相信任、互相配合、分工合作。 在顺境时小组成员要相互提醒保持冷静,逆境时要相互鼓励共度难关,出现问题时不能相互埋怨。 但是让人我们感到遗憾的是,由于对一下单片机和其他一些器件的熟悉程度不够以及时间上的局限性,导致部分问题无法解决,此次设计没有实现全部功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子设计 竞赛 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)