毕业论文
题 目 基于单片机的循迹小车的设计
院 系 专 业 学生姓名
学 号 指导教师 职 称
目录
1 绪论 ....................................................................................1
1.1研究课题的当前背景及发展现状 ......................................................1
1.2研究课题的目的以及意义: ..........................................................1 1.3设计课题主要实现的功能 ............................................................3 2 循迹小车的方案设计 ......................................................................3
2.1系统设计的理论基础和工作原理 ......................................................3
2.2 小车整体方案的设计 ................................................................4
2.2.1系统步骤的设计 ..............................................................4 2.2.2系统基本组成 ................................................................4 2.3 整体方案确定 ......................................................................5 3 系统的硬件设计 ..........................................................................6 3.1 单片机的电路设计 ..................................................................6
3.1.1 LM393比较器 ..............................................................6
3.1.2 STC89C51单片机芯片介绍 .....................................................8 3.1.3晶振电路 ...................................................................10 3.1.4复位电路 ...................................................................10 3.2 光电传感器模块 ..................................................................11
3.2.1 传感器分布 .................................................................12 3.3 电机驱动电路 .....................................................................12
3.3.1 L293D引脚结构图 ...........................................................12 3.3.2电机驱动原理 ...............................................................13 3.3.3 小车运动逻辑 ...............................................................14
3.4 系统总原理图 .....................................................................14
4 系统的软件的设计 .......................................................................14
4.1 编程语言的选择 ...................................................................15
4.2系统编译器的选择 .................................................................15 4.3系统主程序流程图 .................................................................15 5 系统的整体调试与小车性能的测试 .........................................................16 5.1硬件的设置 .......................................................................16
5.2 系统的软件调试 ...................................................................16
5.3 小车的性能测试 ...................................................................17 6 设计总结 ...............................................................................18 参考文献 ...............................................................................19 致谢 .....................................................................................21 附录 .....................................................................................23
附录A 原理图 ........................................................................23
附录B 程序代码 ......................................................................25 附录C 硬件实物图 ....................................................................28
基于单片机的循迹小车的设计
练永爱
南京信息工程大学滨江学院电气工程与自动化专业,南京 210044
摘要:本文阐述了基于STC89C51单片机循迹小车的设计步骤。智能循迹小车是基于单片机来实现循迹功能的,它是一个集众多高新技术于一体,能够实现自主循迹导航的高新科技产品。该技术已经应用于无人驾驶飞机,仓库管理,服务性机器人等多种领域。本设计选用了STC89C51单片机当做小车的控制中枢,选用光电传感器当做小车的循迹模块,选用L293D驱动芯片来操控直流电机,选用Keil编写C语言程序。本设计的电路结构简单,实用性强。 关键词:智能循迹;STC89C51单片机;光电传感;L293D驱动芯片
1 绪论
1.1研究课题的当前背景及发展现状
以当前形势来看,随着制造科技的逐渐增强,自动化技术的要求也逐渐升高。现在,世界上有好多国家都在研究这能小车,智能小车也已经成为了交通运输系统必备的组成部分之一。所以,研发智能车辆不但有重大的社会意义,还拥有广泛的市场前景。
上个世纪60年代,人类历史上出现了移动机器人,它属于机器人系统中的一部分。1966年到1972年,斯坦福学院的尼尔斯和罗森·查尔斯等学者,研究开发出来一个可以自己移动的机器人并,取名为shakey。是为了将智能控制技术运用在当前的复杂环境下,使得机器人系统能够实现分析、决策以及操作等一系列行为。在此之后,移动机器人也经历了从无到有,从有到优。由于国际上,普遍对机器人比较关注,而智能车辆作为移动机器人的一个重要的组成部分,从而使得智能车辆在国际上也得到了大范围的关注度。智能车辆又称无人驾驶车辆,具有自动行驶,自动感知周围环境,自动测量,自动保持行驶车距等一系列功能。循迹小车的功能是当车在一些比较复杂道路上的时候,也可以避开路上的障碍物,并朝着原先设定好的路线前进。智能车辆是在普通车辆的基础上加上了一些现代智能化设备,如果在智能车辆加入声光讯号,则可以更好的凸显出智能小车智能化和人性化的一面。增加的则有如下一些智能化设备: (1)计算机系统:主要为了是可以实现分析,处理,综合控制等一些功能。 (2)摄像机:用来获取道路基本情况,可以更好的感知周边环境。
(3)传感器设备:距离传感器作用是测得当前的小车车距,感知传感器的作用是测得小车周围环境等一些路况信息。
1.2研究课题的目的以及意义:
智能小车可以应用于运输,考古、搜救、医疗、探险等众多方面,特备是在生产运输研究方面具有特别好的发展前景。所以研究开发只能循迹小车,不仅实用性高,而且还有很大的市场价值和发展潜力。
1
[2]
[1]
例如智能车辆运输系统。公交系统是城市向前发展一定会产生的,也是城市可持续发展必须依赖的。交通系统是城市系统中的一个重要主城部分,依靠交通系统的发展,城市才能更好的发展,人们的出行才更加方便。公交系统拥有环境污染低,乘载成本低,乘载量比较大,降低城市交通道路压力等众多优点。 自从1978年以来,我国实行的改革开放获得了巨大的成果,国家的经济得以持续高速的向前发展。国家的各个城市规模也在不断的扩张,就造成对交通更加有需求,城市交通压力逐渐变大。有相关的资料表明,截止2011年底全国各大城市的机动车存有量为2.07亿辆,与1980年相比增长达到30倍,年均增长96.77%。其中,全国范围内汽车保有量达到9266万辆,占总数的47.96%。虽然改革开放以来,全国城市道路的建设突飞猛进,从1980年至2010年,全国城市道路总长度从2.95万公里增长到395万公里,年平均增长率为446.3%。人均道路面积从2.8平方米增长到14.30平方米,道路面积增长率为年均17.02%。但是这样的道路上升进度还是跟不上车辆的上升进度。同时,因为一些交通道路或者交通管理的原因,现在的交通效率特别低,每年新增的交通量也被抵消掉了,没有起到什么作用。公共交通的载运量在逐渐的下降,也使得公众的出行逐渐由公共交通向电动车、摩托车、私家轿车等个体的交通方式转移。因此,这也将增加了城市道路的拥挤程度,使得城市面临着交通堵塞的压力。如何完善解决现如今城市居民对快速增加的交通出行需求和发展相对缓慢的公共交通建设之间的矛盾,成为一项摆在我们面前的迫在眉睫的任务。
智能运输系统是在普通交通运输系统的基础上,把现代的计算机处理技术,传感器感知技术,数据测量技术,自动控制技术等高新技术应用到交通管理系统上。从而可以创建出一个高效的全方位的运输管理系统,改善城市现今的交通状况。交通运输管理系统是利用无线通信对城市交通进行管理,这样交通单位就可以以比较低的成本可以对车辆运营的数据进行准确的采集,并可以更好的对车辆进行管理。无线通信系统还具备数据和话音的双重传送功能,可以更好的管理车辆的运营和调度情况,有助于提高交通运输的效率。智能运输系统还具有还有减少人工成本,降低人为失误率,信息化服务广,设备的自主维护等众多特点。
智能车辆运输系统的提出,将会逐渐提高车辆运输的管理水平,增加了公交系统的载客量,获得相应的经济收益。如果乘用公共交通出行的居民增加,则会变相减少了其它私家车辆的出行量,这也将会减小城市的交通压力,优化交通环境,降低环境污染,减少发生交通事故的概率,还可以为社会带来良好的社会效益。
意识到监测系统的重要性以后,国内外的众多人员和机构都倾注了大量人力物力去研究。其中包括了使用无人操作、远程智能操控的方法来进行生产、检测等功能的实现,如智能机器人等。由于无线传输系统的迅速发展,交通管理系统对车辆数据的采集和传输就更加方便了。将来无线传输系统进一步怒的发展甚至可以做到对数据进行实时处理。
我们可以经过对智能小车系统的创建,设计制作出一个自动控制系统,完成相关智能循迹功能。在设计制作过程中,熟练掌握STC89C51单片机,LM393比较器,L293D电机控制芯片等单片机。设计出智能小车的循迹、感知、驱动和电源等外围电路,提高自身的创作动手能力。巧妙的运用单片机、C语言等相关专业知识,将理论和实践相结合,从而实现小车的智能循迹功能。在此制作的过程中,还要加强对自动控制理论知识的了解和掌握,提升自己的专业素养。
2
[3]
1.3设计课题主要实现的功能 1.智能小车具备自动循迹功能。
2.小车脱离轨道行驶时,依然保持圆弧型轨迹行驶。 3.小车在循迹过程中对应的发光二极管发光。
2 循迹小车的方案设计
2.1系统设计的理论基础和工作原理
红外线收发管的核心装备是一个PN结,它由多种独特的材质制作而成,属于半导体器件,有将红外线信号转换成电信号的强大功能。但是由于红外线接收管必须要接受到来自红外线发射管反射的红外线,所以它的结构相对于一般的二极管,有着很大的区别。因此,为了减小不必要的误差,所以将PN节的面积增加到很大,相对的,电极的面积就减小了很多。在接受管无光线照射的情况下,此时的反向电流变得很小,所以只要不出现误差,出现的反向电流都不会超过1微安,我们把此时的电流成为暗电流。在接收管能接收到反射而来的红外线信号的情况下,随着红外线的反射,红外线中存在的光子会立即进入接收管的PN结。此时,束缚电子就会吸收了光子中存在的能量,一旦电子吸收的能量达到某一临界点,它就会脱离共价键。因此,原来存放电子的地方就会被空置,从而产生了空穴(可叫做:光生载流子)。而流离出来的电子就会受到红外接收管的反向电压,产生了漂流运动,使得反向的电流有了一个非常明显的增长趋势。游离出来的电子数目是由红外线强度来决定的。这种特性,也被命名为“光点导”。若在外部电路上,再加上负载,那么负载上就会产生一个电信号,并且,随着周围环境光线强度的变化,电信号也会产生不同的改变。
由于我设计的轨迹是一条黑色的轨迹,所以在本设计中,我采用的是黑色的红外线收发管。换句话说,当来自路面的反射光变得很小,致使红外线接收管接收不到时,通过接收管的电流就会变得极其小,而因为电流太小,所有设备器件的工作电流无法达标,电路无法进行工作;一旦反射光变强,接收管能够接收到反射回的光线时,电流就会立即增大,从而使电流增大到工作电流,让小车能够正常行驶。由此工作原理可知,小车只有按照黑色的轨迹才能使电路正常运行,达到小车按轨迹行驶的目的。若红外线照射的白色面板上,当红外线发射管发出一束红色光线,由于白色面板一般情况下不吸收任何光线,发生的红外线光束就会被反射回来。这时,红外线接收管接会将收到的反射回的红外线信号,转换成电信号,然后输出电流。
若红外线光束照射在黑色的轨迹上,黑色的轨迹吸收了所有光,同时也吸收了红外线发射管发射的红外光束,接收管接收不到反射光束,所以无法产生信号。在这种原理下,光信号被转换成了电信号,输入到单片机中再次处理,最后致使小车行驶,最终完成了小车的循迹功能。
在小车原本的电路基础上,我又添加了两个LED显示灯,连接在驱动电路上,在小车正常运动的情况下,若两个发光二极管能正常发光,则说明了小车车轮的驱动电机此时正在正常运作;若发两个发光二级
3
管,其中有任何一个不能发光,则说明对应的那个电机没有进行正常运作,此时需要重新检查电路,纠错改正,进行重新进行测试。最后还要再次检查两个发光二级管是否能够正常发光。只有当两个二极管能共同发光,小车的驱动模块才算合格。 2.2 小车整体方案的设计
本文小车设计采取的方案简单实用。由于红外光电二极管的发射功率非常高,而光电晶体管的灵敏度耶非常强,所以我就选择了这两个元器件共同构建成了循迹小车的感知模块。这样可以使循迹小车成功的识别出黑色线路,并且能够沿着设定好的轨迹行驶。接着利用STC89C51单片机模块控制L293D驱动模块更改直流电机转动速率,最终可以完成小车的循迹功能。 2.2.1系统步骤的设计
(1)根据功能要求,确定设计方案;
(2)利用Proteus设计出可行的硬件电路图; (3)画出程序流程图;
(4)通过Keil进行C语言编程;
(5)用WAVE 6000进行模拟检测,将程序烧录到单片机内; (6)将各个元器件焊接到洞洞板上; (7)进行调试以成功实现控制功能; 2.2.2系统基本组成
(1)STC89C51单片机电路; (2)红外光电循迹传感器模块; (3)L293D驱动模块; (4) 直流电机模块; (5)发光二极管模块; (6)电源模块;
[4]
电源模块H桥驱动模块单片机电路直流电机红外光电循迹传感器模块路径小车
图1 循迹小车系统结构图
4
(1)单片机电路:选用STC89C51单片机作为系统的中枢环节。STC89C51单片机兼备了价格低廉、高性能、能耗低、不易受电磁干扰等优点。而且还能兼容一般的8051单片机,还能够在系统直接进行编程且不用更改硬件。更好的是,使用ISP时,能够直接在PCB板上烧录程序,省去了编译器的步骤。这样使得修改和调速都非常的便捷。
(2)循迹模块:循迹传感器模块选用的是红外线收发管。调制信号携带交流分量,能够降低来自外部的干预。信号收集模块就如同循迹小车的眼睛,对黑色线路进行感知。它还可以将产生的高低电平输送到小车的控制模块,单片机就会生成相应的操控指令。然后操控驱动模块来管理直流电机的工作状态,最后可以成功完成小车的循迹功能。其中,整个循迹模块系统中以LM393电压比较器和光电耦合器optoiso1为核心。
(3)驱动电路模块:选用L293D作为电机的驱动芯片。L293D一共有16个引脚,它的内部集成了双极型H-桥电路。该芯片中的所有的开量都是n型的,这种双极型脉冲调宽方式有着众多的优点,比如:连续性的电流;可四角限运行的电机;电机停止时产生的微振电流,也可以抵消静摩擦死区;速度适中、稳定性强等。
(4)直流电机:采用双直流电动机。相比于异步电机,直流电机的操作方式更为容易。只要简单的在电机的控制线增添合适的电压,电机就可以转动。在正常的情况下,直流电机的转速随着电压的增大而提高。直流电机调节转动速度的方式也有两种。一是直接调节电压大小;二是使用PWM调节速度。PWM调速的原理就是将矩形波的电压加在直流电动机两端。通过变动矩形波的占空比,电压得以发生变化,最终使得电机的转速发生变化。
(5)电源模块:用六节1.5V干电池串联在一起作为电源。可以同时给单片机和电机供电,并通过两个0.3uF和一个200μF的电容进行滤波。 2.3 整体方案确定
图2为循迹小车循迹的原理图。光电传感器检测黑色路线,然后将采集的信息发送给单片机。单片机通过处理传感器发送的信息,生成了可行的操作指令。然后将操作指令输入到驱动模块,成功操控小车直流电机的工作情况。最终使得循迹小车可以准确的沿事先设置好的轨道行驶。
单片机 控制 模块 轨迹检测模块 小车
图2小车循迹原理图
[7]
[6]
[5]
电机驱动模块 电机 选用六节1.5V的干电池组作为系统电源。选用STC89C51单片机作为系统的主控制器。由于小车电机里面装载了降速齿轮组,因此不用照顾到调速功能。选用L293D电机驱动芯片来操控直流电机。L293D是通过改变芯片控制端的输入电平的原理来控制电机的转动情况。由此可见,L293D作为驱动核心,性能极其优良,使用起来也特变简单容易。
5
用光敏电阻组成光敏探测器。随着四周环境光线强弱的改变,光敏电阻的阻值也会发生改变。当光线照在白线上时,反射强,光敏电阻阻值变小。当光线照在黑线上时,反射弱,光敏电阻的阻值变大。使得在单片机和光电传感器之间,构成了一个含有反馈信号的系统。
[8]
3 系统的硬件设计
3.1 单片机的电路设计
系统的扩充和系统的配置是应用系统中对硬件电路进行设计的一个重要组成部分。系统扩充就是当单片机内部的性能满足不了实际应用时,必须在单片机外进行扩充。然后需要挑选合适的芯片,并且设计出对应的系统硬件电路;系统配置就是根据系统功能的需求来选择合适的外围设备。 3.1.1 LM393比较器
图3 引脚排列
(1)主要特点编辑
LM393属于双电压比较器集成电路。它有着如下的特点: ·比较器数:2;
·工作温度范围:0C --+70C; ·器件标号:393 通道数:2; ·逻辑功能号:393;
·工作电压范围大,单电源、双电源都行。单电源:2~36V,双电源:±1~±18V; ·电流消耗低,为0.8mA; ·输入失调电压低,为±2mV; ·共模输入电压范围宽;
·输出可用开路集电极与“或”门相连; (2)结构图编辑
LM393内部选用的是双列直插型8脚塑料封装以及微形的双列8脚塑料封装。
6
图4 结构编辑图
(3)应用说明编辑
LM393是一种电压比较器,有着增益高、频带宽的优点。它和一般的比较器都差不多,一旦输出端和输入端有寄生电容导致耦合的话,就有可能会发生振荡的情况。不过这种情况只有比较器状态变化的时候才会发生。在电源上加旁路滤波也不可以消除输出电压过渡间隔的难题。使用PC板的话就可以达到一定程度上降低寄生电容的耦合的效果。输入电阻低于10K可以降低反馈信号,如果添加正反馈量会使转换迅速,从而不会出现由寄生电容导致的振荡现象。
比较器中如果有些引脚没有用到的话,则都需要接地。 (4)主要功能编辑
LM393由于它的的偏置网络确定了它的静态电流以及电源电压的范围为2.0~30V。一般情况下,电源都没必要加旁路电容。就算输入电压如果高于电源电压,也不会造成元器件的损坏。保护电路的作用就是要可以成功阻拦往负端输入大于-0.3V的电压。
LM393输出为集电极开路。在适当的电源电压范围中,输出负载电阻可以连接所有电源电压,并且不受电源端电压的限制。当负载电阻不在工作状态时,由于受驱动和器件的β值的制约,输出的陷电流将会受到制约。当陷电流达到最大值的时候,输出晶体管的电压就会迅速的增大并且会退出电路不工作。 如果负载电流特别小的时候,晶体管的低失调电压允许输出位处在低电平的位置。
图5 LM393电路图
7
3.1.2 STC89C51单片机芯片介绍 (1)内部结构编辑
图6 STC89C51引脚排列
(2)STC89C51单片机简介
STC89C51单片机是一款性能强,抗干扰能力强、能耗低的单片机,它是由宏晶科技公司产出品的一款新型高效单片机。采用8051核的ISP可编程芯片,工作频率一般都是在80HZ左右。单片机内含8KB字节的只读程序存储器,能够反复擦写1000次左右,性能都别强大。
STC89C51单片机有着非常强大的性能,一般具有跑马灯、段码液晶(msm0801LCD)和字符液晶显示(LCD1602)、串行通信电机控制(L293D)、A/D转换(TLC2543)、D/A转换(TLC5615)、温度采集(DS18B20)、数字信号合成(AD9851)、实时时钟电路(DS1302)、4-20mASHUCHU 、PWM输出(UC3842)、红外检测(KSM-603LM)控制等功能。 (3)引脚说明
·VCC:电源端,提供各个系统工作时所需要的电压。 ·VSS:接地,0V参考点。 ·RST:复位端。
·EA/VPP:外部寻址使能/编程电压。
·XTAL1:作为一个连接功能,连接了外部晶体、放大器和工作电路。 ·XTAL2:也是作为一个连接的作用,连接了外部晶体和放大器。
·P0口:是双向8位三态I/O口。可以通过写入1来让它作为高阻输入。P0当做地址低字节的时候,它访问的是外部程序存储器。
·P1口:是带有内部上拉的双向I/O口。可以作为输入口,此时P1输出电流是因为P1口内部上拉。 ·P2口:是带有内部上拉的双向I/O口。P2口可以当做输入端。 ·P3口:是带有内部上拉的双向I/O口。P3口可以当做输入端。
[9]
8
·ALE:地址锁存功能。能够像一个锁一样起到地址锁存的功能。
·PSEN:程序存储使能。只读外部程序存储。当程序被读取时,PSEN将会两次被激活,此时,PSEN是无效的。 (4)STC89C51特点
·增强型1T 流水线; ·精简指令集结构8051 CPU;
·工作电压:在3.4V-5.5V之间(5V 单片机)/在 2.0V-3.8V之间(3V 单片机); ·工作频率:0 -35 MHz,实际工作频率为48MHz;
·程序空间:分为12K / 10K / 8K / 6K / 4K / 2K 等字节;
·片上集成512 字节RAM;
·通用I/O 口,复位后为:准双向口/ 弱上拉。每个I/O 口驱动电流能够有20mA,而芯片最高电流不能大于55mA;
·支持ISP/IAP,可以不用编程器,直接下载用户程序,速度非常快; ·EEPROM 功能;
·看门狗,防止程序被锁住; ·内部集成专用复位电路; ·两个16 位定时器/ 计数器; ·下降沿中断和低电平触发中断;
·PWM/PCA,能完成4个定时器或4个外部中断; ·十位精度ADC,共八路; ·通用异步串行口(UART); ·SPI同步通信口;
·工作温度范围:0 -75℃/ -40 -+85℃;
(5)电路最小系统
图 7 电路最小系统电路图
9
3.1.3晶振电路
STC89C51单片机里有个高增益的反相放大器,可以用它来构成振荡器。其中它的XTAL1和XTAL2引脚分别为输入端和输出端。反相放大器它的内部方式和外部方式能够生成时针,并且还有好多的优点。将定时元件分别接到XTAL1以及XTAL2的引脚上面,这样振荡器就可以发生自激振荡的行为。一般情况都是选用石英晶体以及电容并联在一起,来共同构成一个谐振回路。如图8所示,从XTAL1引脚端接入。外部时钟信号当成电路输入的时候,是要通过二分频触发的。因此电路对外部时钟信号占空比不做约束。
本电路采用的是一个12MHZ的无源晶振和两个22pF的电容元件。系统一的个周期大约为1μs。晶振的主要功能是提供最原始的时钟信号给电路,两个电容却有着并联谐振的功能。一旦电容不存在,振荡电路就会由于无回路导致停振,造成电路无法正常运作。
图8 单片机晶振电路图
3.1.4复位电路
复位电路可以维持CPU的复位状态,使得它不至于上电、复位一结束就运行起来。既可以避免CPU发布错误的命令从而操控失误,还能使电磁的兼容性能增强。STC89C51单片机的复位信号是经过RST引脚传输到施密特触发器里的。施密特触发电路主要是起到一个波形变换的作用
[10]
。无论什么波形的信号,一旦
输入到电路中时,输都是在正、负饱和中变换,以方波和脉波的形式输出。
本电路选用的是22μF的电容和1500Ω以及200Ω的电阻,如图9所示。在上电之后,因为电容充电的原故,可以让RST在一段时间内都保持着高电平的状态。当单片机在工作的过程时,只要按下复位键,就可以让RST在一段时间内都保持着高电平的状态,轻易完成上电和开关复位的控制
[11] [12]
。
10
图9 单片机复位电路图
3.2 光电传感器模块
传感器模块的电路如图10所示:
图10循迹传感器电路图
小车的循迹原理:黑色和白色对红外线的反射能力不同,黑色可以吸收大部分红外线,反射能力较弱。白色吸收光线能力较弱,却可以反射大部分红外线。通过光电传感器分析反射红外线的强弱程度,将不同强度的光强信号转变为电流信号。然后通过电阻将信号转变成单片机可以识别的高低电频,这样就可以成功实现小车的循迹功能。TC端为传感器工作控制端。当高电平时候,发光二极管和传感器都不运作;当低电平的时候,传感器进行工作。
由于红外线在不同颜色的表面有着不同反射的效果,可以通过这一特性,来实现小车的循迹功能
[13]
。
传感器是根据反射红外线的强弱程度,来判断小车的前进路线的。探测器距离一般不到15厘米。我们选
11
择的黑色路线的宽度保持在2-4厘米之间,并将探测器的间距调节成和黑色路线的宽度差不多。一般我们选用集成红外探头进行发射、接受红外线。传感器的灵敏度是可以变动的。有时候传感器检测不出黑色线路,可以调节传感器上的可调电阻,来改变传感器灵敏度。
将程序烧进STC89C51单片机后,小车就能遵循循迹命令了。如果小车在行驶过程中,向左偏离了黑色线路,右边传感器就会产生一个高电平,单片机接受这个信号后,就会控制小车向右转弯。反之,如果小车向右偏离了黑色线路,左边的传感器就会产生一个高电平,单片机接受这个信号后,就会控制小车向左转弯。如果两边的传感器输出的信号都是低电平,小车则直线向前行驶。这样,小车就不会偏离黑色线路,可以沿着轨道前进,实现循迹功能了。 3.2.1 传感器分布
传感器用于感知环境,然后将信息发送给单片机系统。所以,传感器在小车上的布局也是很重要的,需要顾虑到小车在行驶的过程中,传感器对信息采集的精确性 。
本设计采用的是一字型的布局方式。就是将所有传感器都布置在同一条直线上。由于本设计小车车型和线路的限制,选择了将传感器放置在黑色路线外,紧贴黑线边缘。这样的布局方式有利于对信息的准确采集,可以更好的控制小车实现循迹功能。 3.3 电机驱动电路
本设计的驱动芯片采用L293D。
L293D驱动芯片拥有16引脚,它的内部集成了双极型的H-桥电路,所有的开量也都为n型的,性能强劲。这种双极型脉冲调宽方式还有着其他的许多优点,就比如有连续性的电流;可四角限运行的电机;电机停止时产生的微振电流,还可以抵消正静摩擦死区;稳定性好,性能强劲。主要特点是:最大工作电压能够到达36V,因此工作电压相当的大;输出电流的瞬间最大值能够达到2A,因此输出电流也是很大的,它的持续工作电流一般在1A左右。
3.3.1 L293D引脚结构图
图11 L293D引脚图
12
连接方式:
P1:控制M1电机PWM1输入引脚; D1:控制M1电机转向输入引脚; P2:控制M2电机PWM2输入引脚; D2:控制M2电机转向输入引脚; GND:接地端;
5V:逻辑电源+5V接口; VCC:输入电机驱动电压接口; GND:接地端;
M1+:M1驱动电机输出引脚正极; M1-:M1驱动电机输出引脚负极; M2+:M2驱动电机输出引脚正极; M2-:M2驱动电机输出引脚负极; 3.3.2电机驱动原理
直流电机由定子和转子所构成。直流电机工作时,静止不动的是定子。定子的主要功能是产生磁场;电机工作时转子是转动的。转子的功能是可以生成电磁转矩以及感应电动势。它还是电机进行能量转换时候的中枢。
图12 L293D驱动直流电机原理图
13
3.3.3 小车运动逻辑
表1小车运动逻辑
3.4 系统总原理图
如图14是整个循迹小车系统的总原理图。原理图其中包含了控制电路模块,驱动电路模块,循迹模块以及电源模块等众多模块
[14]
。总原理图解释了整个小车工作的原理,各个模块将所收集的信息传输到控
制模块电路的STC89C51单片机里,单片机通过对传输过来信息的处理来控制小车,最后实现小车的循迹功能。
图13 系统原理图
4 系统的软件的设计
14
4.1 编程语言的选择
在现今的情况下,STC89C51单片机使用的编程语言一般情况下只有两种,那就是汇编语言和C语言
[15]
。
汇编语言现在是一种最快而且最有效的机器语言,它也是一种最接近计算机的语言。如果对于程序的空间和时间要求特别高,最好选择汇编语言
[16]
。但是汇编语言也是有缺点的,如程序的移植性比较差;程
序的开发周期也比较长;浮点的运算太过复杂等。
C语言编程设计也被称作模块化程序设计。指的是为了成功完成任务,有时候可以将一个任务分成许多模块。这些模块相互独立却又有着联系。这样做的效果是可以让任务变得更加容易,容易编写,容易检测和维护,对外数据的交换也变得更加简单。
本设计采用C语言来编写程序。程序结构模块化的设计,使得系统软件更加容易调试和优化。因此,用模块化程序的结构设计软件,可以让人更容易读懂系统程序。 4.2系统编译器的选择
伴随单片机技术的逐渐发展,使用的计算机语言也由汇编语言逐渐变为高级语言。单片机的开发软件也在迅速的发展,如Keil软件。Keil是目前开发51系列单片机最常用的软件。它提供了编译器、宏汇编、连接器、库管理和仿真调试器等一个完整的开发方案,并由一个集成开发的环境把这些功能都整合到了一块。
Keil C51可以供应非常充足的库函数和高性能的检测工具,所以这个软件使用是特别方便的。另外,Keil C51不但生成的目标代码的效率特别高,而且生成的汇编代码也比较紧凑,有助于更好的理解。因此,在研发大型软件的过程中,更能凸显出高级语言的优势
[17]
。
Keil C51可用于C语言编程和汇编源文件的一些工作的开展。编写好程序后,由编译器编译生成目标文件,然后可以用仿真器直接对程序进行测试,最后再将调试好的程序烧进单片机中。 4.3系统主程序流程图
开始两个传感器是否都在线否是是否左偏否左转调整是直线行走右转调整
图14系统流程图
15
5 系统的整体调试与小车性能的测试
5.1硬件的设置
根据设计之初设定的完整的小车原理图,认真的对系统中各部分的元件参数进行仔细核算。然后选择对应的电路元件,制作实际电路板,务必使得各个部件能够达到最优化。然后将万用表调到200欧的档位对电路进行检查。将红表笔放在正极处,黑表笔放在负极处,用来检测电路板上是否有故障。假如万用表测量出来的数值很小的话,那么就说明这条电路没有出现断路的情况;假如万用表测量出来的数值很大的话,就说明此电路出现了断路的情况,那么就需要对电路进行重新的检查,重新连接电路,直到电路不出现断路的情况为止。 (1)晶振电路的测试
单片机能够正常运行的先决条件,是系统中的时钟系统能够同时运作。然而,在实际情况中,单片机系统总是经常会因为一些小问题和异常情况,导致控制器的整体系统故障。所以,确保时钟系统正常工作是否正常就看是否发生晶振,这是系统通电的最主要的一个环节。电力系统通电正常情况下,看电路是否正常运行需要两引脚XTAL1和XTAL2引脚电压检测。在这一点上,20v的直流电压档是最好的选择。在整个电路正常工作的情况下,XTAL1引脚在万用表上,检测到的电压应当大约为2.05V。XTAL2端引脚测得的电压数据大约为2.15V。 (2)复位电路的测试
系统无法正常工作也可能是复位功能没有正常工作的原因。当系统处于复位状态下时,此时复位引脚的电压应该是高电平。因此,如果复位端始终是低电平的话,那么就无法产生高电平脉冲信号,复位端就无法正常工作,而复位端是否正常工作就会影响到真各个系统的工作状态。当单片机处于正常的工作状态下时,此时的复位端引脚电压应该是0V;按下复位键后,复位端引脚的电压就会变成高电平,电压大约为5V
[18]
。
5.2 系统的软件调试
选择一款功能强大并且运用方便的软件,能够在软件程序编译以及调试时获得最大效率,而WAVE 6000就是一个非常好的选择。在进行程序烧写过程的时候,需要使用配套的单片机,这样才能更好的进行程序的烧写工作。那么对软件进行调试的过程就是先对小的模块进行调试,等所有的小模块都调试完成之后,再将所有的小模块组装起来,等组装无误之后在对整个系统进行统一的调试 烧写程序的步骤:
第一步:正确的安装以及运行Microcontroller ISP Software软件;
第二步:在Options栏,点击运用select device这一项;这时候会可能出现一个对话窗口,接着就按照图片的指示选择后,然后点击OK按钮,如果出现了所示的窗口,就有可能是电脑与烧写板没有连接好或者单片机没插好等一些原因,就需硬件进行检查和重新装配,如果没有出现所示的窗口就说明软件的初始化成功了
[20]
[19]
。
。
16
第三步:在File栏目,点击Load Buffer这个选项,然后打开编译好的的HEX文件。接着使用载入按钮,就会出现一个对话框,单击确定的话,然后再单击字母图标“A\还会继续出现一个对话框,就按照软件默认的选项,一直单击确认按键最后就可以完成烧录工作了
[21]
。
通过软件检查出了程序中存在着许多的问题。为了解决这些问题,就需要数次修改和调试模块子程序,慢慢对程序进行完善。在软件的调试过程中主要会遇到以下的一些难点: (1)在测试的过程中,若小车遇到黑线,则电机就会停止工作。
解决方法:首先使用仪器对电路进行测试,对照电路图观察电路,看是否有未焊接、焊接不结实或者一些电子元件损毁等问题。如果存在的话就要及时的解决这些问题。
(2)输入程序后,小车循迹不灵敏以及当小车的转弯弧度过大时,会出现小车因速度过快而偏离轨迹的现象。
解决方法:可以通过改变灵敏度来解决这个问题。传感器上安装有一个可调电阻,调节这个可调电阻,适当的增大或减小电阻的阻值就能够改变传感器的灵敏度。 5.3 小车的性能测试
图15 寻迹小车光电传感器模块实物图
(1)在未通电之前,电源一定要确保处于关断状态,在确认没有短路、断路、未焊接、焊接不稳定等情况后再将6节5号电池装入电池盒之内,然后才能将继承电路安装进小车内,安装时要注意电池的正负极不能颠倒,有弹簧片的一端应当接的是电池的负极也就是平滑面的一侧。相信大家都不会装错的,再次我就不再强调了。
(2)万用表应该选择200mA的档位,以避免档位选择过大时产生一些偏差,小车不行驶的时候,其电流一般不会超出20mA。如果要是电路通电的话只要用表笔短接2个引脚就行了。当电路正常工作时,此时电路中的电流应该在12mA上下,如果在这个值上下那么就可以认为电路在正常工作,接下来将LM393芯片正确的插入IC座。多测量几次,如果正常的话,电流的变化量应该在1mA左右,最多不会超过2mA。
17
假如电流增加量超过了2mA的话,就说明电路出现了问题,就必须挪开表笔,再次对电路进行仔细认真的检查
[22]
。假如电流的增加量在允许变化范围之内的话即可认为是满足要求的,那么就可以将STC89C51芯
片安装到电路中去了。
到现在为止,经过上述各个程序的组装之后,循迹小车应该能够正确的行驶了,在循迹小车行驶之前还需要将STC89C51单片机安装在正确的方向以及位置,并插入IC口中。
图16 循迹小车成品图
6 设计总结
本设计主要是为了实现智能小车的循迹功能。以自制的小车为基础,使用红外线收发管来作为侦查周围环境的作用,然后对收集到的各种图像和数据信息进行处理加工。获得了以下的一些成就:
(1)在没有外部因素的影响下,小车能够根据我烧写进去的程序自主的运行,并且按照黑色轨迹行驶。
(2)经过数次的实验结果表明:为了检测多弯道轨道,四个循迹传感器应该按照M型的方向放置,因为传感器不是处于一条线上,所以当小车在转弯时,两个放置在后方的传感器将会获得较大的采集信号的空间,而放置在前方的两个传感器就能够对采集信号有着更好地视野。这样的放置结果能够使得小车在转弯处的速度大大的提高。但是这样也是有着缺点的,因为相对于一字型的放置,M型的放置很容易产生不稳定的信号,使得信号出现震动的情况,从而使得小车在行驶的过程中出现晃动等一些情况。 (3)小车保留了拓展功能。为了使得小车能够实现简单的循迹功能而又不至于太过复杂,我的设计理念就是简化小车,使得小车能够更简单的实现。因为小车的设计要求简单,没有加入别的复杂的功能,所以能够预留一些硬件或者软件的程序接口,为以后的再次拓展和研发提供了方便。
18
因为现如今的智能小车还没有很具体的研究体系,所以我认为智能化车辆还是有很大的提升空间的,比如:
(1)躲避障碍物的功能:因为现如今的交通环境的多变性,交通环境发生了很大的变化,避障功能也是未来智能小车必不可少的一项专业技能。
(2)自动驾驶功能:将来的车辆将会越来越智能化,因此自动驾驶功能是相当实用的一项开发性很强的项目
参考文献
[1] 虞杨阳.基于模糊PID控制技术的移动机器人研究[D].中北大学,2011 [2] 刘冀珍.数据分析型行业数据中心的研究与建设方案[D].南开大学,2008
[3] 殷醒民.从国民财富表变动看经济政策“纠误”的方向[J].复旦大学,2014,1(2),15-25 [4] 嵇萍.基于单片机的自动避障小车设计[J].江苏海事职业技术学院,2013,3(1),33-35 [5] 褚超.主从式电动轮椅控制器设计[D].华中科技大学,2006
[6]Yamato I.et al 1 New conversion system for UPS using high fre2quency link[J ]1 IEEE PESC ,1988,210-320.
[7]Yamato I.et al 1 High frequency link DC/ AC converter for UPS with a new voltage clamper[J ]1IEEE PESC ,1990,52-105.
[8] 侯少静.索南扎西.光线感应器的工作原理及其节能应用[J].西北名族大学,2013,2(13),92-92 [9] 郑宁.郑刚.一种LED大屏幕显示系统的设计方法[D].中国科学院自动化研究所,2003.10.16 [10] 刘春玉.IGBT驱动器的设计与实现[D].武汉理工大学,2013
[11] 恒盛杰.Protel电路板设计从入门到精通[J].中国青年出版社,2006,1(1),1-148 [12] 江思敏.陈明编.Protel电路设计教程[J].清华大学出版社,2006,1(1),1-296
[13] 魏连甲.基于SPCE061A单片机的智能移动小车设计[J].沧州师范学院,2014,2(2),335-336 [14] 刘公致.基于通用实验平台的积木式加宝塔式电子系统综合实验箱设计[J].杭州电子科技大学,2008,2(1),19-20
[15] 苏培华.师玉军.各种单片机编程比较[J].西安外事学院,西安电力电子技术研究所,2008,1(3),113-115
[16] 贺春林,腾云,赖晓风.汇编语言教学改革与实践[J].西华师范大学,2008,1(4),431-433 [17] 陈晓莉.张俊涛.KEIL C51单片机仿真器的设计[J]. 陕西科技大学出版社,2006,1(2),19-20
[18] 李全利.迟荣强..单片机原理及接口技术[J].高等教育出版社,2014,1(1),14-191 [19] 王守中编著.51单片机开发入门与典型实例[J]. 人民邮电出版社,2007,3(1), 103-108
[20]V.Yu.Teplov,A.V.Anisimov.Thermostatting System Using a Single-Chip Microcomput
19
er and T
hermoelectric Modules Based on the Peltier Effect[J].2002,2(3)41-45.
[21]Yeager Brent.How to troubleshoot your electronic scale[J].. Powder and Bulk Engineering.
1995,3(4),55-57.
[22]Meehan Joanne,Muir Lindsey.SCM in Merseyside SMEs:Benefits and barriers[J]. TQM Journa
l. 2008,5(2),4-8.
20
致谢
在经过那么长时间的不断努力与进步,我学到了很多新的知识,受到了许多的帮助,对自己的挑战有了新的成功。在循迹小车的制作过程中,我深刻认识到自己知识的储备量不足和动手能力的缺乏,但是在大量翻查了资料文献和导师的帮助下,我终于一步一步完成了设计,虽然有过困难,有过瓶颈,过程是艰辛的,结果是可喜的,付出的艰辛汗水也有了回报。虽然在这整个过程中困难重重,但我受到了许多来自同学和导师的帮助,我也由衷的感谢他们的帮助。在这次的毕业设计中,不但让我学习到了新知识,巩固了原有的知识,对旧知识有了查漏补缺,更是提高了我们的动手能力,讲课本文章中学来的智商灵活使用,融会贯通,使书面知识解决了实际问题,这也是我最为欣喜骄傲的一方面。
本论文是在导师毛老师的帮助下完成的,他也是我最想感谢的人,对我整个毕业论文设计的成功完成有了最大的帮助。他广泛渊博的专业知识,认真负责的工作态度,专业严格的治学态度,温和和蔼的人格魅力对我产生了巨大的影响。老师不但指导了我整个毕业设计的方法,在我论文进行到瓶颈时及时提供最正确的帮助,在我大学生涯中画下了浓墨重彩的一笔,使我在大学结束阶段又有了重大的学习成果,不但是我论文和毕业设计的指导导师,更是我人生道路上的指引导师。在此,向我最敬爱的毛老师献上崇高的敬意和由衷的感谢!
谢谢大家!
21
The Tracking Car Design Based On Single Chip Microcomputer
Lian yong ai
Major of Electrical Engineering and Automation of Binjiang Institute of Nanjing University of Information
Science & Technology,Nanjing 210044
Abstract :This paper describes the design steps of the tracking car based on the STC89C51 microcontroller . Intelligent
tracking the car is based on single chip microcomputer to realize the function of tracking, it is a high and new technology products of collection of many high technology and new technology into an organic whole, can realize autonomous tracking and navigation . The technology has been used in unmanned aircraft, warehouse management, service robot, and other fields. This design chooses the STC89C51 microcontroller as the car control center, With photoelectric sensors as the car tracking module, Choose L293D driver chip to control dc motor, Choose Keil. Write the C language program. The design of the circuit has simple structure, strong practicability.
Key words: Intelligent tracking ; STC89C51 microcontroller ; Photoelectric sensor ; L293D drive chip
22
附录
附录A 原理图
系统总设计电路图
电路驱动模块电路图
23
小车循迹模块电路图
电源模块电路图
24
附录B 程序代码 #include 晶振模块电路图 复位模块电路图 25 bit yyp=1; void delay(unsigned int n) { unsigned char i, j,k; for(k=0;k<=n;k++) { _nop_(); _nop_(); i = 5; j = 6; do { while (--j); } while (--i); } } void gogogo(void) { IN1=1; IN2=0; IN3=1; IN4=0; } void stop(void) { IN1=0; IN2=0; IN3=0; IN4=0; } void turnleft(void) { IN1=0; IN2=1; IN3=1; IN4=0; } void turnright(void) { IN1=1; IN2=0; IN3=0; IN4=1; } 26 void main(void) { while(1) //1没有检测到黑线 0检测到黑线 { if(Left_InSen==0&&Right_InSen==1) { turnright(); delay(10-4); stop(); delay(4); } else if(Left_InSen==1&&Right_InSen==0) { turnleft(); delay(10-4); stop(); delay(4); } else { gogogo(); delay(10-5); //5的值增大车的速度减小 stop(); delay(5); } } } 5的值减小车的速度增大 27 附录C硬件实物图 智能循迹小车 直流电机 28 驱动模块 红外传感器循迹模块 29 焊接电路图 30 因篇幅问题不能全部显示,请点此查看更多更全内容