【《基于AT89C52单片机的直流调速系统设计》19000字(论文)】_第1页
【《基于AT89C52单片机的直流调速系统设计》19000字(论文)】_第2页
【《基于AT89C52单片机的直流调速系统设计》19000字(论文)】_第3页
【《基于AT89C52单片机的直流调速系统设计》19000字(论文)】_第4页
【《基于AT89C52单片机的直流调速系统设计》19000字(论文)】_第5页
已阅读5页,还剩49页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录Protues仿真模型的搭建Protues仿真是单片机开发中不可或缺的关键一步;通过仿真验证调速方案的可行性,可以为硬件调速系统的设计提供参考并能有效缩短开发周期。根据所需要实现的功能在Protues中搭建仿真电路;电路采用AT89C52芯片作为主控芯片。如图2-1所示,再需确认直流电机驱动方案,设计按键模块、数码管显示模块、和电机模块等即可完成仿真电路的设计。图2-1Protues仿真电路设计框图2.1直流电机驱动方案直流电机的驱动不同于数字信号电路,直流电机的驱动器需要能够提供大电流,且应有使能端,可以接受控制直流电动机启动和停止的逻辑信号。根据上述要求,电动机的驱动方案应该选择H桥式驱动电路。图2-2中所示的为一个典型的H桥直流电机控制电路。H型桥型的电动机驱动电路由四个开关管构成。要使电机工作,就得把一对对角线上的开关管接通。不同的开关管对导通时,电流可能会经过直流电机电机由左端向右端流动或者由右端向左端流动,从而控制电机向不同的方向旋转。图2-2H桥驱动电路示意图例如,如图2-3所示,当开关管Q1和开关管Q4同时处于导通状态下时,电流将从电机的左端流入,并从电机的右端流出,使电机按2-3图中所示的方向进行转动(此时电机外围的箭头所指向的为顺时针方向)。图2-3Q1、Q4导通,电机顺时针旋转当H桥工作并驱动电机转动时,必须要确保H桥上位于同侧桥臂上的两个开关管不会同时处于导通状态下。当开关管Q1和开关管Q2同时处于导通状态下时,此时的电流就会从正极出发,依次流经这两个开关管然后直接流回到负极。这个时候的电路中并没有除了开关管以外的任何其他负载,并且驱动电机的电源往往电压很高,所以这时电路上流过的电流就会达到一个很大的值,这时电流的大小仅仅受限于电源的性能。当过大的电流流经电路,会严重影响电路的正常工作,甚至烧坏开关管。充分考虑上述问题后,在实际的驱动电路设计方案中通常需要加入使用起来方便可靠的硬件电路来精确可靠地控制开关管的开关过程。图2-4所示的就是为了实现上述功能并基于上述的这种要求而设计实现的改良驱动电路,它增加了两个非逻辑门和两个与逻辑门。四个逻辑门电路和一个使能导通信号(ENABLE)相连。通过这个信号,可以实现对整个线路的开关进行控制。这两个非门的功能就是保证在H桥的同一侧桥臂上始终有一根并且仅有一根开关管能够接通。(下图所示的电路示意图与本节前面的示意图一样,图2-5所示也并不是一个能够独立工作的完整的电路图,特别需要强调的是图中的与门和开关管是不能直接相连的)图2-4具有使能控制端和方向控制信号的驱动电路采用以上方法时,就仅仅需要三个独立的信号便可以方便地控制电机的旋转状态,这三个信号分别是:一个控制整体驱动电路开始工作的使能信号和两个控制方向的方向信号。如果作用于DIR-L端口的为低电平的输入信号,作用于DIR-R端口的为高电平的输入信号,并且作用域使能端的是高电平的输入信号,那么将会使开关管Q1和Q4工作在导通状态下,开关管Q2和Q3工作于截止状态,电流会从电机的左端流向电机的右端(如图2-5所示);反之,如果作用于DIR-L端口的为高电平的输入信号,而作用于DIR-R端口的为低电平的输入信号,那么将会使开关管Q2和Q3工作于导通状态,开关管Q1和Q4工作于截止状态,电流会反向,从电机的左端流向电机的右端。图2-6使能信号和方向控制信号的作用实际使用的时候,为了提高整体的系统开发的效率,通常直接购买现在市面上的各种种类封装的高电压大电流的H桥集成电路芯片,只需要接上给电机供电的电源和给控制信号供电的电源、直流电机和控制器的负载发出控制信号的端口就可以直接用来控制电机的运动状态,当其位于额定的电压和电流内时,使用起来十分的便捷且可靠性高。目前在直流驱动调速系统中常用的有L293D、L298N等。根据上述分析,本设计采用L298N作为直流电机的驱动芯片,如图2-7所示;在L298N的内部,集成了四个通道的逻辑驱动器。它含有两个的高压、大电流双全桥驱动器,通常是被用作二相电机和四相电机的专用驱动器,能够驱动46V、2A以下的电机;L298N受标准TTL逻辑电平(TTL)信号的控制。桥型电路的特点在于可以非常容易地控制电动机的方向和转速。电子开关具有驱动功率低且开关频率很高的优点,相比于机械开关而言稳定性也极佳,是一种广泛应用于直流PWM调速系统设计的直流电机驱动芯片。L298N最多可以同时驱动两个电机运动,在OUTl、OUT2输出管脚和OUT3、OUT4输出管脚之间分别接入两个直流电动机即可。5、7管脚和10、12管脚可以通过分别接控制器输出的控制电平,从而分别独立地控制两个电机的正转和反转;ENA、ENB管脚是控制的使能端,可以分别控制两个电机的转动和停止,于是可以利用管使能端的特性,将使能端接上单片机输出的PWM控制信号,这样就可以利用单片机控制电机的转速。图2-7L298N电机驱动芯片如图2-8所示,单片机输出的PWM信号接在ENB端口上,同时IN3和IN4端口接在单片机上负责输出控制电机转动方向信号的端口上,以此来控制电机的旋转方向,通过编程使单片机这里两个端口输出的电平始终为一个高电平一个低电平;对应的OUT3和OUT4输出端口接在直流电机的两端。图2-8L298N接线示意图2.2按键模块设计方案为了能实现对直流调速系统给定转速和电机旋转方向的控制和调整以及实时获取电机的转速信息,最简单的方式就是通过按键增大或减小给定转速以及改变旋转方向和LED数码管显示。所设计的按键模块由三个独立的按键开关组成,它们分别控制电机的正反转、速度的减小和增加。电机状态设定的按键设计其要点是对按键进行去抖动的处理。本设计中选用机械弹性开关作为按键,这种开关在动作的过程中往往都会伴随有一连串的抖动产生,这种抖动的产生会使系统误判断按键开关被多次按下,并其产生多次响应,为了不产生这种现象来影响系统的正常工作就必须对机械触点按键进行按键消抖处理。按键的消抖处理常用的有两种方法:采用硬件消抖电路和软件法去抖动。然而在需要使用微处理器进行控制的系统中,使用硬件电路去抖就显得比较复杂且浪费资源。所以,本设计中采用的是软件法消除按键抖动。软件法去抖动的实质是利用延时程序多次检测按键状态进行按键去抖。由于抖动时间很短,当有按键被按下并且程序中检测到按下时,通过对程序进行一小段延时,然后再检测按键是否仍然处于被按下的状态,若仍处在被按的状态下,则程序判定为按键被按下一次,这样就可以消除按键抖动带来的影响。软件法去抖动所需要的延时时间往往在20ms作用,在本例设计中应大于20ms以确保按键按下一次不会被误识别为多次按下。2.3数码管显示模块设计方案数码管主要是用于电机转速的显示。本设计中选用两组数码管来分别显示操作者设定的给定转速和电机实时的实际转速。如图2-9所示,数码管有可分为共阴极数码管和共阳极数码管;这两种数码管单片机都可以对其进行驱动,但是驱动的方法却不同。本设计中选取的是两组共阳极四位一体数码管7SEG-MPX4-CA。图2-9(a)数码管封装的管脚排列(b)共阳极数码管结构(c)共阴极数码管结构 数码管的数字显示需要先在单片机程序中定义段码和位码,然后根据单片机内的数据查询对应的段码和位码。数码管的显示还需要搭配电阻和锁存器;其中,电阻的作用为上拉电阻,将单片机P0口作为I/O端口,上拉电阻为锁存器能和TTL信号兼容以便正确传输数据;如图2-10,锁存器选用74HC573芯片,这种电路可以直接与系统总线相连接从而驱动总线,同时并不需要外接端口;同时,既可以驱动低阻抗的负载,也可以驱动大功率的电容性负载,特别适合作为缓冲寄存器使用在单片机系统中。图2-1074HC573锁存器图2-11数码管显示模块接线示意图 选用74HC573刚好可以满足八位的数据传输用来控制八个数码管的位选。整体数码管显示模块的接线如图2-11所示,其两片74HC573锁存器的LE引脚分别接单片机的P2.6和P2.5端口,通过程序控制其工作模式,使锁存器交替传输数据,从而数码管的动态刷新,实现转速数据的实时显示。这种设计的好处在于仅仅占用单片机10个I/O端口,就可以控制两组四位数码管显示数据,大大节省了单片机的引脚的使用。2.4电机转速获取方案想要构建闭环的直流调速系统,则必须要获取电机的实时转速数据,在实际中可以用光电码盘和光电传感器构成测速系统,而在Proteus中只有一种直流电机模型集成了测速传感器,在搜索栏里搜索motor-encoder,即可得到这种电机模型,如图2-8所示。本设计中设置电机转一圈发出60个脉冲。根据实际运转情况及结合所编写程序,确定转速公式为:V=2.37N。其中V为电机转速,单位是R/min;N为采样的脉冲个数。2.5最终方案的确定及仿真电路图根据上述确定的各模块的方案所搭建的Protues仿真模型如图2-12所示。图2-12Protues仿真模型本系统采用AT89C52单片作为控制芯片,用按键模块来调节电机转速和旋转方向,并用两组四位一体的数码管来分别显示设定的转速和测量转速;确定电机驱动器的选择为使用H桥组成的高电压大电流双全桥式驱动芯片L298作为本系统的驱动电路,最后利用Protues元件库中的带有测速计的电机模型来取得电机的实际转速。为了方便后续程序的调试,还应在模型中加入串口模块:选用Protues中的COMPIN模型将其RXD和TXD分别与单片机的RXD和TXD相连,然后在模型设置中设置电脑串口COM1,通过虚拟串口软件设置单片机虚拟串口COM1和PC端的虚拟串口COM2即可实现仿真模型和计算机之间的串口通信;最后利用串口调试软件接收单片机串口发出的转速数据。仿真模型运行状况如图2-13所示。此时系统达到稳定,可以看到实际转速等于给定转速。图2-13仿真模型运行状况2.6本章小结 本章介绍了如何在Protues软件中搭建直流调速系统的仿真电路,并详细地分析介绍了仿真模型中各个元件和模块的选择依据。在设计系统时首先搭建仿真模型相比于直接制作硬件电路,可以更方便地对系统进行调试和改变设计方案,这样做的好处在于可以极大地简化系统设计的过程,节省资源。 最终设计出的仿真模型应能够实现全部预期的功能,还应该给模型各部分加上标准文字,方便进行仿真时的各种操作。

AT89C52单片机程序设计本系统是控制并调节直流电机转速快速响应给定值的直流调速系统,它主要通过对电机转速信号的实时监测和计算PWM控制信号的输出实现对电机的启动及转速的控制。因此,其对系统的实时性、快速性、精确性有着十分高的要求。在充分考虑上述要求后,本系统程序设计的主要目的确定为实现如下功能:直流电机转速的检测,转速PID控制器,根据PID控制器的输出值生成PWM信号来调节电机转速,实现数码管的显示,使调速系统显示电机当前的给定转速和实际转速。根据上述所需实现的功能,本设计采用主程序循环调用各个子程序和中断程序结合的方式对系统实现控制。主程序主要实现了初始化设置、对各个子程序的循环调用,这样就能实时监测电机的转速并对其进行控制。主程序调用的子程序包括:系统初始化子程序、延时子程序、按键子程序、串口数据传输子程序、PID调节器子程序、转速显示子程序以及PWM输出子程序。3.1主程序设计 主程序的流程如图3-1所示。主程序主要用于系统的子程序和变量的初始化以及不断循环调用各个模块的子程序,其中初始化包括对定时器T0、按键扫描模块、PID控制器、外部中断INT0、PWM输出模块子程序、数码管转速显示模块和串口等子程序的初始化。图3-1主程序流程图 当单片机系统开始运行时,首先就需要利用主程序来初始化所有的参数和变量的设置,然后按顺序查找各个子程序,每个被调用的子程序会进入主程序的循环体。各项子程序将采用直接调用寄存器法来进行编写,即根据软件编译的环境来定义所使用到的寄存器,以此来进行各个子程序的编写工作。3.2按键子程序按键程序的主要功能是通过软件来对硬件电路中的机械按键进行消抖,切换电机的正反转以及增加或减小电机的转速。首先应先选择按键要输入的IO端口,这里选择P1.1、P1.2、P1.3分别作为系统加速、减速、换向按键,接着通过设置端口P1.1、P1.2、P1.3分别为AddSpeed、SubSpeed、Turnside,最后对相应输出端口进行设置,完成按键模块子程序的初始化,其流程如图3-2所示。 根据所需要通过按键实现的功能来完成对按键函数的编写,本设计定义当单片机的I/O端口接收到一个低电平信号时,即按键按下时认为发出控制信号,此时判断为按键被按下一次,按键程序完成一次运行。然而实际中,按键动作时由于触点的弹性作用,电平信号会出现多次抖动,这就可能导致误识别为多次动作,为了消除抖动带来的影响,应设置延时程序和自锁程序来消除抖动,此处考虑在Protues仿真模型中运行程序,故设置按键的消抖延时时间为20ms,实际硬件电路中应大于20ms;主程序也通过在每个循环进行按键扫描来接收案件信号。此处采用顺序扫描,防止同时误触按键。图3-2按键子程序流程图 软件去抖动的程序如下:if(AddSpeed==0)//判断是否有按键按下 { delay(200);//延时20ms去除前沿抖动 if(AddSpeed==0)//判断是否有按键确实被按下 { SpeedSet+=100;//执行所需要执行的指令 …… } }3.3PWM输出子程序3.3.1PWM控制原理脉宽调制,即“PulseWidthModulation”,使脉冲宽度调制的简称,其英文缩写为PWM,是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式;根据面积等效法则,即在惯性系统中,任意波形的信号均可以由一系列等幅不等宽的矩形脉冲方波替代,它们在惯性系统中的作用效果相同,可以通过对改变脉冲的时间宽度,来获得与所需要合成波形具有等效幅值和频率的波形。PWM控制技术,是一种保持频率不变,改变电源开关开通和关断时间的控制方法。其本质是:当输入电压、内部参数及外界负荷改变时,由闭环系统进行闭环控制,在维持脉冲的周期不改变的情况下,使输出电压得到稳定。PWM的反馈控制的优点是能够进行数字控制,这样就可以防止PWM的不稳定以及PWM的发展;因此,该系统采用PWM技术来实现对直流电动机的转速调节。3.3.2PWM输出程序部分 PWM输出子程序应配合PID调节器共同作用调节电机转速,当加速或减速信号输入到单片机时,则PWM输出程序将跟随PID控制器的作用,采用控制PWM信号的占空比的方式来控制输出电压的平均值,从而调节电机转速;该调速系统通过在MCU中利用定时器T0产生的PWM控制信号来生成PWM信号,并利用P1.0口作为PWM控制信号的输出端口。因此首先通过设置定时器工作方式寄存器TMOD使定时器T0工作于16位定时/计数器模式,通过自动重装初值实现定时中断。本设计将一个周期内的PWM信号分为若干个等宽的部分,通过一个比较器和预设的变量cnt离散地控制占空比和PWM周期。PID控制器输出的值会与cnt进行比较,每当定时中断发生时,cnt的值对应加一,然后于PID控制器输出值比较,当小于PID控制器的输出值时为高电平,当低于输出值时为低电平,由此可以实现PWM的输出跟随PID控制器的输出而变化。PWM输出程序流程如图3-3所示。PWM输出子程序如下:voidPWMOUT(){ if(cnt<PWMTime) { PWM_FC=1;//若PID输出值大于当前时间值,则输出高电平 } else { PWM_FC=0;//若PID输出值大于当前时间值,则输出高电平 } if(cnt>100)cnt=0;//将当前时间值置零}图3-3PWM输出子程序流程图3.4PID控制器子程序本设计中的PID控制器是用来对电动机的转速进行控制的。PID控制器的主要任务是利用对实际转速和给定转速的大小进行作差后得到的三次转速偏差信号进行PID计算,最后将输出的值送入PWM输出子程序产生控制电机转速的PWM信号。3.4.1PID算法原理PID即Proportional、Integral、Differential的缩写,这三个单词分别表示控制器中的比例、积分、微分环节。PID是非常经典的闭环控制算法,其具有适用面十分广泛,控制参数相对独立,原理简单易懂,易于实现和改进,参数的选定比较简单等优点。凡是需要将某一物理量维持稳定的场合,如直流电机调速,PID都具有很大的用处。PID算法流程如图3-4所示。图3-4PID算法流程图在实际编程应用中,都需要使用离散化的数字式PID算法,以适应计算机的环境;数字式PID算法是广泛应用于数字式控制系统的一种算法,其主要有两种:位置式PID和递进型PID。在数字PID控制中,P代表比例控制环节,控制器所输入的误差信号与输出信号成比例,这也是最简单常用的控制方式,但是在仅使用比例控制的闭环系统中一定会存在稳态误差,因此,比例控制器的精确度和稳定性不佳。如图3-5所示,在一般情况下,在PID控制器中通过调整比例环节的比例系数Kp可以改变系统的响应速度,能够实现系统的快速响应。当比例系数较大时,系统的响应特性更像是纯比例控制器的响应特性,系统在达到纯比例控制器作用的稳态值之前响应十分快速,而在之后积分环节的作用才开始明显,最终系统缓慢趋于给定值;而过小的比例系数又会使系统中比例控制环节的作用被弱化,时系统调节时间增大,超调量变大并产生振荡。图3-5比例系数Kp对系统的影响比例调节器的微分方程为:y=式(3-1)式中y表示控制器的输出量;Kp是比例系数;e(t)是比例控制器的输入,是给定值与输出值的偏差量。由式(3-1以本设计中的直流调速系统为例,当电机开始旋转,单片机就会根据接收到的测速模块所发出的脉冲信号,每隔一段时间根据所采集的脉冲信号计算转速数据,将所有测得的转速数据记为y1,y2,...,yk−1E式(3-2)根据Ek的值有三种情况:当Ek>0时,表示当前时刻的转速还未达到稳态值;当Ek=0时,表示当前时刻的转速已经达到稳态值;当Ek<0时,表示当前时刻的转速已经超过稳态值。这说明PID控制器中的比例控制环节是通过Ek的大小作为控制依据来控制输出量的;为了达到更好的控制效果,通常将当前误差P式(3-3)根据表达式我们不难得出,比例控制环节的正常运行必须是在系统存在误差的前提下才能实现的,而当误差值Ek=0时,则必须通过加入常数I所表示的是积分控制环节,积分控制器的输出信号与输入到控制器偏差信号的积分量成正比关系。对闭环系统而言,如果存在稳态误差,则称这个闭环控制系统是有差系统。入上文所述,虽然纯比例控制的有差系统响应时间很快,但是其精确度和稳定性不佳,在调速系统中显然不能满足要求。所以,要想能够消除稳态误差,就必须在加入积分控制环节。积分项是误差对应时间的积分函数,随着时间的增加,积分项会不断累积。这样,即使在输入积分控制器的偏差数值非常小的情况下,由于积分的影响,该偏差的积分项会随着时间的增长而逐渐累积,从而进一步降低了控制器的稳态误差,直至稳定误差为0为止。积分控制器的积分调节器的积分方程为:y=式(3-4)式中Ti是积分时间常数,积分的速度随着Ti的值不断减小而减小。在PID控制器中,积分环节的积分速度越快,积分的作用也就会越明显。由于积分控制器的系数Ki与积分时间常数Ti成反比,故Ki越大时T图3-6积分系数Ki对系统的影响同样,若应用到本系统的设计中,即为将所有通过单片机和测速模块测得的转速数据记为y1,y2,...,S式(3-5)类比上文中所介绍的Ek,Sk也会存在三种情况:当Sk>0时,说明到当前时刻为止,大于零的误差值之和要大于小于零的误差值之和,根据式(3-2)可知在当前时刻为止,控制量的输出在总体上偏低;当Sk=0时,表示当前时刻所有误差值中大于零部分的代数和等于小于零部分的代数和,即此时控制量恰好达标;而当Sk<0时,表示到当前时刻为止,大于零的误差值之和要小于小于零的误差值之和,此时控制量的输出在总体上偏低。根据这些情况对积分控制器的控制方式作如下调整,当Sk>0即在过去一段时间总体上控制信号未达标时,通过将SkI式(3-6)积分控制环节具有滞后控制的特点,这是因为积分控制是对当前所有的误差值的总和进行响应。D代表的是微分控制环节,其作用是改善系统的动态特性。微分控制器改善系统动态特性的原理是预测偏差信号来发出超前系统变化的控制信号来进行控制。微分控制器的微分时间常数Tdy=式(3-7)微分控制器是根据到当前时刻为止所有的误差值E1D式(3-8)Dk指的是误差值变化的速率,于上文中的Ek和Sk一样存在三种情况,即Dk>0,Dk<0及DkD式(3-9)需要注意的是,由于微分环节所响应的不是偏差值信号,而是偏差值的变化率,故在控制系统中不可独立地发挥作用。根据上述对比例、积分、微分环节的单独分析,可以得到PID调节器的方程,如下式所示:y(t)=式(3-10)其中r(t)为目标输入,y(t)为系统输出,输入值与系统输出的偏差e式(3-11)经过离散化处理后,可得典型的数字式PID控制器的表达式如下:PIDout=式(3-12)接着对式(3-12)中的变量做进一步解释说明:对于积分项SkS式(3-13)其中T为单片机的计算周期,Ti为积分时间常数,它是控制积分环节和比例环节作用的时间常数;T对于微分项DkD式(3-14)Td为微分时间常数,即控制微分环节和比例环节对系统作用的时间,T总结上述分析可以得出应用于单片机上的位置式PID控制器表达式如下:PID式(3-15)但位置式PID的积分环节会累积大量历史数据,对于本设计所选用的AT89C52单片机而言会占用大量片内资源,所以本设计将选择增量式PID控制算法,其具体表达式如下:△式(3-15)其中PID式(3-16)故△PID式(3-17)其中Ek、Ek−1、Ek−2分别为第k、k-13.4.2PID控制的程序部分电机转速PID调节器的工作原理为:当转速发生变化或转速与给定转速有偏差时,转速反馈电路将通过P3.2口即INT0外部中断口将检测的脉冲信号输入单片机,由T0定时器和循环程序共同作用对脉冲个数进行计数,并存放于预先设定好的一个变量(Inpluse)中,然后根据采样周期计算出实际转速存入另一个设定好的变量(num)中,再将这个转速值与给定值(SpeedSet)进行比较,根据PID调节器的算法,得到调节好的值;同时,为了防止再电机转速突然改变时PID调节器的输出过大,因此必须设置控制量的上下限,以保证系统正常工作。结合上述数字式PID控制器的原理可知其流程如图3-7所示图3-7PID控制器子程序流程图 PID控制器子程序如下: voidPIDControl()//pid计算{ e=SpeedSet-num;//计算偏差值 duk=(Kp*(e-e1)+K1*(Ki*e+Kd*(e-2*e1+e2)))/K2; //增量式PID计算 uk=uk1+duk; out=(int)uk; if(out>100)//判断输出是否超过上限 { out=100; } elseif(out<0)//判断输出是否低于下限 { out=0; } uk1=uk; e2=e1; e1=e;//将当前误差记为上一次误差值,为下一次计算做准备 PWMTime=out;}3.5定时器中断子程序 在本设计中定时器T0扮演了十分重要的角色,它既控制着PWM输出的最小单元时间,也决定着PID计算的周期,同时也决定着数码管显示的刷新频率。这样设计的好处是将多个功能集中于一个定时器下可以大大节省对单片机内部资源的利用,方便后续系统的再升级。 首先在初始化程序中设定T0的工作模式,使其工作在方式1下。该模式下当计数溢出时将进入中断执行程序,由于AT89C52单片机所外接的晶振频率为11.0592MHz,故机器周期约为1μs,所以每过1μs,计数器计数加一,由于方式1为16位计数模式,则当计数器计满65535时定时器计数溢出,进入定时器中断子程序。方式1下定时器最大计时时间约为65.5ms,于是可以通过改变每次装填的初值来该模计时时间。本设计中设计装填初值为65035,即0.5ms的计时周期。 在进入中断后需要执行重装初值、数码管显示刷新、脉冲计数和进入PID控制器等操作,大致流程如图3-8所示图3-8定时器中断子程序流程图3.6系统软件稳定性设计软件的可靠性和稳定性是系统安全稳定运行的关键。必须使软件及时响应系统所受的干扰和变化,使系统尽可能快速地恢复到稳定运行状态。与此同时,还应保证当系统不受外界干扰时,系统能够正确的运行。因此,在软件的设计中应当进行模块化的设计软件应用,当需要时直接从主程序调用,这样只需将主程序设计成循环调用子程序即可实现功能。在编写程序时必须使用简洁的语言并且加上详细的注释,这样才能降低系统的错误率。最后,因为程序开始调试后就要不断地进行反复的试验,所以为了能够便于修改调试和改进程序,就需要在设计软件时提前考虑,设计出良好的程序结构。3.7Protues中的程序调试完成程序设计后首先在Protues中进行程序可行性的仿真和调试。图3-9Protues中对电机的设置如图3-9所示,设置电机模型的参数,将电机模型的空载转速设置为800rpm,电机每圈发出的脉冲个数为96,由此确定了程序中的设定转速SpeedSet为500rpm,转速公式num=Inpulse×2.5式(3-18) 然后为了方便调试,还需给单片机加上串口输出程序,并在计算机上设置虚拟串口,借助虚拟串口和串口调试软件可以获得不同一系列的电机转速数据,最后将数据导入Matlab进行处理就可以直接分析系统的动态稳定性和稳态特性。3.7.1串口通信程序在本系统中设计串口通信程序主要是为了利用单片机的串口功能发送电机的转速数据至上位机,更方便后续对系统的调试、PID调节器参数的整定以及分析系统的稳定性。首先,由于Protues仿真直接与计算机之间进行数据传输,因此需要设置虚拟串口;然后计算机要进行数据的接收、显示和记录,因此需要使用串口调试软件接收和显示数据;最后设计单片机内的串口通信程序,让单片机每间隔相同的时间向计算机发送当前的转速数据。设置串行口寄存器SCON=0x50,此时串行口工作在方式1即串行口为10位通用异步接口。设置功率控制寄存器PCON=0x00即设置波特率不加倍;设置工作方式寄存器TMOD=0x21即设置波特率发生器为8位自动重装定时器,该模式下设置波特率位9600,并根据此得到定时器T1的初始值;完成串口设计后开始设计串口传输程序。需要注意的是,在串口调试程序中输出的是ASCⅡ码或是16进制数,均不方便直接使用,所以串口输出数据需要分为不同的数位输出,具体程序如下所示: voiduart_data(){ SBUF=num/1000+'0';%传输转速的千位数据 while(TI==0); TI=0; SBUF=num%1000/100+'0';%传输转速的百位数据 while(TI==0); TI=0; SBUF=num%100/10+'0';%传输转速的十位数据 while(TI==0); TI=0; SBUF=num%10+'0';%传输转速的个位数据 while(TI==0); TI=0; SBUF=',';%传输分割数据符号 while(TI==0); TI=0; data_num++;}串口波特率为9600,而转速是每0.25s计算一次,所以在每轮传输过程中转速数据不会改变,可以保证数据的准确性。3.7.2PID控制器的参数整定与调试在设计完串口程序后,就可以开始通过传输的转速数据在Matlab中绘制响应曲线,并以此为根据对PID控制器的参数进行确定和验证。本设计的PID参数整定采用等幅振荡法。采用等幅振荡法的步骤为:首先切除PID控制器中的积分环节与微分环节的作用,同时选取比例增益Kp为较小值,并将系统投入到闭环运行中;通过不断调整上述控制器的比例增益Kp不断增大,在不断增大Kp的过程中会得到某一确定的Kp的值,此时系统响应为小范围的等幅振荡;通过观察图像得出在系统等幅振荡时的振荡周期Tcr和控制器增益Kpr,再通过查询表3-1中不同控制器类型得到PID参数。最后再根据实际系统的响应曲线对上述得到的PID参数进行微调。参数类型控制器类型KpTiTdP0.5KprPI0.45Kpr0.83TcrPID0.6Kpr0.5Tcr0.12Tcr表3-1等幅振荡法PID参数整定表根据上述方法和式(3-17)进行调试,经过多次试验得到比较理想的PID控制器参数(具体调试过程中的响应曲线见附录2),得到取Kp=5,Ki=1.2,Kd=1.5时电机的调速性能和稳定性有较大提升。该参数下对应的系统的时间-转速曲线如图3-10所示。图3-10Kp=5,Ki=1.2,Kd=1.5时的响应曲线图像纵轴表示转速,单位为转每分钟(rpm);横轴表示时间,单位为秒(s)。通过分析图像可知,系统在点(8,582)处达到峰值ntp=582rpm,即峰值;尽管系统有小的振荡,但是可以判断:当时间足够大时系统稳态值等于给定输入值即500rpm,所以系统的终值nσ%=式(3-18)可以计算得到超调量σ%=16.4%。 图中的红色虚线分别表示终值±2%的值所对应的转速,由此不难看出系统的调节时间约为15s。 图3-11为PID控制下的闭环调速系统和纯比例控制下的闭环调速系统的对比图,其中蓝色曲线为比例控制闭环调速系统的响应曲线,红色曲线为PID控制的闭环调速系统的响应曲线。可以看出,比例控制的闭环系统的上升时间很快并且超调量很小,但是稳态值不等于输入值,属于有静差的系统,控制精度和抗扰动性能都较差,可以应用在需要系统快速启动且对系统控制精度要求不高的场合;而虽然PID控制的闭环系统的上升时间较长且超调量较大,但是该系统是无静差系统,并且一定限度内的超调量,对于工程应用系统而言是可以允许存在的。综上而言,本调速系统具有优秀的抗扰动性能、很高的控制精度和较好的动态性能。 图3-12所示为在PID控制下的闭环系统进入稳态运行后(500rpm)在箭头所指处改变转速时(800rpm)的响应过程曲线。从中不难看出,系统能够很好的跟随给定速度的变化。本设计可以实现直流电机的调速且具有较好的动态性能。图3-11比例控制和PID控制对比图图3-12PID控制闭环系统的调速响应3.7.3积分分离式PID控制器积分控制环节在PID控制器中的主要作用就是消除系统的静态误差,从而使系统保持较高的控制精度和良好的抗扰动性。然而,当系统的设定值大幅度增加和减小,或者在启动、结束的过程中时,系统的输出信号会在短期内出现较大的偏差值,PID控制器的积分环节输出值会持续积累,使其控制量超出系统所能承受的最大运行幅度,造成系统超调量增加,调节周期延长,甚至出现较长时间的振荡。为了更好地解决上述问题,可以采用积分分离式PID控制器,其基本思路为:当控制器的输出值与设定值偏差较大,即输入控制器的误差值大于所设定的误差阈值时,就消除积分控制环节的作用,通过这种方法可以有效避免积分控制环节降低系统的稳定性和增加系统的超调量。而在被控制量已经足够接近给定值,即输入控制器的误差值小于设定的误差阈值时,这时通过引入积分控制环节,可以消除系统的静态误差并且提高系统的控制精度。具体实施步骤包括:根据情况设定阈值k>0;当偏差e>k时,去除积分环节的作用,仅用比例和微分环节进行控制;这样使系统有较快响应的同时也限制了系统的超调量;当偏差e<k时,采用PID控制,以保证系统的控制精度;不同阈值的选取也会对系统的动态特性有很大影响;当阈值取的太大时,系统过早进入PID控制,积分量积累过早,任然会存在很大的超调量和较大的上升时间及调节时间;阈值选的太小可能导致在纯比例控制下的有静差系统无法达到阈值范围而使系统无法进入PID控制。对应不同阈值k的积分分离式PID控制响应如图3-13所示,其中设定转速仍为500rpm图3-13不同阈值下的响应曲线根据上述分析,选取阈值k=100rpm,运行程序。图3-12所示为积分分离式PID和普通PID响应的曲线图,从图中可以看出积分分离式PID控制器的上升时间、调节时间和超调量等动态性能指标均要优于普通的PID控制器。图3-14积分分离式PID和普通PID响应如图3-14所示,在经过足够长得时间后,可认为系统以及稳定,此时发现系统的实际转速约等于给定转速,所以可认为系统的静态误差为零。3.8本章小结 本章详细地介绍了设计系统软件的方法和步骤,首先阐述主程序的重要性和所需要完成的任务;然后根据所确定要实现的功能依次设计各个子程序,包括PID控制器、PWM输出、按键消抖和识别、数码管动态显示和串口数据传输等一系列功能;最后将所编写的程序放入Protues中进行联调,并据此确定了一系列参数和PID调节器的参数。为了充分利用片内资源最大限度地改善系统的性能,本章最后还提出了运用积分分离式的PID控制器代替传统PID控制器,以期望达到更好的动态性能。最终的运行结果也表明本设计的普通PID控制系统和积分分离式PID控制系统均具有良好的稳态性能指标和动态性能指标,相比之下积分分离式PID控制器的各项性能指标均优于普通的PID控制器,所以后续的硬件实验应采用积分分离式的PID控制器。

硬件实验平台的制作与调试4.1硬件平台的制作 由第二章中所搭建的仿真模型,可以确定硬件系统的设计框图如图4-1所示。硬件电路的结构由以下七部分构成:电机驱动模块、数码管显示模块、按键模块、供电模块、AT89C52单片机、带码盘的直流电机、光电测速模块;其中本设计采用的小型直流电机主要参数为:额定电压12V,可以工作在6~12V的电压下;空载电流80mA;空载转速为6800rpm;直流电机所带的测速码盘栅格数为96。由于第一次制作硬件平台采用将所有模块集中在一块PCB板上的方案,导致焊接的时候很不方便而且一旦出现一处损坏就要报废整个PCB板,而且布线过于复杂。在吸取以上教训后,决定采用各模块分别制作然后通过杜邦线连接;比起将所有系统设计在快PCB板上,分别制作各模块PCB的好处是PCB上元件的布局更合理紧凑,焊接和调试起来更加容易且不容易全部报废。4.1.1AT89C52单片机最小系统作为本设计的主控部分,选用AT89C52最小系统板,该系统板带40P锁紧座,可以方便地更换单片机芯片,P0口接有1k的上拉电阻,带有由30pF电容构成的复位电路,可采用5V供电,其余各I/O口均通过排针引出,只需要更具需要连接其他功能电路就可以使用,单片机最小系统原理图如图4-1所示,实物图如图4-2所示。图4-1单片机最小系统电路原理图4.1.2光电测速模块 本设计中需要通过光电码盘和光电测速模块来获取电机转速,测速模块需要能够检测码盘上的栅格数,并输出可以被单片机识别的脉冲信号。所以主要采用槽型光电门传感器构成,其可由3.3V或5V电源供电,设计原理图如图4-2所示。图4-2光电模块原理图为了方便组装,测量好电机正负极接线柱的尺寸距离,将电机电源也放置在光电测速模块的PCB板上,这样就可以直接将测速模块安装到电机上。 将测速PCB焊接调试好,得到的实物图如图4-3所示图4-3安装好测速模块的电机4.1.3电机驱动模块 根据Protues仿真模型中的方案,电机驱动模块将使用L298N作为主要驱动芯片。供电方面,由于本模块同时存在逻辑电路部分和驱动电路部分,故需要设计两个用于供电的端子,分别供电5V和12V;而为了方便接线,也设计了78M12芯片对驱动电源12V进行稳压得到5V电源驱动逻辑部分。除此之外,为了防止芯片过热,还加装了L298N专用的散热片以及滤波电容和1N4007作为续流保护二级管,可以保障驱动电机长时间稳定工作。对应设计原理图如图4-4所示。图4-4驱动模块原理图 根据原理图设计PCB并最终焊接调试,得到电机驱动模块。将该模块焊接调试好,得到实物如图4-5所示。图4-5驱动模块4.1.4供电模块本设计仅用一个电源适配器给系统供电,但由于单片机和电机需要不同的电压供电,因此还需设计一个一路输入多路输出的供电模块。该模块由AMS1117-5.0芯片提供5V电源给单片机,AMS1117-3.3芯片提供3.3V电源给测速模块,以及直接引出电源适配器的12V电压输出给电机驱动模块。所设计原理图如图所示。图4-6供电模块原理图 根据原理图绘制PCB然后焊接得到实物。供电模块如图4-6所示图4-6供电模块4.1.5数码管显示模块 根据第二章中的仿真模型,选用两个四位共阳极数码管和两片74HC573构成转速显示模块,并通过三个独立的按键分别控制电机的加速、减速和正反转。设计的数码管显示模块原理图如图4-7所示;图4-7数码管模块原理图 根据原理图,绘制PCB并进行焊接,最终得到如图所示的数码管模块。4.1.6硬件实验平台的搭建将上述模块进行搭建,最终得到图4-8所示实验平台。在搭建之前应该首先用万用表对供电模块进行测试,确保供电模块能够可靠地输出5V的电压,这样即可以在测试其他模块时提供电源,也可以保证测试的时候不会由于电压过大或过小而影响测试;然后连接数码管显示模块和单片机最小系统,将程序下载入单片机,然后接通电源,通过观察数码管能否正确显示设定转速可以判断程序能否成功烧录;最后连接剩余的模块即可完成硬件电路的制作。图4-8硬件实验平台4.2系统调试和运行分析 由于实际使用的电机和Protues仿真模型中的电机各项参数均有不同,在12V直流电源下空载转速约为6800rpm,远远大于Protues中电机模型的转速,所以还需要根据硬件实验平台对程序中的各项参数进行再调整,但整体的流程和方案仍不需要变动。 首先,由于电机的各项参数较小,机械转矩也很小,所以当PWM周期过长时,电机会出现持续大范围转速波动的情况,如图4-9所示,因此就需要调整PWM输出程序的周期以及PID控制器的计算周期。通过反复试验,最终取PWM输出周期为30ms,离散化输出的可调整的最小单元的宽度为0.2ms;PID控制器的计算周期调整为0.25s。图4-9PWM和PID计算周期过大时的电机转速 然后是PID参数的整定,通过第三章3.7.2小结介绍过的等幅振荡法,重新整定的PID控制器参数为:Kp=7,Ki=5,Kd=2。此时PID控制器的动态性能最佳,具有较小的超调量,较快的上升时间和调节时间。 最后设计积分分离式PID控制器的误差阈值k,由于实际电机转速远大于仿真模型中的电机转速,所以应该适当增大阈值。经过反复实验,确定误差阈值k的大小为750rpm。此时的积分分离式PID控制器既有效减小了由于积分作用而使系统稳定性降低,超调量增大的负面影响;又可以保证当被控量接近给定值时,引入积分控制,从而消除静差,提高控制精度。 设计完成软件部分的所有参数后,可以开始进行硬件实验平台的试运行,图4-10为实验平台的运行状况图。图4-10硬件实验平台运行图 图中左边四个数码管显示的是给定转速,右边四个数码管显示的是实际转速,可以看出系统的系统可以正常运行。然后通过串口将实时的转速数据发送到PC端,收集这些转速数据然后经过Matlab处理成时间-转速的曲线,就可以分析对比不同PID参数下和不同控制方案下的系统性能。 图4-11所示的为硬件实验平台通过串口向PC端发送实时转速。图4-11硬件实验平台向PC端发送转速数据图4-12所示为硬件实验平台中普通PID控制器和积分分离式PID控制器的时间-转速曲线。图4-12普通PID控制器和积分分离式PID控制器的时间-转速曲线 通过分析图4-7的曲线图,我们发现:普通PID控制和积分分离式PID控制都具有良好的动态性能和稳态性能;两条曲线均能保持在稳态值±5%的范围内,但仍有小幅度的波动,这是因为所选用的电机本身的机械转矩很小以及电机的空载转速较大,这些都会导致电机在PWM控制时转速产生波动;积分分离式PID具有比普通PID控制器更好的动态性能,它的超调量更小,调节时间更短,这些都符合理论的推测和仿真的结果。结论5.1工作总结与结论本次的毕业设计主要进行的是直流调速系统的设计,在设计过程中先从理论的学习开始,查阅了大量关于直流调速的文献,对整体的任务有了一个清晰的认识。然后在正式开始进行毕业设计的阶段,首先利用仿真软件Protues搭建直流调速系统的仿真电路模型,在这之后根据所要达到的要求完成程序的设计并在仿真模型中进行调试,这样做的好处是仿真模型可以频繁地调整并且节省资源,大大缩短硬件系统的设计制作周期,提高设计的效率和可靠性。在完成仿真验证后就开始搭建硬件实验平台。本次毕业设计选用市面上性价比较高的L298N直流电机驱动模块、编码电机、单片机开发板和电源适配器搭建硬件电路,并根据在仿真模型中调试好的程序,重新整定参数得到适用于硬件平台的程序。本设计主要从教学实验的角度出发,以《工业控制器原理》和《电力拖动自动控制系统》为核心,利用数字式控制器设计实验平台;在完成传统PID控制方案下的调速系统设计后,又对系统进行了进一步的改进:使用一种改良的PID控制器——积分分离式PID控制器代替传统PID控制器,并成功改善了系统性能。通过学习设计这两种控制器的原理并编程实现,然后在仿真平台和硬件平台上对比分析,得出结论:本文中所提及的两种PID控制器均拥有良好的动态性能和稳态性能,相较于传统PID控制器,积分分离式的PID控制器有更好的动态性能,但对误差阈值的选取十分考究,需要通过大量实验确定其数值;并且积分分离式PID控制器相比于传统控制器所占用的单片机资源更多,编程也更复杂。5.2展望 本设计从教学实验的角度出发设计直流调速系统,相比于市面上十分成熟的工业产品性能上稍显逊色,但其优点在于成本低且易于学习。本调速系统着重于从基础层面开始设计并且所设计的程序、仿真模型和硬件平台均可以再进行其他类型的控制器设计和实验,具有很高的应用价值。由于条件限制,实验平台的搭建不甚美观,后续还应对硬件加以设计,让整个系统更加的紧凑美观。

参考文献王勇.基于ARM的数字式直流电机控制器的研究[D].浙江:浙江大学,2007张峰.小功率直流电动机数字控制系统的开发[D].陕西:西安石油大学,2013唐海洋.中小功率直流传动系统的研究[D].陕西:西安工程大学,2017李精华.51单片机原理及应用[M].北京:电子工业出版社,2021.王兆安,刘进军.电力电子技术第五版[M].北京:机械工业出版社,2009谭杰,胡真瑞.基于PWM控制的直流双闭环调速系统设计[J].企业技术开发,2011,(14):99.邵慧.基于ARM的直流电机调速系统的设计与开发[D].东北大学,2011.陈伯时.电力拖动自动控制系统运动控制系统[M].北京:机械工业出版社,2003.7.刘刚利.全数字化双闭环可逆直流PWM调速系统研究[D].电子科技大学,2005.李冉.基于DSP控制的直流调速系统及其自适应方案的研究[D].合肥工业大学,2007.张晋铭.基于DSP的自适应直流调速系统[D].中南大学,2010.刘灿伟.基于ARM的直流电机调速系统的研究[D].华北电力大学(北京),2007.B.GuedriandA.Chaari,DesignofsingleclosedloopcontrolforchopperfedDCmotordriveusingIMCprinciples[C].SciencesandTechniquesofAutomaticControlandComputerEngineering(STA),201516thInternationalConferenceon.IEEE,2015:493-498.B.GuedriandA.Chaari,AnimprovedPIDcontrolstructureforunstableprocesses[C].SciencesandTechniquesofAutomaticControlandComputerEngineering(STA),201516thInternationalConferenceonIEEE,2015:876-881.

附录附录1单片机程序#include<reg52.h>#include<intrins.h>#include<stdio.h>#include<stdlib.h>#defineucharunsignedchar#defineuintunsignedint#defineTHC00xfe#defineTLC00x0b//0.5msunsignedcharcodeDuan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阴极数码管,0-9段码表unsignedcharData_Buffer[8]={0,0,0,0,0,0,0,0};unsignedcharcodeBit_code[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//位码表uchari=0;uintt=1;uchark=0;sbitAddSpeed=P1^1;sbitSubSpeed=P1^2;sbitTurnside=P1^3;//加速、减速、正反转按键端口设置sbitIN1=P1^4;sbitIN2=P1^5;//正反转信号输出端口sbitPWM_FC=P1^0;//PWM控制信号输出端口sbitsmg_d=P2^6;sbitsmg_b=P2^5;//数显模块的锁存器使能端控制inte=0,e1=0,e2=0;//pid偏差uintdata_num=0;uintaa=4;floatuk=0,uk1=0.0,duk=0.0;//pid输出值floatKp=6,Ki=1.2,Kd=-50;K1=0;K2=11.5;//pid控制系数intout=0;uintSpeedSet=500;uintcnt=0;uintInpluse=0,num=0;//脉冲计数uintPWMTime=0;//脉冲宽度voiduart_data();voidPIDControl();voidSystemInit();voiddelay(ucharx);voidPWMOUT();voidSetSpeed();voidSegRefre();/**************主函数************/voidmain(){ SystemInit(); while(1) { SetSpeed(); SegRefre(); PWMOUT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论