




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京工商大学本科生毕业论文(设计)基于以太网的自动寻迹小车设计毕业论文第一章 前言1.1 课题研究的背景和意义计算机和网络技术的发展,引发了远程监测、监控领域深刻的技术变革。系统结构向网络化、开放性方向发展将是技术发展的主要潮流。以太网作为目前应用最广泛的局域网技术,凭借其开放性好、成本低廉、数据传输率高等诸多优势,在工业自动化和过程控制领域得到了越来越多的应用1。依靠以太网技术实现信息共享,给办公自动化带来很大的变革,对系统设计产生了深远的影响。而智能小车,也就是轮式机器人,最适合在那些人类无法工作的环境中工作,该技术可以应用于无人驾驶机动车,无人生产线,仓库,服务机器人等领域。所有这些用途正逐步渗入到工业和社会的各个层面2。 “工欲善其事,必先利其器”。人类在认识自然、改造自然、推动社会进步的过程中,不断地创造出各种各样为人类服务的工具,其中许多具有划时代的意义。作为20世纪自动化领域的重大成就,机器人已经和人类社会的生产、生活密不可分。因此为了使智能小车工作在最佳状态,进一步研究及完善其速度和方向的控制是非常有必要的3。1.2 小车控制以及以太网技术技术研究现状1.2.1 智能小车研究现状机器人的发展大致经过三代的演变。第一代是可编程的示教再现型机器人。目前已经普及化,它是依靠人们给予程序,能重复进行多种操作的系统。由于其不具有传感器的反馈信息,因此不能在作业过程中从外界不断获取信息,来改善其自身的行动品质,故其应用范围和精度受到限制。第二代是具有一定感觉功能和自适应能力的离线编程机器人。此种机器人配备了简单的内、外部传感器,能对自身的实际位置、方向等进行测量,能通过“视觉”、“触觉”等传感能力对外部环境进行实际探测,从而由这些反馈信息在事先编好的算法和程序指导下对操作过程进行调整。它与这几年迅速发展起来的传感器、微机技术和仿生学、控制理论等有密切关系。第三代机器人是能感知外界环境与对象物,并具有对复杂信息进行准确处理,对自己行为做出自主决策能力的智能机器人。这种机器人装有多种传感器,并能将多种传感器探测到的信息进行“融合”(多传感器的信息融合)并做出相应决策,自主完成某一项任务。它能有效地适应变化的环境,具有很强自适应能力,是具有自学习和自治(自主决策)功能的智能机器人。目前机器人的研究正向着复杂型、智能型、自主型发展,机器人与人类生活联系得越来越紧密。作为现代机器人中一个重要分支的移动式机器人是一个相当活跃的研究领域45。1.2.2 以太网研究现状目前高档数控系统大多采用现场总线来实现数控系统网络化和数字化的要求。现场总线一般采用专用硬件,虽然实时性好,但标准过多互不兼容,硬件成本高,传输速度低,与管理级(如企业信息化)很难兼容,现场总线也已经逐步向以太网靠拢。以太网的飞速发展,以其低成本、高稳定和可靠性、应用广泛和支持技术成熟的优点已经成为通信领域的事实标准。但其在商用上的成功并不能掩盖其在工业应用中的缺陷。将以太网应用于控制层和现场层的数控系统上,由于其MAC 层协议采用CSMA/CD,具有排队延迟不确定的缺陷,使之无法在工业控制中得到有效使用。响应时间的“不确定性”(即实时性差)和系统内各模块的“不同步性”成为了阻碍以太网技术“一网到底”的瓶颈。随着网络技术的发展,新的数控机床大都提供了以太网接口,目前以太网主要用于把数控机床接入管理网络,有些实现现场总线通信,但在设备级还存在着无法实现信息网络发布、传输速度慢、实时性差、可靠性差等缺点。以太网技术已经被工业自动化系统广泛接受,以太网技术从现场向设备渗透是一个大的趋势。1.3 本文的研究内容和组织结构本文以小车的控制为研究对象,以AT89S52 单片机为核心,以ZNE-100TL模块为以太网接口,设计了一个基于以太网的远程小车控制系统。根据题目的要求,确定如下方案:通讯部分:分为以太网口控制和串口直接控制两部分。以太网控制部分利用PC上位机定义网络端口(Port80)通过以太网将数据传输到ZNE-100TL模块中,利用模块将网络信号转化为串口信号,将指令送入MCU中对小车实现控制。串口部分则是直接利用PC上位机串口COM1(Port4001)对小车进行数据和命令的传输。寻迹部分:在现有玩具电动车的基础上,加装反射式光电黑白线传感器,实现对电动车的运行位置的检测,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据进行对小车的控制并且实现状态的反馈显示6 7。显示部分:利用8*8 LED点阵实现图形的拼凑。图形是通过行扫描,对应直接输入8位列信号最后形成图形的。对应小车不同的运行状态,形成箭头图形,显示小车运行的状态和方向。全文在第二章主要介绍各个部分电路以及原理,而第三章主要介绍第二章的电路原理对应的硬件系统,第四章介绍硬件系统对应的软件内容,包括单片机内核程序,上位机界面程序简介等等。第二章 方案设计与论证2.1 系统组成方案AT89S52单片机根据题目的基本要求,设计任务主要完成电动车在规定时间内按规定路径稳定行驶,并能具有保持平衡功能,同时对行程中的有关数据进行处理显示。为完成相应功能,系统可以划分为以下几个基本模块:电源模块、电动机驱动模块、寻迹线探测模块、平衡状态检测模块、信息显示模块。如图2.1所示: RS-232上位PC机小车控制电路LED点阵显示 RS-232以太网ZNE-100TL光电传感器检测图2.1 系统框图2.2 微控制器的选择主控芯片是整个系统的核心,通过外部采样决定整个系统的工作情况。因此主控芯片要能保证系统的稳定及达到系统的要求。由于我们大学期间学习并使用的主要是51系列的单片机控制芯片,相对比较熟悉。故我们决定采用AT89S52单片机作为我们的主控制器。优点是:价格低廉,程序资源丰富,技术比较成熟。缺点:运算速度慢,数字外设少,片内没有AD转换器,不能直接进行数据采集,接口电路比较复杂。下面对AT89S52作简要介绍。AT89S52:l 主要性能:与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33Hz 、三级加密程序存储器、32个可编程I/O口线 、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。l 功能特性描述:AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0 HZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。l 引脚介绍P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,能驱动8个TTL逻辑电平。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在Flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8 位双向I/O口,P1输出缓冲器能驱动4 个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(TTL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如下表1.0所示。 表2.0 P1口引脚的第二功能引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出;P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制);P1.5MOSI(在系统编程用);P1.6MISO(在系统编程用);P1.7SCK(在系统编程用);P2口:P2口是一个具有内部上拉电阻的8位双向I/O 口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(TTL)。在访问外部程序存储器或用16位地址读取外部数据存储器。在使用 8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在Flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P3口亦作为AT89S52特殊功能(第二功能)使用,如表1.0所示。 在Flash编程和校验时,P3口也接收一些控制信号。 表2.1 P3口引脚的第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外中断0)P3.3INT1(外中断1)P3.4TO(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平使单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp8。2.3 电机及驱动芯片的选择与设计方案1:选用步进电机。步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机分三种:永磁式(PM)、反应式(VR)和混合式(HB)。利用步进电机的准确定长步进性能方便地实现调速和转向,可以准确的测量速度、路程、及时间,简化编程和硬件连接的工作量。但步进电机的转矩较小,不能满足小车爬坡的要求。且成本高,过于高的精度对本实验来说十分浪费。方案2:选用直流电机。定义输出或输入为直流电能的旋转电机,称为直流电机,它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。直流电机的优点是轻便小巧,转矩大,控制简单。利用脉宽调制(PWM)可以很容易地改变直流电机的速度,甚至可以达到步进的效果。而且造价比较低,造合一般的小型系统使用。经比较验证,显然方案1的步进电机的机械结构复杂,而且性价比不高,而方案2的直流电机与小车本是一体的,性能也比较好,由于本系统对时间的要求不高,采用减速直流电机完全可以满足要求。至于题目要求的精确平衡控制,采用一定的算法就可以解决。因此采用方案2,选用性价比相对比较高的减速直流电机。至于驱动芯片则采用专用的L298N电机驱动芯片,如图2.2所示:图2.2 电机驱动电路图2.2中硬件包括L298N芯片、4个5V的稳压管、2个0.1uF的电解电容、2个100uF的电解电容。工作时,单片机向L298N的ENA、ENB两口发送PWM波来控制左右两电机的转速。而IN1IN4四个接口则用来选择电机的旋转方向。如当IN1为高电平,IN2为低电平时,OUT输出稳定的5V电压,OUT2输出0V电压,使电机A正向旋转,控制小车前进。2.4 寻迹模块的设计这一模块是整个系统的核心模块之一,主要功能是完成小车寻着跷跷板黑面上的白线行驶,保证小车直行,从而保证了平衡时的精确度,也可以很好地完成让小车一直在板上行驶的要求。方案1:采用CCD单色摄像头,配计算机主板及图像采集卡来识别黑背景下的白线,目前做的比较成熟,效果相当好。但成本高,很难找到合适的载体,且处理电路十分复杂。方案2:采用红外发射接收对管传感器。红外发射管的红外线照射到跷跷板平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射管发出的光线则检测出跷跷板黑面继而输出高电平。该传感器虽然灵敏度高,且容易购买,但是集成度比较低,需要辅助电路才能返回TTL电平,因此造成不便。方案3:用光敏电阻组成光敏探测器。光敏电阻的电阻值可以跟随周围环境光线的变化而变化。光线照射到跷跷板面时反射较弱,而照射到白线上时反射强烈。因此光敏电阻在跷跷板白线上方时阻值会发生明显变化,而且有集成度高的封装元件,且价格便宜。而且这种方案受光照影响不大,工作比较稳定。经过比较,我们在这一模块采用方案3,使用TK-20黑白线检测传感器,将三个传感器固定在小车前端的底盘上。根据黑线吸收光,白纸反光的原理从而输出不同的门限。 图2.3 黑白线检测传感器外貌及外部电路2.5 显示模块的选择与设计方案1:采用LCD液晶显示。优点是显示信息丰富,功耗低,体积小,画面效果好,分辨率高,人机界面友好,但液晶需要利用控制芯片创建字符库,编程量大,占用资源多,可视性较差,成本也比较高。方案2:采用LED数码管显示。优点是对外界环境要求比较低,显示明显,亮度较高,造价低廉,编程控制容易,如果接口不够用,还可以使用串并转换芯片进行驱动。缺点是显示信息比较少,没有LCD显示的丰富。由于本系统只用显示运行状态,且LED数码管质量比较轻,利于小车行走,可视性好,成本低,控制方便,故选择1个 LED数码管Ark Sz411588k作为系统的显示部分。当小车寻迹时,会显示小车的运动动作如直行时,显示向前的箭头,左转时显示左转的箭头等。图2.4 显示电路显示电路模块中,包括的硬件有LED点阵灯Ark Sz411588k、74LS245(LED驱动芯片)。单片机I/O口输出的电压虽然在理论上能够达到5V,但是加上负载以后往往不能达到这样的数值,这也就是电机、LED都需要加驱动电路的原因。本系统要使用LED点阵灯Ark Sz411588K显示小车运行的状态,所以必须加入驱动电路,驱动芯片为74LS245。加入驱动之后就可以正常显示了,否则LED灯不会被点亮。2.7 系统原理图PC串口图2.5 系统电路原理图整个系统由显示模块、电机驱动模块、串口接收模块、寻迹传感器接收模块组成。系统通过串口接收上位PC传送来的指令,然后由单片机对指令进行分析,再进一步对电机驱动模块输出控制电平,实现对小车的控制。当单片机接收到指令自动寻迹时,单片机进入寻迹子程序,此时由传感器对黑白线进行检测,并自动控制电机的转动同时显示模块同步对小车运行的方向进行显示。而每当单片机接收到指令时,单片机向PC机发送反馈数据。(图2.5中左下角用开关代替传感器检测的高低电平)第三章 硬件设计3.1 单片机最小系统介绍经过与同类产品比较,考虑到系统的稳定性和调试下载方便,成品单片机最小系统板并不是我们最好的选择。不仅没有减少我们的工作量,而且冗余的器件又加大了车体的质量,使小车的机动性大大降低。因此我选择自己在PCB焊接板上制作单片机的最小系统。一来自制电路板有较大的自由度,可以按照自己的想法安排硬件的位置;二来自制电板更利于在车体安装,可以方便的打孔,撮掉棱角。三来可以根据自己的需要安装测试硬件,而且拆卸方便9。图3.1是自制系统板的硬件图:图3.1 自制系统板3.2电机驱动电路我们的电机使用原车自带的直流电机,加以齿轮减速,这样的好处是可以将电机很好的固定在车架上。驱动使用L298N双电机驱动芯片,由单片机的P1口输出控制信号来控制电机的转速和方向。如图3.2所示:L298N附带散热片图3.2 驱动芯片L298N3.3 车架的选择我们的车架采用的是从市场上购买的专门用来做小车的车架,不仅自带电机、固定方便,还配有小块的电路板,可以在上面焊接一些简单的电路。而且更主要是这两个电机参数都差不多,能保证两个电机的对称性。如图3.3所示:图3.3 车架3.4 电源的选择考虑到我们的系统板可以使用USB供电,故我们将系统板的正负电源送给电机和传感器,这样我们只要给系统板供电就可以了,而我们小车运行的路线是固定的,距离也不是很远,使用USB延长线完全可以胜任,所以我们整个系统采用USB供电。这样即节省了我们使用电池的费用,也能保证电压的稳定性。图3.4自制USB电源3.5 寻线传感器电路以及显示电路我们的寻线传感器使用黑白线检测传感器,这样可以利用黑白线反射率的不同而将黑白线区分开来,如图3.4所示,在车头顶部两装3个黑白线传感器来寻线,3个传感器更能准确的让车识别轨迹。显示模块如第二章的2.5介绍的,实物图如下:图3.5 LED点阵实物图3.6 ISP下载线模块利用ISP下载模块的原因非常简单,ISP下载功能本身对于单片机来说就是一个提升,他是单片机可能通过USB传输、烧录程序,而不需要使用昂贵的烧写器。同时,由于自制单片机系统板的我来说,如果烧录程序只能通过烧写器来完成,插拔单片机就会成为调试单片机时的一种障碍,因为多次插拔往往容易损坏引脚,造成单片机的浪费。于是我想到了焊接ISP接口引脚并且构面ISP驱动电路模板。而且这也成为选择AT89S系列单片机而不使用AT89C系列单片机的重要原因 10。首先是焊接引脚,根据ATS51系列对应ISP下载引脚有如下电路图3.6:图3.6 ISP引脚电路根据此电路我进行了焊接如下图3.7:ISP引脚(突出端对应黑线)图3.7 ISP引脚焊接之后需要制作驱动电路,驱动电路的核心芯片是ATMEGA8,要注意的是,首先USB下载线本身就是一种AVR单片机,在制作完成后也得通过其他并口或者串口ISP下载线给他下载程序,这样他才能工作。第二,先得了解AVR单片机M8的基本资料。这样才能进行调试。我一开始考虑的是自己制作电路,但是由于时间紧迫而且担心稳定性问题就选择了购买成熟的模块,一来价格便宜(远比烧写器便宜),二来保证其工作的效率。购买模块如下图3.8:图3.8 ISP模块于单片机连接图整个ISP驱动模块的电路是由USB供电直接提供的,重点在于MOSI、MISO、RST、SCK要一一对应。不同的PC软件对应的引脚图实际上是有差别的,而利用成品的模块也方便了许多。ISP驱动模块烧写程序界面如图3.8:图3.9 ISP人机对话界面3.7 以太网数据的传输以太网数据传输模块是本系统的核心模块之一,而系统的以太网功能是通过ZNE-100TL 模块实现的。ZNE-100TL 是周立功公司开发的一款嵌入式以太网转串口模块,它内部集成了TCP/IP 协议,配有32位ARM7CPU、16KB RAM、128KB FLASH 和10M以太网接口,支持RS-232 和RS-485 接口,支持动态或静态获取IP 地址,有TCP Server,TCP Client,UDP,Real COM driver,Group Mode 等多种工作方式,可使用网页浏览器进行配置,提供通用配置函数库,方便用户使用VC、VB、Delphi 和C+Builder 开发应用程序。由于ZNE-100T 以太网模块能够实现串口设备和以太网设备之间数据的透明传输,利用它可以轻松完成嵌入式设备的网络功能。ZNE-100T 以太网模块的波特率、开始位、停止位以及工作方式通过配置软件来设计。模块连接方式如图3.10:图3.10 以太网数据传输示意图在本系统中,设置其波特率为9600b/s(考虑到单片机于PC本身的通讯),开始位为1 位,停止位为1 位,工作方式为TCP Sever。在TCP服务器(TCP Server)模式下,ZNE-100TL模块不会主动与其它设备连接。它始终等待客户端(TCP Client)的连接,在与客户端建立TCP连接后即可进行双向数据通信。通讯的核心是IP地址,通讯端口等通讯设置的有关配置。首先是IP地址,由于本模块需要建立PC和ZNE-100TL在同一网段,设定PC机情况如下IP地址:193.168.0.55,子网掩码: 255.255.255.0,默认网关:192.168.0.1,DNS服务器:192.168.0.2,备用DNS服务器:192.168.0.1。ZNE-100TL的IP与PC不同为:192.168.0.178,其他与PC设置相同。另外一项重要的属性是端口PC的通讯端口的配置,一共有165534端口可以设置,但是在TCP和UDP协议中有一些端口已经被占用,如TCP端口多通道服务器占用端口1,ECHO占用端口7,网络状态占用端口15,TELNET占用端口23等等。在本设计中设定网络参数如下:网页端口80,命令端口3003;而串口设定工作端口4001;TCP Turo启用,TCP连接数1,TCP目标端口6001,TCP目标IP 192.168.0.1。事实上ZNE-100TL的配置十分方便,有三种方式。可以用模块安装盘自带的ZNetCom软件直接配置;也可以在WINDOWS自带的超级终端里面使用配置;更可以在IE浏览器中输入模块的IP地址,链接后可以直接配置11。整个模块和模块的评估版如下图3.11和3.12:图3.11 ZNE-100TL模块图3.12 ZNE-100TL评估版3.8 单片机串口设计由于AT89S52 单片机本身提供了一组全双工串行传输口,由TXD 引脚来传送串行数据,而由RXD引脚来接收数据,可是其工作逻辑电平皆为TTL 电平(0V,5V)。而ZNE-100T 模块配置的是RS-232标准串行接口,电平为(+12V,-12V),二者的电气规范不一致,因此要完成单片机与PC 机的数据通信,必须对单片机输出的TTL 电平进行电平转换12。本系统采用MAXIM 公司生产的MAX232 电平转换芯片来实现RS-232 标准接口通信。电路原理图如3.13(a)实物如图3.14(b):图3.13(a) RS-232串口以及MAX232原理图图3.13(b) RS-232串口以及MAX232实物图通讯时,上位机向单片机发送申请使单片机的接受端为有效,这时单片机允许接收上位机指令。而后上位机发送指令,单片机根据指令进行对电机的控制,当控制完成后向上位机进行数据的发送,反馈运行的状态,并且关闭接收端,一直等待上位机再次打开单片机的接收端才会接收数据。3.9 轨道的设计跷跷板的设计我们使用质地坚硬的木板,在板面上用黑色胶带覆盖,在板的中心用白胶带做成一条中心线,供小车寻迹。轨道的整体形状也结合了直道和弯道,这样可以全面测试小车的转弯能力。如图3.14所示:图3.14 轨道3.10 整车图片整个车体的设计以轻便和简单为原则,舍弃了成品系统版以后,车体的设计有了比较大的自由度,一共分为三层。最下层是车板,连接发动机,三个传感器;第二层是单片机系统部分,单片机主要器件都集中在这一层;最上面一层只有LED点阵显示模块,使观察方便了许多,而ZNE-100TL模块并不跟随车体。从小车的后面和侧面两个角度拍摄小车的整车图,如图3.15、3.16所示:图3.15 小车的斜面视图图3.16 小车侧面视图第四章 软件设计软件在一个智能系统中扮演着举足轻重的角色,软件设计的好坏直接影响着整个系统的性能。目前已经有很多种嵌入式实时多任务操作系统,如:Linux、RTX51及UC/OS等,可以更有效的利用系统的各种资源,简化编程,缩短开发周期。鉴于本系统采用AT89S52单片机为控制器,本身的各种资源都很有限,引入一个操作系统代价太大,所以考虑直接来优化系统的软件结构,同样可以达到“多任务”、“实时”等要求。4.1 软件介绍4.1.1 单片机编程软件KEILKeil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。2. Keil C51单片机软件开发系统的整体结构C51工具包中的uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器,如EPROM中。4.1.2 电路仿真软件PROTUESProtues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在Protues绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在Protues的原理图中看到模拟的实物运行状态和过程。Protues 是单片机课堂教学的先进助手。Protues不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。4.1.3 人机对话界面编写程序VC+6.0VC+6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C+语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC+提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。4.2 单片机软件部分单片机软件主要分为三大部分,单机的控制,传感器信号的接收和处理,LED点阵的反馈显示。三者相互关联,密不可分。4.2.1 系统思维框架图整个系统软件开发的框架图如图4.1所示:图4.1总框架图双向箭头所表示的是指令的传输和反馈,而单项箭头仅表示的指令的传输。4.2.2初始化程序在程序中负责初始化单片机系统电机和串口的定时器以及单片机的波特率等属性,详细程序如下:/*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/void init_sys(void) /*系统初始化函数*/ /*定时器初始化*/ en1 = 1; en2 = 1;/*串口中断及其附带定时器初始化程序*/void init_UART(void)/*定时器初始化*/ SCON = 0x50;/UART in mode 1 8位,REN=1 TMOD = TMOD|0x20; /T1工作方式2 TH1 = 0xFD;/9600 Bds at 11.059MHz TL1 = 0xFD;/9600 Bds at 11.059MHz TR1 = 1;/Timer 1 run4.2.3 电机控制程序设计常规的设置方法是利用某一个定时器对电机进行PWM的控制以达到控制电机转速的原理,但是我的实验要求是尽量快速的跑完轨迹,于是我直接取消了PWM控制部分,使单片机控制电机全速运行。这样对电机的延时设定有比较高的要求。电机控制主要分成三种状态,运行(RUN)、暂停(PAUSE)、停止(STOP)。其中暂停用于转弯,停止用于到达终点时。/*/电机控制部分,以指定速度运行函数Lrun(),Rrun()函数/左边电机运行函数void Lrun(INT16U speed)INT16U cnt;cnt = speed_cnt /speed;en1=1;s1=1;s2=0;lDelay(cnt);/左电机停止函数void LSTOP(void)en1=0;/left pausevoid Lpause(INT16U adjust)INT16U cnt;cnt = speed_cnt /adjust;en1=0;LED88LEFT(cnt/400);en1=1;/left backvoid Lback(INT16U speed)INT16U cnt;cnt = speed_cnt /speed;en1=1;s1=0;s2=1;lDelay(cnt);lDelay(cnt);en1=0;/右边电机运行函数void Rrun(INT16U speed)INT16U cnt;cnt = speed_cnt /speed;en2=1;s3=1;s4=0;lDelay(cnt);/右电机停止函数void RSTOP(void)en2=0; /right pausevoid Rpause(INT16U adjust)INT16U cnt;cnt = speed_cnt /adjust;en2=0;LED88RIGHT(cnt/400);en2=1;/right backvoid Rback(INT16U speed)INT16U cnt;cnt = speed_cnt /speed;en2=1;s3=0;s4=1;lDelay(cnt););lDelay(cnt);en2=0;4.2.4 寻线程序设计寻线是系统的主要组成部分之一,寻线程序设计的好坏直接影响到系统的效率和稳定性。其中P3.5,P3.6,P3.7引脚分别接寻线传感器输入。检测到三口信号之后进行反应选择。/*/sbit follow_L = P35; /LEFT SENSERsbit follow_M = P36; /MID SENSERsbit follow_R = P37; /RIGHT SENSER/*=寻线=*/寻迹函数 follow(void)void follow(void)INT8U temp;temp = follow_L;temp = (temp1)|follow_M;temp = (temp0;wxd-) P0=tabcnta; /送行扫描码P1=wxdtabcntbcnta; /送列显示码cnta+;lDelay(256); if(cnta=8) cnta=0; timecount+; if(timecount=330) /定时一秒 timecount=0; cntb+; if(cntb=5) cntb=0; /左转显示程序void LED88LEFT(INT16U temp) INT8U cnta; INT8U left; for(left=temp;left0;left-) P0=tabcnta; P1=midARROWcnta; cnta+; if(cnta=8) cnta=0; lDelay(386); /右转显示程序void LED88RIGHT(INT16U temp) INT8U cnta; INT8U right; for(right=temp;right0;right-) P0=tabcnta; P1=backARROWcnta; cnta+; if(cnta=8) cnta=0; lDelay(386); /前进显示程序void LED88MID(void) INT8U cnta; INT8U mid; for(mid=8;mid0;mid-) P0=tabcnta; P1=rightARROWcnta; cnta+; if(cnta=8) cnta=0; lDelay(400); /后退显示void LED88BACK(void) INT8U cnta; INT8U back; for(back=16;back0;back-) P0=tabcnta; P1=leftARROWcnta; cnta+; if(cnta=8) cnta=0; lDelay(500); /停止显示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年普通铣工考试试题及答案
- 2025年机械加工考试题及答案
- 医师资格考试(实践技能)复习题库及答案(永州2025年)
- 临床执业医师模考模拟试题及参考答案详解【培优A卷】
- 激光加工设备装调工三级安全教育(班组级)考核试卷及答案
- 景区运营管理师专业知识考核试卷及答案
- 嗅辨员抗压考核试卷及答案
- 2025年维修机加工考试题及答案
- 食品检验员工艺创新考核试卷及答案
- 柠檬酸微生物菌种工质量管控考核试卷及答案
- 电气班组安全教育培训课件
- 2025司法局招聘司法所协理员历年考试试题与答案
- 戊戌变法课件+2025-2026学年统编版八年级历史上册
- 公司合规管理与检查表模板
- 质量月安全知识培训课件
- 《2025同上一堂思政课》观后感10篇
- SY4201.2-2019石油天然气建设工程施工质量验收规范设备安装塔类检验批表格
- 人大监督法讲解课件
- 2025至2030年中国酒吧市场发展现状调查及投资趋势前景分析报告
- 2025至2030年中国老花镜行业发展监测及市场发展潜力预测报告
- 2025年中国银行招聘考试(综合知识)历年参考题库含答案详解(5卷)
评论
0/150
提交评论