避障循迹智能小车设计大赛方案书_第1页
避障循迹智能小车设计大赛方案书_第2页
避障循迹智能小车设计大赛方案书_第3页
避障循迹智能小车设计大赛方案书_第4页
避障循迹智能小车设计大赛方案书_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、避障循迹智能小车方案书队名疾风PRO队长队员目录 摘要3第1章 设计要求与方案论证31.1 设计任务与要求31.2 设计方案论证41.3 设计原理5第2章 系统硬件电路设计62.1 系统总体设计62.2 模块设计分析7第3章 系统的软件设计分析123.1 总程序流程图123.2 程序子模块设计13第4章 调试与测试134.1 调试过程中遇到的问题与解决13第5章 小车实物图14第6章 结束语156.1 小组分工156.2 项目进度表156.1 心得16 参考文献附录 一(元件清单)附录 二(程序清单)摘要本课题是基于STC89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够避开赛道

2、上的两块挡板,并在之后自主识别黑色引导线且根据黑线走向实现快速稳定的寻线行驶。小车系统以STC89C52单片机为系统控制处理器;采用红外传感器获取挡板和赛道上黑线的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。第 1 章 任务及要求与方案论证1.1设计任务与要求1.1.1 设计并制作一个避障循迹小车,其行驶路线示意图如下:1.1.2 机器人从起点出发,在绕过两个挡板障碍物之后,自动寻找在地上的黑线,并能跟随黑线的轨迹行走顺利地到达终点。1.1.3 能显示机器人行驶的时间,里程,速度等其他功能。1.1.

3、4 机器人一旦启动后,不得人为干预其行驶,机器人须在8分钟内抵达终点,机器人冲进禁区,需重新从起点开始,时间累加,每支队伍有3次机会进行避障寻轨,取最短时间计入最终成绩,机器人长不小于15cm,宽不小于10cm1.2 设计方案论证1.2.1 单片机选择方案方案一:用可编程逻辑器件(PLD)实现。这种方案与前一种相比,可靠性增加,同时可以很好的完成避障的功能。但是循迹功能不能实现,而且这种方案只能选用数码管显示,显示的效果不够理想,无法很好的完成扩展功能的要求,系统的灵活性不够。 方案二:采用STC89C52单片机作为系统的控制核心。密码管理系统用I2C总线AT24C02来实现,温度感应用DS1

4、8B20来采样温度,利用PWM控制电机转速。由于使用了单片机,整个系统可编程,系统的灵活性大大增加了。另外,本方案可以方便的实现其他功能的扩展。 经过以上的比较论证,选用方案三来完成项目设计的要求。1.2.2 避障的选择 方案一:在避障模块中,选择超声波避障,优点是反应速度灵敏,距离远,受外界干扰小。但题目所要求的距离是20cm,如果利用超声波传感器进行避障的话,由于空间小声波在小空间不同方向里会进行多次反射,左右前后的传感器之间互相干扰,使控制中心不能明确判断出那个方向遇到了障碍物,从而动作絮乱,不能实现要求。 方案二:使用红外接收头和发射管(反射头能反射)配合,利用38K频率解决灵敏度问题

5、。38K调制和发射电路。使用一个定时器的快速PWM模式产生38K调制信号,通过剩余的四个施密特触发器缓冲,推动8050三极管和红外发光管发射已经调制的红外线。期中2个N148接单片机IO脚控制左右红外发光管轮流发射。后面串接的可见光LED是为了方便用户调试而设置的,让用户知道当前是否在发射红外线。通过调节PWM的占空比,调节红外发光管的亮度,从而实现调节感知障碍物距离的功能。经过以上的比较论证,选用方案三来完成项目设计的要求。1.2.3 显示模块的选择 方案一:使用多个数码管显示。LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点。但是由于它工作电流

6、较大、不能显示汉字,显示的信息量有限,若在此题目中应用就会受到很大的限制。 方案二:采用液晶显示。液晶特别是具有字母显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息量丰富且直观易懂。而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。系统采用方案二,设计选用LCD1602液晶显示模块。1.2.4 电机模块的选择 方案一:采用步进电机,由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。但其输出力矩低,控制复杂,质量较重。方案二:采用直流电机,其控制比较简单,可以通过调节方波占空比来实现P

7、WM调速,缺点需外加传感器实现路程的计算。基于以上分析,我们选用了直流电机。1.3 设计原理1.3.1 避障原理:避障传感器我们选择光电漫反射开关,是当开关发射光束时,目标产生漫反射,发射器和接收器构成单个的标准部件,当光电开关有足够的组合光返回接收器时,开关状态发生变化,从而一起输出端电平的变化,继而利用电平进行障碍物判断。1.3.2 循迹原理:这里的循迹是指小车在白色地板上循黑线行走,由于黑线和白色地板对光线的反射系数不同,可以根据接收到的反射光的强弱来判断“道路”。通常采取的方法是红外探测法。红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地

8、面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限。1.3.3 测速原理:这里我们采用光电码盘来测速,码盘圆周上有等分等宽的透光条码和遮光条码,通过采到的脉冲来进行转速与电信号的转换。码盘与车轮同轴,置于光电对管之间,当车轮转动时,条码就可以交替的透光和遮光,从而产生一连串脉冲电压信号。第 2 章 系统硬件电路设计2.1系统总体设计 系统硬件结构框图2.2模块设计分析2.2.1避障传感器模块漫反射光电开关是一种

9、集发射器和接收器于一体的传感器,当有被检测物体经过时,将光电开关发射器发射的足够量的光线反射到接收器,于是光电开关就产生了开关信号。漫反射开关检测原理图我们所选择的漫反射关电开关的检测距离可达30cm,其抗干扰的能力强,可进行可靠的避障。2.2.2循迹传感器模块反射式光电传感器是经常使用的传感器。我们采用的红外发射接收管对价格便宜、体积小、使用方便、质量可靠、用途广泛。在黑线检测的测试中,若检测到白色区域,发射管发射的红外线没有反射到接收管,测量接收管的电压为48V ,若检测到黑色区域,接收管接受到发射管发射的红外线,所得电压也就随之发生变化,测的接收管的电压为0V,测试基本满足要求。循迹模块

10、如图2-3所示:图2-3 传感器的安装:正确选择检测方法和传感器件是决定循迹效果的重要因素,而且正确的器件安装方法也是循迹电路好坏的一个重要因素。从简单、方便、可靠等角度出发,同时在底盘装设4个红外探测头,进行两级方向纠正控制,将大大提高其循迹的可靠性,具体位置分布如图3所示。 图3 红外探头的分布图图中四个光电传感器同在一个水平线上,其中2与3光电传感器位于靠近黑色轨迹左右边,来控制微小转弯,1和4位于远离黑线,用于检测道路分支、大角度转弯等,这是考虑到如果转弯角过大,小车即使刹车,也会由于惯性过大偏离轨道,由于加入了x2和y2这两个光电传感器,可以提前预知小车即将转弯的幅度,从而更好控制小

11、车转弯,提高了小车循迹的可靠性。2.2.3控制器模块89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。且具有PWM输出功能,更便于控制小车的车速及转向。其基本模块最小系统电路如图2-4所示图2-4 2.2.4电机驱动模块驱动模块采用专用芯片L298N 作为电机驱

12、动芯片,L298N 是一个具有高电压大电流的全桥驱动芯片,其响应频率高,一片L298N可以分别控制两个直流电机。以下为L298N的引脚图(图3-1)和输入输出关系表(表1)。其中,系统电机驱动模块电路如图2-5: 图3-1 L298N外部引脚 表1 L298N输入输出关系图2-5 电机驱动模块2.2.5电机模块对于电机模块,我们考虑了两种方案,一种是步进电机,另外一种是直流电机。下面对比一下两种电机的优缺点。1) 采用步进电机,由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。但其输出力矩低,控制复杂,质量较重。2) 采用直流电机,其控制比较简单,可以通过调节方波占空比来实

13、现PWM调速,缺点需外加传感器实现路程的计算。基于以上分析,我们选用了直流电机。2.2.7显示模块采用LCD1602作为显示器件,1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,板面能够同时显示16x02即32个字符。(16列2行)。上行可用于显示小车速度,下行可用于显示小车行驶过的路程。LCD1602实物图如下: 2.2.6.电源模块对于电源模块,我们采用双电源,把单片机的供电和驱动电路分开来,确保单片机控制部分和电机驱动的部分的电压不会互相影响。这样有助于消除电机干扰,提

14、高系统的稳定性。2.2.7总结综合利用以上各个模块可实现小车避障、循迹、显示速度、路程,记录道路信息等功能,我们采用物尽所用的原则,考虑到89c52的资源情况,基本上把mcu控制芯片的所有资源充分利用起来,资源分配如图 2-7所示: 第 3 章 系统的软件设计分析3.1总程序框架图3.2红外循迹模块程序框架图第 4 章 调试与测试4.1调试过程中遇到的问题与解决在小车调试的过程中,我们遇到了若干问题,诸如如何让小车走直线,如何让小车执行精确90度转弯,这是在避障部分所遇到的比较棘手的问题,而在循迹部分,虽能执行完任务,但却是以牺牲速度为代价的,所以在循迹部分,速度与准确性是一对矛盾,如何解决好

15、这个矛盾,是我们所面临的最大问题。基于以上的种种问题,我们提出种种解决方案。对于避障所遇到的问题,如走直线,我们引入了反馈程序,通过两个车轮速度的差,调节占空比,来平衡两个轮的速度,从而实现走直线。对于90度精确转弯,我们通过对码盘计路程,来实现比较精准的转弯,由于我们的码盘精度有限,故最后引人了2cm的误差,但在合理范围内。在循迹方面,我们同调节探头位置,增加探头,优化程序等步骤,不断地改善循迹,从而使其速度良好,精确度有保障。第 5 章 小车实物图小车实物图第 6 章 结束语 6.1 小组分工材料购买李宏楷电路图设计,电路仿真伍建辉程序编辑及软件仿真叶威棠功能调试模块面包板调试由李宏楷负责

16、,程序结合硬件由叶威棠负责,基本功能测试及现场测试由伍建辉负责电路板焊制,硬件制作欧阳灿论文撰写欧阳灿6.2 项目进度表日期项目进度2012年3月25日构思详细方案,制定具体制作计划,购买元件2011年3月26日开始设计避障、循迹、电机驱动、显示等电路,并仿真2011年3月28日完成电路设计及仿真,开始焊制电路,先完成小车循迹探测电路,再完成超声波避障电路,然后安装显示模块和电机模块,最后进行整体组合。2011年4月1日基本完成硬件制作,开始程序编写,同时进行程序结合硬件的调试,并不断进行硬件调整。2011年4月6日完成编程,进行测试能实现基本功能。2011年4月7日参加中段测评,对比其他队伍

17、,进行系统改进2011年4月10日完善程序及硬件,开始撰写论文2011年4月12日调试至最佳,寻找不足,优化工程,最后完成论文。2011年4月14日参加决赛6.3 心得感悟此次单片机比赛让我们学到了很多东西,深深体会到学习的乐趣,也深刻的意思到团队合作的重要性,以及分工的重要性。我们每一个组员认真的负责属于自己的部分,互相帮助,相互提高。遇到困难,也从未气馁,而是认真分析,寻找途径,解决问题。经过此次,大家都收获了不少知识,这是对我们的极大鼓励。 参考文献1李建忠.单片机原理及应用.西安电子科技大学出版 2006.02 2李朝青.单片机原理及接口技术.北京航空航天大学出版 2006.033余发

18、山.单片机原理及及应用技术.中国矿业大学出版社 2003.124杨凌霄.微型计算机原理及应用.中国矿业大学出版社 2004.085何立民.单片机应用技术选编.北京航空航天大学出版社 2000.086丁立军.基于超声波传感器与红外传感器的移动机器人感测系统研制 7周杏鹏.传感器与检测技术 清华大学出版社 2009.10附录一(元件清单)主要电子元件名称数量集成非门74ls042片超声波发射器和接收器2对电阻20K、22k、4.7k、200K、10k若干电容330P、1u、23.3u若干单片机stc89c521片液晶16021片电机驱动芯片L298N1片直流电机2个红外发射接收对管4对集成运放L3

19、39N4片I2C总线芯片24c021片稳压电源芯片LM8051片稳压电源芯片lm3171片附录二(程序清单)#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define zhengzhuan aint0=bint0=1;aint1=bint1=0;#define fanzhuan aint0=bint0=0;aint1=bint1=1;#define stop aint0=bint0=aint1=bint1=1;#define youzhua

20、n bint1=1;aint0=1;aint1=0;bint0=1;#define zuozhuan bint1=0;aint0=1;aint1=1;bint0=1;sbit rs=P26;sbit e=P27;sbit pwma=P10;sbit pwmb=P11;sbit aint0=P12;sbit aint1=P13;sbit bint0=P14;sbit bint1=P15;sbit hw5=P24;sbit hw4=P23;sbit hw3=P22;sbit hw2=P21;sbit hw1=P20;sbit guangdian1=P25;sbit guangdian2=P16;s

21、bit guangdian3=P17;uchar code number="0123456789" /10位,包括空格uchar count,tcount,tiaojie,zkba,zkbb,bjzkb,temp,qian5,qian3,qian2,hwbl4,hwbl1,hwbl3,hwbl2,hwbl5,num,in,out;uint i,distance,path1,path2,speed;long way,way2;void delay(uint x);void init();void write_com(uchar com);void write_dat(ucha

22、r dat);void lcd_display();void zhixiantiaozheng();void zhuanwantiaozheng();void zhijiaotiaozheng();void jiance();void zhixian();void zhuanwan();void zhijiao();void bizhang();void ting();void zuo_zhizhuan();void you_zhizhuan();void run();void back();void diyizuo_zhizhuan();void diyiyou_zhizhuan();voi

23、d dierzuo_zhizhuan();void dieryou_zhizhuan();void jiehe();void jieherun();void xunji_zuoguai();void xunji_youguai();void main()init(); bizhang();jiehe();while(1) jiance();void diyiyou_zhizhuan() path1=0;/zuozhuan;/zhengzhuanpwma=pwmb=0;while(path1<=14)pwma=0;pwmb=0;pwma=1;pwmb=0;pwma=0;pwmb=0;pwm

24、a=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=1;pwmb=0; pwma=1;pwmb=0;pwma=1;pwmb=0;pwma=1;pwmb=0; /*if(guangdian2=0)delay(1);if(guangdian2=0) break; */ path1=0; void dieryou_zhizhuan() path1=0;/zuozhuan;/zhengzhuanpwma=pwmb=0;while(path1<=16)pwma=0;pwmb=0;pwma=1;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=0;

25、pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=1;pwmb=0; pwma=1;pwmb=0;pwma=1;pwmb=0;pwma=1;pwmb=0;path1=0; void dierzuo_zhizhuan() path2=0;/zuozhuan;/zhengzhuanpwma=pwmb=0;while(path2<=20)pwma=0;pwmb=0;pwma=0;pwmb=1;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=1;pwma=0;pwmb=1; pwma=0;pw

26、mb=1;pwma=0;pwmb=1; if(guangdian3=0)delay(1);if(guangdian3=0) break;path2=0; void diyizuo_zhizhuan() path2=0;/zuozhuan;/zhengzhuanpwma=pwmb=0;while(path2<=12)pwma=0;pwmb=0;pwma=0;pwmb=1;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=1;pwma=0;pwmb=1; pwma=0;pwmb=1;pwma=0;pwmb=

27、1;path2=0; void delay(uint x)uint a,b;for(a=x;a>0;a-)for(b=250;b>0;b-);void init()pwma=0;pwmb=0;TMOD=0x51;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;TR0=1; e=0;delay(1);write_com(0x38);delay(1);write_com(0x38);delay(1);write_com(0x38);delay(1);write_com(0x0c

28、); /开显示,设置光标不闪烁delay(1);write_com(0x06); /光标移动设置delay(1);write_com(0x01); /清屏delay(1);write_com(0x80);delay(1);write_dat('v');delay(1);write_dat(':');delay(1);write_com(0x80+7); /换写入位置delay(1);write_dat('c');delay(1);write_dat('m');delay(1);write_dat('/');dela

29、y(1);write_dat('s');delay(1);write_com(0xc0); /换行开始显示路程delay(1);write_dat('s');delay(1);write_dat(':');delay(1);write_com(0xc0+8); /换写入位置delay(1);write_dat('c');delay(1);write_dat('m');delay(1);speed=distance=way=way2=bjzkb=num=in=out=0;lcd_display();tiaojie=1

30、;delay(500);void write_com(uchar com)rs=0;delay(1);e=1;delay(1);P0=com;delay(1);e=0;void write_dat(uchar dat)rs=1;delay(1);e=1;delay(1);P0=dat;delay(1);e=0;void lcd_display()write_com(0x80+3); /换写入位置delay(1);write_dat(numberspeed/100);delay(1);write_dat(number(speed/10)%10);delay(1);write_dat(number

31、speed%10);delay(1);write_com(0xc0+3); /换行开始显示路程delay(1);write_dat(numberdistance/1000);delay(1);write_dat(number(distance/100)%10);delay(1);write_dat(number(distance%100)/10);delay(1);write_dat(numberdistance%10);delay(1);void jiance()hw1=hw2=hw3=hw4=hw5=1;temp=P2;temp&=0x1f;hwbl5=(temp&0x10

32、)>>4;hwbl4=(temp&0x08)>>3;hwbl3=(temp&0x04)>>2;hwbl2=(temp&0x02)>>1;hwbl1=temp&0x01;/if(hwbl5=0)/if(hwbl1=1|hwbl2=1)xunji_youguai();else if(hwbl4=1|hwbl3=1)xunji_zuoguai();else jieherun(); /run();/else/jieherun();/void xunji_zuoguai()pwma=pwmb=0;while(1)pwma=0

33、;pwmb=0;pwma=0;pwmb=1;/pwma=0;pwmb=0;pwma=1;pwmb=1;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=0;pwma=0;pwmb=1;pwma=0;pwmb=1; pwma=0;pwmb=1;pwma=0;pwmb=1; if(hw2=1) break;void xunji_youguai() pwma=pwmb=0;while(1)pwma=0;pwmb=0;pwma=1;pwmb=0;pwma=0;pwmb=0;/pwma=0;pwmb=0;pwma=1;pwmb=1;pwma=0;pwmb=0;pwma=0;

34、pwmb=0;pwma=1;pwmb=0; pwma=1;pwmb=0;pwma=1;pwmb=0;pwma=1;pwmb=0; if(hw3=1) break; void bizhang()while(1)if(guangdian1=0)delay(5);if(guangdian1=0) break;run();ting();diyiyou_zhizhuan();ting();while(1)if(guangdian2=1)delay(5);if(guangdian2=1) break;run();ting();diyizuo_zhizhuan();ting();while(1)if(guangdian1=0)delay(5);if(guangdian1=0) break;run();ting();dierzuo_zhizhuan();ting();while(1)if(guangdian3=1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论