1、智能小车设计报告摘要:随着智能限制技术和检测传感技术的飞速发展,智能小车在工业生产和家庭生活中得到了广泛应用。智能小车限制系统采纳STC89C52单片机作为检测和限制核心,运用反射式红外光电传感器检测路面的标记线,采纳红外蔽障传感器限制两车之间的距离。小车驱动采纳前轮双驱动,利用减速直流电机限制小车的转向和速度。通过不断对单片机I/O口进行扫描来监测传感器的状态,依据监测数据限制两辆小车循线、转弯、交换速度和切道等动作,最终实现两小车按预定轨道行驶,并在规定区域超车的功能。系统相当于一个简洁的车辆自动驾驶系统,经进一步改进后可应用在智能交通和无人探测等方面。关键字:智能小车;单片机;传感器;减
2、速直流电机;循线书目1方案论证与比较-1-1.1 总体方案设计与比较-1-1.2 电机的比较与选择-2-1.3 电机驱动模块的比较与选择-2-2理论分析与计算-3-2. 1信号检测与限制-3-转弯与前进信号的检测与限制-3-加速减速(超车)信号的检测与限制-4-发挥部分切换跑道交换速度信号的检测与限制-4-2. 2两车之间的通信方法-5-2.3关于节能的设计-6-3电路与程序设计-6-3. 1电路设计-6-单片机最小系统-6-电机驱动模块-6-循线模块-7-两车通信模块-8-5. 2程序设计-8-程序流程图-8-源程序-9-4系统测试-9-6. 1测试方法-9-小车转弯的测试方案与测试条件-9
3、顺当超车的测试方案与测试条件-9-发挥部分换道与速度交换测试方案与测试条件-9-4.2测试结果-10-5结论-10-参考文献-10-附录-11-1方案论证与比较1.l总体方案设计与比较方案一:采纳STC89C52单片机作为整机的限制单元。以STC89C52单片机为核心的限制电路,采纳模块化的设计方案,运用反射式红外光电检测传感器、红外蔽障传感器组成不同的检测电路,实现小车在行驶中转弯、加速、减速、超车等问题。并将测量数据传送至单片机进行处理,然后由单片机依据所检测的各种数据实现对电动小车的智能化限制。在本系统中,(1)小车左侧反射式红外光电传感器检测板的内边界线,然后将信号传送到单片机系统进
4、行处理,使行驶在后方的小车沿板的内边界线自主行走,从而使小车走完整个赛道;单片机通过检测小车左侧光电传感器的输出信号,确定汽车是否过于接近跑道左侧挡板,从而发出电机驱动信号,对汽车运动方向实现转弯与纠偏,避开跑出赛道。(2)小车右侧的反射式红外光电传感器检测板的外边界线,使行驶在前方的车小车沿板的外边界线自主行走,并且可避开小车从右侧掉下赛道。(3)小车正前方的反射式红外光电传感器检测小车通过的黑线的条数,从而限制两辆小车在正常行驶、超车时分别行使在不同的赛道。并且可限制行驶在前边的小车何时减速以便后边的车能顺当超过。并且在发挥部分检测标记线,实现发挥部分的交替超车与领跑。(4)小车前方的红外
5、蔽障传感器信号用作两车之间的通信信号,在超车部分,若小车甲检测到前方已超过它的乙车,甲车便加速前进。缩短完成整个赛道的时间。电源模块ATC89C52速度限制模块图1智能小车运行基本原理图框图方案二:采纳STC89C52单片机作为整机的限制单元,转弯、加速、减速、超车全部用软件来实现利用赛道上的标记线,通过单片机识别标记线,编程让其在转弯标记线处延时后转弯,在超车部分,对标记线的条数进行计数,计够条数后进行超车处理。由于此种方案不定因素许多,比如说电池电量不断减小,小车速度越来越慢,这样延时不精确便很简洁掉出赛道,并且别的功能也很难限制。方案三:选用一片CPLD作为系统的核心部件,实现限制与处理
6、的功能。CPLD具有速度快、编程简洁、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。但CPLD在限制上较单片机有较大的劣势。同时,CPLD的处理速度特别快,而小车的行进速度不行能太高,若采纳该方案,必将在限制上遇到许多不必要增加的难题综合考虑了传感器、电机的驱动等诸多因素,方案一简洁、敏捷、可扩展性好,并且我们对单片机驾驭的比较好,且能达到题目的设计要求,因此本设计采纳方案一来实现,充分利用STC89C52的单片机资源。1.2电机的比较与选择方案一:采纳步进电机。步进电机的一个显著特点就是具有快速启停实力,假如负荷不超过步进电机所能供应的动态转矩值,就能够马上使步进电机启动或反转
7、另一个显著特点是转换精度高,正转反转限制敏捷。方案二:采纳减速直流电机。直流电动具有优良的调速特性,调速平滑、便利,调整范围广;过载实力强,能承受常见的冲击负载,可实现常见的无级快速启动、制动和反转;能满意生产过程自动化系统各种不同的特别运行要求。由于一般直流电机更易于购买,并且电路相对简洁,所以采纳直流电机作为动力源。1.3电机驱动模块的比较与选择电机驱动模块的主要作用是限制小车的正转、前进、加速、减速、转弯和停车。由以下方案:方案一:采纳电阻网络或数字电位器调整电动机的分压。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵,且可能存在干扰。最重要的问题是,一般电动机的电阻很小
8、电流很大,分压不仅降低效率,而且难以实现。方案二:采纳继电器对电动机的开或关进行限制。这个电路的优点是电路较为简洁,缺点是继电器的响应时间长,易损坏,寿命较短,牢靠性不高。方案三:采纳由达林顿管组成的H型PWM电路。PWM电路由四个大功率晶体管组成H桥式电路构成,四个晶体管分为两组,交替导通和截止,用单片机限制达林顿管使之工作在开关状态,依据调整输入限制脉冲的占空比,精确调整电动机转速。这种电路由于管子工作只有饱和和截止状态下,效率特别高。但是H型PWM电路必须要用分立元件搭起来,所以比较麻烦。方案四:采纳直流电机专用驱动芯片L298。1.298作为驱动的原理与H型PWM电路相同,只是将这些
9、分立元件集成在一块芯片内部,便利适用。从硬件和电路的工作量,以及成本考虑,选择方案四。2理论分析与计算2.1 信号检测与限制2.1.1 转弯与前进信号的检测与限制依据题目要求,我们设计后边的小车正常状况下沿赛道内外边沿行驶,在车左侧装3个红外对管,车沿轨道,向左偏离轨道,向右偏离轨道时通过单片机识别比较器输出端经过编码的信号限制两个电机便可实现后边小车的转弯与前进。前边的小车正常状况下沿赛道外边沿行驶,在车右侧装两个红外对管,车沿轨道,向左偏离轨道,向右偏离轨道时通过单片机识别比较器输出端经过编码的信号限制两个电机便可实现前边小车的转弯与前进。沿赛道内侧行走时,由于转弯处角度有锐角、钝角、直角
10、依据三个红外对管分别是否检测到反射信号,并将信号通过比较器后编码,经分析可能出现的状况如下:(1) 000:偏左右转(2) 001:偏左右转(3) 010:不存在(4) 011:偏右左转(5) 100:不存在(6) 101:由于在转锐角弯时,车干脆转弯会掉到赛道外,所以让前进肯定时间后左转(7) 110:不存在(8) 111:偏右左转沿赛道外侧行走时,转弯处角度只有直角,依据两个红外对管分别是否检测到反射信号,并将信号通过比较器后编码,经分析可能出现的状况如下:(1) 00:偏右左转(2) 01:偏右左转(3) 10:前进(4) 11:偏左右转4.1. 2加速减速(超车)信号的检测与限制小车
11、正前方光电传感器检测经过标记线的条数,在到达超车区域前,总共经过8条标记线,通过单片机计数,计数值到8,前边小车延时肯定时间后停止,等待后边的车超过。小车正前方蔽障传感器检测到后车跑到它前边,便延时肯定时间后加速,并顺当通过整个赛道。2.1.3发挥部分一一切换跑道交换速度信号的检测与限制发挥部分换道与交换 速度标记J终点标志线行车道40cn240 cm. 前进方向转弯标志线转弯标志线与交图2赛道图形发挥部分要完成甲车追乙车必需进行精确换道与交换速度,如图2所示,两个箭头所指标记线分别为两辆小车的换道与交换速度标记,小车正前方的红外对管通过计标记线条数检测这两道标记,以完成精确换道与交换速度。2
12、2两车之间的通信方法两车通信通过红外蔽障传感器实现,两车通信出现在超车过程中,当后车超过前车时,被超过的前车通过红外蔽障传感器检测到后车跑到它前边,利用单片机延时肯定时间后加速,以便顺当通过整个赛道。红外蔽障传感器的灵敏度要能很好的限制,否则极易受到干扰,会把别的物体检测成另一辆小车。2.3关于节能的设计经反复试验与检测小车行进时的功率很小,并且我们小车前端伸出的传感器模块全部用废旧的电路板焊接拼制而成,不仅制成了我们所须要的形态,而且达到节能的目的。电源部分我们选择可充电电池,可以反复利用,达到节能环保目的。3电路与程序设计3.1 电路设计3.1.1 单片机最小系统图3单片机最小系统原理图图
13、3为单片机最小系统,包括单片机晶振与复位电路。3.1.2电机驱动模块竿电机驱动模块O;1314图4电动机驱动模块原理图E电机驱动模块采纳双电源对单片机和减速电机单独供电,从面使电机流畅运转,采纳了光耦隔离模块,减小了限制电路对L298模块产生的干扰。L298集成模块可以单独限制两个电机的正反转,采纳PWM对ENAzENB使能端进行调制从而对电机速度进行限制。用单片机的四个I/O口限制两路电机的四个输入端,从而限制电机的转向、前进、停止。L298真值表如下:ENINlIN2电机状态ENINlIN2电机状态OXX停止11O倒转1OO停止111急刹1O1正转3.1.3循线模块循线模块的电路原理图如下
14、图所示,其中LM339集成块内部装有四个独立的电压比较器,类似于增益不行调的运算放大器,每个比较器有两个输入端和一个输出端。两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“一”表示,用作比较两个电压时,随意一个输入端加一个固定电压做参考电压(也称门限电压),另一端加一个待比较的信号电压。当端电压高于“一”端时,输出管截止,相当于输出端开路。当“一”端电压高于端时,输出管饱和,相当于输出端接低电位。Rl,R3,R5为限流电阻,R2,R4,R6为上拉电阻,红外对管的放射二极管放射出的红外线若接受二极管可以接收到,Tl,T2,T3输出低电平,否则输出高电平,Tl,T2,T3接到
15、比较器反和输入端,假如比门限电压低,OUT输出高电平;假如比门限电压高OUT输出0。这样依据OUTl,0UT2,OUT3输出的凹凸电平进行编码,便可限制小车左转、右转前进,放射二极管放射出的红外线照到黑线或距离反射物很远时不反射,对应的接收二极管接收不到;没照到时被反射,对应的接收二极管接收到。小车右侧两个红外对管和正前方的红外对管的工作原理跟左侧的三个红外对管工作原理一样。图5循线模块原理图Rkr OLn.3OkJT一O(JT21.1. 4两车通信模块两车通信通过红外蔽障传感器实现,两车通信出现在超车过程中,当后车超过前车时,被超过的前车通过红外蔽障传感器检测到后车跑到它前边,便延时肯定时间
16、后加速,并顺当通过整个赛道。3. 2程序设计4. 2.1程序流程图源程序见附录部分。4系统测试4.1. 测试方法4.1.1小车转弯的测试方案与测试条件小车沿内圈走时分别检测其通过锐角、直角、钝角时的状况,不断调整传感器的位置,修改程序,调整其延时时间,调整电机速度,直到通过全部弯为止。检测要在不同的电压条件下进行,这样便可以对更多的状况进行提前的把握。4.1.2顺当超车的测试方案与测试条件前边小车到达超车区域后,每次检测停的位置不一样,不断检测,不断调整其延时的时间,直到其停在最佳位置。当其被后面车追上后,其起先走的时间也要不断调整,走的太早会遇到另一辆车,走的太晚检测不到另一辆车已追上它,会
17、始终停在原地不动。4. 1.3发挥部分换道与速度交换测试方案与测试条件检测换道与交换速度要精确对赛道上的标记线进行计数,测试时,有时计标记线条数不准,这就须要多此进行模拟检测,以便检测到是软件的问题还是硬件的问题。5. 2测试结果测试沿内赛道行进时,转过锐角便转不过钝角,变更传感器位置后,两种弯道都能顺当跑过。测试超车环节时,前边的小车停的位置随着延时时间长短停的位置不一样,对软件进行不断优化最终让小车位置合适,精确进行超车。经反复测试并调试软硬件后,发挥部分也能正常完成。5结论我们的作品完成了基本功能及发挥部分的功能,两辆小车第一圈分别跑一圈后,其次圈两辆车一前一后并且在超车区域胜利超车,后
18、车超过前车后,当前车通过两车通信模块检测到被后车超过后便加速跑过剩余路程。在乙车超过甲车后,两辆小车换道并交换速度,实现其次次甲车超乙车,并能交替进行,达到题目要求的基本部分和发挥部分。整个系统也有不足之处,车子前边加的传感模块不对称,力矩不同导致小车前进时不稳,还须要加改,另外两辆小车的速度也还有提升的空间。参考文献口张红润,智能技术一一系统设计与开发,北京航空航天出版社,2024.22温志明,运动限制系统分析与应用,国防工业出版社,2024.23杨刚,电子系统设计与实践,电子工业出版社,2024.34何希才,新型好用电子电路400例,电子工业出版社,2000.85陈伯时,电力拖动自动限制系
19、统,其次版,北京:机械工业出版社,2000.66刘少强,传感器设计与应用实例,中国电力出版社,2024.3附录includeinclude#defineucharunsignedchar#defineuintunsignedint*sbitinl=POO;sbiti2=P0l;sbiti3=PO2;sbitin4=P03;P3”用来测避障P3M用来计黑线条数;*/ucharnumnum计黑线条数uintcount;CoUnt用来计时sbitena=P04;sbitenb=P05;Sbitflag=P3八0;用来检测档位1沿外圈,O沿内圈sbitp32=P32;sbitp33=P33;sbitp
20、34=P3M;用来检测档位bitflagl=O;用来检测前车是否可以接着行驶;voiddelay(uintz);voidxj_nei();voidxj_wai();voidinit();voiddelay_us(uintz);voidmain()if(p34=l)delay;if(p34=l)while(l)Lwai();)else(iit();fag=l;if(fag=l)delay;if(fag=l)EXO=1;while(l)XLWai();if(num=5)TRO=1;EXO=O;num=0;while(count0;x-)for(y=115;y0;y-);)voiddelay_us(
21、uintz)uintxzy;for(x=z;x0;x-)for(y=100;y0;y-);)voidxj_nei()uchara;a=P2&0x07;switch(a)(CaseOxOO:P0=0xfb;ena=0;enb=0;delay_us(16);ena=l;enb=l;delay_us(10);break;/ffiS右转case0x01:P0=0xfa;ena=0;enb=0;delay_us(16);ena=l;enb=l;delay_us(10);break;/SiS/caseOXo2:delay(10);Po=OXfe;break;偏右左转case0x03:P0=0xfe;ena
22、0;enb=0;delay_us(16);ena=l;enb=l;delay_us(10);break;偏右,左转/case0x04:case0x05:P0=0xfa;delay(1200);P0=0xfe;break;/135度,左转case0x07:PO=Oxfejbreak;偏右,左转voidxj_wai()ucharb;b=Pl&OxO3;switch(b)CaSeOXO0:PO=OXfe;break;偏右,左转caseOXoLPo=Oxfa;break;前进/case0x02:PO=OXfe;break;不存在case0x03:Po=OXfb;break;偏左,右转)voidex_0()interrupt0EXO=O;delay(20);if(p32=0)(while(!p32);delay(10);num+;)EXO=1;)voidex_l()interrupt2EXl=O;delay(20);if(p33=0)(while(p33=0);fagl=l;delay(2000);ena=l;enb=l;)voidtime()interrupt1TH0=(65536-50000)256;TH0=(65536-50000)%256;count+;