基于51单片机的开关电源自动循迹小车设计论文
摘 要
智能循迹是基于自动引导机器人系统,用以实现小车自动识别路线,以及选择正确的路线。智能循迹小车是一个运用传感器、单片机、电机驱动及自动控制等技术来实现按照预先设定的模式下,不受人为管理时能够自动实现循迹导航的高新科技。该技术已经应用于无人驾驶机动车,无人工厂,仓库,服务机器人等多种领域。
本设计是基于STC89C52单片机控制的智能循迹小车,小车能够识别地上黑色轨迹线,实现循迹行走,而且在循迹过程中还能够绕开前方的障碍物。本次设计包括开关电源模块、充电模块、单片机模块、电机驱动模块、循迹模块和避障模块。其中开关电源模块是将220V交流电转化为12V供电机驱动芯片使用和5V供单片机使用。充电模块是给锂电池充电,以作备用电源。单片机模块以STC89C52单片机为控制核心,用其产生PWM波,控制小车速度。循迹模块则采用红外光电传感器RPR220型光电对管,对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机。单片机对采集到的信号进行分析判断,及时控制电机驱动模块中由芯片L298N驱动的电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。同时在此基础上,避障模块当中利用E18-D80NK 3-80cm可调红外避障传感器对小车进行避障。
本设计不仅给出了完整的硬件电路图和相关控制程序,而且还利用
PROTEUS进行了小车电机实时仿真。
关键词:单片机;自动循迹;开关电源;Proteus仿真
I
目录
摘 要........................................................................................................................ I
第1章 绪论................................................................................................................ 1
1.1 智能循迹小车概述........................................................................................ 1
1.1.1 循迹小车的发展历程回顾.................................................................. 1
1.1.2 智能循迹分类...................................................................................... 2
1.1.3 智能循迹小车的应用.......................................................................... 3
1.2 智能循迹小车研究中的关键技术................................................................ 4
第2章 自动循迹小车系统方案设计........................................................................ 5
2.1 设计要求........................................................................................................ 5
2.2 自动循迹小车基本原理................................................................................ 5
2.3 模块方案比较与论证.................................................................................... 5
2.3.1 控制器模块.......................................................................................... 5
2.3.2 电源模块.............................................................................................. 6
2.3.3 充电模块.............................................................................................. 6
2.3.4 电机模块.............................................................................................. 7
2.3.5 电机驱动模块...................................................................................... 7
2.3.6 循迹传感器模块.................................................................................. 7
2.3.7 避障传感器模块.................................................................................. 8
2.4 系统总体方案的确定.................................................................................... 8
第3章 硬件设计........................................................................................................ 9
3.1 单片机电路设计............................................................................................ 9
3.1.1 单片机的功能特性描述...................................................................... 9
3.1.2 晶振电路.............................................................................................. 9
3.1.3 复位电路............................................................................................ 10
3.1.4 单片机整体电路................................................................................ 11
3.2 开关电源电路设计...................................................................................... 13
3.2.1 UC3842简介 ..................................................................................... 13
3.2.2 UC3842开关电源电路 ..................................................................... 14
3.3 充电电路设计.............................................................................................. 15
3.4 电机驱动电路设计...................................................................................... 16
3.4.1 L289N简介 ....................................................................................... 16
3.4.2 电机驱动原理.................................................................................... 18
3.4.3 小车运动逻辑.................................................................................... 19
3.5 循迹电路设计.............................................................................................. 20
II
3.5.1 RPR220与LM339简介 ................................................................... 20
3.5.2 循迹设计............................................................................................ 21
3.6 避障电路设计.............................................................................................. 21
第4章 软件设计...................................................................................................... 22
4.1 系统软件流程图.......................................................................................... 23
4.2 程序设计...................................................................................................... 23
4.2.1 计时程序设计.................................................................................... 23
4.2.2 主程序设计........................................................................................ 24
第5章 系统调试...................................................................................................... 25
结束语.......................................................................................................................... 29
参考文献...................................................................................................................... 30
附录A 总电路图 ........................................................................................................ 31
附录B 循迹小车程序 ................................................................................................ 31
III
第1章 绪论
进入二十一世纪,随着计算机技术和科学技术的不断进步,机器人技术较以往已经有了突飞猛进的提高,智能循迹小车即带有视觉和触觉的小车就是其中的典型代表。
1.1 智能循迹小车概述
智能循迹小车又被称为Automated Guided Vehicle,简称AGV,是二十世纪五十年代研发出来的新型智能搬运机器人。智能循迹小车是指装备如电磁,光学或其他自动导引装置,可以沿设定的引导路径行驶,安全的运输车。工业应用中采用充电蓄电池为主要的动力来源,可通过电脑程序来控制其选择运动轨迹以及其它动作,也可把电磁轨道黏贴在地板上来确定其行进路线,无人搬运车通过电磁轨道所带来的讯息进行移动与动作,无需驾驶员操作,将货物或物料自动从起始点运送到目的地。
AGV的另一个特点是高度自动化和高智能化,可以根据仓储货位要求、生产工艺流程等改变而灵活改变行驶路径,而且改变运行路径的费用与传统的输送带和传送线相比非常低廉。AGV小车一般配有装卸机构,可与其它物流设备自动接口,实现货物装卸与搬运的全自动化过程。此外,AGV小车依靠蓄电池提供动力,还有清洁生产、运行过程中无噪音、无污染的特点,可用在工作环境清洁的地方。
1.1.1 循迹小车的发展历程回顾
随着社会的不断发展,科学技术水平的不断提高,人们希望创造出一种来代替人来做一些非常危险,或者要求精度很高等其他事情的工具,于是就诞生了机器人这门学科。世界上诞生第一台机器人诞生于1959年,至今已有50多年的历史,机器人技术也取得了飞速的发展和进步,现已发展成一门包含:机械、电子、计算机、自动控制、信号处理,传感器等多学科为一体的性尖端技术。循迹小车共历了三代技术创新变革:
第一代循迹小车是可编程的示教再现型,不装载任何传感器,只是采用简单的开关控制,通过编程来设置循迹小车的路径与运动参数,在工作过程中,不能根据环境的变化而改变自身的运动轨迹。
1
支持离线编程的第二代循迹小车具有一定感知和适应环境的能力,这类循迹小车装有简单的传感器,可以感觉到自身的的运动位置,速度等其他物理量,电路是一个闭环反馈的控制系统,能适应一定的外部环境变化。
第三代循迹小车是智能的,目前在研究和发展阶段,以多种外部传感器构成感官系统,通过采集外部的环境信息,精确地描述外部环境的变化。智能循迹小车,能独立完成任务,有其自身的知识基础,多信息处理系统,在结构化或半结构化的工作环境中,根据环境变化作出决策,有一定的适应能力,自我学习能力和自我组织的能力。为了让循迹小车能独立工作,一方面应具有较高的智慧和更广泛的应用,研究各种新机传感器,另一方面,也掌握多个多类传感器信息融合的技术,这样循迹小车可以更准确,更全面的获得所处环境的信息。
1.1.2 智能循迹分类
AGV从发明至今已经有50多年的历史,随着应用领域范围的不断扩大,其种类和形式也变得更加多样化。一般根据行驶的导航方式将智能循迹小车分为以下几种类型:
(1)电磁感应式
电磁感应式引导一般在地面上,沿预定路径埋电线,当高频电流通过导线,电线周围产生电磁场流动, AGV小车上安装两个对称的电磁感应传感器,他们收到的电磁信号差异可以反映的AGV偏离程度路径的程度。 AGV自动化控制系统,基于这种偏差值,以控制车辆的转向,连续的动态的闭环控制设置能够保证AGV对设定路径的稳定自动跟踪。在目前商业用途的AGV中,特别是大型和中型小车,绝大多数都采用电磁感应导航。
(2)激光式
安装有可旋转的激光扫描器的AGV,可安装在墙壁或有高反射激光定位标志的支柱上或者路径上运行,AGV依靠激光扫描器发射激光束,然后接收由四周定位标志反射回的激光束,车载计算机,计算出当前车辆的位置和运动方向,通过内置的数字地图和校准位置相比,以实现自动处理。目前,这种AGV类型的应用比较广泛。基于同样的原理,如果激光扫描仪被红外线发射器,或超声波发射取代,激光制导的AGV小车可以转变为红外引导和超声引导的AGV。
(3)视觉式
视觉引导式AGV是的迅速发展和比较成熟的AGV,这种AGV配备CCD摄像机,传感器和车载电脑,在车载计算机中设置有AGV欲行驶路径周围环境图像数库。在AGV的行驶过程中,相机得到的图像与图像数据库进行比较,以确定当前位置和车辆周围的图像信息并对驾驶下一步作出决定。这种AGV小车并不需要设置任何的人工物理路径,所以在理论上具有灵活性,在计算机图像采
2
集,存储和处理技术飞速发展的今天,这种类型的AGV实用性越来越强。此外,还有铁磁陀螺惯性引导式AGV、光学引导式AGV等多种形式的AGV。
1.1.3 智能循迹小车的应用
智能循迹小车发展历史及主要应用场所如下:
(1)仓储业
1954年,来自美国南卡罗来纳州的Mercury Motor Freight公司成为第一批把AGV小车的应用到仓库的使用者,来实现出入库货物的自动处理。至今世界上有超过2100个厂家把大约2万台大型或小型的AGV小车应用到自己的仓库中。中国的海尔集团在2000年把9台AGV小车投产到了自己的仓库区,形成一个灵活的AGV自动数据库处理系统,轻松地完成了每天至少33500的储存和装卸货物的任务。
(2)制造业
在制造业的的生产线中AGV小车大显身手,快速,精确,灵活的完成材料的运送任务。由多台AGV小车组成的物流运输处理系统,较人工搬运系统来说更灵活,运输路线可以根据生产过程及时调整,使一条生产线,生产十几个产品,大大提高了生产的灵活性,企业的竞争力。在1974年瑞典的沃尔沃卡尔马的汽车组装厂,提高了运输系统的灵活性,使用以AGV小车为载运工具的装配线,采用该装配线后,减少了20%装配时间、减少了39%组装错误,减少了57%投资资金回收时间以及减少了5%的员工费用。目前,在世界主要的汽车生产厂家,如通用、丰田、克莱斯勒、大众AGV小车已被广泛应用。近年来,作为
CIMS(Computer Integrated Manufacturing Systems,直译为基于计算机的现代集成制造系统)的基础搬运工具,AGV已经深入到机械加工,家电制造,微电子制造,烟草等行业,生产业和加工业已成为AGV小车使用最广泛的领域。
(3)邮局、图书馆、港口码头和机场
在邮局,图书馆,码头和机场候机楼等人口密集的公众场所,存在着大量的物品的运送工作,充满不定性和动态性强的特点,搬运过程往往也很单一。AGV有着可并行工作、自动化、智能化和处理灵活的特点,可以很好的满足这些场合的运输要求。1983年瑞典的大斯得哥尔摩邮局,1988年日本东京的多摩邮局,1990年中国上海的邮政相继开始使用AGV小车来完成邮品的搬运工作。在荷兰的鹿特丹港口,50辆被称为“院子里的拖拉机”的AGV小车每天都在把集装箱从船边运送到几百米以外的仓库中。
(4)烟草、医药、化工、食品
对于处理一些需要在清洁、安全、无排放污染等其他特殊环境要求的产品生产如烟草、制药、食品、化工等产品时应考虑AGV小车的应用。在全国许多
3
卷烟企业,如青岛颐中集团、玉溪红塔集团、红河卷烟厂、淮阴卷烟厂,应用激光引导式AGV完成托盘货物的搬运工作。
1.2 智能循迹小车研究中的关键技术
现在全世界越来越多的国家都在做着研究智能化、多样化的自动汽车导航的工作。自动汽车导航是一个非常复杂的系统,它不仅应具有正常的运动功能的成分,而且还应具有任务分析,路径规划,信息感知,自主决策等类似人类的智能行为。
人类可以利用自己的听觉、视觉、味觉、触觉等功能获取事物的信息,人类的大脑再根据已经掌握的知识对这些信息进行综合分析,从而全面了解认知事物。这样一个认识事物、分析事物和处理信息的过程称之为信息融合过程。多传感器信息融合的基本原理就是模仿人类大脑的这个过程,得到一个对复杂对象的一致性解释或结论。多传感器信息融合是协调多个分布在不同地点,相同或不同种类的传感器所提供的局部不完整观测量信息加以综合,协调使用,消除可能存在的冗余和矛盾,并加以互补,以减少不确定性,得到对物体或环境的一致性描述的过程。
多传感器信息融合具有许多性能上的优点:(1)增加了系统的生存能力;(2)减少了信息的模糊性;(3)扩展了采集数据覆盖范围;(4)增加了可信度;(5)改善了探测性能;(6)提高了空间的分辨力;(7)改善了系统的可靠性;(8)信息的低成本性。
本文主要由五章构成,第1章为绪论,主要讲述循迹小车的发展历程及在目前所应用领域中的作用。第2章为自动循迹小车总体设计方案,主要确定系统各个模块的具体选择。第3章是系统的硬件设计,其中包含开关电源的设计,充电电路的设计,单片机电路的设计,电机驱动电路,光电传感器模块和避障模块。
第4章为系统的软件设计,主要介绍的是软件实现过程。第5章是用Proteus软件对小车系统进行仿真和调试。
4
第2章 自动循迹小车系统方案设计
2.1 设计要求
(1)用MCS-51系列单片机或其它CPU作为小车的控制器;
(2)设计识别黑色轨迹线的传感器;
(3)采用红外或超声测或其它判定障碍物功能;
(4)设计驱动电机的电路,可实现电机变速、启动、反转及停止;
(5)设计控制小车行走的程序;
(6)外部220V电源(开关电源)供电,工作时备用电源供电,自动充电功能,体积小巧;
(7)用Proteus实现小车电机控制仿真。
2.2 自动循迹小车基本原理
循迹就是能够沿着给定的轨迹运行,一般给定的轨迹为在白色地面上黑色轨迹。为了实现这一目的,就需要轨迹检测模块,这相当于小车的眼睛,需要将路面信息返回到大脑中,这大脑就需要有信息处理功能的微处理器来构成,处理的信息需要执行机构来执行,这就需要电机驱动模块,来实现小车的行走功能,而一个完整的系统,还需要有电源模块来提供能量。
简言之,系统的基本原理就是:循迹模块将检测到的路面信息传送给微处理器来处理,然后将处理结果送到电机驱动模块执行,达到循迹的目的。
2.3 模块方案比较与论证
根据设计要求,本系统主要由控制器模块、电源模块、充电模块、电机及其驱动模块、循迹传感器模块、避障传感器模块构成。
为了较好的实现各模块的功能,分别设计了几种方案并分别进行了比较与论证。
2.3.1 控制器模块
方案一:采用FPGA作为系统的主控制器。FPGA可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,IO口资源丰富,易于进行功能扩展,处理速度快,常用于大规模实时性要求较高的系统,但价格高,编程实现难度大。
5
方案二:采用可编程逻辑期间CPLD作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑我们放弃了此方案。
方案三:STC89C52单片机作为系统的控制器。STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案,单片机可以在线编程、调试,方便地实现程序的下载与整机的调试,并且价格便宜。
本系统逻辑功能简单,仅仅需要接收传感器的信号和控制电机,对控制器的数据处理能力要求不高,从性价比方面考虑选择方案三。
2.3.2 电源模块
根据本次设计要求,需采用开关电源电路。开关电源具有功耗小、效率高、体积小、重量轻、稳压范围宽、电路形式灵活多样等优点,因而在各类电子产品中得到广泛的应用。
由于开关电源芯片众多,因此本着“适用、够用、好用”的原则选择了UC3842。UC3842是一种高性能的固定频率电流型开关电源芯片。单端输出可直接驱动双极型晶体管和MOSFET管,具有引脚数量少、外围电路简单、安装与调试简便、性能优良、价格低廉等优点,能通过高频变压器与电网隔离,适合构成无工频变压器的20~50W小功率开关电源。又其构成电路所需元件极少,非常符合“适用、够用、好用”原则。
2.3.3 充电模块
根据本次设计要求,需要设计充电模块以作备用电源实用。
方案一:给12V蓄电池充电。虽然蓄电池具有较强的电流驱动能力,稳定的电压输出性能,以及相关的充电芯片,但处于蓄电池的体积过于庞大,在小型电动车上使用极为不方便的原因,还是放弃了这种方案。
方案二:给3节4.2V可充电式锂电池充电。虽然锂电池的价格有点贵,但锂电池的电量比较足,并且可以充电,可重复利用,也有相关的充电芯片,因此选择了此方案。同时选择了LTC4053,设计出具有USB接口功能的充电电路。
综上考虑,选择方案二。
6
2.3.4 电机模块
方案一:采用直流电机。直流电机转动力矩大,响应快速,体积小,重量轻,直流电动机具有优良的调速特性,调速平滑、方便,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无级快速启动、制动和反转,能满足各种不同的特殊运行要求,价格便宜。
方案二:采用步进电机。步进电机是一种将电脉冲信号转换成角位移或线位移的精密执行原件。控制方便,体积小,灵活性和可靠性高,具有瞬时启动和急速停止的优越性,比较适合本系统控制精度高的特点。但步进电机的抖动比较大,输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统,价格还比较昂贵,所以这里不采用此方案。
由于直流电机价格便宜、控制简单,因此本设计用方案一。
2.3.5 电机驱动模块
方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵,且可能存在干扰。更主要的问题在于一般电动机的电阻比较小,但电流很大,分压不仅会降低效率,而且实现很困难。
方案二:采用继电器对电动机的开与关进行控制,通过控制开关的切换速度实现对小车的速度进行调整。这个电路的优点是电路较为简单,缺点是继电器的响应时间长,易损坏,寿命较短,可靠性不高。
方案三:采用专用电机驱动芯片L298N作为电机驱动芯片。L298N中有两套H桥电路,刚好可以控制两个电机。它的使能端可以外接高低电平,也可以利用单片机进行软件控制,极大地满足各种复杂电路需要。L298的驱动功率较大,在6~46V的电压下,可以提供2A的额定电流,并且具有过热自动关断和电流反馈检测功能,安全可靠。
基于以上的分析,选择方案三。
2.3.6 循迹传感器模块
方案一:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变
7
化。将阻值的变化值经过比较器就可以输出高低电平。但是这种方案受光照影响很大,不能够稳定的工作。
方案二:用RPR220型光电对管。RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。其具有如下特点:塑料透镜可以提高灵敏度。内置可见光过滤器能减小离散光的影响。体积小,结构紧凑。当发光二极管发出的光反射回来时,三极管导通输出低电平。此光电对管调理电路简单,工作性能稳定。
因此出于稳定性来说,选择方案二。
2.3.7 避障传感器模块
方案一:采用红外测距传感器。本次设计利用E18-D80NK可调红外避障传感器对小车进行避障,该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场合。
方案二:采用超声波传感器,虽然其具有测量精度高、方向性好的优点,但成本相对红外较高,因此放弃本方案。
因此基于成本考虑,选择方案一。
2.4 系统总体方案的确定
自动循迹小车系统结构框图如下图所示。以STC89C52单片机为控制核心,主要由电源模块、充电模块、电机及其驱动模块、循迹传感器模块、避障传感器模块构成。
图2.1 自动循迹小车系统结构框图
8
第3章 硬件设计
3.1 单片机电路设计
一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、A/D、D/A转换器等。
3.1.1 单片机的功能特性描述
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜。单片机内部也有和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件。
单片机是一种集成电路芯片,采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
本课题选择了STC公司的生产的STC89C52单片机。STC89C52是一种低功耗、高性能CMOS8位微控制器,是带8K字节闪烁可编程可檫除只读存储器。一个芯片上拥有8位CPU,并且在系统可编程Flash。STC89C52提供给为众多嵌入式控制应用系统高灵活、超有效的解决方案。 STC89C52具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EEPROM,两个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。此外,空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
3.1.2 晶振电路
在STC89S52单片机上内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。在1和XTAL2引脚上外接定时元件,内部振荡器就产生
9
自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。从XTAL1接入,如图3.1所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有要求。
本设计选用的是11.0592MHZ无源晶振、2个30pF瓷片电容,使得一个机器周期是1μs。晶振的作用是为系统提供基本的时钟信号,而两个电容则是起到并联谐振的作用,如果没电容,振荡电路会因为没有回路而停振,电路不能正常工作。
图3.1 单片机晶振电路
3.1.3 复位电路
复位电路的作用是在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。施密特触发电路是一种波形整形电路,当任何波形的信号进入电路时,输出在正、负饱和之间跳动,产生方波或脉波输出。不同于比较器,施密特触发电路有两个临界电压且形成一个滞后区,可以防止在滞后范围内之噪声干扰电路的正常工作。如遥控接收线路,传感器输入电路都会用到它整形。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
本设计采用的电容值为10μF的电容和电阻采用10kΩ的电阻。如图3.2所示上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中
时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。
10
图3.2 单片机复位电路
3.1.4 单片机整体电路
51单片机内部有P0、P1、P2、P3等4个8位双向I/0口,因此外设可直接连接于这几个口线上,而无需另加接口芯片。P0~P3的每个端口可以按字节输入和输出,也可以按位进行输入输出,用于位控制十分方便。
P0:P0口为三态双向口,能带8个TTL电路,对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻,需要外接上拉电阻。
P1:P1口是一个具有内部上拉电阻的8 位双向I/O 口,P1 输出缓冲器能驱动4 个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。
P2:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16
位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对
11
外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。单片机模块如图3.3所示。
STC89C52主要功能如表3.1所示。
表3.1 STC89C52主要功能
主要功能特性
图3.3 单片机模块电路
12
3.2 开关电源电路设计
3.2.1 UC3842简介
本次采用的开关电源芯片为UC3842,UC3842是一种高性能的固定频率电流型控制器,单端输出,可直接驱动MOSFET,具有管脚数量少、外围电路简单、安装与调试简便、性能优良、价格低廉等优点。
UC3842采用DIP-8封装,引脚排列如图3.4所示,各个引脚功能见表3.2所示,UC3842的内部结构如图3.5所示。
图3.4 UC3842引脚排列图
表3.2 UC3842各个引脚功能
13
图3.5 UC3842内部结构框图
3.2.2 UC3842开关电源电路
UC3842开关电源电路如图3.6所示。
图3.6
UC3842
开关电源电路
其工作原理为:
14
开关功率管为N沟道MOS管,该电路属于单端反激式变换器 ,当开关功率管导通时,整流二极管D12、D13截止,电能就储存在高频变压器T的初级绕组N1中;当开关功率管关断时,D12、D13导通,N1上储存的电能传输给次级绕组N3、N4,并分别经过D12、C11和D13、C12整流滤波后向负载供电。其稳压过程是首先对输出电压进行采样,然后依次经过误差放大器、过流检测比较强、PWM锁存器、门电路和输出级去控制开关功率管的导通及关断时间,最终达到稳压目的,采样电压是从自馈线圈N2的整流滤波输出端引出的。
刚启动时UC3842所需+16V工作电压由R27、C9电路提供。220V交流电经桥式整流和电容滤波,得到+330V直流高压,再经R27降压后接UC3842的7端,利用C10的充电过程使电压VI逐渐升至+16V以上,从而实现软启动。当开关电源转入正常工作后,N2上的高频电压经D10,C9整流滤波,作为芯片的工作电压。UC3842属于电流控制型PWM,初级线圈中的电流在过流检测电阻R25上建立的电压V0,加至过流检测比较器的同相端,与反相端的误差电压作比较,进而控制输出脉冲的占空比,使流过开关功率管的最大峰值电流始终受VI的控制。只要电压V0达到1V,比较器就翻转,输出为高电平,将PWM锁存器置零,PWM关断,从而实现了过流保护。鉴于在开关功率管关断的瞬间,高频电压器的漏感会产生尖峰电压,N1上还会产生反向电动势,现利用C8、D9、R26、C13、D11、R28组成两级吸收回路,对开关功率管起到保护作用。D9、D10和D11采用快恢复二极管。输出整流滤波电路由D12、C11和D13、C12组成,D12、D13采用肖特基二极管。PWM锁存器的作用是保证在每个时钟周期内只输出一个脉宽调制信号,可消除噪声干扰的影响。
输入欠压锁定电路的开启电压为16V,关断电压为10V。仅当电压V0大于16V时UC3842才能启动,此时芯片工作电流仅1mA,自馈电后变为15mA。当输入欠压时,开关功率管自行关断。此外,在芯片内部还有一只稳压管,一旦输入端出现高压,稳压管就将V0钳于34V,起到保护作用。
+5.0V基准电压经R18给C5充电,C5再经过芯片内部电路放电,于是就能在UC3842的4脚得到锯齿波电压。R19和C6用以调节误差放大器的增益和频率响应。自馈线圈的输出电压V0经过R20、R21分压后作为比较电压,当电网电压升高会导致输出电压也升高,反之亦然。
3.3 充电电路设计
本次充电电路设计是给3节4.2V可充电式锂电池充电,充电芯片采用
LTC4053。充电电路如图3.7所示。
15
图3.7 LTC4053 USB接口充电电路
LTC4053是可直接与USB接口的锂离子电池专用充电IC,同时还集成了NTC(负温度系数)温度补偿、开关控制、100/500mA电流等电路。最大输入电压为7V,最大输出电流为535mA。VCC直接取至USB接口的电源,SHDN为开关控制,低电平时充电,高电平时停止充电;PROG脚选择充电电流,低电平时选择100mA充电,以适合小电流输出的USB接口,高电平时选择500mA充电,以适合大电流输出的USB接口;NTC脚接入热敏电阻可进行温度补偿;LTC4053还设置了定时充电功能,定时时间周期由TIMER脚外接电容决定:t=3C/0.1(式中t的单位为h,C的单位为μF)。Q2是P沟道MOSFET管,被用来选择是否为USB供电的开关。
3.4 电机驱动电路设计
3.4.1 L289N简介
电机驱动选用双全桥电机专用驱动芯片L298N,内部包含4通道逻辑驱动电路。可以驱动两个直流电机或驱动两个二相电机,也可单独驱动一个四相电机,输出电压最高可达50V。直接通过电源来调节输出电压,直接通过单片机的IO
端口提供信号,使得电路简单,使用更方便。L298N可接受标准的TTL逻辑电
16
平信号VSS,VSS通常接4.5~7V的电压。4脚VS接电压源,VS可接电压范围VIH为2.5~46V。L298N芯片输出电流可达2.5 A,可驱动电感负载。
L298N是一个内部有两个H桥的高电压大电流全桥式驱动芯片,可以用来驱动直流电动机、步进电动机。使用标准逻辑电平信号控制,直接连接单片机管脚,具有两个使能控制端,使能端在不受输入信号影响的情况下不允许器件工作。L298N有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作。
L298N引脚排列如图3.8所示,各个引脚功能见表3.2所示。
图3.9 L298N引脚排列图 表3.3 L298N引脚编号与功能
17
3.4.2 电机驱动原理
电路的形状很像字母H。四个三极管就是H桥的四条垂直线,而电机就是H中的横线。
图3.10 L298N内部H桥驱动电路
图3.10为一个典型的直流电机的控制电路。被命名为“H桥驱动电路”主要是因为电路的形状很像字母H。四个三极管就是H桥的四条垂直线,而电机就是H中的横线。H桥电机驱动电路包含四个三极管和一个电机。电机运转,必须遵循导通对角线上的一对三极管。基于不同三极管对的导通情况可以控制电机的转向,电流可可以从左至右流过电机,也可以从右至左流过电机。
当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右流过电机,然后再经Q4回到电源负极,该流向的电流将驱动电机顺时针转动。当三极管Q2和Q3同时导通的情况下,电流将从右至左流过电机。从而驱动电机沿逆时针方向转动。
驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值,该电流仅受电源性能限制,可能烧坏三极管。基于上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。
图3.11 所示就是基于这种考虑的改进电路,它在基本H桥电路的基础上增加了四个二极管来保护电路。四个与门同一个“使能”导通信号相接,这样,用这一个信号就能控制整个电路的开关。
采用以上方法,电机的运转就只需要用三个信号控制:两个方向信号和一个使能信号。如果IN1信号为“0”,IN2信号为“1”,并且使能信号是“1”,那么三极管Q1和Q4导通,电流从左至右流经电机;如果IN1信号变为“1”,而IN0信号变为“0”,那么
Q2和Q3将导通,电流则反向流过电机。
18
图3.11 L298N驱动芯片和直流电机接线图
3.4.3 小车运动逻辑
基于以上L298N原理的阐述,现将小车运动逻辑列入表3.4中。
表3.4 小车运动逻辑
19
3.5 循迹电路设计
3.5.1 RPR220与LM339简介
循迹小车在铺有约两厘米宽黑纸的路面行驶,路面可以近似看为白色,由于黑纸和白色路面对光线的反射系数不同,可以根据接收的反射光的强弱来判断道路——黑色轨迹。本设计循迹传感器采用RPR220反射型光电对管,通过红外敏感端对不同颜色的感光能力的不同,可以很容易的辨别白纸上的黑色轨迹。红外发射管发出的红外线照射到黑带时,光线被黑带吸收,红外接收管无法接受到红外线,不导通。当红外发射管发出的光照射到地面时发生漫反射,光反射回来被红外接收管吸收,红外接收管导通。RPR220型光电对管如图3.12所示。
图3.12 RPR220型光电对管
在循迹模块中,要将模拟量转化为数字量,因此要用到电压比较器,本设计选用的电压比较器是LM339, LM339集成块内部装有四个独立的电压比较器,LM339类似于增益不可调的运算放大器。每个比较器有两个输入端和一个输出端。两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压。当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。当“-”端电压高于“+”端时,输出管饱和,相当于输出端接低电位。两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339用在弱信号检测等场合是比较理想的。
LM339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只电阻(称为上拉电阻,选3-15K)。选不同阻值的上拉电阻会影响输出端高电位的值。因为当输出晶体三极管截止时,它的集电极电压基本上取决于上拉电阻与负载的值。另外,各比较器的输出端允许连接在一起使用。LM339可构成单限比较器、迟滞比较器、双限比较器(窗口比较器)、振荡器等。还可以组成高压数字逻辑门电路,并可直接与
TTL、CMOS电路接口。
20
3.5.2 循迹设计
将该传感器4个一组放置在小车前方,传感器布局如图3.13所示,中间两个传感器之间的距离最好为轨迹宽度,左边第一个和第二个之间的距离可适当较近一些,具体位置可在测试中调整,这样放置的目的是能够很好的反应小车的循迹状态,例如当左边第一个在黑线上时,就表明小车偏离轨道太远需要进行粗调,应当向左大转弯了。当传感器在黑线上时接收管不导通,LM393的3脚电压就为VCC,而2脚电压可以由电位器进行调节,只要电位器不是在最上端,则2脚电压就小于VCC,这样正向端的电压大于反向端电压,那么经过电压比较器比较后,输出高电平,当传感器在白线上时,红外接收管导通,则3脚可视为接地,则正向端电压小于反向段电压,那么经比较器比较后输出低电平。
图3.13 传感器布局
综合以上分析,循迹电路设计见图3.14(注:本设计需要用4组该检测电路以达到精确循迹的目的,图中只给出了1组)。
图3.14 循迹电路
3.6 避障电路设计
利用E18-D80NK可调红外避障传感器进行小车的避障扩展,红外避障传感器如图3.14所示,
该传感器测量范围为
3~80CM,可利用其背面的距离调节电位器来调节距离。
21
图3.14 E18-D80NK红外避障传感器
避障硬件电路如图3.15所示(注:本设计需要用2组该避障电路,图中只给出了1组)。
避障原理是检测到障碍物则输出低电平,背面灯亮,未检测到障碍物则输出高电平,背面灯灭,由于这种传感器比较贵,因此在保证能正常避障的情况下,使用该传感器两个来达到避障的目的。避障思路是:在小车正前方放置一个避障传感器,用于对正前方的障碍物进行检测,在小车左轮附近放置一个传感器用于在小车转弯时对左边的障碍物进行检测,当前方的传感器检测到障碍物时,小车右转弯,具体行驶是小车左轮正传右轮反转向右原地转一个角度,然后右轮加速行驶,左轮正常行驶,绕过障碍物,直到回到黑线上继续循迹,在转弯过程中,若左侧传感器检测到信号则表明小车应继续向右转弯,否则会撞到障碍物上。具体小车转的角度和速度要在时间测试中逐渐进行改善。
图3.15 避障硬件电路
第4
章
软件设计
22
4.1 系统软件流程图
自动循迹小车系统程序要求对4个光电对管的信号和2个E18-D80NK可调红外避障传感器进行检测,然后单片机根据检测到得信号做出相应的控制反应,从而控制电动机的转速和转向,达到自动循迹和避障的目的。具体程序流程图如图4.1。
图4.1 程序流程图
4.2 程序设计
4.2.1 计时程序设计
为了更方便的控制小车速度,采用PWM调速方式,而该中断计时程序的作用是产生一个基准的时间,调用该程序让某一I/0口保持高电平,然后再调用一次将该I/0
口取反就形成了PWM信号,从而控制电机的转速,非常方便,改变t的值来改变占空比。
23
void timer(unsigned int t) //中断计时 {
unsigned int i;
for(i=0;i
{
TMOD=0X10; TH0=0x3C; TL0=0xB0; TR1=1; while(!TF1); TR1=0;
} }
4.2.2 主程序设计
主程序的内容包括初始化程序,读取传感器信息,以及根据相应的电机控制程序等。其中传感器信号可能逻辑状态如表4.1所示,根据这些状态结合实际轨迹情况对电机进行相应控制,不同的轨迹在相同状态下电机的控制也会不同(“1”表示传感器未检测到黑线,“0”表示传感器检测到黑线)。
表4.1 传感器信号可能逻辑状态
例如小车偏左状态如图4.2所示,当小车处于这种状态时,小车向左转弯才能让黑线在小车正下方,这时应该控制左轮电机速度不变,右轮电机加速才能比较平稳的让小车恢复最佳循迹状态。当小车右边两个传感器都在黑线上时(如图
24
4.3),表明小车需要转过90°弯,这时应该左轮电机正传,右轮电机反转才能平稳的沿着黑线转弯。
图4.2 小车偏左状态
图4.3 小车偏右状态
基于上述传感器可能出现的逻辑状态循迹程序如下: main()
{
IN1=1,IN2=0,IN3=1,IN4=0; while(1)
{
if(BZ1==1&&((RPR3==1&&RPR1==1&&RPR2==1&&RPR4==1)|(RPR3
==1&&RPR1==0&&RPR2==0&&RPR4==1)))
{
IN1=1,IN2=0,IN3=1,IN4=0; ENA=1; ENB=1; timer(100);
ENA=0; ENB=0; timer(400); } ······ ······
(详细程序见附录B)
第
5
章 系统调试
25
先用Proteus设计好电路图,再利用KeilC51软件编译程序生成Hex文件,将其导入Proteus里的51单片机,然后便可进行仿真。各种电机转向如下列如图所示(在所有图中,开关闭合表示检测到黑线,断开表示为检测到)。
情况一:未检测到障碍,未检测到黑线,(中间两个传感器检测到黑线仿真结果与之相同)。从仿真过程可以发现:左右轮同步调顺时针转动。
情况二:未检测到障碍,左边两个传感器当中有一个检测到黑线。从仿真过程可以发现:此时左轮反向逆时针转动,速度越来越慢,直到停止,右轮仍顺时针转动,速度保持原来状态。
26
情况三:未检测到障碍,右边两个传感器当中有一个检测到黑线。从仿真过程可以发现:此时右轮反向逆时针转动,速度越来越慢,直到停止,左轮仍顺时针转动,速度保持原来状态。
情况四:未检测到障碍,左边两个传感器或者左边三个传感器检测到黑线。从仿真过程可以发现:此时左轮立刻反向逆时针转动,反向加速度很大,速度变成负数,最后趋于稳定,右轮虽仍顺时针转动,但加速度也很大,速度比之前大的很多,两个轮子保持反向同步。
27
情况五:未检测到障碍,右边两个传感器或者右边三个传感器检测到黑线。从仿真过程可以发现:此时右轮立刻反向逆时针转动,反向加速度很大,速度变成负数,最后趋于稳定,左轮虽仍顺时针转动,但加速度也很大,速度比之前大的很多,两个轮子保持反向同步。
情况六:小车沿黑线运行时,前面的避障传感器检测到障碍。从仿真过程可以发现:左轮顺时针转动,右轮逆时针转动,使得小车向右转从而避开障碍。未检测到障碍再左转绕过障碍循迹,通过实物调试,使得左右轮的转动满足要求,具体过程较为复杂,不一一图示说明。
28
结束语
本次课程设计,利用网上关于循迹小车的论文以及图书馆相关书籍等资料,对自动循迹小车的各个模块功能进行了分析和研究。论文着重介绍了由UC3842芯片及其构成的开关电源模块、L298N电机驱动芯片及其组成的电机驱动模块以及由RPR220型光电对管组成的循迹模块。
本文主要内容如下:
(1)首先介绍了自动循迹小车的基础知识及其应用领域,以及现在国内外循研究的现状;
(2)接着深入分析了自动循迹小车的基本原理。对总体方案和元器件的选择进行了分析与论证,确定了最终总体设计方案;
(3)再用了较大篇幅介绍了自动循迹小车的硬件设计,对各个模块以及用到的相关芯片进行了具体的阐述,并设计出各个模块的硬件电路图,包括开关电源模块、循迹模块、电机驱动模块等;
(4)然后介绍了自动循迹小车的程序流程,并对程序进行了设计; (5)最后进行电机仿真与调试工作,并对仿真结果进行了一定的分析。
通过本次设计,我了解了自动循迹小车的相关原理及其各种应用,也再次熟悉了绘图软件Protel、仿真软件Proteus以及编译软件KeilC51,也认识了一些相关的芯片结构及其应用。本次设计的难点在于开关电源部分,电路图与原理都较复杂,所以最终不得不依靠网络和图书馆等资源。整个设计过程,也为自己新增了不少知识,开拓了自己的思维,也锻炼了自己的动手能力,我相信这些都能为以后的实际工作提供良好的基础。虽然本文是尽了自己的最大努力做到最好,不过难免当中仍有不足之处,所以恳请老师批评与指正。
29
参考文献
[1] 罗志增,蒋静坪. 循迹小车感觉与多信息融合. 北京:机械工业出版社,2003 [2] 蔡自兴. 中国的智能循迹小车研究. 莆田学院学报, 2002
[3] 吴林. 智能循迹小车主题型号工作的回顾. 循迹小车技术与应用,2001 [4] 欧青立,何刻忠. 室外智能循迹小车的发展及其关键技术研究循,2000 [6] 黄惟公等. 单片机原理与应用技术. 西安:西安电子科大出版社,2007; [7] 张瑾,张伟,张立宝. Protel 99SE入门与提高. 北京:人民邮电出版社,2007; [8] 宋戈,黄鹤松. 51单片机应用开发范例大全. 北京:人民邮电出版社,2010; [9] 卿太全. 常用直流稳压电源电路应用200例. 北京:中国电力出版社,2013; [10] 周志敏,周纪海,纪爱华. 开关电源实用电路. 北京:中国电力出版社,2006; [11] 赵同贺,刘军. 开关电源设计技术与应用实例. 北京:人民邮电出版社,2007; [12] 周志敏,周纪海,纪爱华. 单片开关电源. 北京:电子工业出版社,2007; [13] 王晓明. 电动机的单片机控制. 北京:北京航空航天大学出版社,2007; [14] 何希才. 传感器及其应用电路. 北京:电子工业出版社,2001 [15] 吕惠智. 红外技术. 哈尔滨:哈尔滨工程大学出版社,1998 [16] 王丽敏. 电路仿真与实验. 哈尔滨:哈尔滨工程大学出版社,2000 [17] 胡汉才. 单片机原理及其接口技术. 北京:清华大学出版社,1996
30
sbit ENA=P1^1;//左轮
// 驱动芯片L298N管脚位声明
sbit IN2=P1^2;
sbit IN1=P1^0;
sbit IN3=P1^3;
31
// * * * * * * * 第 一 部 分 初始化 * * * * * * *
sbit ENB=P1^4;//右轮 sbit IN4=P1^5;
// 传感器RPR220管脚位声明 sbit RPR3=P2^0;//左边第一个传感器 sbit RPR1=P2^1;//右边第一个传感器 sbit RPR2=P2^2;//左边第二个传感器 sbit RPR4=P2^3;//右边第二个传感器
// E18-D80NK可调红外避障传感器输出引脚声明 sbit BZ1=P2^6;//安装在前面的传感器 sbit BZ2=P2^7;//安装在左轮的传感器
// * * * * * * * 第 二 部 分 子函数定义 * * * * * * * // 中断计时
void timer(unsigned int t) {
unsigned int i;
for(i=0;i
TMOD=0X10; TH0=0x3C; TL0=0xB0; TR1=1; while(!TF1); TR1=0; } }
// * * * * * * * 第 三 部 分 主程序 * * * * * * * main() {
EA=1;//所有中断请求开放 EX0=1;//允许外部中断0中断
IT0=1;//选择外部中断0为跳沿触发方式 while(1) {
32
if(BZ1==1&&((RPR3==1&&RPR1==1&&RPR2==1&&RPR4==1)|(RPR3==1&&RPR1==0&&RPR2==0&&RPR4==1)))
//未检测到障碍,未检测到黑线或者中间两个传感器检测到黑线 {
IN1=1,IN2=0,IN3=1,IN4=0; //左右两轮均设置为顺时针旋转 ENA=1;//左轮转动 ENB=1;//右轮转动 timer(100);
ENA=0; ENB=0; timer(400); }
if(BZ1==1&&((RPR3==1&&RPR1==0&&RPR2==1&&RPR4==1)|(RPR3==0&&RPR1==1&&RPR2==1&&RPR4==1)))
//未检测到障碍,左边两个传感器当中有一个检测到黑线 {
IN1=1,IN2=0,IN3=1,IN4=0; ENA=1; ENB=1; timer(50); ENA=0;//左轮停止 ENB=1;//右轮转动 timer(50); ENA=0; ENB=0; timer(400); }
if(BZ1==1&&((RPR3==1&&RPR1==1&&RPR2==0&&RPR4==1)|(RPR3==1&&RPR1==1&&RPR2==1&&RPR4==0)))
//未检测到障碍,右边两个传感器当中有一个检测到黑线 {
IN1=1,IN2=0,IN3=1,IN4=0; ENA=1; ENB=1;
33
timer(50); ENA=1;//左轮转动 ENB=0;//右轮停止 timer(50); ENA=0; ENB=0; timer(400); }
if(BZ1==1&&((RPR3==0&&RPR1==0&&RPR2==1&&RPR4==1)|(RPR3==0&&RPR1==0&&RPR2==0&&RPR4==1)))
//未检测到障碍,左边两个传感器或者左边三个传感器检测到黑线 {
IN1=0,IN2=1,IN3=1,IN4=0;//设置左轮逆时针旋转,右轮顺时针旋转 ENA=1; ENB=1; timer(250); ENA=0; ENB=0; timer(250); }
if(BZ1==1&&((RPR3==1&&RPR1==1&&RPR2==0&&RPR4==0)|(RPR3==1&&RPR1==0&&RPR2==0&&RPR4==0)))
//未检测到障碍,右边两个传感器或者右边三个传感器检测到黑线 {
IN1=1,IN2=0,IN3=0,IN4=1;//设置左轮顺时针旋转,右轮逆时针旋转 ENA=1; ENB=1; timer(250); ENA=0; ENB=0; timer(250); }
if(BZ1==0)//最前面的红外传感器检测到故障 {
34
unsigned int k=0; for(k=0;k
IN1=1,IN2=0,IN3=0,IN4=1;//设置左轮顺时针旋转,右轮逆时针旋转 ENA=1; ENB=1; timer(250); ENA=0; ENB=0; timer(250); }
for(k=0;k
IN1=1,IN2=0,IN3=1,IN4=0; ENA=1; ENB=1; timer(250); ENA=0; ENB=0; timer(250); }
if(BZ2==0)//左轮的红外传感器检测到障碍 {
IN1=1,IN2=0,IN3=1,IN4=0; ENA=1; ENB=1; timer(250); ENA=0; ENB=0; timer(250);
}
if(BZ2==1)//左轮的红外传感器没有检测到障碍 IN1=1,IN2=0,IN3=1,IN4=0;
ENA=1;
{
35
ENB=1; timer(60); ENA=0; ENB=1; timer(140); ENA=0; ENB=0; } } }
timer(400); }
for(k=0;k
IN1=1,IN2=0,IN3=0,IN4=1; ENA=1; ENB=1; timer(250); ENA=0; ENB=0; timer(250);
} 36