1、湖南电气竞赛设计报告竞赛课题:自动往返电动小汽车 学生姓名:罗建龙、熊尚德、唐远钢 指导老师:彭勇、罗胜华 摘要本设计是:自动往返电动小汽车,采用 AT89S51 单片机来控制小汽车的前进、后退和限速,该芯片通过数码管还可以显示往返的时间和经过黑线的次数,也可以显示行驶的路程,利用传感器来检测是否到达限速区,在用单片机的 pwm来调速,该设计不需要无线和有线遥控的控制,全部通过软件控制,自动往返小汽车是未来发展的趋势,环保又安全,满足社会的发展。关键字:AT89S51;PWM;软件控制;传感器ABSTRACT This design is:Automatically go back and f
2、orth a dynamoelectric small autocar, the adoption AT89 S51 unipole slab machine to control precession, countermarch and limit of small autocar soon, the chip approval figures tube can also display to go back and forth of the number of times in time and process black wire . May also demonstrate that
3、the travel the distance, using the sensor examines whether to arrive at the regulating area, is using monolithic integrated circuits pwm to modulate velocity, this design does not need wireless and the wired remote control control, through the software control, travels between the compact car is aut
4、omatically completely the tendency which the future will develop, the environmental protection is also safe, satisfies social the development. Key words:AT89S51;PWM;The software controls;Spread a feeling machine目 录1 系统方案的选择与论证 .81.1 单片机的选择: 81.2 显示器选择: 81.3 电机制动 81.4 地面黑线检测模块 92 系统原理框图 .102.1 显示模块 1
5、02.2 电机调速 112.3 电机驱动 112.4 跑道标志检测 113 软件流程 .113.1 主程序流程 113.2 计时子程序流 123.3 路程速度检测子程序 134 总结 .145 元件清单 .156 参考文献 .167 附录 .177.1 主程序 177.2 电路原理图: 227.3 PCB 板图: .235自动往返电动小汽车一、任务设计并制作一个能自动往返于起跑线与终点线间的小汽车。允许用玩具汽车改装,但不能用人工遥控(包括有线和无线遥控)。跑道宽度 0.5m,表面贴有白纸,两侧有挡板,挡板与地面垂直,其高度不低于20cm。在跑道的 B、C、D 、E 、F、G 各点处画有 2c
6、m 宽的黑线,各段的长度如图 1。 二、要求1基本要求(1)车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点线后停留 10 秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开关开始计时)。(2)到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差的测量值)。(3)DE 间为限速区,车辆往返均要求以低速通过,通过时间不得少于 8 秒,但不允许在限速区内停车。2发挥部分(1)自动记录、显示一次往返时间(记录显示装置要求安装在车上)。(2)自动记录、显示行驶距离(记录显示装置要求安装在车上)。(3)其
7、它特色与创新。6三、评分标准项目与指标 满分 设计与总结报告:方案比较、设计与论证,理论分析与计算,电路图及有关设计文件,测试方法与仪器,测试数据及测试结果分析。50 基本 要求 实际制作完成情况 50 完成第(1)项 15 完成第(2)项 25 发挥 部分 完成第(3)项 10 四、说明(1)不允许在跑道内外区域另外设置任何标志或检测装置。(2)车辆(含在车体上附加的任何装置)外围尺寸的限制:长度35 cm,宽度15cm。(3)必须在车身顶部明显标出车辆中心点位置,即横向与纵向两条中心线的交点。71 系统方案的选择与论证1.1 单片机的选择:【方案一】选择 AT89S51 单片机该芯片 I/
8、O 口多,能够达到控制电动小汽车前进、后退和调速的要求,价格相对便宜,在此非常合适,又不浪费其它资源。【方案二】选择 AVR 单片机该芯片是 ATMEL 公司研制开发的一种新型单片机,运行速度快,内部资源丰富,驱动能力强,具备多种独立的时钟分频器,在这应用显得有点浪费资源 。【方案三】选择 STC12C5404AD 单片机STC12C5410AD 系列及STC12C2052AD 系列单片机是宏晶科技生产的单时/ 机器周期(1T)的单片机,是高速/ 低功耗/ 超强抗干扰的新一代8051 单片机,指令代码完全兼容传统8051,但速度快8-12 倍,内部集成MAX810 专用复位电路。4 路PWM,
9、8 路高速10 位A/D 转换,针对电机控制,强干扰场合。在此设计中我们不需要AD转换,用此芯片就有点浪费资源咯。经过方案之间的比较,本次设计采用方案一。1.2 显示器选择:【方案一】选择数码管数码管显示方便,价格便宜,非常常见,但占用的 I/O 口太多,还要借助74s373 有点不合算。【方案二】选择液晶显示屏液晶显示屏是现在发展的趋势,显示方便,更方便人机交流,但价格比较贵,而本设计只需显示时间和计数值,没有必要用液晶显示屏,有点大材小用。考虑到情况和题目要求,本设计采用方案一。1.3 电机制动【方案一】能耗制动在小车到达终点时,通过单片机控制继电器,从而将电阻接入,电机转速下降至零,实现
10、停车。此方案实现电路复杂。【方案二】反转制动在小车将到达终点时,在电机两端加一负电压,从而电机可快速停转。但此方案很难把握何时加这一负电压,比较难控制,而且,控制电路须再加一组,8比较复杂。【方案三】直接将电压降为零来制动在小车到达终点时,单片机输出控制信号,将电机驱动电路隔断,这样电机端电压为零,小车减速至零。通过车速及路程检测模块检测到的路程超调量,控制电机反转时间与速度,如此调节,最终将小车停靠在终点线。相比之下,方案三简单易行,易于控制,故采用此方案1.4 地面黑线检测模块利用光线照到地面发生反射,由于不同颜色反射系数不同来检测。由于白纸反射能力强,而黑线反射很弱,通过传感器接受到不同
11、的光信号,从而输出不同的电平,这样就可以检测出地面上的黑线。【方案一】由可见光发光二极管(如红色、绿色或黄色等)发射可见光,光敏二极管或光敏三极管作为接收器件。发光二极管反射可见光经地面反射到光敏二极管或三极管,光敏二(三)极管因反射的光强不同而呈现不同的电阻值,这样,在经过黑线时即可检测出。此方案简单,但易受外界光源的干扰,容易出错,检测不出黑线。【方案二】脉冲调制式发射接收装置采用脉冲发射与接收装置可以提高瞬时输出光强,提高抗干扰能力,还能节损能量。此方案最大的一个缺点是不易控制脉冲发射时间间隔,而黑线只有2cm 宽,容易跳过黑线而传感器检测不出来。这样就容易出错。【方案三】采用调制的光敏
12、电阻和发光管与比较器装置这样可以提高抗干扰能力,还能灵敏的检测到地面上的黑线,还能区别地面上的脏迹。经权衡,本设计采用方案三。92 系统原理框图AT89S51电机调速显示模块电机驱动跑道标志检测2.1 显示模块显示电动小汽车运行的时间和路程,反应出小汽车的速度与经过黑线的数量。102.2 电机调速单片机通过改变 PWN 来改变电机的转速,从而可以看出车子在限速区,还是在高速区,电机调速可以改变往返的时间,反应车子性能的好坏,更可以满足往返一次时间最短的要求。 2.3 电机驱动就是给电机一个电源,让电动机转起来,电机驱动可以通过单片机来控制,让单片机输出一个高电平就可驱动电机,电机调速也可以来驱
13、运电机。 2.4 跑道标志检测通过传感器来检测,给单片机一电平,让单片机处理。113 软件流程3.1 主程序流程分为三个子程序:计时,路程以及速度检测计算,黑线检测计数。均采用单片机内部中断完成。同时,运用单片机中的外部中断来检测路面上的黑线以及计数车轮转过的圈数。流程图如图 3-1:计时路程检测黑线检测开始路程显示时间显示图 3-1 主程序流程图123.2 计时子程序流进入跳出中断开中断计数判断小车是否停车否是133.3 路程速度检测子程序进入开中断中断跳出计算显示里程判断小车是否停车检测到黑线计数否是图 3-3 路程速度检测子程序144 总结本次课题是自动往返小汽车设计,主要通过 AT89
14、S51 单片机来控制小汽车的前进、后退与调速。通过传感器来检测黑线,来判断是在加速区还是在限速区,在给单片机一个信号,单片机通过高低电平来驱动电机,单片机通过 PWM 来改变电机的转速,从而达到改变速度的效果,单片机还可以通过数码管来显示自动往返的时间,还可以通过数码管来显示行驶的路程和经过黑线的数量,经过多次的调试,本次课题满足题目设计的基本要求,本车最大的特点:不要有线或无线的遥控来控制的返回,只要给电动小汽车提供电源,其他的功能全部可以通过单片机来实现,这样免去了原来玩具有线和无线控制的弊端,是现在玩具车发展的趋势,也可以用来发展公交车,可以替代有人驾驶,这样更加安全。这样自动往返的小汽
15、车是未来汽车发展的趋势。这车环保又安全,满足和响应了社会的发展需求。155 元件清单表 5-1名称 数量 名称 数量AT89S51 1 排线 174S373P 2 40 单片机座子 1自锁开关 2 1n4007 6电源座子 1 L7805 1LM324 1数码管 2电位器 2电容 5晶振 1166 参考文献1 全国大学生电子设计竞赛组委会.第五届全国大学生电子设计竞赛获奖作品选编. 北京:北京理工大学出版社,2003.2 张彦斌等 .凌阳十六位单片机原理及应用. 北京:北京航天航空大学出版社,2003.3 马志源.电力拖动系统.华中科技大学电力拖动讲义,2003.4 周予为等.检测技术. 华中
16、科技大学检测技术讲义,20035 陈坚.电力电子学 .北京:高等教育出版社,2002.6谢自美.电子线路设计 实验测试(第二版).武汉:华中理工出版社,2000.177 附录7.1 主程序#include“reg51.h“#include “intrins.h“#define uint unsigned int#define uchar unsigned charuchar led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3e,0x77,0x40,0x00,0x38;/10_V,A,-,熄灭,Lchar fen=0,miao=0;
17、/sbit run1=P13;sbit run2=P14;sbit run3=P15;sbit run4=P16;/sbit cgq_a=P12;sbit en1=P11;sbit en2=P10;bit f1=1;uchar d8,k_sum=0,cgq_num=1,pwm_count=0;uint t0_count=0,pwm1,pwm2,pwm3,pwm4;bit stop_time=1,stop_car=1;void delay(uint i); /延时 1MS18/void delay(uint i)/延时函数uint a,b;for(a=0;a=20) t0_count=0;mia
18、o+;if(miao=60)fen+;miao=0;if(fen=60)fen=0;else t0_count+;if(stop_car)if(pwm_count=10) pwm_count=0;else pwm_count+;if(pwm_count=pwm1) run1=0;else run1=1;/if(pwm_count=pwm2) run2=0;else run2=1;/if(pwm_count=pwm3) run3=0;19else run3=1;/if(pwm_count=pwm4) run4=0;else run4=1;/void chaizi()/拆字函数d0=cgq_num
19、/10;d1=cgq_num%10;d2=14;d3=fen/10;d4=fen%10;d5=12;d6=miao/10;d7=miao%10;void display()uchar i,s=0x01;for(i=0;i12) cgq_num=1;else cgq_num+;switch(cgq_num)case 1: pwm1=pwm3=10;pwm2=pwm4=0;stop_car=1;stop_time=1;break;case 2: pwm1=pwm3=10;pwm2=pwm4=0;stop_car=1;stop_time=1;break;case 3: pwm1=pwm3=5;pwm
20、2=pwm4=0;stop_car=1;stop_time=1;break;case 4: pwm1=pwm3=10;pwm2=pwm4=0;stop_car=1;stop_time=1;break;case 5: pwm1=pwm3=10;pwm2=pwm4=0;stop_car=1;stop_time=1;break;case 6: pwm1=pwm3=10;pwm2=pwm4=0;stop_car=1;stop_time=1;break;case 7: pwm1=pwm3=0;pwm2=pwm4=10;stop_car=1;stop_time=1;break;case 8: pwm1=p
21、wm3=0;pwm2=pwm4=10;stop_car=1;stop_time=1;break;case 9: pwm1=pwm3=0;pwm2=pwm4=10;stop_car=1;stop_time=1;break;21case 10: pwm1=pwm3=0;pwm2=pwm4=5;stop_car=1;stop_time=1;break;case 11: pwm1=pwm3=0;pwm2=pwm4=10;stop_car=1;stop_time=1;break;case 12: run1=0;run2=0;run3=0;run4=0;stop_time=0;break;chaizi();display();227.2 电路原理图:237.3 PCB 板图: