收藏 分销(赏)

学位论文-—循迹小车-循迹小车设计.doc

上传人:鼓*** 文档编号:9902872 上传时间:2025-04-12 格式:DOC 页数:32 大小:659KB 下载积分:8 金币
下载 相关 举报
学位论文-—循迹小车-循迹小车设计.doc_第1页
第1页 / 共32页
学位论文-—循迹小车-循迹小车设计.doc_第2页
第2页 / 共32页


点击查看更多>>
资源描述
毕业设计 题 目 循迹小车设计 英文题目 The design of car tracking 学生姓名: 申请学位级别 工学学士 学 号: 专 业: 机械电子工程 系 别: 机械与电子工程系 指导教师: 职称: 二零一三年六月 三 日 摘 要 该设计是为一个简易的循迹小车软硬件系统,该小车是基于8位的51单片机进行用控制的,循迹小车的研究意义涵盖了勘探、工业、生活以及探月工程。循迹是基于自动引导机器人系统,用以实现小车自动识别路线,以及选择正确的路线。从设计的功能要求出发,设计包括了小车控制系统的软件设计和硬件设计。小车采用了简易的三轮构架式,用由前两轮驱动并控制转向的控制模式。控制系统以STC89C52为控制核心, 由STC89C52产生PWM波,控制小车速度。利用红外光电传感器探头对路面黑色轨迹进行检测,并确定小车当前的位置状态,再将路面检测信号反馈给STC89C52。STC89C52对采集到的信号予以分析判断,及时控制并驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。 关键词:循迹小车,STC89C52,红外光电传感器 ABSTRACT The design is a simple automatically tracing the car system, and its significance covers the industry, life, exploration, and human concern lunar exploration. The design aims to design a can of independent walking in accordance with the trajectory of human default (or completely autonomous walking) and to complete the tasks assigned to the car. The design includes control system hardware and software design. Relatively high stability of the four trusses in order to adapt to the complex terrain, before the rotation of the rear-wheel drive control mode. Control system to control the core to STC89C52 microcontroller PWM wave to control the car speed. Using infrared photoelectric sensor to detect the black track on the road and to determine the current status of the car, and then the road detection signal is fed to the microcontroller. Microcontroller to be collected signal analysis and judgment, and timely control of the drive motor to adjust the steering of the car, so that the car is traveling along the black track to achieve the purpose of the car automatically tracing. Keywords: car tracking;STC89C52;Infrared sensors 目 录 1. 绪论 1 1.1 循迹小车概述 1 1.1.1 循迹小车的发展历程 1 1.1.2 循迹小车的应用 2 1.2 智能循迹小车的关键技术 2 2. 方案的设计与论证 4 2.1 主控系统 4 2.2 驱动模块 4 2.3 循迹模块 5 2.4 机械系统 5 3. 主要器件介绍 6 3.1 单片机STC89C52的介绍 6 3.2 电机介绍 8 3.3 电机驱动模块L298N的介绍 8 3.3.1 L298N的引脚功能 9 3.3.2 L298N的工作参数 10 3.3.3 L298N的逻辑控制 10 3.4 TCRT5000的介绍 11 3.5 LM324的介绍 11 4. 硬件系统设计 13 4.1 总体设计 13 4.2 主控电路 13 4.2.1 外部时钟电路 14 4.2.2 复位电路 14 4.2.3 P0口外接上拉电阻 15 4.3 轨迹识别电路 15 4.4 电压比较电路 16 4.5 直流电机驱动电路 17 5. 程序设计 18 5.1 程序总体框架 18 5.2 主程序模块 20 5.3 循迹程序模块 21 5.4 电机程序模块 22 5.5 定时器程序模块 24 结论 26 致 谢 27 参考文献 28 附 录 29 绪论 1. 绪论 1.1 循迹小车概述 循迹小车是一种能够根据人们预定的路线行走的小车,其应用范围极其广泛。早在二十世纪五十年代就研究出一种智能的搬运机器人,其主要功能是根据预定的路线进行物品搬运。 循迹小车装备了一些能够识别路线的传感器,其传感器种类有电磁传感器、光学传感器。智能小车根据传感器识别的路径行进。工业中使用的智能循迹小车主要是以蓄电池为动力来源,可以通过电脑使用程序控制其行走路径和动作,其具有不需要驾驶员操作就能自动的把指定物品从起始点送到目的地。 循迹小车还有另一个很鲜明的特点,那就是智能化和自动化,工业使用的智能循迹小车能够根据仓库存储货位情况以及生产流程的一些情况灵活的改变行走路径,而且与传统的运输带和运送线相比改变路径的费用要明显低很多,降低了企业的成本。此外工业使用的智能循迹小车一般都装备有装卸机构,其能实现的功能更多,能与其它的物流设备自动的对接,实现全自动化的物品装卸以及搬运。此外由于工业使用的智能小车的动力是由蓄电池提供的,其使用的能源是无污染的电能,且小车行进过程中基本没有噪音,可以在环境清洁的场地工作。 1.1.1 循迹小车的发展历程 随着社会的发展,科技水平在不断的提高,人们迫切希望制造出一种能代替人做一些十分危险或者精度要求非常高等一些不适合有人来完成的事情的机器,在这样的环境下诞生了机器人技术这门学科。1959年制作出世界上第一台机器人,至今已五十多年了,在五十多年中,机器人技术一直在飞速发展和进步中,现在的机器人技术已经是一门包含了电子、机械、计算机、信号处理、自动控制、传感器等多学科高端技术。众观循迹小车的发展历史,可以将循迹小车的发展分为三个阶段: 第一阶段的循迹小车是没有传感器,只采用了简单的开关来控制,可以通过编程设置小车的运动参数和路径,但是这阶段的小车在工作过程中,不能够根据工作场地的变化而改变自身的行进轨迹。 第二阶段的循迹小车支持离线编程并且具有检测并适应场地的能力,这类的循迹小车装备了一些简单的传感器,可以通过传感器知道自身所处的位置、速度等一些物理量。其电路系统闭环控制系统,能够较好的适应场地的变化。 第三阶段的循迹小车是多功能的、智能的,但该类循迹小车目前正在研究和发展的阶段。其具有由各种传感器组成的感官系统,通过感官系统采集外部环境的信息,能准确的感知环境的变化。智能的循迹小车能够独立的完成任务,有智能的信息处理系统,在一些结构化和半结构化的工作场地中,能跟据场地的不同而自动的对自身功能进行调整,有简单的决策能力和一定的适应能力,以及学习能力。 1.1.2 循迹小车的应用 循迹小车的主要应用场所如下: ① 危险的场所与特种行业 在军事上的战场侦查以及扫雷排雷等,在核电厂内核材料的运送等,或在黑暗的环境中运送物料等,像这些工作都是十分不适合有人去完成的,在这种情况下循迹小车就可以出色的完成任务。 ② 邮局、图书馆、港口码头和机场 这些场所都是一些人口密集的场所,其需要运送的物品量大,而且充满了不确定性和动态性,搬运的过程也比较单一。智能循迹小车就有智能化、自动化等优点可以很好的完成运输任务。现在越来越多的这类场所开始使用循迹小车了。 ③ 烟草、医药、化工、食品 这些场所都是一些具有安全、清洁、无排放污染等其他一些特殊环境要求的场所。在这种场所下,使用蓄电池的循迹小车正好能满足这些要求,所以在这些场所的货物的搬运工作大多数都是有循迹小车完成的。 ④ 制造业 在制造行业的生产线上,智能循迹小车能够大显身手,其能准确的、灵活的、快速的完成物料运送任务。智能循迹小车比人力搬运系统更加灵活,其运送路径可以根据生产要求及时调整,能够大大提高生产灵活性,提升了企业竞争力。目前,世界上主要的汽车生存厂,如大众、丰田、克莱斯勒、通用等,智能循迹小车已经得到了广泛运用。 ⑤ 仓储业 在世界上有超过2100个厂家在使用智能循迹小车,这些智能循迹小车的数量大约有两万台。使用智能循迹小车的数据库处理系统,能够轻松的完成大量的储存和装卸物品的任务。 1.2 智能循迹小车的关键技术 现在世界各国都在研究着多功能、智能化的汽车自动导航系统,并以实现能够不需要有人类驾驶就能自动的到达乘客所指定的目的地为目标。汽车自动导航系统是一种非常复杂的系统,它不仅需要具有普通汽车的运动机构,还需要能够识别指令,根据识别出来的指令来进行路径规划,以及对其他事物的感知,能够做出正确的决策等一些拟人的智能行为。 人类就有听觉、嗅觉、味觉、视觉、触觉,能够通过这些感官去感知外部环境,然后通过大脑对感官感知到的信息进行处理、判断和分析,从而能够全面的认知事务。这样一个认知、分析、处理的过程,我们称之为信息融合。机器的多传感器信息融合技术的基本原理就是在模仿大脑的这系列过程。多传感器信息融合是一种将分布在不同位置不同功能不同种类的传感器所测得的数据进行综合,然后消除存在的矛盾和冗余,以减小不确定性,从而得出对环境或物体的一致性描述的过程。 多传感器信息融合有许多的优点: ① 增加了系统的生存能力; ② 减少了信息的模糊性; ③ 扩展了采集数据覆盖范围; ④ 增加了可信度; ⑤ 改善了探测性能; ⑥ 提高了空间的分辨力; ⑦ 改善了系统的可靠性 ⑧ 信息的低成本性[1]。 28 方案的设计与论证 2. 方案的设计与论证 2.1 主控系统 根据设计要求,我选择以单片机为整个系统的核心,由单片机控制行进中的小车,以实现指定功能。仔细分析小车要实现的功能,其关键是在于实现小车能够根据一些条件进行自动控制,而单片机正好能够满足这一要求,并且单片机还具有一定的优势,其价格较为低廉,控制简单,编程方便,有比较强大的控制功能以及可以位寻址功能等,因此,选用单片机比较适合,且单片机丰富的资源也能得到充分的发挥,故以单片机为系统核心是较为合适的方案。 由于该设计具有多个输入量,因此就需要能够处理多个输入量的标准单片机,像那些被精简了I/O和储存器的小体积单片机就不可选用。被设计的输入量都是一些简单的开关量,所以就不需选用数模转换器和模数转换器,如果选用模数转化器和数模转换器不仅会增加设计成本,而且还会增加设计复杂度,增加系统的不稳定性。根据以上分析,我从众多单片机中最终选用了STC89C52系列单片机为本设计的控制核心。STC的51系列单片机不仅价格低廉,而且其功能也十分强大,其输入输出口均能按位寻址,且具有强大的位操作寻址功能,并且还能进行各种位逻辑运算,从而能够很方便的对输入输出口进行控制。 综合了对传感器、电机驱动等诸多因素考虑后,我决定选用一片单片机,充分利用了STC89C52单片机的资源。 2.2 驱动模块 对电机进行控制的方法非常的多,首先可以通过继电器对电机进行控制,通过控制继电器的通与断来控制电机电路的接通与断开,从而来调整小车的方向。此方法的优点是电路比较简单,但此方法有较多缺点,如继电器的响应时间较慢,容易损坏,且继电器的可靠度不高,故继电器方案不适合本设计的要求。 其次,我们可以采用数字电位器对电动机进行分压,从而达到对电动机进行调速。但是数字电位器的价格十分昂贵,更重要的问题是电动机的内阻一般都是十分小的,通过电动机的电流却很大,对电动机进行分压不仅降低了电机的效率,而且实现起来也十分的困难。 另外,我们可以采用功率放大器对电机进行控制,线性型的驱动电路结构简单,加速能力强,通过采用达林顿管组成的 H型桥式电路对电机进行驱动。利用单片机控制达林顿管,使达林顿管工作在占空比可调的状态下,精确地调整电机转速。该电路由于工作在管子的饱和和截止状态下,效率很高,而且H型桥式电路能够保证简单的实现转速和方向的控制,电子管的开关速度非常快,稳定性也很强,所以这是一种被广泛采用的 PWM技术。现市面上有很多此种芯片,我选用了L298N。 2.3 循迹模块 循迹模块是用来确定循迹小车确定自身位置的,如果循迹模块的选择不当将影响整个系统的稳定性。循迹模块可以采用简易的光电传感器并结合外围电路进行探测,此方案虽然看上去简单可行,但是在实际的测试结果中却并不是很理想,对小车的稳定性要求很高,而且容易引起误测,也容易受环境中光线和路面材料影响。在小车测试过程中很容易出现问题,而且会导致小车因循迹模块的不稳定致使整个循迹小车的不稳定,故循迹模块不适合选用该方案。除此之外, 循迹模块采用三只红外传感器,平均的分布在车头上,相邻两传感器的间距小于或黑色轨迹的宽度,根据三只红外传感器检查黑线来控制小车能够循着黑线前进,测试表明,只要比较合理的安装好三只红外传感器的位置就可以较好的实现循迹功能。 2.4 机械系统 本题目要求小车的机械系统稳定、灵活、简单,可选用三轮和四轮式,考虑到简化设计,我选用了三轮式,驱动和转向方式都较灵活。 驱动部分:采用玩具小车原有的驱动电机,由L298N双通道马达驱动模块驱动左右两个马达,其力矩完全可以达到模拟效果。 电池的安装:将电池放置在车体的下面,降低车体重心,提高稳定性,同时可增加驱动轮的抓地力,减小轮子空转所引起的误差。 主要器件介绍 3. 主要器件介绍 3.1 单片机STC89C52的介绍 该STC89C52单片机是由宏晶公司生产的种高性能、低功耗的8位微处理器,其有8K的系统可编程Flash、可擦除寿命可达1000次程序存储器。该产品使用的是经典的MCS-51内核,能够与8051系列能够很好的兼容,但是较传统51单片机功能跟强大,并且还可支持两种可以软件设置的省电模式。使实时处理、实时控制的功能更加完善,简化了硬件的配置。STC89C52具有8k字节Flash存储器,512字节内存, 32 个I/O端口 ,定时器,内置了4KB 大小的EEPROM,16 位定时器/计数器 3个,外部中断 4个,能全双工工作的串行输入输出口。STC89C52实物如图1。 图1 STC89C52引脚图 STC89C52各引脚都有相应的功能: P0口:P0口是漏极开路的8位双向输入输出口,即可以作为8位输入口,也可以作为8位输出口。当作为输出口,每位都能驱动8 个TTL逻辑电平。当对P0口写高电平时,引脚将被用作高阻抗输入。 当使用P0口访问外部的程序或数据储存器时,P0口会被作为低8位地址/数据复用总线。在这种模式下, P0要加上一组上拉电阻。 在进行Flash烧录程序时,P0口也被用来接收一些指令字节;在进行程序校验时,输出一些指令字节。程序校验时,需要在外部加上一组上拉电阻。 ① P1 口: P1 口是一个由8个引脚组成的8位数据输入输出口,且每一位引脚已经具有内部的上拉电阻的,P1 的输出缓存器能直接驱动4 个 TTL 逻辑电平。当对P1 端口写高电平时,内部的上拉电阻会把端口电平拉高,此时P1就可以作为输入I/O口使用了。当P1作为输入口使用时,将会输出电流。 此外,P1口的个别引脚还有一些其他功能: P1.0 :T2(芯片内的第二个定时器/计数器)的外部计数的输入或时钟的输出引脚(T2); P1.1 :T2的捕捉或重载的触发信号和方向的控制信号引脚(T2EX); P1.5 :在线系统编程使用的MOSI信号引脚; P1.6 :在线系统编程使用的MISO信号引脚; P1.7 :在线系统编程使用的SCK信号引脚; ② P2 口:P2 口也是一个由8个引脚组成的8位数据输入输出口,且每一位引脚已经具有内部的上拉电阻的,P2 的输出缓存器能直接驱动4 个 TTL 逻辑电平。当对P2 端口写高电平时,内部的上拉电阻会把端口电平拉高,此时P2就可以作为输入I/O口使用了。当P2作为输入口使用时,将会输出电流。 在访问一些外部的ROM或用16位地址寻址访问外部的RAM(例如执行指令MOVX @DPTR) 时,P2口会传送高八位的地址。像在这种的应用中,P2 口会使用比较强的内部上拉来发送高电平。在使用 8位地址寻址(如指令MOVX @RI)访问外部的ROM或RAM时,P2口会输出P2锁存器内的内容。在进行Flash烧录程序和校验时,会由P2口来接收高8位地址的字节和一些特殊的控制信号。 ③ P3 口:P3 口也是一个由8个引脚组成的8位数据输入输出口,且每一位引脚已经具有内部的上拉电阻,使用输出缓存器能直接驱动4 个 TTL 逻辑电平。当对P3 端口写高电平时,内部的上拉电阻会把端口电平拉高,此时P3就可以作为输入I/O口使用了。当P3作为输入口使用时,将会输出电流。在进行Flash烧录程序和校验时,P3口也接收一些特殊的控制信号。 P3口的许多引脚独有第二功能,主要是STC89C52特殊功能的输入输出口,如下所示: P3.0:串行输入口(RXD) P3.1:串行输出口(TXD) P3.2:外部中断0(INTO) P3.3:外部中断1(INT1) P3.4 :定时/计数器0(T0) P3.5 :定时/计数器1(T1) P3.6 :外部ROM或RAM写选通(WR) P3.7 :外部ROM或RAM读选通(RD) ④ ALE/PROG:当要访问外部的ROM或RAM时,该引脚为ALE(锁存允许)功能,该引脚会输出特定的脉冲用来控制锁存低8位地址的锁存器。在一般的情况下,ALE仍会以晶振频率输出一个固定的脉冲信号,因此它还可以向外输出脉冲信号或者用于定时的目的。然而需要注意:每当访问一次外部的ROM或RAM时都将直接跳过一个ALE的脉冲。 对ROM进行编程期间,该引脚还常用于输入ROM编程脉冲(PROG)信号。 如果有必要,也可以通过对特殊功能寄存器区中的8EH单元中的D0位置位,可禁止ALE引脚的输出。当该位置位后,只有MOVX或MOVC指令才能将ALE引脚重新激活。此外,该引脚还会被微弱的拉高,当单片机需要执行外部的程序时,就应设置ALE的禁止位为无效。 ⑤ RST:复位信号的输入口。当晶振工作时,RST引脚如果出现两个机器周期以上高电平将会使单片机复位。 ⑥ PSEN:程序储存允许信号,输出的是对外部的ROM的读选通信号,当STC89C52向外部的ROM取指令或数据时,会输出两个脉冲。 ⑦ EA/VPP:外部访问的允许信号,欲使STC89C52只访问外部的程序存储器,EA端就必须保持低电平。如果EA端为高电平,STC89C52则执行内部的程序存储器内的指令。 3.2 电机介绍 本小车的电机采用了强磁电机,该电机运行稳定,无抖动,扭力大。下图为电机的参数。 图2 电机参数 3.3 电机驱动模块L298N的介绍 L298N是由ST公司生产的,是一种大电流、高电压电机驱动芯片。该芯片采用的是15脚封装。L298N的主要特点是:工作电压高,最高的工作电压可以达到46V;输出电流大,瞬间的峰值电流可以达到3A,持续工作的电流为2A;额定的功率为25W。其内部含两个H桥的大电流高电压的全桥式驱动器,既可以驱动直流电动机也可以驱动步进电动机、继电器线圈等;L298N采用的是由标准逻辑电平信号来控制;具有使能控制端两个,还可以外接检测电阻,将变化量直接反馈给控制电路。使用L298N芯片来驱动电机,该芯片可以驱动直接一台两相的步进电机或四相的步进电机,也可以直接驱动两台直流电机。 3.3.1 L298N的引脚功能 下图即为L298N芯片的外观图。 图3 L298N芯片图 下图即为L298N的各引脚功能。 图4 L298N引脚功能图 3.3.2 L298N的工作参数 下图即为L298N的工作参数。 图5 L298N的工作参数 3.3.3 L298N的逻辑控制 L298的逻辑控制见如下图5。图中Ven代表ENA或ENB的输入电平,C、D代表为IN1、IN2或IN3、IN4;L代表低电平,H代表高电平。 图6 L298N逻辑控制 3.4 TCRT5000的介绍 TCRT5000结构紧凑,发光光源与探测器排列在同一方向上,通过反射红外线光束感知对象的存在。TCRT5000的工作波长为950毫米。该探测器有光电晶体管组成,工作时由蓝色发射管来发射红外线,红外线被遮挡物反射回来后被接收管接收。接收到反射光线后的接收管就会呈导通状态,与一电阻串联即可组成一个由发射管来控制的分压电路,由此可实现对遮挡物反射光线强度进行检测。我们经常利用这个特性去实现颜色识别。其实物外观图及引脚图如下。 图7 TCRT5000外观图 图8 TCRT5000引脚定义 3.5 LM324的介绍 M324是具有4个运放的集成电路,它采用封装方法是14脚两列直插式塑料封装。它内部包含有四个参数、功能完全相同的集成运算放大器,除了电源是共用的外,四组运放是相互独立的。每一个运算放大器可以用图3.4-1中的符号表示,其有5个引脚,其中“Vi+”、“Vi-”为信号的两个输入端,“V+”、“V-”为正、负电源输入端,“Vo”为输出端。 图10为LM324的引脚图。 图9 单个运放符号 图10 LM324引脚 硬件系统设计 4. 硬件系统设计 4.1 总体设计 根据设计要求以及初步确定的方案可以确定出总体的框架。下图即为整个系统的框架图。 图11 系统框架 由TCRT5000对黑线轨迹进行检测,TCRT5000采集到的信息传给LM324电压比较器,经过LM324处理后,TCRC5000采集到的信息就变成了可以由单片机识别的高低电平,单片机对高低电平进行分析,然后发送相应的控制信息给L298N,由L298N控制电机做出响应的动作。 循迹红外发射管与接收管分别装在车头的左中右位置。当车头下左边的TCRT5000传感器检测到黑线时,小车右转,当车头下右边TCRT5000传感器检测到黑线时,小车左转。直到小车完全回到黑线。 4.2 主控电路 单片机控制电路是由单片机最小系统组成的,主要作用是处理电压比较器LM324传来的高低电平信号,再通过设定的程序逻辑算法确定并发出电机驱动电路的指令。单片机的最小系统包括MCU,外部的时钟电路,按键复位电路和电源组成。本设计采用图11所示的单片机最小系统。 图12 STC89C52控制电路 4.2.1 外部时钟电路 XTAL1和XTAL2是独立的输入和输出反相放大器,其可以直接由外部的时钟信号驱动,或者使用石英晶振组成片内振荡器。在XTAL1、XTAL2 的引脚上接上定时元件,其内部振荡器就能够直接自激振荡。一般单片机的晶振频率在1.2 ~ 12MHz 之间,甚至有些单片机的晶振频率可达到24MHz 或者更高,但是如果晶振频率越高其功耗就会越大。在本设计中所采用是11.0592MHz 的石英晶振。和晶振相连的两个电容,其大小对晶振的振荡频率有轻微的影响,可以起到微调频率作用。当采用的晶振是石英晶振时,则电容可以在20 ~ 40pF 之间选择;当采用陶瓷谐振器时,电容就应适当地增大一些,在30 ~ 50pF 之间。通常都是选取33pF左右的陶瓷电容就可以了。另外值得一提的是如果在设计单片机系统的印刷电路板(PCB) 时,晶振和电容应尽可能的与单片机芯片靠近,以减少由于引线而寄生的电容,保证振荡器可靠工作。用示波器检测晶振是否起振,可以观察到XTAL2 输出了十分漂亮的正弦波,使用万用表测量检测时( 把挡位打到直流挡,这个时候测得的是有效值)XTAL2 和地之间的电压时,可以看到万用表示数为2V 左右一点。 4.2.2 复位电路 在单片机中,复位电路是很关键的,当程序运行不正常或者死机(停止运行)时,就需要进行复位。5l系列单片机的复位引脚RST如果出现两个机器周期以上的高电平,单片机就会执行复位操作。如果RST引脚一直为高电平,单片机就会处于循环复位状态。复位操作一般有两种基本形式:手动复位和上电自动复位。图4.4中所示的复位电路中,这两种复位方式都包含在内。在上电的一瞬间,电容两端的电压不能发生突变,由于电容的负极是和RST引脚相连的,电源电压会全部的加在电容下面的电阻上,RST引脚的电平为高,芯片就会被复位。电路稳定后,电源会给电容充电,电阻上的电压就会逐渐减小,最后约为0V,芯片便能开始正常的工作。并联在该电容两端的按钮为复位按钮,当没有按下复位按钮的时候,电路可以实现上电自动复位,在芯片进入正常的工作后,通过按下复位按钮使RST引脚为高电平从而达到手动去复位的效果。就一般情况来说,只要RST 引脚上保持有大约10ms以上高电平,就能够使单片机有效的进行复位。电路图中复位所用电阻的大小和电容的大小为经典值,实际制作时可以使用同一数量级的电阻和电容来代替,也可以通过自行计算RC 的充电时间或在工作环境实际测量而得到,以确保单片机的复位电路能可靠运行。 4.2.3 P0口外接上拉电阻 STC89C51的P0口内部并没有上拉电阻。所以当P0口仅作为普通输入输出口要实现输出数据时,由于V1 截止,输出级的电路是漏极开路的电路,要使正常输出高电平,就必须外接一个上拉电阻。 图13 P0口其中1位的电路结构 另外,为了避免输入时读取数据出现错误,也需要外接上拉电阻。 4.3 轨迹识别电路 循迹的原理是小车在画有黑线的白纸上行驶,由于黑线和白纸对光线的反射程度不同,可以根据接收到的反射光线的强弱来判断是否是黑线。本设计规定正常行驶时三个红外探头只有中探头在黑线的范围以内,左右探头分别位于黑线的左右,如果中探头检测不到黑线说明小车已经偏离了轨道,需要进行校正,此时,系统会读取左右探头的状态,如果左探头检测到黑线,说明小车向左边偏了,此时小车就应该向右转。若果右探头检测到黑线,说明小车向右偏了,此时小车应该向左转。 此电路模块是用于检测小车是否偏离轨道并以特定信号给传下一级电路。这一方法就是红外探测。红外探测,即利用由于红外线在颜色不同的物体表面具有的反射性质不同的特点。在小车行进过程中,红发发射管会不断地向轨迹所在的地面上发射红外线,当红外线遇到了白色的地面时发生漫发射,反射光线会被反射到装在小车上的红外接收管,并接收;如果遇到的是黑线,则红外光会被吸收,则小车上的红外接收管就会接收不到足够的信号。 4.4 电压比较电路 电压比较器是在集成运算放大器的基础上去掉反馈电阻从而使放大倍数趋于无穷大。这时运算放大器就形成了一个电压比较器。当同相端的电压大于反相端的电压时比较器就会输出高电平,当反相端的电压高于同相端的电压时输出端就会输出低电平。如下图所示。 图14 单红外探头黑线识别电路及LM324电压比较电路 用了LM324内部的3个单独的运算放大器外接一个可调电阻来输入基准电压。基准电压输入在反相输入端上,黑先识别电路反馈过来的电压从电压比较器的同相端输入。当TCRT5000反馈的电压比基准电压高时,比较器输出高电平。当TCRT5000反馈的电压比基准电压低时,比较器输出低电平。这样就可以使红外探头把地面反射光线的程度变成了可以被单片机识别的开关量。由于考虑到地面粗超程度不同,我们通过可调电位器去调节基准电压,经过实际测量后确定基准电压的值。 4.5 直流电机驱动电路 电机驱动一般都是采用H桥式驱动电路,L298N内部就集成了H桥式驱动电路,从而可以采用L298N电路来直接驱动电机。通过STC89C52给予L298N电路PWM信号来控制直接小车的速度、起停。为了设计上的方便我采用了市面上已有的L298N电机驱动模块,其不仅便宜而且稳定性高。其原理图如下图所示。 图15 L298N模块电路图 程序设计 5. 程序设计 本程序设计采用了模块化程序编程思路。许多程序太长或太复杂,很难写在单一单元中。如果把代码分为较小的功能单元,将大大简化编程过程。模块化程序一般比单块程序容易编写、调试和修改。模块化编程方法类似于包含大量电路的硬件设计。器件或程序在逻辑上被分为多个“黑箱子”,这些黑箱子都有指定的输入和输出。只要把各个单元之间的接口定义好,各个单元的详细设计就可以独立进行了。 模块化编程的优点如下: 有效率的程序开发:使用模块化方法可以更快地开发程序,因为较小的子程序比大程序更容易理解、设计和测试。定义好模块的输入和输出之后,程序员可以给模块提供需要的输入,通过检测输出来判断模块的正确性。然后由连接器把分立的模块连接、定位,生成一个单一的绝对地址的可执行的程序模块。最后,测试整个模块。 子程序可以重用:为一个程序编写的代码经常可以用于其它的程序。在模块化编程中,可以把这些部分保存起来,以备将来使用。因为代码可以被重定位,所以保存的模块可以连接到满足其输入和输出要求的任意程序中。而在单块程序编程中,这样的部分深埋在整个程序中,不易被其它的程序使用。 便于调试和修改:模块化程序一般比单块程序易于调试。因为精心定义了程序的模块接口,很容易把问题定位到特定的模块。一旦找到了有问题的模块,更正问题就相当容易了。模块化编程可以简化程序修改的工作。我们可以很有信心地把新的或调试过的模块连接到一个已有的程序,而不用更改程序的其余部分。 5.1 程序总体框架 程序总体流程图如下图所示。 开始 程序初始化 定时器初始化并启动 读取中探头信号并判断是否为黑线 是 小车向前走 否 左探头检测到黑线 右探头没有检测到黑线 读取左探头信号和右探头信号并判断是否为黑线 小车向左转 右探头检测到黑线 左探头没有检测到黑线 小车向右转 其他情况 小车停止 图16 程序总体流程图 程序读取循迹模块的信息后确定的小车位置状态与对应输出的驱动指令对应关系如图16,其中黑色代表探头检测到黑色轨迹。 图17 循迹模块的状态与小车位置的对应关系 5.2 主程序模块 主程序模块要实现的功能主要是先对单片机进行初始化,然后再进入循迹模块的循迹程序。 源文件(mian.c): #include<reg52.h> #include<absacc.h> #include"dianji.h" #include"xunji.h" #include"dingshiqi.h" void main() { EA = 1; DingShiQi_QiDong(1); DianJi_QiDong(); while(1) { XunJi(); //进入循迹模块的循迹程序 } } 5.3 循迹程序模块 循迹程序模块的功能为:读取黑线检测电路的状态,然后进行判断小车位置,进而进入电机驱动模块中前进、左转、右转程序 头文件(xunji.h): #ifndef __XUNJI_H__ #define __XUNJI_H__ extern void XunJi(); #endif 源文件(xunji.c): #include <reg52.h> #include <absacc.h> #include "xunji.h" #include "dianji.h" sbit Zuo= P1^0; sbit Zhong = P1^1; sbit You = P1^2; void XunJi() //循迹程序 { P1 = 0x00; if(Zhong == 1) //中探头检测到黑线 XiangQian(); //小车前进函数 else { if((Zuo == 1)&&(You == 0)) //左探头检测到黑线,右探头没有检测到黑线 XiangZuo(); //小车左转函数 if((Zuo == 0)&&(You == 1)) //左探头检测到黑线,右探头没有检测到黑线 XiangYou(); //小车右转函数 if(((Zuo == 1)&&(You == 1))||((Zuo == 0)&&((You == 0)))) //其他情况 TingZhi(); //小车停止函数 } } 5.4 电机程序模块 电机驱动程序模块实现的主要功能为:提供了小车前进、左转、右转函数,将对电机的控制抽象为小车位置的改变。 头文件(dianji.h): #ifndef __DIANJI_H__ #define __DIANJI_H__ extern unsigned int ZhanKongBi_Zuo; extern unsigned int ZhanKongBi_You; sbit ENA = P0^4; sbit ENB = P0^5; extern void DianJi_QiDong(); extern void XiangZuo(); extern void XiangYou(); extern void XiangQian(); extern void TingZhi(); #endif 源文件(dianji.h): #include<reg52.h> #include<absacc.h> #include"dianji.h" #define Da 90 #define Xiao 10 #define Zhong 50 unsigned ZhanKongBi_Zuo;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服