《毕业设计(论文)基于单片机的智能小车.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的智能小车.doc(24页珍藏版)》请在三一办公上搜索。
1、摘要:用单片机技术开发智能小车,通过对路面的检测而实现自动前进、左右转弯、后退等基本功能,可以方便的应用于路面的安全巡检。小车的硬件主要包括传感器及调理电路、直流电机及驱动电路、控制器三个部分;软件设计分为三个模块,即数据采集模块、信号处理模块、电机控制模块。此设计结构简单,利用定时器中断控制信号采集频率和电机转速。通过调试和运行,实现了预定功能。关键词:单片机,传感器,直流电机,自动控制Abstract: With the single-chip microcomputer technology to develop intelligence car which can realizes t
2、he automatic advance, makes a turn, the backlash the basic function and so on through examining the road surface. So it may conveniently apply in the road surface security inspects. The car hardware control unit mainly included three parts: the sensor and its recuperate electric circuit, stepper mot
3、ors and the actuation electric circuit, the controller, and manufactured the schematic diagram. In the software design aspect, then which divided into three modules: data acquisition module, signal processing module, The controller control electrical machinery module. This design structure is simple
4、, therefore, it controls the signal sampling frequency and the electrical machinery rotational speed with the traditional assembly language programming, using the timer severance. Finally, it basically realized the prearrange function in this design topic through the software and hardware debugging
5、and a try run.Keyword: single-chip microcomputer,sensor,dc-motor,automatic control目录1前言41.1设计研究的背景41.2开发的意义41.3 设计研究的方案42 系统设计方案52.1 系统设计原理及框图52.2 单片机52.3 控制器选择82.3.1 供电单元82.3.2 运动单元82.3.3 循迹单元93 系统硬件设计93.1 数据采集模块93.2 直流电机模块103.3 声音模块133.4 显示模块133.5 总体电路图134 系统软件设计144.1 软件设计思想144.2 系统程序流程图145 软件调试15
6、结 论16参考文献17致谢18附录191 前言1.1 设计研究的背景随着现代科技的飞速发展,单片机已经在各个领域得到越来越广泛的应用1。单片机由于体积小,功耗低两个基本特征,在通讯,家电,工业控制,仪器仪表,汽车等产品中都可以看到单片机的身影。单片机技术也随着集成电路技术的进步在近几年飞速的发展,这种发展可以分为两方面:一方面在硬件上单片机内部集成了越来越多的功能部件2,如A/D,D/A,PWM,WATCHDOG,LCD驱动,串行口,大容量FLASH存储器等;另一方面在开发手段上从汇编语言向高级C语言过度,计算机仿真调试,IAP,ISP技术的应用使单片机开发周期大大的缩短,为各类产品更新,软件
7、的升级提供了可靠的技术保障。在设计单片机应用系统时,由于历史的原因,目前在国内仍然以8051系列单片机为主。作为电子专业的学生,非常有必要通过对实际产品的设计和制作,了解现代IT产品的开发全流程。全面提高机,电,光,算知识的综合应用能力,掌握从系统级,电路级,到芯片级各个层次的设计和实现手段。基于上述原因,我选择此设计课题,在此设计过程中,将会用到多门学科的理论知识,复习和巩固了以前所学的知识,更重要的是培养了发现问题,分析问题,解决问题的能力,还有锻炼了动手能力,是一次很好的实践,对以后的学习和工作也会有所帮助。1.2 开发的意义 科技的进步带动了产品的智能化,单片机的应用更是加快了发展的步
8、伐,它的应用范围日益广泛,已远远超出了计算机科学的领域。小到玩具、信用卡,大到航天器、机器人,从实现数据采集、过程控制、模糊控制等智能系统到人类的日常生活3,到处都离不开单片机,此设计正是单片机的一个典型应用。此设计通过实现了小车的无人驾驶,通过对路面的检测,由单片机来判断控制其小车的反应情况,使其变得智能化,实现自动的前进,转弯,停止功能.此系统还不断的完善后可以应用到道路检测,安全巡逻中,能满足社会的需要。1.3 设计研究的方案本选题是用单片机技术开发智能小车,通过对路面的检测能实现自动的前进,左右转弯,后退等基本功能,能够方便的应用于路面的安全巡检。小车的控制单元主要包括传感器及调理电路
9、,直流电机及驱动电路,控制器三个部分。小车的行动离不开传感器通过两个红外光电传感器,根据路面的情况分别输出高低信号,由于传感器检测到的信号比较微弱,通过比较运放将其信号扩大,调理,使其输出兼容TTL电平,以便与控制器接口。控制系统,这里采用AT89C52,控制器按一定的时钟周期对光电检测器的输入信号采样检测,根据光电检测器的状态,判断小车的动作。 2 系统设计方案2.1 系统设计原理及框图本系统的功能是机器小车沿地面黑白轨道完成自动寻迹,即实现左转弯,右转弯,前进,停止,后退的功能。工作过程是:二个红外光电传感器探测地面情况,由于轨迹为黑色的,不产生反射,其感应信号表现为低电平,通过比较运放后
10、以高电平的形式输出到控制芯片,相反则为低电平,通过比较运放将感应信号放大输出,光电检测放大电路将其状态送入控制器AT89C52。 其系统框图如图2-1所示:红外传感器器光电检测放大电路红外传感器器光电检测放大电路直流电机(左轮)AT89C52 AT89C51驱动电路直流电机(右轮)图2-1 系统结构框2.2 单片机所谓单片机,即把组成微型计算机的各个功能部件,如中央处理器CPU、随机存储器RAM、只读存储器ROM、输入/输出接口电路、定时器/计数器以及串行通信接口等集成在一块芯片中,构成一个完整的微型计算机4。因此单片机早期的含义为单片微型计算机(single chip microcomput
11、er),直接译为单片机,并一直沿用至今。单片机的结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的、完整的单片微型计算机 5-9。下面简要介绍各组成部分:(1)中央处理器单片机中的中央处理器CPU和通用微处理器基本相同,由运算器和控制器组成,另外增设了“面向控制”的处理功能,如位处理、查表、多种跳转、乘除法运算、状态检测、中断处理等,增强了实时性。(2)存储器单片机的存储空间有两种基本结构。一种是普林斯顿结构(Princeton),将程序和数据合用一个存储器空间,即ROM和RAM的地址同在一个空间里分配不同的地址。CPU访问存储器时,一个地址对应惟一的一个存储单元,可以是
12、ROM,也可以是RAM,用同类的访问指令。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为哈佛(Harvard)结构。CPU用不同的指令访问不同的存储器空间。由于单片机实际应用中“面向控制”的特点,一般需要较大的程序存储器。目前,包括MCS-51和80C51系列的单片机均采用程序存储器和数据存储器截然分开的哈佛结构。 数据存储器(RAM)在单片机中,用随机存取的存储器(RAM)来存储数据,暂存运行期间的数据、中间结果、缓冲和标志位等,所以称之为数据存储器。一般在单片机内部设置一定容量(64KB256KB)的RAM,并以高速RAM的形式集成在单片机内,以加快单片机的运行速度。同时,
13、单片机内还把专用的寄存器和通用的寄存器放在同一片内RAM统一编址,以利于运行速度的提高。对于某些应用系统,还可以外部扩展数据存储器。 程序存储器(ROM)单片机的应用中常常将开发调试成功后的应用程序存储在程序存储器中,因为不再改变,所以这种存储器都采用只读存储器ROM的形式。(3)并行I/O口单片机为了突出控制的功能,提供了数量多、功能强、使用灵活的并行I/O口。使用上不仅可灵活地选择输入或输出,还可作为系统总线或控制信号线,从而为扩展外部存储器和I/O接口提供了方便。(4)串行I/O口高速的8位单片机都可提供全双工串行I/O口,因而能和某些终端设备进行串行通信,或者和一些特殊功能的器件相连接
14、。(5)定时器/计数器在实际的应用中,单片机往往需要精确地定时,或者需对外部事件进行计数,因而在单片机内部设置了定时器/计数器电路,通过中断,实现定时/计数的自动处理。At89c52单片机引脚如图2-2:图2-2 AT89C52GND:接地RST:复位信号输入引脚XTAL1,XTAL2:接外部晶振引脚P0,P1,P2,P3:不扩展功能作双向I/O口用,访问外部存储器时,P2,P0分别做地址总线高低8位地址。其复位电路如图2-3:图2-3 复位电路复位电路的原理是在通电瞬间,由于RC的充电过程,在RST端出现一定的脉冲宽度,只要该脉冲能保持10ms以上,就能使单片机可靠的复位。单片机的时钟钟电路
15、如图2-4:图2-4 外部时钟电路下面是芯片的内存空间分配,如图2-5所示。图2-5 内存空间分配2.3 控制器选择采用AT89S52作为系统控制的方案。AT89S52单片机算术运算功能强,软件编程灵活、自由度大,功耗低、体积小、技术成熟,成本也比ARM低。考虑到性价比问题,本设计选择 用AT89S52单片机做控制器。2.3.1 供电单元采用双电源供电,通过两个独立的电源分别对单片机和直流电机进行供电,此方案的优点是,减少波动,稳定性比较好,可以让小车更好的运作起来,唯一的缺点就是会增加小车的重量。2.3.2 运动单元采用直流电机,配合LM298驱动芯片组合。直流电机可以实现精确的转脚输出,只
16、要施加合适的脉冲序列,电机可以按照人们的预定的速度或方向进行连续的转动,便于控速,软件程序的编写较直流电机稍显复杂。但是L298芯片的硬件电路比较复杂。2.3.3 循迹单元采用OPTOCOUPLER-NPN型光电对管。OPTOCOUPLER-NPN是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。3 系统硬件设计3.1 数据采集模块图3-1所示电路中,R3起限流电阻的作用,当有光反射回来时,光电对管中的三极管导通,R4的上端变为高电平,此时VT1饱和导通,三极管集电极输出低电平11。当没有光反射回来时,光电对管中的三极管不导通,VT1截
17、至,其集电极输出高电平。而且经试验验证给此电路供电的电池的压降较小。因此我们选择此电路作为我们的传感器检测与调理电路。此光电对管电路简单,工作性能稳定。图3-1 光电循迹电路检测集成运放分类:按照集成运算放大器参数来分,集成运算放大器可分为:通用型运算放大器,高阻型运算放大器,低温漂型运算放大器,高速型运算放大器,低功耗型运算放大器,高压大功率型运算放大器六大类。下面介绍一下通用运算放大器的:通用型运算放大器以通用为目的而设计的。这类器件的主要特点是价格低廉、产品量大面广,其性能指标能适合于一般性使用。例mA741(单运放)、LM358(双运放)、LM324(四运放)及以场效应管为输入级的LF
18、356都属于此种。它们是目前应用最为广泛的集成运算放大器。在没有特殊要求的场合,尽量选用通用型集成运放,这样即可降低成本,又容易保证货源。当一个系统中使用多个运放时,尽可能选用多运放集成电路,例如LM324、LF347等都是将四个运放封装在一起的集成电路。集成运放功能:电路分析1.防止通过电源内阻造成高频振荡的措施是在集成运放的负供电电源的输入端对地加一高频滤波电容(0.01uF-0.1uF)。2.输出保护。当集成运放过载或输出端短路时,若没有保护电路,该运放就会损坏。当输出保护时,由电阻R起限流保护作用。3.调零。由于集成运放的输入失调电压和输入失调电流的影响,当运算放大器组成的线性电路输入
19、信号为零时,输出往往不等于零。为了提高电路的运算精度,要求对失调电压和失调电流造成的误差进行补偿,这就是运算放大器的调零。即图中的电位器就起调节电压的作用。3.2 直流电机模块主要由一些二极管、电机和L298直流电机驱动模块(内含CMOSS管、三太门等)组成,直流电机由定子和转子两部分组成。在定子上装有磁极(电磁式直流电机磁极由绕在定子上的磁绕提供),其转子由硅钢片叠压而成,转子外圆有槽,槽内嵌有电枢绕组,绕组通过换向器和电刷引出。图3-2直流电机的主要额定值有:额定功率Pn:在额定电流和电压下,电机的负载能力。额定电压Ue:长期运行的最高电压。 额定电流Ie:长期运行的最大电流。额定转速n:
20、单位时间内的电机转动快慢。以r/min为单位。 励磁电流If:施加到电极线圈上的电流L298内含两个H桥驱动电路,如图3-4所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。图3-4 H桥式驱动电路 要使电机运转,必须使对角线上的一对三极管导通。例如,如图3-5所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动
21、电机按特定方向转动(电机周围的箭头指示为顺时针方向)。图3-5 驱动电机顺时针转动图3-6所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动。图3-6 驱动电机逆时针转动表3L298逻辑功能EnAIn1In2运转状态0停止110正转101反转111刹停100停止当EnA为高电平,且输入电平一高一低,则OUT1与OUT2端接的直流电机正或反转,同为低电平电机停止,同为高电平电机刹停。直流电机模块如图3-7:图3-7 直流电机及其驱动3.3 声音模块当p2.7输出高电平时,三极管导通,发出相应的声音如图3-8
22、。图3-8 声音模块3.4 显示模块当检测到轨迹时,led进行显示,发出光,如图3-9。图3-9 led显示模块3.5 总体电路图总体电路图如图3-10:图3-10总电路图4 系统软件设计4.1 软件设计思想整个软件部分,可以分成三个模块,即主程序初始化模块,传感器信号检测模块,电机驱动模块。4.2 系统程序流程图 程序流程图如图4-5:图4-5程序流程图5 软件调试首先,通过keil软件,把代码编译连接,创建hex文件。其次,protues仿真:点击开始按钮,小车转动,左右直流电机正常旋转,按下传感器检测按钮,小车正常转弯,并且相应的发光二极管发光,软件调试成功。调试图如图5-1:图5-1调
23、试图当右面传感器检测到黑线时,小车向右拐。图5-2右转图结 论通过仿真,电动机能够按要求转动,当传感器检测到信号时,小车能够按检测到的方向行驶,并且通过特定的程序设计,能够防止走S型,声光显示电路工作正常。不过功能较单一,很多功能有待扩展,如障碍检测等。参考文献1 刘燕,刘志.基于单片机控制的自主寻迹电动小车的设计J.自动化与仪器仪表.2007.(03) :23. 2 安岩.自动循迹智能小车的设计J. 苏州科技学院学报(工程技术版).2010.(01) :12.3 王志良.竞赛机器人制作技术M.机械工业出版社,2007:13-18.4 李华.MCS-51系列单片机实用接口技术M.北京:北京航空
24、航天大学出版社,1995:17-24.5 董涛,刘进英,蒋苏.基于单片机的智能小车的设计与制作J.计算机测量与控制.2009.(02) :6.6 周坚.单片机C语言轻松入门M.北京航空航天大学出版社,2006:78-79.7 李刚.王艳林,孙江宏.Protel DXP电路设计M.清华大学出版社,2006:17-18.8 李广弟,朱月秀.冷祖祁.单片机基础M.北京航空航天大学出版社,2007:45-46.9 楼然苗.李光飞.单片机课程设计与指导M.北京:北京航空航天大学出版社,2007:17-18.10 梁静.一种基于光电传感的路径识别智能车J.科学技术与工程.2011.(01) :3.11 张
25、植宝.电机原理与应用M.化学工业出版社,2006:15-18.12 许大中.电机控制M.浙江大学出版社,2002. 40-42.致谢随着这一片论文的结束,我的大学生活也即将落下帷幕。虽然大学貌似很长,有四个年头,可是光阴似箭日月如梭,马上就要离别了,大学的美好回忆还历历在目。不仅班级54位同学一起走过了秋冬,又一起走过了春秋,而且老师们的诲人不倦的教导犹在耳边。我们热爱大学生活,这段时光给了我们很多感悟,尤其重要的是,要学会珍惜、懂得感恩,无论生活有什么艰难险阻,大家的帮助很重要,自己的顽强独立更重要。本次设计能够成功的完成,要特别感谢我的导师付浩老师的关怀和教导。付浩老师不厌其烦地给我讲解写
26、论文所要注意的事项及有关的专业知识,他严谨的治学作风以及宽厚待人的态度给我留下了深刻的印象。附录程序如下:#include #define uchar unsigned char#define uint unsigned intvoid motor_r_z(void); void motor_l_z(void);void motor_r_f(void);void motor_l_f(void);void go(uchar,uchar);void stop(void);sbit IN1=P2_5;sbit IN2=P24;sbit IN3=P21;sbit IN4=P22;sbit ENA=P2
27、0;sbit ENB=P23;sbit left_k=P05; sbit right_k=P04; sbit start_k=P32;sbit stop_k=P33;sbit sound=P27;。uchar data t_0;uchar data motor_r;uchar data motor_l;uchar data Speed_Parameters;/*延时子程序*/void delay_1ms(uint n)uint i,j;for(j=n;j0;j-)for(i=20;i0;i-);/*初始化函数*/void ini(void)/T0初始化/TMOD=0x01; /T0工作在方式1
28、TH0=0xff; /装入T0初值TL0=0xf6;TR0=1;/开T0中断ET0=1;/T0允许中断EA=1;t_0=0;P2=0x00;sound=1;delay_1ms(100);sound=0;void Sound(void)sound=1;delay_1ms(60);sound=0;/*启动处理函数*/void start(void) uchar a;aa:while(start_k);/防抖程序 for(a=0;a50;a+) delay_1ms(1); while(start_k) goto aa; Sound(); go(0x40,0x40);void go(uchar lef
29、t_motor,uchar right_motor) Speed_Parameters=right_motor;/ motor_r_z();Speed_Parameters=left_motor;motor_l_z();void motor_r_z(void) motor_r=0x64+Speed_Parameters; ENA=1;void motor_l_z(void) motor_l=0x64-Speed_Parameters; ENB=1;void stop(void)ENB=0;ENA=0;/*T0中断服务程序*/*PWM产生*/void time0(void) interrupt
30、1 using 2 TR0=0; TH0=0xff; TL0=0xf6; +t_0; ACC=t_0; CY=0; ACC-=motor_r; if(CY=1) IN1=1; IN2=0; goto PWM_2; IN1=0;IN2=1;PWM_2:ACC=t_0;CY=0;ACC-=motor_l; if(CY=1) IN3=1; IN4=0; goto HIGHT; IN3=0; IN4=1;HIGHT:/ACC=t_0;if(t_0!=0xc8)goto EXIT; ACC=0;t_0=ACC;EXIT:TR0=1; void main(void)uchar a;ini();start(
31、);while(1)aa: while(!left_k) goto bb; P1_0=0; Sound(); while(left_k) go(0x00,0x45); go(0x40,0x40);。 P1_0=1; /判断右传感器状态/bb: while(!right_k) goto cc; P1_1=0; Sound(); while(right_k) go(0x45,0x0); go(0x40,0x40); P1_1=1;/关闭LED指示灯/判断是否按下停止按钮/cc: while(stop_k) goto aa; for(a=0;a20;a+) delay_1ms(1); while(stop_k) goto cc; stop(); start();