




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2013年 7 月12日一、绪论.4 1.1智能小车的作用和意义.4 矚慫润厲钐瘗睞枥庑赖。二、方案设计与论证 . 4 聞創沟燴鐺險爱氇谴净。2.1 总体方案设计 .4 残骛楼諍锩瀨濟溆塹籟。2.2主控系统 .5酽锕极額閉镇桧猪訣锥。2.3传感器选择方案 .6 彈贸摄尔霁毙攬砖卤庑。2.4电机驱动芯片选择方案.6 謀荞抟箧飆鐸怼类蒋薔。2.5电机方案选择.6厦礴恳蹒骈時盡继價骚。2.6电源方案选择.7 茕桢广鳓鯡选块网羈泪。三、主要器件介绍 .7鹅娅尽損鹌惨歷茏鴛賴。3.1 STC89C52的介绍 .7 籟丛妈羥为贍偾蛏练淨。3.2 L298N的介绍 .8預頌圣鉉儐歲龈讶骅籴。3.2.1 L298N的引脚功能 . 9 渗釤呛俨匀谔鱉调硯錦。3.2.2 L298N的运行参数 .10铙誅卧泻噦圣骋贶頂廡。3.2.3 L298N的逻辑控制 . 10 擁締凤袜备訊顎轮烂蔷。3.3 TCRT5000的介绍 . 11贓熱俣阃歲匱阊邺镓騷。3.4LM339的介绍 .12坛摶乡囂忏蒌鍥铃氈淚。3.5 L7805CV和L7806CV的介绍.12蜡變黲癟報伥铉锚鈰赘。四、硬件设计 . 14 買鲷鴯譖昙膚遙闫撷凄。4.1 主控芯片STC89C52单片机最小系统板电路 . 14 綾镝鯛駕櫬鹕踪韦辚糴。4.2 电机驱动模块电路.15驅踬髏彦浃绥譎饴憂锦。4.3红外对黑线检测模块电路.16 猫虿驢绘燈鮒诛髅貺庑。4.4稳压电源电路.18锹籁饗迳琐筆襖鸥娅薔。五、程序设计 . 19 構氽頑黉碩饨荠龈话骛。5.1主程序 .19輒峄陽檉簖疖網儂號泶。六、调试. 28 尧侧閆繭絳闕绚勵蜆贅。6.1硬件调试 .28识饒鎂錕缢灩筧嚌俨淒。6.1.1元件的固定 . 28凍鈹鋨劳臘锴痫婦胫籴。6.1.2TCRT5000探头 . 29 恥諤銪灭萦欢煬鞏鹜錦。6.1.3 L298N马达驱动模块 . 29 鯊腎鑰诎褳鉀沩懼統庫。6.2软件调试 . 29 硕癘鄴颃诌攆檸攜驤蔹。6.2.1调试平台介绍 . 29阌擻輳嬪諫迁择楨秘騖。6.2.2程序调试.29氬嚕躑竄贸恳彈瀘颔澩。6.3 测试结果与分析 . 30釷鹆資贏車贖孙滅獅赘。七、心得体会. 30怂阐譜鯪迳導嘯畫長凉。附件 元件清单 参考文献一、绪论1.1智能小车的作用和意义 自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。谚辞調担鈧谄动禪泻類。随着科学技术的发展,机器人的感系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。视觉的典型应用领域为自主式智能导航一种实用有效的方法。嘰觐詿缧铴嗫偽純铪锩。 机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。避障控制系统是基于自动导引小车(AVGauto-guide vehicle)系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。使用传感器感知路线和障碍并作出判断和相应的执行动作。熒绐譏钲鏌觶鷹緇機库。 该智能小车可以作为机器人的典型代表。它可以分为三大组成部分:传感器检测部分、CPU、执行部分。机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。基于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可。智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向和速度。 鶼渍螻偉阅劍鲰腎邏蘞。二、方案设计与论证2.1 总体方案设计 本系统基于AT89C52单片机的小车寻迹系统,该系统采用两组高灵敏度的红外反射式光电传感器,对路面的黑色轨迹进行检测,将检测的数据送入单片机进行处理,并利用单片机产生PWM波,并以最短时间完成寻迹。同时采用红外传感器对障碍物进行躲避功能,遇到对于交通灯的检测采用固定频率的红外线信号表示不同的交通指示灯,使控制系统更加智能。在软件程序上采用一定的控制算法,使得小车在通道上第一次遇到十字黑线时候减速行驶,在第二次遇到十字黑线可以实现减速转弯,因此,本系统由红外光电传感器,单片机和驱动单元共同作用,保证小车能在预先设定的轨迹上行驶。 纣忧蔣氳頑莶驅藥悯骛。本设计的主要特色本设计的主要特色本设计的主要特色本设计的主要特色: 1.自制的四个轮结构小车,采用PWM调速。2.采用6V电池供电,直流稳压电路工作稳定。 3.采用红外发射传感器接收对黑线标志进行识别,具有高精度和高灵敏度。 2.2主控系统 根据设计要求,我认为此设计属于多输入量的复杂程序控制问题。据此,拟定了以下两种方案并进行了综合的比较论证,具体如下: 颖刍莖蛺饽亿顿裊赔泷。方案一: 选用一片CPLD(如EPM7128LC84-15)作为系统的核心部件,实现控制与处理的功能。CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。但CPLD在控制上较单片机有较大的劣势。同时,CPLD的处理速度非常快,而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高,在这一点上,MCU就已经可以胜任了。若采用该方案,必将在控制上遇到许许多多不必要增加的难题。为此,我们不采用该种方案,进而提出了第二种设想。 濫驂膽閉驟羥闈詔寢賻。方案二: 采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案。 针对本设计特点多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,而不能用精简I/O口和程序存储器的小体积单片机,D/A、A/D功能也不必选用。根据这些分析,我选定了STC89C52RA单片机作为本设计的主控装置,52单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是52单片机价格非常低廉。 在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用一片单片机,充分利用STC89C52单片机的资源。銚銻縵哜鳗鸿锓謎諏涼。2.3传感器选择方案 方案一:采用发光二极管发光,用光敏二极管接收; 发光二极管发出的可见光照射到黑带时,光线被黑带吸收,光敏二极管为检测到信号。呈高阻抗,使输出端为低电平。当发光二极管发出的可见光照射到地面时,它发出的可见光反射回来被光敏二极管检测到,其阻抗迅速降低,此时输出端为高电平。但是由于光敏二极管受环境中可见光影响较大,电路的稳定性很差,但可以通过运放对检测信号进行处理。挤貼綬电麥结鈺贖哓类。方案二: 采用反射式红外光电传感器。 用TCRT5000型反射式红外对管组成的路径识别传感器模块,检测距离和灵敏度均能达到系统要求,该器件具有如下特点:当发光二极管发出的光反射回来时,三极管导通输出低电平,该光电对管调理电路简单,工作性能稳定。 综上所述,本设计采用发光二极管进行检测,原因是性价比较合理。赔荊紳谘侖驟辽輩袜錈。2.4电机驱动芯片选择方案方案一:采用分立元件的H桥驱动电路。 方案二:采用集成的H桥驱动电路芯片。 由于集成的H桥驱动电路芯片体积小,稳定性高,因此选用集成的驱动电路芯片作为电机的驱动芯片,型号为L298N。塤礙籟馐决穩賽釙冊庫。2.5电机方案选择 方案一: 采用步进电机,步进电机的一个显著特点就是具有快速启停能力可实现电机正反转及调速,启动性能好,启动转矩大。工作电压可达到36V,4A。可同时驱动两台直流电机。适合应用于机器人设计及智能小车的设计中,如果符合不超过步进电机所能提供的动态转矩值,就能够立即使步进电机的启功或者反转。调速方式:直流电动机采用PWM信号平滑调速。裊樣祕廬廂颤谚鍘羋蔺。方案二: 采用普通直流减速电机,直流电动机具有优良的调速特性,调速平滑,方便,调整范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动,制动,和反转,能满足各种不同的特殊运行要求。 综上所诉,我们选择直流减速电机。仓嫗盤紲嘱珑詁鍬齊驁。2.6电源方案选择方案一: 直接使用AA干电池进行供电它的结构十分简单,但是供电能力差,不易长时间供电。 方案二: 使用3500mA干电池配合直流稳压整流电路输入端口接9mA的干电池,经电容滤波和L7805和L7806稳压后输出约5V,6V电压。可保证长时间稳定的输出电压。这样可以提供持久稳定的电流,稳压后给单片机系统和其他芯片供电。考虑到系统稳定工作的要求,所以选择方案一。绽萬璉轆娛閬蛏鬮绾瀧。三 主要器件介绍3.1 STC89C52的介绍 STC89C52引脚功能说明VCC(40引脚):电源电压 VSS(20引脚):接地P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;骁顾燁鶚巯瀆蕪領鲡赙。而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。瑣钋濺暧惲锟缟馭篩凉。此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见下表:鎦诗涇艳损楼紲鯗餳類。在对Flash ROM编程和程序校验时,P1接收低8位地址。表XX P1.0和P1.1引脚复用功能在对Flash ROM编程或程序校验时,P3还接收一些控制信号。 P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示: 表XX P3口引脚复用功能栉缏歐锄棗鈕种鵑瑶锬。来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。辔烨棟剛殓攬瑤丽阄应。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。 特殊功能寄存器3.2 L298N的介绍L298N是一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。峴扬斕滾澗辐滠兴渙藺。3.2.1 L298N的引脚功能3.2.2 L298N的运行参数 3.2.3 L298N的逻辑控制主要采用L298N,通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转,停止的操作,输入引脚与输出引脚的逻辑关系图为詩叁撻訥烬忧毀厉鋨骜。表3.3 L298N对直流电机控制的逻辑真值表3.3 TCRT5000的介绍TCRT5000光电传感器模块是基于TCRT5000红外光电传感器设计的一款红外反射式光电开关。传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,输出信号经施密特电路整形,稳定可靠。则鯤愜韋瘓賈晖园栋泷。+:接直流DC5V正极-:接直流DC5V负极S:信号输出端,光敏三极管饱和,此时模块的输出端为高电平,指示二极管被点亮。应用场合:电度表脉冲数据采样、传真机碎纸机纸张检测、障碍检测黑白线检测基本参数:外形尺寸:长32mm37mm;宽7.5mm;厚5mm工作电压:DC3V5.5V,推荐工作电压为5V检测距离:1mm8mm适用,焦点距离为2.5mm传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为高电平,指示二极管被点亮。胀鏝彈奥秘孫戶孪钇賻。灵敏度可调的循迹电路。当比较器的正向输入端电压低于反向输入端的电压时输出低电平,LED亮,表示接收到反射光。鳃躋峽祷紉诵帮废掃減。3.4 LM339的介绍智能小车中运用于电路分析模块LM339引脚图与功能简介LM339集成块内部装有四个独立的电压比较器。LM339类似于增益不可调的运算放大器。每个比较器有两个输入端和一个输出端。两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压。当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。当“-”端电压高于“+”端时,输出管饱和,相当于输出端接低电位。两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339用在弱信号检测等场合是比较理想的。LM339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只电阻(称为上拉电阻,选3-15K)。选不同阻值的上拉电阻会影响输出端高电位的值。因为当输出晶体三极管截止时,它的集电极电压基本上取决于上拉电阻与负载的值。另外,各比较器的输出端允许连接在一起使用。稟虛嬪赈维哜妝扩踴粜。3.5 L7805CV和L7806CV的介绍L7805L7805是我们最常用到的稳压芯片了,他的使用方便,用很简单的电路即可以输入一个直流稳压电源他的输出电压恰好为5v,刚好是51系列单片机运行所需的电压,他有很多的系列如ka7805,ads7805,cw7805等,性能有微小的差别,用的最多的还是LM7805,下面我简单的介绍一下他的3个引脚以及用它来构成的稳压电路的资料。 陽簍埡鲑罷規呜旧岿錟。 其中1接整流器输出的+电压,2为公共地(也就是负极),3就是我们需要的正5V输出电压了.L7806L7806为固定正电压稳压电路,属三端正电源稳压电路系列(3Terminals positive Voltage Regulator Series)。产品应用非常广泛,涉及到各种稳压电源、充电器、数码产品以及家电领域等。沩氣嘮戇苌鑿鑿槠谔應。L7806芯片参数:封装四、硬件设计.4.1 主控芯片AT89C52单片机最小系统板电路本智能小车采用的单片机最小系统板是自己制做的AT89C52单片机最小系统板,它具有体积小,质量轻,使用方便等优点,能够很好的放置在智能小车中。原理图如下。 钡嵐縣緱虜荣产涛團蔺。小系统PCB板4.2 电机驱动模块电路电机驱动模块采用专用驱动芯片L298N作为电机的驱动芯片。L298N是一种具有高电压大电流的全桥驱动芯片,它的响应频率高,一片L298N可以分别控制两个直流减速电机,而且还带有控制使能端,用它作为驱动芯片,操作方便,稳定,性能优良。L298N的5、7引脚为一个电机的控制信号输入端,10、12引脚为另一个电机的控制信号输入端,2、3引脚为一个电机的控制信号输出端,13、14引脚为另一个电机的控制信号输出端,通过单片机对L298N的输入端进行指令控制,就能实现直流减速电机的正转和反转,从而控制小车前进和后退。懨俠劑鈍触乐鹇烬觶騮。电机驱动电路原理图如下。驱动模块PCB板4.3红外对黑线检测模块电路由于有6个红外传感器排成一排均匀的安装在小车底部,当光线照射到路面并反射,由于黑线和白纸的反射系数不同,根据接收到的反射光强度判断是否眼黑线前进。在一般情况下,当黑线位于中间的两个红外传感器之间,不管小车偏向哪一边,都能检测出小车的偏移方向。或者当小车偏向左边时,右边的传感器检测到黑线,输出低电平给电机,否则,输出高电平。謾饱兗争詣繚鮐癞别瀘。红外作循迹电路原理图红外作循迹PCB板 采用红外对管制作循迹电路,当检测到黑线时,红外接受管导通,否则红外对管截止,通过比较器LM339电压比较,把电平状态送给单片机进而单片机处理。原理图如下。 呙铉們欤谦鸪饺竞荡赚。电路分析原理图红外电路分析PCB板4.4稳压电源电路电机驱动电路模块:本题目要求小车的机械系统稳定、灵活、简单,可选用两轮式,考虑到现在的汽车多采用两轮式我选用两轮式的设计,使设计更贴近生活需求。驱动部分:直流驱动电机,由L298N双通道马达驱动模块驱动前后两个马达,其力矩完全可以达到模拟效果。 电池的安装:将电池放置在车体的下面,降低车体重心,提高稳定性,同时可增加驱动轮的抓地力,减小轮子空转所引起的误差。 电源模块:采用2支3500mA电池给电机供电,再用稳压芯片对电池电压进行降压给单片机。采用一套电源可减少小车的负重。莹谐龌蕲賞组靄绉嚴减。电机动力电路应用说明:基本思路为使能端输入使能信号,即接高电平,控制输入端A端输入PWM 信号,控制输出端B输入方向信号,在一个PWM周期内,电动机只承受单极性的电压,电机的选择方向由控制信号决定,电机的速度由PWM决定,PWM占空比为0%-100%对应于电机转速0-MAX。因此,当接收到由检测模块的信号时,单片机处理该信号,根据该信号产生对应的PWM 波,从而可以根据调节电机的转速与方向。麸肃鹏镟轿騍镣缚縟糶。稳压电源电路图稳压电源PCB板五、程序设计 5.1主程序 #include#defineuchar unsigned char#defineuint unsigned intuchar pwm_left =0;/变量定义,与速度比较的变量uchar push_left =0;/ 左电机占空比N/10 调速uchar pwm_right =0;/与速度比较的变量uchar push_right=0;/ 右电机占空比N/10 调速bit Right_moto_stop=1;bit Left_moto_stop =1;uint time=0;uint a=0,flag=0,flag1=0; sbit Left_1_led=P10; /四路寻迹模块接口第一路sbit Left_2_led=P11; /四路寻迹模块接口第二路sbit Right_1_led=P12; /四路寻迹模块接口第二路sbit Right_2_led=P13; /四路寻迹模块接口第三路uint a,d,y,z,q,w,c;sbit out1 = P20;sbit out2 = P21;sbit out3 = P22;sbit out4 = P23;sbit ena = P16;sbit enb = P17;sbit inright = P24;sbit inleft = P25;delay(uint a);intturnleft(uint z) ena=1; enb=1; out1=1; out2=0; out3=1; out4=0; delay(z); return 0;int turnright(uint y) ena=1; enb=1; out1=0; out2=1; out3=0; out4=1; delay(y); return 0;int dengdai (uint d) ena=0; enb=0; out1=0; out2=0; out3=0; out4=0; delay(d); return 0;void go(uint q) ena=1; enb=1; out1=0; out2=1; out3=1; out4=0; delay(q);intback(uint w) ena=1; enb=1; out1=1; out2=0; out3=0; out4=1; delay(w); return 0; int backright(int c) ena=0; enb=1; out1=0; out2=0; out3=0; out4=1; delay(c); return 0; voidbizhang()if(inright=1&inleft=1)go(50); if(inright=0)turnright(50);if(inleft=0)turnleft(50);if(inright=0&inleft=0)backright(2000);void xunji() if(Left_1_led=0&Left_2_led=0&Right_1_led=0&Right_2_led=0) /0納畴鳗吶鄖禎銣腻鰲锬。 go(50); else if(Left_1_led=0&Left_2_led=0&Right_1_led=0&Right_2_led=1)/0001風撵鲔貓铁频钙蓟纠庙。 turnright(20);delay(5); else if(Left_1_led=0&Left_2_led=0&Right_1_led=1&Right_2_led=0)/0010灭嗳骇諗鋅猎輛觏馊藹。 turnright(20); /(9,6) delay(1); else if(Left_1_led=0&Left_2_led=0&Right_1_led=1&Right_2_led=1) /0011铹鸝饷飾镡閌赀诨癱骝。 turnright(20); delay(3);else if(Left_1_led=0&Left_2_led=1&Right_1_led=0&Right_2_led=0) /0100攙閿频嵘陣澇諗谴隴泸。turnleft(30);delay(3);else if(Left_1_led=0&Left_2_led=1&Right_1_led=0&Right_2_led=1) /0101趕輾雏纨颗锊讨跃满賺。turnright(30); delay(2);else if(Left_1_led=0&Left_2_led=1&Right_1_led=1&Right_2_led=1) /0111夹覡闾辁駁档驀迁锬減。turnleft(30);delay(1);else if(Left_1_led=1&Left_2_led=0&Right_1_led=0&Right_2_led=0) /1000视絀镘鸸鲚鐘脑钧欖粝。 turnleft(30); delay(3);else if(Left_1_led=1&Left_2_led=0&Right_1_led=0&Right_2_led=1) /1001偽澀锟攢鴛擋緬铹鈞錠。go(30);delay(3); /本来延时6else if(Left_1_led=1&Left_2_led=0&Right_1_led=1&Right_2_led=0) /1010緦徑铫膾龋轿级镗挢廟。turnleft(30);delay(3);else if(Left_1_led=1&Left_2_led=0&Right_1_led=1&Right_2_led=1) /1011騅憑钶銘侥张礫阵轸蔼。 turnright(20); delay(3); else if(Left_1_led=1&Left_2_led=1&Right_1_led=0&Right_2_led=0) /1100疠骐錾农剎貯狱颢幗騮。turnleft(20);delay(5); else if(Left_1_led=0&Left_2_led=0&Right_1_led=0&Right_2_led=1) / 1101镞锊过润启婭澗骆讕瀘。turnleft(20); delay(5);else if(Left_1_led=1&Left_2_led=1&Right_1_led=1&Right_2_led=0) / 1110榿贰轲誊壟该槛鲻垲赛。turnleft(20); delay(5); /else if(Left_1_led=1&Left_2_led=1&Right_1_led=1&Right_2_led=1) / 1111邁茑赚陉宾呗擷鹪讼凑。/ /tiaosu();/ go(20);/ delay(5);/ int delay(uint a)uint x,y;for(x=a;x0;x-)for(y=110;y0;y-);return 0;/*/嵝硖贪塒廩袞悯倉華糲。/* PWM调制电机转速 */该栎谖碼戆沖巋鳧薩锭。/*/劇妆诨貰攖苹埘呂仑庙。/* 左电机调速 */臠龍讹驄桠业變墊罗蘄。/*调节push_val_left的值改变电机转速,占空比 */void pwm_out_left_moto(void) if(Left_moto_stop) if(pwm_left=100)pwm_left=0; else ena=0;/*/鰻順褛悦漚縫冁屜鸭骞。/* 右电机调速 */ 穑釓虚绺滟鳗絲懷紓泺。 void pwm_out_right_moto(void) if(Right_moto_stop) if(pwm_right=100)pwm_right=0; else enb=0;/*/隶誆荧鉴獫纲鴣攣駘賽。/* */浹繢腻叢着駕骠構砀湊。/* 定时器初值化 */鈀燭罚櫝箋礱颼畢韫粝。/*/惬執缉蘿绅颀阳灣熗鍵。void init0(void)TMOD=0X01;TH0= 0XF8; /1ms定时TH0= 0XF8; TL0= 0X30; TL0= 0X30;TR0= 1;ET0= 1;EA = 1;void init1(void)TMOD=0x10; /设置定时器0工作模式1TH1=(65536-50000)/256; /定时器装初值TL1=(65536-50000)%256;IT0=1; IT1=1;EX0=1;/开外部中断0EX1=1;/开外部中断1ET1=1;/开定时器0中断TR1=1;/启动定时器0EA=1;/开总中断/*/贞廈给鏌綞牵鎮獵鎦龐。/*TIMER0中断服务子函数产生PWM信号*/ void timer0()interrupt 1 using 2 TH0=0XF8; /1Ms定时 TL0=0X30; time+; pwm_left+; pwm_right+; pwm_out_left_moto(); pwm_out_right_moto(); void run(int m,int n) push_left =m; /PWM 调节参数1-10 1为最慢,10是最快 改这个值可以改变其速度嚌鲭级厨胀鑲铟礦毁蕲。 push_right =n; /PWM 调节参数1-10 1为最慢,10是最快 改这个值可以改变其速度薊镔竖牍熒浹醬籬铃騫。 out1=0; /左电机前进 out2=1; out3=1; out4=0; /右电机前进 void tiaosu() while(flag=1)run(30,30); delay(30); xunji(); if(Left_1_led=1&Left_2_led=1&Right_1_led=1&Right_2_led=1) a=1;flag=0;齡践砚语蜗铸转絹攤濼。 while(a=1)run(99,99); delay(30); xunji(); if(Left_1_led=1&Left_2_led=1&Right_1_led=1&Right_2_led=1) a=2;绅薮疮颧訝标販繯轅赛。 void main() init0();init1();P1=0xff;P2=0xff; while(1) if(Left_1_led=1&Left_2_led=1&Right_1_led=1&Right_2_led=1) flag=1; /1111饪箩狞屬诺釙诬苧径凛。 else flag=0; delay(3); if(flag=0) xunji(); else tiaosu();六、调试: 6.1硬件调试 6.1.1 元件的固定 小车主要有5大模块的电路板组成的,板和板之间是靠导线连接。小车在循迹运动的时候时常颠簸,导致电路板移位致使电路板上面的元件受到干扰,使小车不稳定运动,特别是L298N.所以我们除了在板上打孔锁上螺丝,还在板和板之间用热熔胶再固定,减少震动。烴毙潜籬賢擔視蠶贲粵。 6.1.2 TCRT5000探头 由TCRT5000组成的轨迹识别电路是本次设计成败的关键,在初次调试时小车的摇头动作(即转向)时常出现不灵的情况。后来用电压表测量了电压比较器量输入端的电压发现基准电压到了3.5V,而红外探头在检测到黑线时才3.6V。两者电压相差无几,所以遇到黑线颜色较浅或反光的区域单片机会发生误判的现象。于是我们测量了红外探头在黑白两种极限情况下的电压输出情况。在测量了红外探头在黑色和白色两种极限情况下的电压后,调节电阻我把基准电压调到5V,这个电压值距黑色或白色情况下输出的电压值都很大,单片机会减少误判的现象。改良过后测试正常,小车能灵活的摇头,更功能实现。鋝岂涛軌跃轮莳講嫗键。6.1.3 L298N马达驱动模块 第一次给L298N马达驱动模块通电实现简单的马达单向驱动,发现马达时跑时不跑。经过检测发现是一根信号线接触不良,重新接好后运行正常。此模块是用的市面上可以买到的模块所以性能比较稳定,调试很成功。撷伪氢鱧轍幂聹諛詼庞。6.2软件调试 6.2.1调试平台介绍 此次编程采用了keil V4。KeilSoftware公司推出的uVision4是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision4还提供了一个配置向导功能,加速了启动代码和配置文件的生成。此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。uVision4提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。uVision4提供对多种最新的8051类微处理器的支持,包括AnalogDevices的ADuC83x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 温度数据可视化分析-第1篇-洞察及研究
- 2025年专升本艺术概论模拟试卷:艺术创作分析作品鉴赏试题
- 农民与合作社共同开发农业资源协议补充条款
- 农民农产品销售合作协议条款
- 认知功能改善策略-洞察及研究
- 家庭农场农作物种植合作经营合同
- 餐饮店股份划分合同范本
- 小伙伴们的夏日趣事记作文15篇
- 餐饮货梯维修合同协议书
- 电子商务平台支付方式多样化策略制定服务合同
- 2025年北京高端商务车租赁及全程安全保障合同
- 2025版电商平台入驻及佣金分成合作协议
- 中国黄金集团招聘面试经典题及答案
- 2025年智能家居产业互联互通标准与产业发展现状及问题研究报告
- 感染性心内膜炎术后护理查房
- 2025年领导干部政治理论知识必考题库及答案
- 2025年提取公积金租房合同范本
- 推理能力题目及答案
- 2025年湖南省社区工作者招聘考试(公共基础知识和写作)历年参考题库含答案详解(5套)
- 2025年部编版新教材语文七年级上册教学计划(含进度表)
- 湖北省武汉市武昌区重点名校2026届中考语文全真模拟试题含解析
评论
0/150
提交评论