[毕业设计]89C52单片机直流电机控制器设计.doc

上传人:文库蛋蛋多 文档编号:4146839 上传时间:2023-04-07 格式:DOC 页数:22 大小:338KB
返回 下载 相关 举报
[毕业设计]89C52单片机直流电机控制器设计.doc_第1页
第1页 / 共22页
[毕业设计]89C52单片机直流电机控制器设计.doc_第2页
第2页 / 共22页
[毕业设计]89C52单片机直流电机控制器设计.doc_第3页
第3页 / 共22页
[毕业设计]89C52单片机直流电机控制器设计.doc_第4页
第4页 / 共22页
[毕业设计]89C52单片机直流电机控制器设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《[毕业设计]89C52单片机直流电机控制器设计.doc》由会员分享,可在线阅读,更多相关《[毕业设计]89C52单片机直流电机控制器设计.doc(22页珍藏版)》请在三一办公上搜索。

1、89C52单片机直流电机控制器毕业设计【摘要】本论文介绍了基于89C52单片机的小功率直流电机控制系统。该系统主要功能为:设定直流电机的转速和转向,通过光电开关对电机测速,将测得的转速值反馈给单片机,单片机经PI运算后输出PWM信号控制电机运转。实际测试结果表明该系统的转速误差范围小(20圈/分),调整时间短,转速设定方便快捷,显示直观清楚。本文还对此系统的性能指标进行了分析。【关键词】直流电机,PWM,PID 1.前言由于单片机具有体积小、集成度高、运算速度快、运行可靠、应用灵活、价格低廉以及面向控制等特点,因此在工业控制、数据采集、智能仪器仪表、智能化设备和各种家用电器等领域得到广泛的应用

2、,而且发展非常迅猛。随着单片机应用技术水平不断提高,目前单片机的应用领域已经遍及几乎所有的领域。现在国内外工业上对电机的调速基本已经不再使用模拟调速,而采用数字调速系统,而数字调速系统大部分都是用单片机来进行控制,数字调速系统具有控制精确度高,非常稳定,受环境影响小,效率高等优点,所以在国内外的使用越来越广泛。与交流电动机相比,直流电机结构复杂、成本高、运行维护困难,但是直流电机具有良好的调速性能、较大的启动转矩和过载能力强等许多优点,因此在许多行业仍大量应用。近年来,直流电动机的机构和控制方式都发生了很大的变化。随着计算机进入控制领域以及新型的电力电子功率元器件的不断出现,采用全控型的开关功

3、率元件进行脉宽调制(Pulse Width Modulation,简称PWM)已成为直流电机新的调速方式。这种调速方法具有开关频率高、低速运行稳定、动态性能良好、效率高等优点,更重要的是这种控速方式很容易在单片机控制系统中实现,因此具有很好的发展前景1。1.1 有关技术简介1.1.1 PWM控制1PWM(Pulse Width Modulation)脉冲宽度调制,简称脉宽调制,是一种最初用语无线电通信的信号调制技术,后来在控制领域中(比如电机调速)也得到了很好的应用,于是形成了独特的PWM控制技术。PWM控制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通

4、信到功率控制与变换的许多领域中。 简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何适合,满幅值的直流供电要么完全有,要么完全无。电压或电流源是以一种通或断的重复脉冲序列被加到模拟负载上去的,通的时候即是直流供电被加到负载上去,断的时候即是供电被断开。只要带宽足够,任何模拟值都可以使用PWM进行编码。 采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控

5、制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。PWM控制的基本原理很早就已经提出,但是受电力电子器件发展水平的制约,在20世纪80年代以前一直未能实现。知道进入20世纪80年代,随着全控型电力电子器件的出现及其迅速发展,PWM控制技术才真正得到应用。随着电力电子技术、微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论、非线性系统控制思想的应用,PWM控制技术获得了空前的发展。到目前为止,已出现了多种PWM控制技术。 一般情况下,调节脉宽调制信号的脉宽有两种方法

6、,一种方法是采用模拟电路中的调制方法,另一种方法是使用脉冲计数法。对于一般电机控制,采用第一种方法在控制电压变化时滤波的实现存在较大的困难,这主要是因为滤波频率较低、滤波精度要求高和滤波电路的参数不易调整。因此,本设计采用由单片机控制实现的脉冲计数法。1.1.2 PID调节1 当今的自动控制技术都是基于反馈的概念。反馈理论的要素包括三个部分:测量、比较和执行。测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。这个理论和应用自动控制的关键是,做出正确的测量和比较后,如何才能更好地纠正系统。 PID(比例-积分-微分)控制器作为最早实用化的控制器已有50多年历史,现在仍然是应用最广

7、泛的工业控制器。PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。它由于用途广泛、使用灵活,已有系列化产品,使用中只需设定三个参数(Kp, Ki和Kd)即可。在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。PID是周期性地控制操作。假定控制器的执行频率足够高,以使系统得到真确控制。误差信号是通过将被控参数的期望设定值减去该参数的实际测量值来获得的。误差的符号表明控制输入所需的变化方向。(一) P项(比例) 由误差信号乘以一个P增益因子形成,使PI

8、D控制响应为误差幅值的函数。当误差信号增大时,控制器的P项将变大以提供更大的校正量。 (二) I项(积分) 对全部误差信号进行连续积分。因此,小的静态误差随时间累计为一个较大的误差值。累计误差信号乘以一个I增益因子即成为PID控制器的I输出项。 (三) D项(微分)D项输入是计算前次误差值与当前误差值的差来获得的。该误差乘以一个D项增益因子即成为D输出项。系统误差变化的越快,控制器的D项将产生更大的控制输出。PID控制具有以下优点:应用范围广。虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时间变化的系统,这样PID就可控制了。参数较易整定。也就是,PID参数Kp

9、,Ki和Kd可以根据过程的动态特性及时整定。如果过程的动态特性变化,例如可能由负载的变化引起系统动态特性变化,PID参数就可以重新整定。PID调节中参数的选择方法:在数字PID控制中,如果采样周期选得比较小,则PID控制参数Kp、Ki和K D可按模拟PID控制器中的方法来选择。在对电动机控制中,首先要求系统是稳定的,在给定值变化时,被控量应能迅速、平稳地跟踪,超调量要小。在各种干扰下,被控量应能保持在给定值附近。另外,控制变量不宜过大,以避免系统过载。显然,上述要求要都满足是很困难的,因此,必须根据具体的实际情况,抓主要方面,兼顾其他方面。在选择控制器参数前,应首先确定控制器结构。对于电动机控

10、制系统,一般常用PI或PID控制器接口,以保证被控系统的稳定,并尽可能清楚静态误差。PID参数的选择有两种可用方法:理论设计法和试验确定发。理论设计法确定PID控制参数的前提,是要有被控对象准确的数学模型,着在电动机控制中往往很难做到。因此,用下列试验确定法来选择PID控制参数,就成为目前经常采用的,并且是行之有效的方法。凑试法凑试法是通过模拟或闭环运行系统,来观察系统的响应曲线,然后根据各控制参数对系统响应的大致影响,来改变参数,反复凑试,直到认为得到满意的响应为止。凑试前,要先了解PID控制器参数值对系统的响应有哪些影响。增大比例系数Kp ,可以加快系统的响应速度,有利于减少静态误差;但是

11、,过大的比例系数会使系统有较大的超调,因此产生振荡,破坏系统的稳定性。增大积分常数Ki ,会有利于减少超调,减少振荡,使系统更稳定;但系统静态误差的消除将随之减慢。增大微分常数K D ,也可以加快系统的响应,使超调量减少,稳定性增加;但系统的抗干扰能力降低。在考虑了以上参数对控制过程的影响后,凑试时,可按先比例后积分再微分的顺序反复调试参数。具体步骤如下:首先只调节比例部分,将比例系数由小变大,并观察系统所对应的响应,知道得到响应快,超调量小的响应曲线为止。如果这时系统的静态误差已在允许范围内,并且达到1/4衰减度的响应曲线(最大超衰减到1/4时,已进入允许的静态误差范围),那么只需用比例环节

12、即可,比例系数可由此确定。如果在比例调节的基础上,系统的静态误差还达不到设计要求,则必须加入积分环节。积分常数在凑试时,先给一个较大值,并将上一步调整时获得的比例系数略微减少(例如取原值的80%),然后逐渐减少积分常数进行凑试,并根据所获得的响应曲线进一步调试比例系数值和积分常数值,直到消除静态误差,并且保持良好的动态性能为止。如果使用比例积分环节虽然消除了静态误差,但系统的动态性能仍不能令人满意,这时可加入微分环节。在凑试时,可先给一个很小的微分常数,以后逐渐增大,同时响应地改变比例系数和积分常数,知道获得满意的效果为止。1.2 直流电机的特性及调速方式绝大多数的电动机都须作连续的旋转运动的

13、电磁力形成一种方向不变的转矩,才能构成电动机。N、S为对固定的磁极(一般是电磁铁,也可以是永久磁铁),两磁极 间装着一个可以转动的铁质圆柱体,圆柱体的表面上固定着一个线圈。当线圈中通入直流电流时,线圈边上受到电磁力,根据左手定则确定力的方向,这一对电磁力形成了作用于电枢的一个电磁转矩,转矩的方向是逆时针方向。若电枢转动,线圈两边的位置互换,而线圈中通过的还是直流电流,则所产生的电磁转矩的方向却变为顺时针方向了,因此电枢受到一种方向交变的电磁转矩。这种交变的电磁转矩只能使电枢来回摇摆,而不能使电枢连续转动。显然,要使电枢受到一个方向不变的电磁转矩,关键在于,当线圈边在不同极性的磁极下,如何将流过

14、线圈中的电流方向及时地加以变换,即进行所谓“换向”。为此必须增添一个叫做换向器的装置,换向器由互相绝缘的铜质换向片构成,装在轴上,也和电枢绝缘,且和电枢一起旋转。换向器又与两个固定不动的由石墨制成的电刷A、B相接触。装了这种换向器以后,若将直流电压加于电刷端,直流电流经电刷流过电枢上的线圈,则产生电磁转矩,电枢在电磁转矩的作用下就旋转起来。电枢一经转动,由于换向器配合电刷对电流的换向作用,直流电流交替地由线圈边ab和cd流入,使线圈边只要处于N极下,其中通过电流的方向总是由电刷A流入的方向,而在S极下时,总是从电刷B流出的方向。这就保证了每个极下线圈边中的电流始终是一个方向。这样的结构,就可使

15、电动机能连续地旋转。这就是直流电动机的工作原理直流电机的调速方法有:(一)电枢串电阻调速:电枢回路串接电阻后,电动机的机械特性的斜率随电阻的改变而改变,在恒负载下使转速发生变化。该调速方式的优点是控制装置很简单;缺点是转速受负载的影响较大,在空载时几乎没有调速作用,而在重载低速运行时特性显得太软,而且功耗很大。(二)改变电枢电压调速:当电动机采用这种方式,其机械特性随电枢电压的改变而产生平移,所以它的调速范围较广。电枢电压的调节常用晶闸管整流装置实现,但低速运行时功率因数变低,而且在交流侧出现较多的谐波成分,对电网不利。(三)PWM 直流调整系统:其原理是将直流控制信号与三角波经调制电路产生一

16、系列脉宽不等的脉冲信号,做功率放大后驱动大功率器件。控制调制方波的占空比,便可以改变输出平均电压。将PWM输出电压接至直流电动机的电枢两端,便可组成性能优良的调速系统。该调速系统的优点是调速范围广、效率高、响应速度快、电流脉动小及对电网污染小;但因系统较复杂,造价也相应地提高。(四)双闭环直流调速系统:该系统的反馈量电流和转速信号,分别送入电流调节器和速度调节器。调节器按P-I(比例积分)方式实现调节。由电流调节器组成的闭环称为电流环。由速度调节器组成的闭环称为转速环,电流环用于控制电流,转速环用于控制转速。(五)数字式直流调速系统:目前较先进的直流调速系统均采用数字控制,从积分调节器到触发装

17、置,以及其他控制功能均由微处理器来实现。它具有调速性能高、工作可靠和体积小等特点。数控装置设有键盘和LED 显示器,可方便地利用键盘进行各项运行参数的设定。此外,它还具备自诊断及完善的保护功能。改变励磁的恒功率调速:从直流电动机的机械特性的公式可看出,当磁通减小电动机的转速也随之提高。 由直流电机的电压平衡方程式:U = e+IR其中I为电机线圈电流,R为线圈电阻,e为电机的反电势, e = C*,式中,C为电机结构常数,为一常量;为线圈磁通;为电机转动角速度。于是将e代入电压平衡方程式中,可得:U = C*+ IR经过移项之后就可得出角速度和电压的关系式: = (U-IR)/ C*从上式可以

18、看出,改变外接电压U,电机回路电阻R, 磁通,可改变电机转速。本实验所用直流电机为永磁式, 磁通不可改变,而改变电机回路电阻R来调速的方式,已不多见,所以采用改变外接电压U的调速方式,1.3 系统设计功能要求 本设计是要利用89C52单片机控制PWM调速电路实现小功率直流电机的转速调节。而本系统必须符合以下几点要求:(1) 在(10005500)转/分 内对直流电机进行任意调速,最小调速级差为1转/分。(2) 电机能在所设速度下稳定运转,运转速度与设定速度之差小于20转/分。(3) 电机启动和加减80%额定负载时,其转速能迅速回到设定值,转速超调5%内。(4) 电机能进行正反转控制。 下面,本

19、文将从硬件和软件两方面按系统功能要求进行设计。2. 硬件电路设计 本设计在硬件电路上共分为6个部分,单片机部分、按键输入、PWM斩波电路、测速电路、转向调节电路以及模拟负载。下面本文将详细介绍每一部分的功能原理以及元器件的选取。2.1 单片机部分及其接口电路图1 单片机部分原理图本设计采用的是STC的89C52单片机,选用STC的单片机是因为它是宽电压供电,工作电压范围为5.5V-3.4V,比起一般51系列单片机的5.5V-4.5V更能有效的避免电源抖动所带来的问题。晶振选用石英晶振,频率为20MHz,比起传统的12MHz能有更快的处理速度。 在第9脚-RST,复位脚外,加了一个复位按键和复位

20、电路,复位原理为: 第一次上电时,+5V通过给电容充电,于是此时电容相当于短路,+5V直接加到RST脚上,单片机自动复位。过了极短的时间,电容充电完毕,此时电容则相当于开路,于是RST脚被电阻R113拉为低,单片机开始正常工作。 当RESET键按下时,+5V通过按键加到RST脚上,单片机复位,RESET键弹起之后,RST脚重新被R113拉为低,单片机开始正常工作。单片机供电方面,采用的是12V直流通过7805三端稳压器稳压到5V,给单片机和显示部分供电。2.2 按键输入电路原理图如下:图2 按键部分原理图 在本设计中,按键输入比较简单,就是在按键信号输入I/O口与地线间串接一按键。在按键没有按

21、下的情况下,I/O口悬空,所以为高(由于STC单片机的I/O口是有内部上拉电路的,所以当其悬空时,内部将其上拉为高);当按键按下后,地线的把I/O口的电平拉低,单片机便可识别有键按下。2.4 PWM驱动电路图4 PWM驱动电路原理图 首先简单介绍一下PWM的工作原理: 如图所示,R21为P1.1口的上拉电阻,R20为限流电阻。当P1.1口为低时,8050的基极电平被拉低,此时8050截止,所以9012的基极为高,9012截止,电机两端没有电压。 当P1.1口为高时,8050基极电压也为高,于是8050导通, 8050的集电极电压为低,此时9012的基极也为低,9012导通,+12V加到电机两端

22、,电机开始转动。 所以,当P1.1口为高时,电机两端电压也为高;P1.1口为低时,电机两端电压也为低。于是当P1.1口产生PWM信号输出时,电机两端会产生同样的PWM波形,从而达到调节电机转速的目的。关于上拉电阻的选取,上拉电阻的选取取决于两方面,一方面是能否保护单片机I/O口不过流,第二方面就是能否提供给负责所需大小的电流。首先我们分析保护I/O口方面,P1P3口能承受的灌电流(输入电流)最大能达到6mA,所以上拉电阻的阻值必须大于5V/6mA=0.8K,而我们选用的是10K电阻,远远大于0.8K,所以能有效的保护单片机I/O口;再来看看10K的上拉电阻能否提供所需要的电流呢?假设电机工作电

23、流为100mA(事实上远小于), 9012的放大倍数按60倍计算的话,那么9012的基极,也就是8050的集电极最少得提供1.6mA的电流才能使9012达到饱和。如果按8050能放大100倍的话,也就是说8050的基极至少得提供16A的电流才能使8050饱和,事实上,10K的上拉电阻,加上I/O口的限流电阻,能提供(5-0.7)V/13.3K=350A,远大于所需要的16A,所以完全能提供足够的电流。再看看串接在9012的基极和8050的集电极间的电阻R19。它的作用是限流,假如不加这个电阻,那么当单片机口为高时,8050,9012均饱和,此时可以认为12V直接对地短路(虽然有9012的be结

24、和8050的ce结,它们会产生零点几伏的压降,但是它们没有限流的作用,还是可以认为电源直接对地短路),所以加上此电阻很有必要。图中D3二极管的作用:在这个PWM电路中,此二极管名为续流二极管,他的作用就是续流和消除反电势。电机内部的转子是由线圈绕成的,所以可以看成是一个电感元件,在突然断电时,反电势很大,将近12V的两倍以上,如果不加续流二极管的话,9012很可能被击穿,由于负的反电压的产生,使电机两端的直流平均电压接进0V,电极不会转动,只会不停地颤动并发出呜呜的声音,其本身也会有危险。而加了续流二极管后,反向电势通过二极管和电机重新形成回路,消除了反电势,且能使电机上电流不中断,维持正常运

25、转。2.5 测速电路先介绍光电开关,如图5所示,光电开关分为2个部分,一个部分用来发送,另一部分负责接收。发送部分V2是一个发光二极管,而接收部分V1则是一个光敏NPN三极管。当光路通畅时,V1的基极能接收到V2发出的光,于是V1的be上就会有电流产生,V1导通,集电极输出为低;当光路被阻隔时,V1截止,所以集电极输出为高。 从图5可以看出,为配和软件编成需要,本系统加了一个起反向作用三极管,也就是说,V1集电极输出为高时,V3导通,于是V3的集电极输出为低;反之,V1集电极输出为低时,V3集电极的输出就为高。图5 测速电路原理图 这里要注意的就是几个电阻阻值的选取: R25:一般发光二极管的

26、正向压降2V,驱动电流5mA左右,而电流最大不能超过20mA,所以选取510的电阻作为其限流电阻,一来保证不会过流烧坏发光管,二来也不会因电流太小而使光电开关不能正常工作。 R22:此电阻串接在电源与三极管V1的集电极,它的选取直接影响到三极管是否能达到饱和状态,我们知道,因光照所产生的光电电流很小,大概只有几微安的样子,所以集电极电流不能太大,否则管子不能达到饱和。假设发光二极管正常工作需要的电流为5A,那么三极管的放大倍数为100倍的话,集电极电流就不能超过0.5mA,所以R22的大小选取为10K,此时若基极有光照时,集电极能正常拉低到地。 R24:为V3的集电极电阻,同时也为单片机INT

27、1口的上拉电阻。作用为保证V3和单片机I/O口不会过流,所以选用10K就能达到要求。2.6 转向调节电路图6 转向调节电路原理图本设计是采用硬件转向控制,因为此为小功率电动机,且没有接负载,所以用硬件强制转向也不会对硬件造成损坏。 图6中,MOTOR两端的J1-1和J1-2分别为继电器的两组开关,J2则为继电器的线包开关,当拨动开关J0打向左边,J0悬空,则三极管9014基极为高,三极管导通,J2吸合,J1-1CB与J1-2CB接通,电机正转;当拨动开关J0打向右边时,J0接地,于是9014基极为低,三极管截止,J2松开,J1-1CK与J1-2CK接通,电机反转。 而指示方面,是将测速同轴电动

28、机当成发电机使用,如图所示接一红一绿两个发光二极管,正转时,绿灯亮;反转时,红灯亮。并且亮度随着转速的增加而增加,非常直观。 3.软件设计3.1 编程环境 由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难。为了提高编制单片机应用程序的效率,改善程序的可读性可移植性,采用高级语言无疑是一种更好的选择。C语言是一种通用的计算机程序设计语言,既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,表达和运算能力也较强,许多以往只能采用汇编语言来解决的问题现在都可以改用C语言解决。德国Keil Software公司多年来致力于单片机C语言编

29、译器的研究。该公司开发的Keil C51是一种专为8051单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储空间极小,完全可以与汇编语言相比美4。所以,本设计采用的是C语言编程,利用KEIL vision2进行编译和仿真,使用STC专用下载板将HEX文件烧录到89C52单片机中。3.2 系统基本参数及流程 本设计采用的是20M晶振,12分频,所以每个指令周期为T=0.6S。中断方面,本程序一共用了3个中断源:定时器0,定时器2以及外部中断1,它们的优先级分别为:定时器0、外部中断1为高优先级,定时器2为低优先级。另外还用了计数器1,用做计算脉冲宽度,与外

30、部中断1一起构成测速系统。3.3 按键程序 按键的程序方面,主要是一个消抖动程序和,消抖动程序是非常有必要的,因为在平时没有按下键的时候,有可能会从电源或者其他地方突然产生一个尖峰电压,打在单片机检测按键的I/O口上,令单片机误以为有键按下了;或者是当人按下按键时候,如果手抖动,就会引起按键的接触不良,从而可能在很短时间内通-断多次,而导致单片机的处理错误。消抖动程序就是针对这方面来设计的,具体是:当单片机检测到某一个按键按下了,就延时100ms,在这100ms里不停的检测,如果中间检测到按键弹起了,则判为干扰,不进行处理,如果100ms之后还是按下的话,那么就可以确定此键确实是被按下了,然后

31、就进行相应的处理。一般人按一下按键都有个200ms,所以延时100ms已经足够了。图7 系统流程图其对应程序如下:void clear_shake()if(nn =0)n = 0;if(nn1 = 0)nn = 1;if(shake = 0&n = 100)/shake就是被按下的键shake_1 = 1;nn1 = 1;nn = 0;3.5 PWM程序因为电机调速是本次设计的最主要任务之一,所以PWM程序也是程序中最重要的一环。PWM的调速原理是通过调节一个斩波周期中的脉冲占空比来调节电机功率而达到调速目的。本设计中,PWM的斩波周期为1ms,那也就是说斩波频率为1KHz,在理论上能达到1线

32、性可调,也就是能以0.1%的调节精度来调节PWM占空比。PWM调速子程序是放在定时器0中断中进行的,中断设置如下:/-T0-T0用作斩波ET0 = 1;/中断允许位time0_set = 300;time0_tmp = 65536-(time0_set)*fosc/12;/TH0 = (time0_tmp/256); TL0 = (time0_tmp%256); TF0 = 0;/CLR TF0TR0 = 1;/SETB TR0PT0 = 1; /高优先级可以看出,T0的中断级别为高,因为PWM的脉冲宽度就是在中断程序里设定,如果此时被其他更高级别的中断打断,那么脉冲宽度将不准确,从而导致控制

33、转速失败。所以将其设为高的话,就不存在被打断的问题了。 下面是PWM的中断子程序:void time0_int(void) interrupt 1TH0= (time0_tmp/256);TL0= (time0_tmp%256);if(cut = 1)time0_tmp = 65536-time0_set*20/12;cut = 0;elsetime0_tmp = 65536-(time0 - time0_set)*20/12;cut = 1;程序中,cut为PWM信号输出口,也就是P1.1口,每进入一次中断,cut口就反向一次,而每次中断计时都由time0_set确定,time0_set也就

34、是脉冲宽度,由外部赋给,范围从150970,其值每增加1,电机转速就增加6圈/分,所以可以算出精度为1,而实际上,我们选用的误差允许范围为20圈/分,精度为3。但比起一般单片机自带的PWM输出口的1%线性可调精度高多了。图8 PWM波形示意图 图中为PWM输出波形图,A为占空比为95%时的波形,B为50%时的,C为5%时的波形。从图中可以得出,当PWM输出A的波形时,电机将以全速运转;而输出B时,电机则以50%的速度运转;而当输出C时,电机转动速度将非常慢,并且伴随着很大的噪音和震动,可以感觉出电机内部的运转不连续。3.6 测速系统程序 测速是本设计的另外一个重点。本设计中测速系统的工作原理为

35、:利用电机轴上带的圆盘的缺口,引起光电开关产生高电平脉冲,单片机就采集此脉冲的宽度,加以计算,得出其实时速度。具体实现如下: 平时缺口不在光电开关处时,光电开关处于断开状态,输入到单片机口电平为低,当圆盘缺口的其中一边刚运转到令光电开关接通时,单片机INT1口电平跳变为高,此时计数器1以内部时钟信号为周期开始计数,然后当圆盘转到缺口的另外一边刚好令光电开关断开时,单片机INT1口产生一个下降沿信号,计数停止,并进入INT1中断子程序,在中断里把脉冲宽度转存出来并经过运算,就可得出实时速度值。 所以,测速程序得用到一个外部中断INT1,以及一个计数器1。 先看看和它们相关的标志位设置:/-外部中

36、断1-用做测速IT1 = 1; /为跳沿触发方式,引脚INT1上的电平从高到低的负跳变有效。 IE1 = 0; /中断请求标志EX1 = 0; /外部中断1允许位PX1 = 0; /为高优先级 /-T1-T1用做计数TH1 = 0;TL1 = 0;TF1 = 0;/中断请求位TR1 = 0;/计数器1关闭ET1 = 0; /禁止T1溢出中断/-IE = 0xaa;/TMOD = 0x91;/-TOMD=10010001,前四位用于控制和确定定时器/计数器1的功能和工作模式:第8位为门控位GATE,当GATE=1时,定时器/计数器1的启动要由外部中断引脚和TR1位共同控制。只有当中断引脚INT1

37、为高时,且TR1置1才能计数器工作。第4和第5位为01,则说明计数器1工作在方式1:全16位计数器,总共能计数65536个时钟脉冲,也就是最多能计时39ms。程序流程图如下:图9 测速系统流程图外部中断1中断服务子程序如下:void out1_int(void) interrupt 2 IE1 = 0;EX1 = 0;TR1 = 0;TH1_1 = TH1;TL1_1 = TL1;TH1 = 0;TL1 = 0;m = 1;函数中,TH1_1,TL1_1就是存放计数器1的计数值的缓冲区,当它们从TH1和TL1中取得数值之后,TH1和TL1随即被清零,为下一次计数做好准备。获取脉冲宽度值子函数如

38、下:void getwidth_1()TH1 = 0;TL1 = 0;n = 0;n1 = n;while(INT1=1&(n-n1)30)/n为每1MS +2 if(INT1=0)TR1 = 1;/计数器1打开elsegoto out;/IE1 = 0;/中断请求标志EX1 = 1;/外部中断1启动n = 0;n1 = n;while(m=0&(n-n1)30)if(m=0)/M=1,则已经进入out_int1中断,若等于0,则说明30MS延时已过TH1_1 = 0;TL1_1 = 0;out: IE1 = 0;/中断请求标志m = 0;EX1 = 0;/外部中断允许位TR1 = 0;wid

39、th_1 = (TH1_1*256+TL1_1);/timepr=脉冲宽度 /S此外,为了稳定测得的转速值,在程序中加了一个取平均值的函数:void getwidth()int gw,gw1;width = 0;gw1 = 0;for(gw=0;gw6;gw+)GG:getwidth_1();if(width_1 != 0)widthbufgw = width_1;elsegoto GG; width = (widthbuf0 + widthbuf1 + widthbuf2 + widthbuf3 + widthbuf4 + widthbuf5)/6;这段函数的意思就是,将测得的连续6个不为零

40、的脉冲宽度取平均值,以消除偶然的不稳定因素,使转速显示更加稳定。3.7 PID调节程序PID调节计算公式如下5: YK = KP*EK + KI*EK2YK:要输出的数据增量EK:设定值和实测值的差值EK1:上次的EK值EK2:EK-EK1的差值待添加的隐藏文字内容3KP:比例系数(本程序中设KP=1.6)KI:积分系数(本程序中设KI=1.5)由于在本电机调速系统中,仅使用PI调节便足以达到理想的精度和超调量,所以就毋须再加上微分项。关于参数的选择,在第一章里已经有了详细的说明,就是按照先比例,再积分的顺序进行凑试。而本程序中的KP和KI值,也是经过反复的凑试之后所得到的结果: 凑试的经过就

41、是先将KI项设成0,然后将KP设为1,如果系统稳定,就按每次+0.1往上加,结果表明,在KP=1.7的时候,调速系统失控,电机一直保持全速运转,所以为了使调节速度达到最大,就将KP设为1.6,但是此时系统非常不稳定,速度值一直在1000转上下跳动,于是将KI设成2,系统马上稳定下来,再按每次-0.1的差值往下减,经过多次尝试,得出KI=1.5为最佳积分值。 此时,系统处于最佳运行状态,实验中表现为:电机原来速度为2000,当设置为4500转时,可以在2秒之内迅速上升并稳定于450020,而超调量也仅为+300转/分,出现在第一次上升的时候,下来之后便趋于稳定了。PID程序如下:void PI(

42、)EK1 = EK;EK = speed_set - speed;EK2 = EK - EK1;if(PIn = 0)EK2 = 1000;PIn+;YK = KP*EK + KI*EK2;4.参数测试及性能分析4.1系统参数测试轮盘直径28mm, 缺口宽度2mm,缺口所在直径为25mm,缺口所在周长为78.54mm,和缺口宽度比例为39.3:1,那么轮盘转一圈所需时间t_pr=width*39.3,本系统用于测速的方法为测量缺口所引起的脉冲宽度值,由于使用计数器,所以必然存在一个溢出的问题,单片机的晶振频率为20MHz,所以一个机器周期为0.6S,一个16位计数器最多能计数216个机器周期,

43、所以最长能计数216 *0.6s的时间,也就是39.3ms,也就是说,当缺口的一边触发了计数器,但是在39.3ms的时间内还不能转到另外一边使计数器停止,那么计数器就将溢出,单片机就自动识别速度为0,那么此时的速度就将无法识别。也就是说,根据上面轮盘转一圈所需时间公式:t_pr=width*39.3,这时候的t_prmax=39.3*39.3=1.54s,所以可知其速度为38转/分钟。也就是说,单片机所能识别的最低速度为38转/分。但这只是理论计算速度,实际上单片机能测的最低速度要比这稍微高点,大约为100转/分。 我们再看看PWM的斩波控制精度:PWM频率为1kHz,也就是1ms为一个周期,

44、而每周期里又被分成1000分,占空比可以以每1作为调节单位。电机最大速度为6000转/分,此时对应PWM占空比为1000,也就是说,占空比每增加1,电机速度将增加6转/分,也就是说电机的调速精度可达1。 当转速稳定的情况,在PI调节的作用下,真实转速和设定转速的差值控制在20rad/min,也就是说误差范围在3以内。下面是速度变化时的超调量的表格和其对应的超调曲线图:表1:速度变化时的峰值序号初始转速设定转速峰值1峰值2总用时/s1150030003100(+100)2970(-30)22200040004120(+120)3980(-20)2.23150050005100(+100)4960

45、(-40)2.34400020001862(-138)2030(+30)2.45500015001315(-185)1523(+23)2.76500030002300(-700)3100(+100)2.9 图12 速度变化曲线上图中16序号所对应的虚线代表设定转速,而曲线则是转速变化曲线,所以图13表示的就是速度从初始速度变化到设定速度的过程,并直观的表示出了变化过程中的速度的变化速率和超调量。控制超调量,是由程序中的PI()函数控制的,其中P是控制变化速度,而I就是影响系统稳定性。从表中和图中我们都能看出,速度处于上升时候的稳定性明显比下降时候的要好,尤其是速度从5000下降到3000的时候,超调量竟然达到700。分析原因的话,觉得可能是由于惯性作用所导致的这种情况:由于电机的转子和外接轮盘具有很大的惯性,特别是在速度很快的时候,而下降的时候,控制器是让其速度自由滑落,所以当其速度到达设定值的时候,还具有很大惯性,所以就会引起比较大的超调量。5. 总结在此毕业设计中,笔者成功地使用89C52单片机输出PWM信号实现对小功率直流电机进行调速.系统由按键设定转速,通过光电开关测速,将测得的速度反馈给单片机经PI运算后输出PWM信号驱动斩波调压电路,然后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号