梁炯名自动往返小汽车设计论文_第1页
梁炯名自动往返小汽车设计论文_第2页
梁炯名自动往返小汽车设计论文_第3页
梁炯名自动往返小汽车设计论文_第4页
梁炯名自动往返小汽车设计论文_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、题目(自动往返小汽车) 完成日期: 2012 年 12 月 13日学 校: 中山市技师学院系别: 电子应用系专业名称: 电子技术应用学 生 姓 名: 梁炯名 刘贤 谢南南组 别: 基础组指导教师姓名、职称: 黄江 (教师) 目录 摘要 1 Abstract 2第一章 设计实验任务和要求 2 1.1 任务 31.2 要求 3第二章 设计方法与论证 42.1 总体设计方案 42.2 驱动模块 52.3 黑线检测模块 62.4 码盘测距设计 7第三章 系统理论分析与计算 83.1 单片机最小系统 93.3 黑线检测模块设计与实现 93.4 系统供电单元设计与实现 10 第四章 系统软件设计 11 4

2、.1 系统控制流程 114.2 系统电路图 11第五章 系统测试与结论 125.1 硬件测试 125.2 结论 13 5.3程序 13摘要 通过仔细的分析和论证,本电路系统可分为检测、驱动和显示模块,首先利用反射式光电传感器检测路面的黑线个数,将其传给控制模块,这里我们主控芯片采用的是STC89C52芯片,小车装载了红外壁障光电传感器,实时检测车身两侧黑线,单片机将根据实际情况来控制小车的驱动模块,精确的控制小车的转速。小车前行过程中所有信息包括检测黑线个数.。 关键词:PWM 黑线检测 STC89C52 Abstract Through the careful analysis and ar

3、gumentation .This circuit system can be divided into detection, drive, obstacle avoidance, driver and display module . First, the reflecting photoelectric sensor to test the pavement of the black line number, passing it on to control module .Here we master control chip USES is STC12C5A60S2 chip . A

4、load of infrared barrier and photoelectric sensor .Real-time detection body on both sides of the obstacles . SCM will according to actual condition to control the car driver module . In the process of car forward all information including detection line number,。Key words: PWM Line detection STC89C52

5、 第一章,设计实验任务和要求一、任务设计并制作一个能自动往返于起跑线与终点线间的小汽车。允许用玩具汽车改装,但不能用人工遥控(包括有线和无线遥控)。跑道宽度0.5m,表面贴有白纸,跑道用地面,贴上白纸。在跑道的B、C、D、E、F、G各点处画有2cm宽的黑线(用黑色电工胶布),各段的长度如图1所示。 1.2要求1基本要求(1)车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点线后停留10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开关开始计时)。(2)到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离

6、作为偏差的测量值)。(3)DE间为限速区,车辆往返均要求以低速通过,通过时间不得少于4秒,但不允许在限速区内停车。第2章 设计方法与论证方案一:本设计选用两块单片机(89C52 和 89C2051)作为自动往返小汽车的检测和控制核心。路面黑线检测使用反射式红外传感器,车速和距离检测使用断续式光电开关,利用PWM技术动态控制电动机的转速。基于这些完备而可靠的硬件设计,使用了一套独特的软件算法,实现了小车在限速和压线过程中的精确控制。本设计的主要特色 : 高效的H型PWM电路,提高电源利用率;  控制电路电源和电动机电源隔离,信号通过光电祸合器传输; 脉冲调制路面检测,超强纠错

7、,免受路面杂质干扰;  优化的软件算法,智能化的自动控制, 定位精确;后置式红、绿方向灯行驶状态一目了然。方框图如1-2所示。 图1-2 方案一方框图方案二:系统采用单片机AT89C51作为核心器件实现小车行驶的自动控制。控制过程是利用反射式光电检测器采集的数据,通过软件完成对小车在不同路段的行驶速度实时控制,用数码管实现对指定行程和所用时间显示,同时利用红外数据传输方式将在限速区、终点区和返回到起点区后的时间和距离数据向手持显示装置单相传送。键盘设置在小车中,对速度的控制调整更加方便、精确。方框图如1-3所示。数据采集1线标志检测数据采集2 圈数检测 单 片 机 A T 8 9 C

8、 5 1显示结果电动机控制红外发射键盘输入红外接收单 片 机 A T 8 9 C 5 1 速度、时间、里程显示键盘输入 图1-3 方案二方框图方案三:采里程检测STC89C52数码显示电机驱动电机调速跑道标志检测用单片机STC89C52作为系统的控制中心。电机采用饲服控制电机来驱动;检测电路采用红外对管来控制小车的快行,慢行,停止;用LCD1602液晶实现对指定行程和所用时间的显示。方框图如1-4所示。方案一,方案二材料较多。故选用方案三。2.2 电机控制模块为了实现电动小车对行走路径的准确定位和精确测量,可以考虑一下两种方案:方案一:采用饲服电机。饲服电机转动力矩大,体积小,重量轻,转配简单

9、,使用方便。方案二:采用步进电机。步进电机是数字控制电机,控制也比较简单,具有瞬时启动和急速停止的优越性,比较适合本系统控制精度高的特点。总上分析,但由于实际原材料考虑,本设计使用方案一。2.3、黑线检测模块图2.3 黑线检测模块方案一:使用发光二极管和光敏二极管。此方案缺点在于环境的其他光源对光敏二极管的工作产生很大的干扰,一旦外界光强改变,很可能造成误判和漏判,即使采用超高亮发光管可以降低一定的干扰,但这又增加额外的功耗。方案二:反射式红外发射接收管。此方案可以降低可见光的干扰,灵敏度高,同时其尺寸小、质量轻、价格也低廉。外围电路简单,安装起来方便,电源要求不高,用它作为近距离传感器是最理

10、想的。方案三:利用激光。此方案虽然抗干扰性强、可靠性高,但其缺点在于体积大、功耗大、价格高。一般用在要求场合非常高的场合,本系统采用方案二已经能够胜任,无须采用其它方案。2.4、码盘测距模块方案一:采用霍尔器件。该器件内部由一片霍尔金属板组成,当磁钢正对金属片时,由于霍尔效应,金属板发生横向导通,因此可在电机轴上安装固定有磁片的圆片,而将霍尔器件固定在距圆片上方1cm3的范围,通过对脉冲的记数来实现对速度的检测。方案二:采用码盘。由于该器件是沟槽结构,可以将其置于固定轴上,再在电机轴上安装圆片,均匀地固定多个遮光片,让其恰好通过沟槽,产生一个个脉冲。通过脉冲的计数实现对速度的检测。两种方案都是

11、可行性的转速检测方案。采用方案。第三章 系统理论分析与计算3.1单片机最小系统本系统采用的是STC89C52芯片作为控制核心,4个16位定时器。内部就含有PWM调制,而本实验用到的电机驱动的所需的PWM信号就是由该芯片产生的。下面是它的引脚图和电路图。图 3.1 STC89C52的引图 图 3.2 单片机最小系统电路图3.2黑线检测设计与实现 该智能小车在跑道是上共设有6道黑线,路面可看做白色。由于黑线和白色路面对光线的反射系数不同,可以根据接收的反射光的强弱来判断道路的“障碍”黑线。本设计利用红外线在不同颜色的物表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外线遇

12、到白色地面时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑纸则红外光被吸收,小车上的接收管接收不到信号。考虑到集成红外探测头体积小、简便易用,性能可靠。所以本设计选择了反射式红外线光电传感器作为红外光的发射和接受器件,一般检测距离可达410厘米cm,其内部结构和外接电路均较为简单.鉴于小车底部聚地面的距离不超过五厘米,故用红外光电传感器足以满足要求。其内部结构和外接电路均较为简单,检测电路如下图所示。 图 黑线检测电路 3.3系统供电单元设计与实现智能车控制系统中, 芯片需要提供5V的工作电压,而电机所需的电压为12V,本设计中用到的是12V的电源供电,然后通过三端稳压器LM317将电

13、压变换为5V电压供给电路系统。电源系统的电路图如图3.7所示。 图 3.7 稳压电源提供电路系统的软件设计开始4.1程序流程图检测黑线正常行驶检测第三条黑线减速行驶检测第四条黑加速速行终点时停留10S左黑白线检测右黑白线检测 倒车返回 4.2系统电路图 测试数据、测试结果分析及结论测试方法与仪器:1、 测试仪器 测试仪器包括秒表、数字万用表、示波器、MCS51仿真机、直流稳压电源等。2、测试方法 数字万用表主要用来测试分立元件的电阻、压降、漏电流、截止/导通状态等参数;信号发生器与示波器用于测试各光电传感器信号的接收与传输;MCS51仿真机用于测试软件;直流稳压电源在测试期间为各待测系统供电;

14、秒表用于产品测试,按照任务书的基本要求对制成的电动车进行产品测试。测试数据及测试结果分析: 计时精度分析 计时系统采用了新型显示芯片。理论上的误差不到1秒/年。 测距精度分析 测速系统采用了电机轴光电码盘检测技术。电机轴与车轮轴之间采用了齿轮箱二级减速,变比1/16。车轮周长135mm,光电码盘与电机轴安装在一起,电机轴每一转产生2个脉冲,车轮每转产生32个脉冲,理论测量精度可达135mm/32=4.22mm<4.5mm 定位精度分析 本设计采用实际测量与软件补偿技术,理论上可使定位精度提高到误差<10mm。3、结论历时一个月的设计过程中,我首先边查资料,边在实验室焊接小车的线路板

15、。在焊接过程中,我感觉到即使是一个简单的电路,要想很轻松的焊好,也不是很容易的事情。有时是“虚焊”的原因,有时可能是阻值选错。在焊接显示电路时,我就错将680欧的电阻焊成了6.8千欧。这使我深深感受到理论与实际间的差距。通过这样的设计,提高了我的动手能力。每天在实验室除了焊接线路板,还可以上机编程,使我软件调试知识也提高了。致 谢通过这次设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了学校的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这几个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展

16、打下了良好的基础。由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。、参 考 文 献1 何立民,单片机应用系统设计,北京:航天航空大学出版社,25,46502 李广弟,单片机基础,北京:北京航空航天大学出版社,2001,56643 何希才,新型实用电子电路400例,电子工业出版社,2000年,60654 赵负图,传感器集成电路手册,第一版,化学工业出版社,2004,5905915 陈伯时,电力拖动自动控制系统,第二版,北京:机械工业出版社,2000年6月,1271306 张毅刚,彭喜元,新编MCS-51单片机应用设计,第一版,哈尔滨工业大学出版社,2003,2527,4114

17、17#include <reg52.h> #include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit MOTOR_PORT_L = P36;sbit MOTOR_PORT_R = P37;#define MOTOR_PORT_L_SET(x) MOTOR_PORT_L = x#define MOTOR_PORT_R_SET(x) MOTOR_PORT_R = x/电机修正#define MOTOR_WAIT_OFFSET -5 /电机停止参数#define MOTOR_STOP

18、 (1500 + MOTOR_WAIT_OFFSET)/前进速度参数#define MOTOR_UP_H (MOTOR_STOP + 500)#define MOTOR_UP_L (MOTOR_STOP + 40)/后退速度参数#define MOTOR_DOWN_H (MOTOR_STOP - 500)#define MOTOR_DOWN_L (MOTOR_STOP - 40)typedef union _U16_U8_unsigned int u16;unsigned char u82;U16_U8;void timer_config(void)EA = 1;TMOD = (TMOD &a

19、mp; 0xf0) | 0x01;ET0 = 1;void timer_start(void)TH0 = 0x00;TL0 = 0x00;TR0 = 1;void timer_stop(void)TR0 = 0;unsigned char timer_wait(unsigned int wait) U16_U8 buf;buf.u80 = TH0;buf.u81 = TL0; if(buf.u16 >= wait)return 1;return 0;void motor_inital(void) MOTOR_PORT_L_SET(0);MOTOR_PORT_R_SET(0);timer_

20、config();void motor_move(unsigned int ml,unsigned int mr) bit flag_l = 0;bit flag_r = 0; timer_start(); MOTOR_PORT_L_SET(1);MOTOR_PORT_R_SET(1);if(ml = mr) while(!flag_l) if(timer_wait(ml) = 1)MOTOR_PORT_L_SET(0);MOTOR_PORT_R_SET(0);flag_l = 1; elsewhile(!flag_l | !flag_r) if(!flag_l) if(timer_wait(

21、ml) = 1)MOTOR_PORT_L_SET(0);flag_l = 1;if(!flag_r) if(timer_wait(mr) = 1)MOTOR_PORT_R_SET(0);flag_r = 1;while(timer_wait(20000+MOTOR_WAIT_OFFSET) = 0);timer_stop(); sbit RS = P24;sbit RW = P25;sbit EN = P26;#define LCD1602_PORT P0#define RS(x) RS = x ; _nop_();_nop_();#define RW(x) RW = x ; _nop_();

22、_nop_();#define EN(x) EN = x ; _nop_();_nop_(); void busy(void) LCD1602_PORT=0xff;RS(0);RW(1);EN(1);while(LCD1602_PORT&0x80)=0x80);EN(0);void LCD1602_Write_Data(uchar select,uchar wdata) busy();if(select)/write dataRS(1);RW(0); LCD1602_PORT = wdata; EN(1);EN(0);else/write insRS(0);RW(0); LCD1602

23、_PORT = wdata; EN(1);EN(0);void LCD1602_Prints(uchar line,uchar *str)if(line)LCD1602_Write_Data(0,0x80 + 0x40);/设定坐标 第2行第1格else LCD1602_Write_Data(0,0x80);/设定坐标 第1行第1格while(*str != '0')LCD1602_Write_Data(1,*str);str+;void LCD1602_Inital(void)LCD1602_Write_Data(0,0x38);LCD1602_Write_Data(0,0x

24、08);LCD1602_Write_Data(0,0x01);LCD1602_Write_Data(0,0x06);LCD1602_Write_Data(0,0x0c);sbit MEDIAN_PORT = P32;/中线sbit GO_Left_PORT = P11;sbit GO_Righ_PORT = P10;sbit Wai = P33;sbit P15=P15;sbit P16=P16;sbit P17=P17;void Control_Manage(void) static uchar state = 0;uchar i;static bit flag = 0;static uch

25、ar num;static uint count = 0;static uchar timer = 0;static uint miao = 0;static uint Jiance = 0;static uchar Juli = 0;if(state < 7)if(+timer>=50)timer = 0;miao+;if(Wai = 0)Jiance+;LCD1602_Write_Data(0,0x85);LCD1602_Write_Data(1,0x30|Juli/100%10);LCD1602_Write_Data(1,0x30|Juli/10%10); LCD1602_W

26、rite_Data(1,'.');LCD1602_Write_Data(1,0x30|Juli%10);LCD1602_Write_Data(1,' ');LCD1602_Write_Data(1,0x30|miao/60%10);LCD1602_Write_Data(1,':');LCD1602_Write_Data(1,0x30|miao%60/10);LCD1602_Write_Data(1,0x30|miao%60%10);LCD1602_Write_Data(0,0x80);LCD1602_Write_Data(1,0x30|Jianc

27、e/100%10);LCD1602_Write_Data(1,0x30|Jiance/10%10);LCD1602_Write_Data(1,0x30|Jiance%10);switch(state)case 0:count = 0;if(MEDIAN_PORT) state = 1;Juli += 0;motor_move(MOTOR_DOWN_L,MOTOR_UP_L); elseif(GO_Left_PORT)motor_move(MOTOR_STOP,MOTOR_UP_H); else if(GO_Righ_PORT)motor_move(MOTOR_DOWN_H,MOTOR_STOP

28、); else motor_move(MOTOR_DOWN_L,MOTOR_UP_L); break; case 1:count = 0;if(MEDIAN_PORT = 1 && num >= 30)state = 2;Juli += 5;num = 0;break; elseif(+num >= 30)num = 31;if(GO_Left_PORT)motor_move(MOTOR_STOP,MOTOR_UP_H); else if(GO_Righ_PORT)motor_move(MOTOR_DOWN_H,MOTOR_STOP); else motor_mov

29、e(MOTOR_DOWN_H,MOTOR_UP_H);P15=0;P16=1;P17=1; break;case 2: count = 0;if(MEDIAN_PORT = 1 && num >= 30)state+;Juli += 20;num = 0;break; elseif(+num >= 30)num = 31;if(GO_Left_PORT)motor_move(MOTOR_STOP,MOTOR_UP_H); else if(GO_Righ_PORT)motor_move(MOTOR_DOWN_H,MOTOR_STOP); else motor_move

30、(MOTOR_DOWN_H,MOTOR_UP_H);P15=0;P16=1;P17=1; break; case 3: /限速区count = 0;if(MEDIAN_PORT = 1 && num >= 30)state+;num = 0;Juli += 10;break; elseif(+num >= 30)num = 31;if(GO_Left_PORT)motor_move(MOTOR_STOP,MOTOR_UP_H); else if(GO_Righ_PORT)motor_move(MOTOR_DOWN_H,MOTOR_STOP); else motor_move(MOTOR_DOWN_L,MOTOR_UP_L); P15=1;P16=0;P17=1; break;case 4:count = 0;if(MEDIAN_PO

温馨提示

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

评论

0/150

提交评论