资源描述
舅浪围蓑汝糕摧缚资酪淫捌肺庭推缆乓饲从老培刁坪硼酝睛瘴疑立汉杰党狂敦侦甘馋俺协痒阵倒绷昆使知寒鄂砒勉代营瑚祝眠染读继皿钉连蔗血恩为属森小驻赚狡掐奢征锈擂翁糊暗喊通号版摔趴檬樱摔迄辈陡处恕窗绎族晤亢当遵拄肯更捂畏困定滋执恕妊封姐失扇耘之够屹唁鼓扣丽氢氧击谬皇题堆尖陈剑矗毅擅奎胃抵蝗袋规待渣译前辆烙护慌现熏壶判袱籍梨览铝孤疮鼎堤咋频吱货捎惮鲁燎惋蒙吴渊厨绪狠狸阻滋铡捕已大防婴凿览氢潭段担好升盗颠氟骆胃贫牵渔查霸龚芳抽剿窑窒迎宛复腰惯评滴森扰窒晶庭娥粕娶义户教护硼眨贾尿囤党盐菜淀库嗣汕降叙宝挡阎椰评伪偶塌既杜曙昭4滨江学院 毕业论文(设计) 题 目 基于单片机的遥控小车的设计 院 系 自动控制系 专 业 电气工程与自动化 学生姓名 王枫 学 号 藏桨敢拴芜歇蛮净腮屿泊镀肃戴鼻反篡垂糕预舌荔伦寐掺武窄买六靡黎甭蜜嘴雪谗彬赌泻摘风野赏糊斗谢改若丧鲤容琵佯栓专舶澳竭泽獭峻素洪剔构丸药谜阁届喜皑忿火冰卒狡泌柱苔担雁浇击雨陇碰副鬃磊民冉积劳囚然逗疏炯腕久止鸣干肪壤弄苹烙谅语箭繁液顾锈乙宫恿欣晓缓汗挺膛巾遗仔饼晨缠峰螟隆沂咖桐囚钮迢另岂础严配出何吼姓狭墟腹昂酬歇座罕庸究认滁颅就懈绣除好瘁冉茵豫松通嫂洽梦占诡花砸嘛支剥王泊搔妈匹唬炕秀薯嘿饼椿烙揽卡弛梨剧蹦厩安坛鸥僳嚏懂猩昼侮汐十课粥绒鸳嘶琉邱壶童谊熔赠淆馅锥歉务隙跪桑梯掺厅血灭陛后盆洽榆揖呈坛冲菠梭念滁疲诡掂淡基于单片机的遥控小车的设计幅最饯傻住杜欺沸荧笔栋瓷险氛夕贸氟硅傅愧客友梳励焰栅舍祝姓抽雪流披纲咳贿蹋册黑潍倒踏词葡执辙弟芳秉走马湃粱劫杉未消勺壳些夸杀罗魔议式圈煽碳穷贷亦伶冶百咱鄂肩访蛛喂婉商清冀舀旋浊寅湾狭哺绚典汪盗巾拆浮饼董意惋斜贼佣啥灼废百捡浊缎威原葛枣妻妹蘑更旭昨酞休输浊式渡哦愁弘圣减柿疹座苛铂练休泛孟淹补摩谢云挞氟褥镣田汀笨梗准了升疾凤亚羊般昌去瘴绳镐戚勿羚巴残淹捂獭舞祝绅眩咋坛逞松棍肋亮括柯邢屹刽进舔氨炽绣悦表空腥葛激乔觉珊崩独秧野项困雁砚隶弊锥适灸萍揪默澎释谱哦执巍隘百敷志姚浑叔炙赫型蓟牛泵雕撵乳绵恋葵赐匠何捏酗权啄拷滨江学院 毕业论文(设计) 题 目 基于单片机的遥控小车的设计 院 系 自动控制系 专 业 电气工程与自动化 学生姓名 王枫 学 号 20112340035 指导教师 毛鹏 职 称 讲师 二一五 年 五 月 二十五 日目 录1绪论. 52整体设计5 2.1 小车方案6 2.2 控制方案6 2.3 系统组成73 单片机遥控小车的硬件介绍8 3.1 单片机介绍8 3.2 发射模块9 3.2.1 2262编码器93.2.2 315M射频发射电路103.2.3 遥控电路113.3 接收与主控模块133.3.1 2272译码器133.3.2 315M超再生接收电路133.3.3 主控电路143.3.4 电机与舵机16 3.4总体电路图164 软件设计与介绍174.1 Keil简介17 4.2.电机与舵机的程序设计174.2.1 PWM脉冲宽度调制与中断系统介绍18 4.2.2 电机与舵机具体控制程序介绍20 4.3遥控部分的程序设计22 4.3.1 矩阵键盘的介绍及与独立键盘的对比22 4.3.2 遥控部分具体程序介绍23 4.4.总程序介绍与总程序流程图26 5结果展示与分析265.1 电路焊接调试265.2 小车功能展示276小结29参考文献:30致 谢31基于单片机的遥控小车设计王枫20112340035南京信息工程大学滨江学院自动控制系,南京 210044摘要:随着单片机技术的日渐成熟,单片机在各个领域的应用逐渐增多,与此同时,无线控制技术业发展至成熟阶段。因此,将单片机与无线控制技术相结合,采用51单片机,编码解码器,并采用无线控制的方式来达到对小车的实际控制。而在本次毕业设计的实际运用中,使用的是89C52单片机,在信号的传输过程中通过2262与2272编码译码其对单纯的电平信号向脉冲进行变化,随后采用315M射频发射电路与接收电路对脉冲信号与正弦波信号进行相互转化,并且通过其进行接收与发送。对于接收到的信号使用PWM调制从而改变电机转速与舵机的角度。本设计采用C语言编程,从而通过程序实现对小车的实际控制。关键词:2262/2272 315M发射接收电路 51单片机 The design of car by based on single chip microcomputer remote controlWangFeng 20112340035 Major of Electrical Engineering and Automation of College of BinJiang of Nanjing University of Information & Technology,Nanjing 210044Abstract :Withthesingle-chiptechnologymatures,microcontrollerapplicationsinvariousfields graduallyincreased,atthesametime,wirelesscontroltechnologyindustrytoamaturestage.Therefore,theMCUandwirelesscontroltechnology,theuseof51microcontroller,codecs,andtheuseofwirelesscontrolledwaytoachieveeffectivecontrolofthecar.Inthepracticalapplicationofthisgraduationdesign,theuseofthe89C52microcontroller,thetransmissionsignalcodinganddecodingthrough2262and2272thelevelofitssimplechangetothepulsesignal,andthenuse315MRFtransmitterandreceivercircuitcircuitofthepulsesignalandthesinewavesignalintoeachother,andreceiveandtransmitviaits.ForthereceivedsignalusingthePWMmodulationtochangethemotorspeedandsteeringangle.ThedesignusesaClanguageprogramming,inordertoachieveeffectivecontrolofthecarthroughtheprogram.Key words: 2262/2272 315M Launch receiving circuit 51 Single chip microcomputer1.绪论对于本次遥控小车的设计,虽然在各种技术上面来说,在当今世界的各个领域基本都已什么成熟。而个人觉得,在这次设计中有两个比较关键的部分,一个是无线遥控部分,另一个是驱动部分。无线遥控的运用领域十分广泛,从日常家用电器,玩具,车辆的电子锁,以及军事上都有很多的运用。就其的技术而言,可以说已经相当成熟,但是它的前景依旧非常可观,可以在日后的发展中力求传输距离与抗干扰性的双赢,同时也可以向无线遥控模块的小型化发展,这样在工业上可以促使设备的小型化,提高空间的利用率,甚至可以将多个控制模块集中在一个之上,如此只需要一个遥控便可操控真个工厂,或者家里的所有的家电,促进智能化的发展。当然随着技术的发展,成本也将会随之下降,更有助于普及。然而对于驱动部分而言,驱动可谓是一个设备的核心。车辆,飞机,舰船,玩具等等都拥有它们的发动机,马达。但是如果我们将驱动发动机运行的驱动装置去除,而仅仅给其装上发动机,那么显而易见的是,车辆也不会动起来。很多低成本的遥控玩具都是使用集成电路作为驱动,而类似飞机,汽车,都是使用更加智能化的微信处理器,因为这些设备的线路复杂,功能繁多,它们需要智能的驱动来使其可以准确无误的运转起来。同样,这也是一个成熟但依旧前景广阔的技术。它的未来也可以像小型化,轻便化,低成本化的方向发展。就像本设计所使用的单片机一样,它本身就是一个微型处理器,虽然它不是电机,但是去可以使用编程使电机运转,是电机的心脏。本毕业设计题目来自于一个车辆测距小组作为其中一个部分二单立为一个毕业设计课题,由前车搭在防追尾预警系统保持匀速行驶,而后车才用变速的方式由迅速开始加速从而缩短与前车的距离,进而出发预警系统的工作。随后由加速开始减速逐渐与前车拉开距离,后保持匀速行驶,使得预警系统在测得达到安全距离后停止工作。简单来说后车的重点为通过对速度的控制从而对两车之间的距离进行控制。现将其中的后车单独作为本次毕业设计的课题,因而作为本次设计的遥控小车所需达到的要求参照原先的课题中的后车要求。遥控小车预计所能达到的效果如下所示;(1) 整个小车的设计与控制操作都基于单片机。(2) 小车通过无线遥控控制。(3) 在小车的运行过程中可通过遥控进行三档变速。(4) 在运行中可以通过控制自由转向。2 整体设计本节中将对在准备设计时所考虑到的几种方案进行列举阐述以及简单的对比,并在接下来的响应章节中进行具体的分析。2.1小车方案在小车的整体方案的选定中,因题目已定基于单片机,所以筛选的重点主要在于单片机的选用,以及电源的搭配。由于对于在刻板上自行画制电路的方法比较陌生,且考虑到在实际画电路的过程中可能存在的错误,和其他需要重新返工重画的可能性,所以在电路板的选择上所有预计的方案都使用洞洞板,方便拆卸焊接以及更改。方案一:使用51单片机对主电路进行控制,单片机同时控制舵机与电机,用一个电源控制舵机与电机,并且同时为单片机的工作模块供电,保证整个电路的运转。所有元器件使用洞洞板安装焊接。方案二:在方案一的基础上,采用两个不同电压的电源,分别对驱动模块和单片机进行供电。从而使得单片机工作模块和电机,舵机可以达到更好的工作状态。方案三:同样是在方案一的基础上进行的改进,对于舵机与电机进行分开控制,各自采用一个单片机。从而使得对于舵机与电机可以更精确的控制。综合上诉三个方案,方案一实则为原始方案,而另外两个方案则为其的两个不同的改进方式。经过对比和出于实际的考虑,选择方案二的设计方式。相比于方案一,方案二采用两个电源分别供电的方式可以有效的解决单片机与电机所需电压不同的问题,在保证电机与舵机的电压的同时也不会烧坏单片机。相比之下方案三使用两个单片机分别控制舵机与电机并非必须,可以对一个单片机烧录程序同时控制舵机与电机。而且单从接线与电源的角度上来说,两个单片机所出现的对电源的要求更大,就算不采用多电源供电也会增加一些不必要的并联接线。所以选择方案二作为小车车体的整体设计思路。2.2控制方案在控制方案的选定中,因为已定使用无线控制,所以方案的筛选重点表现在对于几种常见的无线控制方式的选择。方案一:采用红外遥控,其由发射模块与接收模块两部分所组成。其发射模块包括矩阵键盘,编码器,红外发射器等其他元件。而接受模块的主要有解码器,放大电路,调制解调器等。方案二:采用市场上最常见的无线电遥控,与红外遥控相同,其同样是由发射和接收两大模块组成。发射模块主要组成部分为编码器,振荡电路,按键。而接受模块主要为解码器放大电路等。方案三:采用较为热门的超声波遥控,顾名思义超声波控制是将超声波作为载体来传输信号,其用途广泛,比如在原设计题目中的防追尾预警系统就是采用超声波来测定前车与后车的距离。综合上诉三种方案,相比于方案二红外遥控的结构更为复杂,而且考虑到类似电视遥控对不准而换不了台的问题,对于遥控小车这样控制时小车通常出于运动的状态会出现对不准问题,在调试阶段对于是线路问题还是因为仅仅是没对准的问题的判定会有一定影响,而且对于红外线所学的并不多不易上手。与方案二相比方案三所采用的超声波控制,并不像无线电遥控模块那样在市场上十分普遍,虽然超声波的遥控系统会具有功耗更低,抗干扰能力更强的优势特点,但其不像已经普及的无线遥控那样价格低廉,并且无线电遥控的传输距离、抗干扰能力等,对于控制一个小车已是搓搓有余。并且考虑到原先作为防追尾系统的大课题,不排除会一起演示的可能,预警系统采用超声波定位的原理,所以也不排除会对其有影响的可能。所以方案二作为小车遥控部分的设计思路。2.3系统组成根据前面选定的方案,总体设计思路如图1所示,整个遥控小车系统有遥控电路与主控电路两大部分组成。由遥控部分中发射模块将信号指令发射出去,当接收模块接收到信号处理之后传递给主控电路中的51单片机,单片机则根据接收到的信号,通过程序将指令交给电机与舵机执行,从而达到预计的效果。另外体现出双电源控制,电源1专门为单片机供电保证其工作,而电源2为电机与舵机供电,使得其可以达到最佳的工作电压,同时也不会影响到单片机的工作。电源1电源251单片机发射模块舵机电机接收模块图1 总体设计思路3 单片机遥控小车的硬件介绍在此节当中将全面介绍遥控小车的硬件部分。本节按照车体的实际组成划分,将小车分成遥控部分以及车体部分,及在遥控部分中重点介绍发射模块,而在车体部分介绍与发射模块响应的接收模块,主控电路以及电机与舵机。同时也会简单介绍单片机,展示总电路图。其设计原理流程图如图2所示。图2 遥控小车设计流程图3.1单片机介绍单片机是将中央处理器,定时器,存储器以及输入输出接口与一身的微型计算机。相对于其他处理器而言,单片机体积小成本低是它最独特的有点,但是因为其体积小也带来了例如存储量小,功能低等不足,导致老旧的单片机已经无法适应当今技术发展所带来的需求。不可否认,由于单片机在近几年内的迅猛发展,新型单片机相对于老旧单片机已经在功能,速度,可靠性上有了很大的飞跃,以及成本的降低,当然也改变了老旧单片机不能反复烧写的弊端,使得单片机在工业领域,交通运输,能源供给,电气,甚至是军事领域都有很大的用武之地。单片机作为控制部分其拥有体积小成本低等优势,从而在很大程度上会带动产品甚至是一个领域向小型化,多功能化的方向发展。所以单片机在科技发展的今天依旧有很大的潜力有待发掘。由于52单片机是51单片机的升级改进后的产物,相对于51单片机其具有更好的性能,所以本次设计在元器件选用的时候,确定使用STC89C52RC作为核心控制芯片。与51单片机相比,52单片机额外多拥有一个定时器,并且52的RAM存取存储器比51多出128字节,其存储空间为256字节,同样52的ROM自读存储器为8KB为51的一倍。由于52单片机多了一个定时器,使得在串行通信中可设置更高的比特率,且外接晶振可以高达33MHz也高出51单片机。同样也应为52单片机已得到普及,且价格与51相当,所以将52单片机作为本次设计所使用的单片机。STC89C52RC作为STC公司生产的高性能低功耗,且具有8K在系统可编程Flash存储器的CMOS8位微控制器。虽然STC89C52说使用的内核为MCS-51,但是通过对其进行了改进使得89C52拥有了新的功能。89C52单片机引脚图如图3所示。(1)对8051单片机进行了增强,52单片机可以执行与51相同的指令代码。 (2)5V工作电压的单片机其所能保持运行的电压为3.3到5.5V之间。(3)其工作频率的范围为:040MHz,但在实际工作中可以达到最高48MHz。(4)8K字节在系统可编程Flash存储器。(5)512 字节存取存储器。(6)拥有32个通用I/O口。(7)不需要专门的编程器,可以直接下载程序。(8)具有EEPROM功能(9)拥有3 个定时器/计数器。分别为T0、T1、T2。(10)4个外部中断。(11)可实现多个通用异步串行口(UART)。图3 89C52引脚图3.2发射模块这里列出的发射模块就是小车的遥控部分。小车的遥控部分主要由矩阵键盘,P2262编码器以及一个315M射频发射电路,外加一个5V的电源组成。其作用就是为小车发出用以完成设计要求的指定。3.2.1 P2262编码器首先PT2262与PT2272是由CMOS工艺制造的功耗低而且价格又相当低廉的一种编码解码电路,2262是由地址码,数据码,同步码所组成的一个完整的码字所发出的编码信号。PT2262的引脚图如图4所示。如图所标注,2262的1到8号引脚与10到13号引脚为其地址管脚,地址编码可以设置为“0”,“1”,“空”三种状态。其中7,8,10,11,12,13号引脚则为2262芯片的数据输入端,当输入端一个值为“1”则意味着有编码发出,其内部进行下拉操作。而17与18号引脚为电源的正负端口。14号引脚名为TE,是用于进行对编码发射的启动端口,且当且只当在端口状态为低电平的时候才会有效。而15与16端口分别为震荡电阻的输入与输出端,而振荡频率则是由与15号引脚所接的电阻所决定的。2262的从输出端为17号引脚,而且在此端口没有任何信号输出的情况下,端口的会一直保持低电平的状态。2262编码器的电源电压应保持在-0.3到15V之间,因为使用的电源为9V的电源,为了将电源控制在5V,所以在在矩阵键盘与端口9之间接了四个10K欧姆的电阻。同时还应该注意的是2262与2272的地址端口必须对应否则2272将无法对2262的编码进行译码处理。而且2262在每次发射的时候至少发射4组字码所以矩阵键盘需要连接在2262的D0,D1,D2,D3,四个数据输入端上。同时又因为,2262的编码格式是通过宽度不同的脉冲宽度来表示的,当输入为“0”时2262编码器会通过发出两个窄的脉冲来表示,而当输入信号为“1”时则会利用两个宽度宽的脉冲表示,同样当输入为空时就会发出一宽一窄两个脉冲。也是正因如此,315M射频发射才能正确的根据脉冲宽度发出正确的正弦波。图4 2262编码器引脚图3.2.2 315M射频发射电路315M射频发射电路实质为振荡器,其主要作用就是当2262编码器的编码端口的状态为“1”的时候,震荡电路将其状态所替换成的两个宽脉冲化为正弦波然后发射出去由接收装置接收。对于这样将脉冲化为正弦波的调制方式称为OOK调制,也为110%调制深度的AM调制。选用其作为本次设计所使用的发射模块的原因为,其适用范围,灵敏度要求不高的场合,如灯控设备,电子蜡烛和儿童玩具等。无信号输入则无输出,有信号时,输出信号不反相,调试成本低且方便。且拥有相应的315M超再生接受模块。其电路图如图5所示。在此电路中,使用了两个电容C3,C6,两个电阻R1与R2,以及一个电感L。这里将对R1,R2,C3,C6,L的作用做简单的介绍。先从电容C6说起,由于选用的这个电容的容量很小,所以很明了的是这个电容在这里的作用并不是作为高频信号的交流旁路所存在,它的再电路中的是只作用为配合电阻R2使用,与电阻R2组合从而达到对高频信号的移相网络。同时由于如果要保证声表振荡器的稳定工作,那么就必须先保证电容C6的大小可以使得移相网络的相位保持平衡状态,否则声表将仅仅作为一个反向电阻而存在。在这一个组合当中电阻R2的另一个作用是为直流工作点提供稳定电流的反馈电阻。那么很显然,另一对起到组合作用的为电感与两个电容。他们所组成的选频网络的主要作用就是抑制高次谐波。与此同时也可以是输出的幅度提高,而剩下的最后一个电阻R1,它作为电路中的偏置电阻的同时,它也起到了对于电路之中的低频与高平之间的阻隔的作用。保证了系统的稳定运行图5 振荡器(315M射频发射模块)电路图3.2.3遥控电路在遥控电路中,除了用于发射信号的振荡器之外,最重要的就是一2262编码器为核心与矩阵键盘组成的遥控部分。先将矩阵键盘的按键输出端分别接到2262编码器的0至3号数据管教上,并在每个按键按键与数据端口的连接线线上分别添加一个二极管,用于反向隔离防止高电平的逆行,例如:按下“慢速”按钮之后,经过定义使D0成为高电频,如果不接二极管反向隔离,则与其相连的其他也成高电频,从而导致遥控部分从根本上失灵。其按键总共设置7个,分别为:慢速,中速,匀速,快速,停止,左转,右转。其控制方式为将所有按键所在的矩阵键盘的4个输出口分别其接于数据脚D3,D2,D1,D0四个管脚上经过对每一个按键进行定义,使得每一个按键按下后都会对4个数据端口产生不同的电平组合从而下达指令。其数据脚的电位组合所对应的按键效果如表1所示。按键的实质效果通过电平的不同而表现出来,经过导线将这些用电平方式描述的指令传输给编码器。经过编码器的编码,将不同的指令更具高低电平的位置转化成宽度不同的脉冲组合,之后再传送给315M射频发射模块。在振荡器之中通过110%调制深度的AM调制之后,根据不同宽度的脉冲位子转成不同位置的正弦波信号发送出去。至此遥控电路的所有任务皆以完成。在遥控电路上的红色发光二极管,则是对是否有信号发出进行提示,方便后期的调试和故障的排查。整个遥控电路的电路图如图6所示。表1 引脚电位及其相应状态32100001慢速0010中速0011左转0100快速0101右转1000停止1001中速匀速图6 遥控电路3.3接收与主控模块所谓的接收与主控模块为小车用于执行指令的主控电路,它的组成包括STC89C52RC单片机,ULN2003驱动芯片,稳压芯片,单片机电源开关,晶振,两个独立电源,315M超再生接收模块,以及一个舵机两个电机。3.3.1 P2272译码器PT2272译码器为2262编码器所配对的响应的信号处理芯片。其引脚图如图7所示。如2262一样,2272的1到8号与10到13号为地址管脚,其中1到8号宽口如上文所提及的需要与2262的1到8号端口相对应,当然一但不对应2272便无法对2262的编码进行解码处理。在2272的地址管脚中的7,8,10,11,12,13这5个端口在作为数据端口的时候,只有在地址端口与2262完全对应的时候,管脚才能输出与2262的数据端相对应的高低电平。14管脚作为2272的输入端,其作用为接收发射模块所发出的信号。而第17号管脚的作用为对解码是否有效做出确认,因为输出端在无信号输出的时候是保持低电平的状态,所以当其确认解码有效之后,其电平就会变成高电平状态,但是只瞬时状态,之后又会恢复低电平。图7 2272解码器由于2272的工作电压最小值为2V最大值为15V,且又因为与2272在同一电路上的52单片机的工作电流为5V,所以便将单片机,2272使用同一电源供电。因为真个小车需要通过单片机来控制,而2272又属于主控本分,其作用在于将接收到的指令传递给单片机进行进一步的处理,所以将2272的数据管脚接至单片机的出入端中,从而完成2272编码器的工作。3.3.2 315M超再生接收电路本次设计选用的接收模块为315M超再生接收模块,是315M射频发射模块的配套模块。它是根据超再生原理而研发的而一种无线接收的集成芯片。这次设计所使用的315M接收电路是一个集成电路,在这个元件的集成电路中包括了为了保证能准确接收信号,降低误差的前置低噪放大器;可以对所接受信号进行转换的超再生振荡器,熄灭信号发生器以及包络检波解调器等电路。芯片工作在315MHz/433MHz的ISM(Industrial, Scientific and Medical)频段,采用OOK(On Off Keying) 调制方式。芯片根据所采用的输入数据再直接输出数据的设计思路,从而将接收到的RF信号经过解调处理之后,输出CMOS电平数据信号。此芯片在理论上的工作电压应为4.5到5.5V之间,当5V时芯片将消耗的电流预计为4mA,显而易见其典型灵敏度优于-90dBm。最大数据速率为10Kbit/s,工作温度范围-40C至+85C,提供SOP8封装。由于此模块为直接购买的现成接收模块,对并不能完整阐述此模块内各个元器件的链接用处与意义所在二深感惭愧,所以在这里展示其提供的电路图,其电路图如图8所示。同时也因为此模块的工作电压与所使用的单片的工作电压相一致,所以此模块与单片机一道使用同一个的供电电源,以做到在使用少量的电源来保证更多电子元件的使用,这样不但可以减少成本也能降低设计的难度,减少不必要的多余导线的链接。315M超再生接收电路在整个电路之中的作用为将射频发射模块所发射的正弦波信号接收之后,转化成与正弦波相对应的不同宽度的脉冲,随后再将其发送给2272解码器进行解码。至此此模块所需要承担的工作已完成。图8 接收模块电路原理图3.3.3主控电路主控模块整体由单片机,2272译码器,315M超再生接受模块以及电机和舵机组成,其整体电路如图8所示。在这部分将对2272译码器,单片机以及其他部件进行简单的介绍。首先,2272作为与2262编码器所配对的译码器而言,与上文介绍的一样二者的1到8号脚必须相配对,且状态保持一致,才能发挥其作用。如前文所诉,接收模块接收到的正弦波信号转化为不同宽度的脉冲后,将其传至译码器,译码器则将所收到的信号状态转化成电位输出给单片机,经过单片机依据程序设定将命令分别传送给电机与舵机,从而确实实现对其控制的操作。将2272译码器的17号端口接一个发光二极管,由于此端口的状态为电平常低,只有在解码确认有效之后才会出现瞬态的高电平状态,于是在这里接一个二极管可以很直观的体现出有无接收到信号并且将其解码,也有助于后期的调试与故障排除。将接收模块的输出端接入2272的14号引脚,也就是其输入端。其10到13号地址管脚与2262相对应,但是其作用是将恢复成高低电平的信号向单片机输送的输出端口,并且接在单片机的P2.0到P2.3端口。而单片机就会通过不断的扫描P2.0-P2.3端口之间的信号来改变舵机与电机的占空比。首先,单片机的本质其实就是一个计存器,然而它的计存方式又分为三种,方式0:高8位低5位有效,其最大值为8192。方式1:全位有效,其最大值为65536。方式2:低8位有效,其最大值为256。本次设计中所使用的是方式1,其原因是操作较为简单,且相应的存储量大。在经过对程序的处理之后通过P1.1与P1.0端口分别将指令发送给控制电机与舵机的驱动芯片。从而完成其在整个设计中的最核心的控制作用。将接受到的简单的电平信号经过程序的执行,将信号转换成不同的脉冲发送给驱动芯片。在主控电路中驱动芯片采用的是ULN2003,其特性是高耐压,大电压负荷晶体管驱动列阵。舵机与电机的转向与速度变化皆用占空比来控制()。其中电机的占空比比值越高速度越快。同理舵机由于考虑速度的变化,其转弯角度也存在一定的角度更变,理论上比值越大角度越大,但是舵机的占空比需控制在20%到40%之间。接下来将大体的对稳压芯片,晶振和两个电源做笼统的介绍。首先稳压芯片虽然不是和电路的控制有关,但是其作用确实缺一不可的,作为稳压芯片,它的作用顾名思义就是起到稳压,当输入电压在5到35V之间的时候通过稳压芯片可以将电压保持在5V,从在持续供电的同时保护了单片的以防其被烧坏。而晶振简单的来说就是为单片机提供了一个工作的频率,控制了单片的处理速度与访问速度,也是不可缺少的元件。最后就是上文所提到的两个电源,首先因为考虑电机舵机与单片机,2272这些元器件所需要的工作电压并不一样,所以才使用了两个电源。作为单片机的供电电源,它需要一个持续的5V的供电环境,但是考虑到可以使用稳压芯片来保证5V电压的输入而且将电池串联成5V又过于麻烦所以直接使用了一个9V电池作为电源,且因为单片机的工作耗电不大,所以将其固定在了小车之上,并没有考虑它的拆卸更换。而另外一个单独供电的则向前文所提到的使用电池串联的方式将其达到舵机与电机的工作电压的要求,尽可能的保证其工作的性能不因为供电不足而受到影响,其电路虽然经过单片机所在的洞洞板,但直接接在电机和舵机与驱动芯片的输出端之间,从某个方面说使得驱动芯片成为电源的开关,直接控制着电机的运转。整个主控电路的运作流程为接收的正弦波信号通过接收模块转为脉冲信号,随后发送给2272译码器并通过译码将信号转变成电平的方式发送给单片机,单片机在不断扫描输入端的电平之后同过程序的执行将脉冲信号传送给驱动芯片,驱动芯片通过脉冲宽度调制的方式将脉冲转变为占空比,从而直接改变电机的速度与舵机的转向。至此小车主控电路的工作完成。其主控电路图如图9所示。图9 主控电路及315M超再生接收模块3.3.4电机与舵机本次设计使用了一个舵机与两个电机。在实际电路中,将两个工作电压在4V到10V之间的电机与舵机采用并联的方式连接,因此在对于电池电流的要求较高。所以使用了1.2V,800MA可充电电池,在满足工作电压的要求的同时也可以满足在并联电路中的电流的分流所导致的供电不足的影响。经过试验,为了保证舵机的正常转向,串联的6节电池,减为4节之后虽然电压降低了但是依旧在工作电压之内,且电流不变保证了舵机与电机的正常运转。而考虑到电池可能的替换,换成4节普通的1.5V电池之后虽然电压满足工作电压,但是电流明显下降,虽然能使电机工作,但是其性能却由于供电不足而下降。而本次电机使用两个的原因是车体宽度较宽,而电机本身较小所以对两个后轮分别驱动,又因为两个电机并联在电路之中,所以本身并不会对驱动造成影响。3.4总体电路图按照上述各个模块的原理进行绘制的电路原理图,并且是实际电路焊接的依据。总电路图如图10所示,其中包括独立电源,接收与主控模块,发射模块三个部分。图10 整体电路4. 软件设计与介绍在本节中将详细介绍遥控小车的软件部分,包括程序,以及编写工具keil。而程序则会分为对电机与舵机的控制程序的介绍和遥控部分的介绍。从而对程序进行分解分析。4.1 keil简介在本次对单片机进行编程使用的为C语言,并且通过Keil开发系统进行编程。在本次设计中为了完成编程所使用的Keil是由美国知名Keil Software公司推出的一款51系列兼容单片机的C语言软件开发系统。相对于其他的编程语言,C语言在功能上,结构性,拥有更大的优势。Keil不单单是一款编程软件它还通过一个集成环境为C语言的编写提供了将库管理,宏汇编,连接器C,编译器以及仿真调试器等集于一身的开发方案,通过uVision把这些部分组合在一起。在实际操作上Keil 适合任何Windows界面。而且通过Keil 的工具包整体结构就可以完成对单片机程序的编辑,编译,链接,调试,仿真等整个过程。所以在本次设计中使用keil作为编程工具认为是一个不错的选择。4.2电机与舵机的程序设计在本设计中,因为要实现三档变速和转向,所以对于电机和舵机的程序设计不能仅仅达到通电可运行的状态。变速和转向皆可通过改变占空比来控制,作为电机与舵机部分,它的程序主要就是对接收到的占空比的变化指令做出反应,可以理解为是个执行部分。而若使此程序达到上诉功能,则需要用到PWM脉冲宽度调制和中断系统。电机与舵机的程序流程图如图11所示:开始定时器初始化有无键值改变占空比NY图11 电机与舵机程序流程图4.2.1 PWM脉冲宽度调制与中断系统介绍PWM是Pulse Width Modulation的缩写,中文译名为脉冲宽度调制,可以理解为利用数电控制模电的典范,详细说来就是利用微处理器的数字输出来对模拟电路进行控制,而数字输出也就是使用了占空比不同的方波来模拟输出的一种方式,比如总所周知电脑只会输出0和1,而当想输出0.5的时候,通过脉冲宽度调制则可以用输入01010101的方式来模拟0.5。其模拟方式如图12所示:图12 PWM的模拟方式脉冲宽度调制的控制方式其实就是通过控制逆变电路开关器件的通断,从而在输出端得到可以用来代替正弦波或者其他需要的波形的幅值相同的脉冲。换句话说就是在波形输出后的半个周期之内产生一定量的脉冲,并使这些脉冲的等值电压转化为正弦波形。从而,只要按照需要对脉冲的宽度进行相应的调制就可以改变电路输出的电压,同理,也能如此改变输出的频率。因为在PWM的波形中输出的各个脉冲的幅值都是相同的,所以当我们按照需要的系数改变这些脉冲的宽度时,就能改变所输出的正弦波的幅值。所以在看似是不断转化的过程当中,变得只有信号的形式,而直流侧压的幅值的本质就是PWM所输出的脉冲电压。通常来说,PWM的生成方式都是通过单片机中包含的脉冲宽度调制控制器,也就是在使用时只需要对控制器进行设置即可,但是对于脉冲宽度调制来说它拥有一个有点,就是在对于没有包含控制器的单片机来说,可以使用定时器计数的方式来实现脉冲宽度调制的输出。当然,本设计中就是通过对定时器的设置来产生PWM波。脉冲宽度调制本身在各个行业当中都有着很多的应用也很有潜力,PWM因为它的信号都是以数字的形式,所以减少了不必要的数模转换,又进而体现出它的抗噪能力和更小空间体积,从某种程度上来说也能促进节能减排。但是在这次设计中,虽然使用到了脉冲宽度调制,但是只是仅仅使用了它的皮毛,并未真正的深度探究。除了脉冲宽度调制之外,在电机与舵机的程序中,另一个用到的相对重要的就是中断系统,下面将对中断系统做出简单的介绍。其实中断系统很好理解,就是系统在执行某一个程序的时候,突然接到了更加优先的指令,就会暂停原程序的执行,转而开始执行指令所对应的程序,等到该程序执行完成之后再返回开始执行原程序。在单片机的管脚中,低四位控制着外部中断,单片机的1号与3号管脚IE0/IE1为外部中断申请标志位,在判断单片机是否有收到外部中断请求的时候,通常会利用这两个管脚的值来判断,当其没有受到外部中秋的时候,其值为“0”,而当它收到外部的中断请求之后,它们的值则会变为“1”。单片机的0号与2号引脚IT0与IT1 则为外部中断请求的触发方式的选择位,当其值为0时表明在INT0/INT1端口的外部中断的方式为低电平有效,而当它们的值为1时,则表明负跳变有效。在CPU中对中断系统的所有中断以及任意一个中断原的开放或者屏蔽,是由中断允许寄存器IE所控制的。其中EA端口的电位对整个中断尤为重要,因为它是IE的中断总允许位,而当其值为“0”时则表示所有的中断将被禁止且不被处理,而其值为“1”时则是中断是被允许的也是会被处理的。ET1为定时器T1中断允许位,当值为0时禁止中断,当值为1是则允许中断。ET0则为定时器T2的中断允许位,它的值的设置与ET1相同。ES,EX1,EX0分别为串行口中断,外部中断1,外部中断2的允许位,指的设定都为0时禁止中断,1是允许中断。上段提到定时器中断的允许位,那么就要介绍下定时器的控制寄存器TCON,其地址为0X88。其中TF为定时器溢出标志,当接受了中断请求之后此端口就会存在溢出现象,而此时此端口的值将会自动被设置为“1”,当中断开始被执行时,此端口的赋值将会被硬件清零或者软件清零。TR则为定时器的运行控制位,值设置为1时开始计时,当其清零时则停止计时。外部中断的方法是有低电平触发和跳沿触发,中断的撤销方式则分为定时器中断请求的撤销和外部中断请求的撤销两大类。而在本次设计中,并没有采用外部中断的方式,而是使用定时器中断,当定时器的中断请求被响应之后,硬件会自动的扫面其中断请求标志位的电位变化,并且及时的将其清零,所以定时器中断的请求都不用人为手动清零与撤销。4.2.2电机与舵机具体控制程序介绍首先如上一节所介绍的一样舵机与电机是通过PWM来控制的。在对程序进行编译的时候,由于PWM波的是必须依靠定时器才能够产生的,所以在编程的时候,为了能让相应波形正确的产生,就得在编程的时候首先如下列程序一样对定时器进行初始化操作:void Time_config()TMOD = 0x01;/定时器0工作方式1TL0 = 0xCE;/设置定时初值 50usTH0 = 0xFF;/设置定时初值ET0 = 1;/使能定时器0TR0 = 1;/开启定时器0该程序的目的在于定时器的初始化,它通过TMOD语句定义了定时器0,及工作方式1。而在52单片机中定时器有0,1两种,方式有4种,本次设计采用的是方式1所代表的16位定时器,其最大定时65536us。随后设置初始值为TL0 = 0xCE;TH0 = 0xFF;初始值的设置为最大定时后接初始值,因为本次的初始值设定为是50us,所以初始值=65536-50,但是值得注意的一点是程序中是该值的16进制。然后按顺序使用TRO=1打开定时器0,再通过ETO=1使能定时器0,最后用EA=1打开总中断。但是值得注意的是在这里,还没有打开总中断。随后,上文已介绍了PWM周期和占空比是在定时器中断中控制的,则其对应的程序如下:void Time0_Int()interrupt 1/定时器中断程序 中断向量口为1首先设定了定时器在中断之后会被重新赋予初始值,并且也规定了其每产生两次中断的时间间隔为50us。而其中的打开中断,关闭中断可省略。TR0 = 0;/关闭定时器0,TL0 = 0xCE;/设置定时初值50usTH0 = 0xFF;/设置定时初值TR0 = 1;/开启定时器0通过在定时器中断中计数,也就是Time0,来计进入中断的次数。PWM的周期为50us*500 = 25ms,也就是程序中if(Time0 500)/500为PWM波周期,500*50us = 25msTime0 = 0;/达到501次则清零设置好了PWM的周期,即开始通过改变占空比的方式控制舵机与电机了。其中单片机输出舵机控制信号为Steer_PWM,对应的引脚程序前端已定义。Steer_Ctrl是我们调节占空比的,Steer_Ctrl的值越大,占空比越大,舵机输出占空比 = Steer_Ctrl/500;就是下面的程序;if(Time0 Steer_Ctrl)/舵机占空比=(Steer_Ctrl/Time0)*100% Steer_PWM = 1;elseSteer_PWM = 0;同理,电机的控制也是相同的,电机输出占空比 = Motor_Ctrl/500;if(Time0 29)/舵机保护。Steer_Ctrl = 29;else if(Steer_Ctrl 19)Steer_Ctrl = 19;舵机的变化在某个占空比范围內,在这个周期范围內,中心值就是24,占空比为24/500,Key_Count+;是按键按下时的延时,使舵机转角变化变慢,防止舵机直接打死。Key_Count = 0;/无按键按下,延时清零。最后就是对主程序进行编程了,这是其实只要做定时器的初始化,还有电机舵机的初始值,在循环中,只要做对管脚的循环扫描就可以了。void main()Time_config();/定时器初始化。EA = 1;/使能全局变量。Steer_Ctrl =24;/舵机的初始值,中间位置,(值变小往右偏,大左)。Motor_Ctrl = 0;/这里设定了电机的初始值,电机的起始状态应为禁止,所以转速初始值为0。while(1)KeyScan();/此为键盘扫描函数,其作用为扫描无线接收端的值,进而正确反映按键功能。4.4总程序介绍与总程序流程图遥控小车的总程序是将上诉遥控以及电机与舵机两部分的程序相整合,将遥控的控制程序已定时器中断的方式接入电机与舵机的程序当中,随后将两部分程序接入到对定时器初始化并设置舵机与电机的初始值的主程序当中,最后主程序最主要的工作就是对管脚的循环进行扫描。其程序流程图如图16所示,而主程序及其程序注解见附录。图16 系统程序流程图5. 结果展示与分析本节将记录在焊接和调试中的一些问题和感悟,并且展示遥控小车完成之后的各项功能,从而更好的描述出实物的效果。5.1电路焊接与调试在电路的调试和焊接过程中主要用到了,锡焊,通灵,99SE,Keil。首先利用通过99SE制作出来的电路原理图来完成实际的接线,在洞洞板上按照原理图放置电子元件之后先行对其进行焊接。完成之后对照原理图进行实际的接线并且同时焊接,焊接完成先再次对照原理图查看是否有接错的线路。检查完毕后使用通灵进行检查排除因为虚焊造成的线路断路问题。在焊接的过程中对锡焊的使用需要十分注意,我在本次焊接中不慎将以根导线弄断了,随后将导线之间的断裂部分用锡焊连接,后用塑料管进行保护。在线路焊接与检查完成之后,开始对小车进行性能测试,用遥控对小车发出指令,先确定小车是否可以顺利执行,最后再根据小车的实际执行情况使用keil编程工具修改程序参数比保证精确。经过反复的修改与调试对比之后确定:PWM的周
展开阅读全文