智能循迹小车设计与实现_第1页
智能循迹小车设计与实现_第2页
智能循迹小车设计与实现_第3页
智能循迹小车设计与实现_第4页
智能循迹小车设计与实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

智能循迹小车设计与实现摘要本文介绍的是基于单片机STC89C52控制智能循迹小车的设计。利用红外对光管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的运动,从而实现自动循迹避障的功能。其中小车的电机由LG9110驱动,整个系统的电路结构简单,可靠性高。关键词STC89C52LG9110红外对光管循迹小车ThemanufactureofintelligenttrackingcarAbstractThisarticaleintroducesthedesignofintelligenttrackingcarbasedontheSTC89C52singlechipcomputer.Basedinfrareddetectionofblacklinesandtheroadobstacles,anduseaSTC89C52MCUasthecontrollingcoreforthemovement.Aelectronicdrived,whichcanautomatictrackandavoidobstacle,wasdesignedandfabricated.Inwhich,theelectricmachineryofcarisdrivedbytheLG9110.Theelectriccircuitstuctionofwholesystemissimple,andthefunctionisdependable.KeywordsSTC89C52LG9110InfraredemittingdiodeTrackingcar第1章引言随着微电子技术的不断开展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的开展。单片机技术作为自动控制技术的核心之一,被广泛应用于工业控制、智能仪器、机电产品、家用电器等领域。随着微电子技术的迅速开展,单片机功能也越来越强大,本设计基于单片机技术在智能寻迹小车控制系统的设计中,以STC89C52为核心,用LG9110驱动两个减速电机,当产生信号驱动小车前进时,是通过寻迹模块里的传感器管是否寻到黑线产生的电平信号通过传感器再返回到单片机,单片机根据程序设计的要求作出相应的判断送给电机驱动模块,让小车实现前进、左转、右转、停车等根本功能,寻白线时,外部环境光线的强弱对小车的运动会产生很大的影响,基于此原因,本实验中的寻迹是指在白色地板上寻黑线。1.1设计目的1、了解机械部件结构与机械安装过程;2、掌握电动机齿轮箱内部结构及减速原理;3、了解电子元器件的根本形状及焊接过程;4、掌握电子元器件的焊接步骤与检测过程;5、了解单片机内部结构与程序编制方法;6、了解LED灯驱动方法,全面掌握流水灯/跑马灯编程技术;7、了解数码管内部结构,掌握数码显示技术;8、了解键盘结构原理,掌握中断查询技术;9、了解话筒电路结构,掌握话筒输入技术;10、了解蜂鸣器驱动技术,全面表达音乐报警功能;11、了解光敏电阻结构原理,充分表达夜间自动照明功能;12、了解红外发射与接收技术,有力表达防撞检测与智能寻迹功能13、了解直流电机驱动原理,掌握电机驱动技术;14、认识红外检测传感器,全面掌握红外遥控编码解码技术;15、了解R232通信协议,掌握串口通信技术。16、通过本机系统学习,全面掌握智能自动寻迹机器人的控制方法。1.2设计要求当前的电动小汽车根本上采取的是基于纯硬件电路的一种开环控制方法,或者是直线行使,或者是在遥控下作出前进、后退、转弯、停车等根本功能。但是它们不能实现在某些特殊的场合下,我们需要能够自动控制的小型设备先采集到一些有用的信息的功能。本文正是在这种需要之下开发设计的一种智能的电动小车的自动控制系统。它以单片机STC89C51为控制核心,附以外围电路,在画有黑线的白纸“路面”上行使,由于黑线和白线对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”——黑线。判断信号可通过单片机控制驱动模块修正前进方向,以使其保持沿着黑线行进。轨迹探测模块用2对红外发射管。2对各置于轨道外侧,当小车脱离轨道时,外面任意一只检测到黑线后,做出相应的转向调整,直到重新回到轨道。第2章总体方案设计2.1总体方案的设计思路该简易智能小车在画有黑线的白纸“路面”上行使,不断地向地面发射红外光,利用红外线在不同颜色的物理外表具有不同的反射性质的特点,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线那么红外光被吸收,那么小车上的接收管接收不到信号。当红外接收探头接收到信号后,再将信号送到单片机由单片机内部程序来控制电机,由电机完成小车的前进,转向。因此,可根据接收到的反射光的强弱来判断“道路”——黑线。2.2总体方案设计整个路系统分为检测、控制、驱动三个模块。首先利用光电对管对路面信号进行检测,把检测到的光信号转化为电信号,送给单片机进行处理,然后单片机输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。系统方案方框图如下图:控制小车驱动电机软件控制检测〔黑线〕图2-2智能小车寻迹系统框控制小车驱动电机软件控制检测〔黑线〕2.2方案一:采用FPGA〔现场可编程门阵列〕作为系统的控制器。FPGA可以实现各种复杂的逻辑功能,规模大,密度高。但由于本设计对数据处理速度要求不高,FPGA的高速处理的优势得不到充分表达,并且由于其集成度高,使其本钱偏高,同时其芯片引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。因此排除该方案。方案一:采用89C51作为控制核心。针对本设计特点—多开关量输入的复杂程序控制系统,需要擅长处理多开关量得单片机,而不能用精简I/O口和程序存储的小体积单片机,A/D,D/A功能也不必选用,据此,我们选用STC89C51单片机,另外,该单片机价格低廉,使用简单。综上所述,我们选用方案二。2.2方案一:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的运动进行调整,此方案的优点是电路较为简单,缺点是继电器的响应速度慢,易损坏,寿命短,可靠性不高。方案二:市面上有专门的双电机驱动芯片LG9110,经测试性能可以满足小车的电机控制要求,而且外围电路比拟简单,稳定性好,驱动能力强,能够很好的保证两电机的同步。因此,采用方案二。2.2方案一:采用摄像头或探测头收集画板上信息。用这种方法,对板面信息处理准确,但是本钱过高,对硬、软件的要求都非常高,短时间内难做出实物来。方案二:使用可见光发光二级管和光敏二级管组成的发射-接受模块。这种方案的缺点在于其他环境光源会对光敏二级管工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判;如采用高亮发光管可以降低一定的干扰,但会增加额外的功率损耗。方案三:使用反射式红外二级管和接收管组合发射-接收器。由于红外光波长比可见光长,因此受可见光的影响比拟小,同时,红外对管还具有以下优点:质量轻,灵敏度高,线性好,接口电路比拟简单,安装方便,对于本系统中近距离的检测,用它作为传感器将是最理想的。因此,本系统采用方案三2.2方案一:采用直流电机。直流电机使用方便,价格廉价,有优良调速特性,实现方便平滑调速,调整范围广,有较强过载能力,能承受频繁的冲击负载,可频繁无级快速启动,制动,反转。方案二:采用步进电机。步进电机的运动精度很高,由其组成的位置控制系统定位准确,稳定时间短,一般可采用开环控制。但控制系统必须由双环形脉冲信号,功率驱动电路等组成方可使用,控制相对复杂。综上所述,直流电机的电路相对简单,功能合题意,使用方便,价格廉价,本系统采用直流电机作为动力源。第3章系统硬件设计3.1系统的硬件组成硬件设计总体上以STC89C52为核心,辅以必要的外围电路,完成红外传感器对运动轨迹的检测,信号的处理,电机的转动等功能。系统总框图如下:3.2单片机模块此局部是整个小车运行的核心部件,起着控制小车所有运行状态的作用。这里选择了ATMEL公司的STC89C52作为控制核心部件。该单片机要想正常工作,还需有复位电路和晶振电路,此单片机的最小系统图如下:图3-23.3电机驱动模块LG9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件本钱降低,整机可靠性提高。该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过750~800mA的持续电流,峰值电流能力可达1.5~2.0A;同时它具有较低的输出饱和压降与静态电流;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上平安可靠。9110被广泛应用于玩具汽车电机驱动、自动阀门电机驱动、电磁门锁驱动等电路上。该驱动芯片LG9110的IA,IB口接单片机,输出口OA,OB接电机。O口为低电平时,电机正传。O口为高电平时,电机反转。电机驱动电动如下列图3-3:图3-33.4红外检测模块本单元模块中,白色管作为发色管,黑色管作为接管,当白色管发射一束光,遇到黑线或白色物体反射,黑色管接收到反射光,然后把光信号转化为电信号送给单片机进行处理,控制电机的正反转,电路原理图如下:图3-43.5声控模块话筒的阻值随接收到声音信号强度的变化而变化,在电容正端产生变化的电压信号,经电容C5耦合和根本共射极三极管V3的电压反向存在,通过单片机P0.4引脚采集和处理可实现小车的声控功能,正常情况下P0.4管脚采集到的是高电平信号,当话筒收到强度足够的声音后,三极管导通后P0.4管脚变为低电平。原理图如图3-5:图3-53.6报警模块单片机上电后各管脚默认为高电平,三极管不导通。当需要执行报警时,单片机P0.6管脚出现低电平信号,三极管导通驱动蜂鸣器报警。如图3-6图3-63.7串口通信模块此模块用于单片机和电脑进行串口通信,但由于计算机串口为RS232电平,高电平为—12V,低电平为+12V,而单片机为TTL电平,高电平为+5V,低电平为0V,因此,计算机与单片机之间通讯时需要加电平转换芯片MAX232.原理图如下图3-7第4章系统软件设计该系统的软件程序采用模块结构,由C语言编写完成,主要由初始化程序,偏道调整程序、声光指示程序,读红外对光管状态,显示程序等模块组成。总的设计流程图如下:循迹流程图:循迹程序:#include<at89x51.h>//包含51单片机相关的头文件sbitLeftLed=P2^0;//定义前方左侧指示灯端口sbitRightLed=P0^7;//定义前方右侧指示灯端口sbitLeftIR=P3^5;//定义前方左侧红外探头端口sbitRightIR=P3^6;//定义前方右侧红外探头端口sbitFontIR=P3^7;//定义前方正前方红外探头端口sbitM1A=P0^0;//定义左侧电机驱动A端sbitM1B=P0^1;//定义左侧电机驱动B端sbitM2A=P0^2;//定义右侧电机驱动A端sbitM2B=P0^3;//定义右侧电机驱动B端sbitB1=P0^4;//定义语音识识别传感器端口sbitSB1=P0^6;//定义蜂鸣器端口#defineRunShowP1//定义数据显示端口voidDelay()//定义机器人调转子时间子程序{unsignedintDelayTime=50000;//定义机器人转弯时间变量while(DelayTime--);//机器人转弯循环SB1=!SB1;//蜂鸣器闪响return;}voidControlCar(unsignedcharConType)//定义电机控制子程序{M1A=0;//将M1电机A端初始化为0M1B=0;//将M1电机B端初始化为0M2A=0;//将M2电机A端初始化为0M2B=0;//将M2电机B端初始化为0switch(ConType)//判断用户设定电机形式{case1://前进//判断用户是否选择形式1{M1A=1;//M1电机正转M2A=1;//M2电机正转break;}case2://后退//判断用户是否选择形式2{M1B=1;//M1电机反转M2B=1;//M2电机反转break;}case3://左转//判断用户是否选择形式3{M2A=1;//M2电机正转 break;}case4://右转//判断用户是否选择形式4{M1A=1;//M1电机正转//M2电机反转 break;}case8://停止//判断用户是否选择形式8{break;//退出当前选择}}}voidmain()//主程序入口{bitRunFlag=0;//定义小车运行标志位RunShow=0;//初始化显示状态ControlCar(1);//初始化小车运行状态while(1)//程序主循环{Start:LeftLed=LeftIR;//前方左侧指示灯指示出前方左侧红外探头状态RightLed=RightIR;//前方右侧指示灯指示出前方右侧红外探头状态if(LeftIR==0)//左侧红外探头没有接收到白色道路信号{ControlCar(4);//左侧没有信号时,开始向右转一定的角度 Delay();//修改这里进行转弯角度的调整 Delay();//同上 Delay(); gotoNextRun;}if(RightIR==0){ControlCar(3);//右侧没有信号时,开始向左转一定的角度 Delay();//修改这里进行转弯角度的调整 Delay();//同上Delay(); gotoNextRun;}gotoStart;NextRun:ControlCar(1);}}避障流程图:避障程序:#include<at89x51.h>//包含51单片机相关的头文件sbitLeftLed=P2^0;//定义前方左侧指示灯端口sbitRightLed=P0^7;//定义前方右侧指示灯端口sbitLeftIR=P3^5;//定义前方左侧红外探头端口sbitRightIR=P3^6;//定义前方右侧红外探头端口sbitFontIR=P3^7;//定义前方正前方红外探头端口sbitM1A=P0^0;//定义左侧电机驱动A端sbitM1B=P0^1;//定义左侧电机驱动B端sbitM2A=P0^2;//定义右侧电机驱动A端sbitM2B=P0^3;//定义右侧电机驱动B端sbitB1=P0^4;//定义语音识识别传感器端口sbitSB1=P0^6;//定义蜂鸣器端口#defineRunShowP1//定义数据显示端口voidDelay()//定义机器人调转子时间子程序{unsignedintDelayTime=50000;//定义机器人转弯时间变量while(DelayTime--);//机器人转弯循环SB1=!SB1;//蜂鸣器闪响return;}voidControlCar(unsignedcharConType)//定义电机控制子程序{M1A=0;//将M1电机A端初始化为0M1B=0;//将M1电机B端初始化为0M2A=0;//将M2电机A端初始化为0M2B=0;//将M2电机B端初始化为0switch(ConType)//判断用户设定电机形式{case1://前进//判断用户是否选择形式1{M1A=1;//M1电机正转M2A=1;//M2电机正转break;}case2://后退//判断用户是否选择形式2{M1B=1;//M1电机反转M2B=1;//M2电机反转break;}case3://左转//判断用户是否选择形式3{M1B=1;//M1电机反转M2A=1;//M2电机正转 break;}case4://右转//判断用户是否选择形式4{M1A=1;//M1电机正转M2B=1;//M2电机反转 break;}case8://停止//判断用户是否选择形式8{break;//退出当前选择}}}voidmain()//主程序入口{bitRunFlag=0;//定义小车运行标志位RunShow=0;//初始化显示状态ControlCar(1);//初始化小车运行状态while(1)//程序主循环{LeftLed=LeftIR;//前方左侧指示灯指示出前方左侧红外探头状态RightLed=RightIR;//前方右侧指示灯指示出前方右侧红外探头状态RunShow=FontIR;//数据显示窗口,指示前方红外探头状态if(FontIR==0||LeftIR==1||//判断前方,左侧,右侧是否有信号输入RightIR==1){ControlCar(2);//让小车后退 Delay();//开始小车后退延时子程序 Delay();//决定了小车后退的步数 Delay();//改变它可以改小车后退的距离 Delay();//这里只是一个延时ControlCar(3);//改变小车为左转方向 Delay();//开始小车左转延时子程序 Delay();//改变它可以改变小车旋转的角度 Delay();//同上 Delay();//同上 ControlCar(1);//改变小车为前进运行状态 SB1=1;

温馨提示

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

评论

0/150

提交评论