直流电机闭环调速报告

审定成绩:            

综合实验一设计报告

               

设计题目:51系列单片机直流电机闭环调速实验

单位(二级学院):        

  名:                       

  名:                      

  名:                      

设计时间:         

51系列单片机直流电机闭环调速实验

一、实验目的

1、熟悉直流电机的工作原理

2、熟悉51系列单片机的工作原理及调试方法

3、设计基于51系列单片机控制的直流电机调速原理图(要求实现电机的速度反馈测量)

二、实验要求

直流电机采用编码器测速

直流电机速度给定采用电位器进行模拟电压给定,0——5V

AD转采用12位转换

显示采用8位LED,或者LCD1602显示

键盘4X4,PID等参数通过键盘设置

控制算法:数字PID,参数在线修改

显示窗口:显示速度的设置值SV、速度的实际值PV

三、实验原理

控制算法比较:

PID控制原理PID调节器由比例调节器(P),积分调节器(I)和微分调节器(D) 构成,它通过对偏差值的比例积分和微分运算后,用计算所得的控制量来控制被控对象.图1所示为PID控制系统框图。

图1 PID控制系统框图

比例调节(P)

    比例调节是数字控制中最简单的一种调节方法。其特点是调节器的输出与控制偏差e成线性比例关系,控制规律为:

                   (1)

式中:-比例系数,-偏差e为零时调节器的输出值.

当输出值S与设定的期望值R间产生偏差时,比例调节器会自动调节控制变量y(如为控制阀门的开度)的大小。控制变量y的大小会朝着减小偏差e的方向变化.比例系数的大小决定了比例调节器调节的快慢程度,大调节器调节的速度快,但过大会使控制系统出现超调或振荡现象。小调节器调节的速度慢,但过小又起不到调节作用。另外,虽然比例调节器控制规律简单,控制参数易于整定,但缺点是它只能在一种负载情况下实现无静差值的调节,当负载变化时,除非重新调整相应的),值的大小,否则控制系统将会产生无法消除的静差值。

比例微分调节(PI)

比例调节器的主要缺点是存在无法消除的静差值,影响了调节精度.为了消除静差值,在比例调节器的基础上并人一个积分调节器构成比例积分调节器,其调节规律可用下列(2)式表示.

                    (2)

式中:为积分常数,它的物理意义是当调节器积分调节作用与比例调节作用的输出相等时所需的调节时间称为积分常数。积分常数的大小决定了积分作用强弱程度,选择的越小,积分的调节作用越强,但系统振荡的衰减速度越慢。当 过小时,甚至会造成系统的持续振荡,使调节器的输出波动不定,给生产过程带来严重的危害。相反地当选择的越大,积分的调节作用越弱,虽然过渡过程中不容易出现振荡现象,但消除偏差e的时间却很长。积分调节对偏差有累积作

用,所以,只要有偏差e存在积分的调节作用就会不断地增强,直至消除比例调节器无法消除的静差值。

比例积分微分调节(PID)

加入积分调节后,虽可消除静差,使控制系统静态特性得以改善,但由于积分调节器输出值的大小是与偏差值e的持续时间成正比的,这样就会使系统消除静差的调节过程变慢,由此带来的是系统的动态性能变差.尤其是当积分常数很大时,情况更为严重。另外,当系统受到冲激式偏差冲击时,由于偏差的变化率很大,而PI调节器的调节速度又很慢,这样势必会造成系统的振荡,给生产过程带来很大的危害.改善的方法是在比例积分调节的基础上再加人微分调节,构成比例积分微分调节器(PID)。其调节规律可用(3)式表示。

                       (3)

式中: 为微分常数,它的物理意义是当调节器微分调节作用与比例调节作用的输出相等时所需的调节时间称为微分常数。

PID控制算法

单片机控制系统通过A/D电路检测输出值s,并计算偏差e和控制变量y,再经D/A转换后输出给执行机构,从而实现缩小或消除输出偏差的目的,使系统输出值s稳定在给定值区域内。在计算机控制过程中,整个计算过程采用的是数值计算方法,当采样周期足够小时,这种数值近似计算相当谁确,使离散的被控过程与连续过程相当接近。图2为单片机闭环控制系统框图 J。PID算法是将描述连续过程的微分方程转化为差分方程,然后,根据差分方程编制计算程序来进行控制计算的。另外在PID控制中,由于PID算式选择的不同,最终所得到的控制效果是不同的。下面进行PID控制算法的研究。

图2  单片机闭环控制系统框图

四、硬件电路设计

主系统由单片机最小系统、电机驱动模块、4X4矩阵键盘和AD转换四大模块组成。其中主控芯片采用8位单片机AT89C52;电机驱动采用双H桥驱动芯片L298,能够驱动两台直流电机和一台步进电机,本实验采用直流电机作为控制对象;显示模块采用液晶显示屏LCD1602;AD转换模块才有12位AD转换芯片TLC2543,用以实现电机转速的设定。

电机转速采用电位器进行模拟电压给定,如下图“速度设置”标志下方电位器,电机转速的设定范围为0-499,设置间隔为4,即电位器阻值每增大1%,电机转速增大4转。显示模块中,“SV”表示设定转速,“PV”表示当前电机转速。PID参数值可由矩阵键盘设定。下图为系统达到稳定运行图和参数设置图。

图3 系统运行稳定图

图4 P 参数设置

图5 I 参数设置

图6 D 参数设置

五、程序设计

主程序如下所示,子程序见仿真文件夹:


#include <REGX52.H>

#include "type.h"

#include "LCD1602.h"

#include "tlc2543.h"

#include "pid.h"

#include "app.h"

#define INT_TIME  500

sbit PWM = P2^3;

sbit IN1 = P2^4;

sbit IN2 = P2^5;

uchar timer_cnt1 = 0;

uchar timer_cnt2 = 0;

bit flag_s = 0;

char duty = 00;

void Int_T0_T1()

{

  TH0 = (65536- INT_TIME)/256;

  TL0 = (65536- INT_TIME)%256;

  TMOD=0x51;

  ET0=1;

  EA=1;

  TR0=1;

  ET1=1;

  TR1=1;

}

void main(void)

{

  int i;

  uchar temp;

 

  L1602_init();

  delay(30);

  Int_T0_T1();

 

  M_Pid.Kp = 1;

  M_Pid.Ki = 0.01;//.1;

  M_Pid.Kd = 0.0008;

  M_pid_init(1);

  speed_set = 200;

 

  PWM = 1;

  IN1 = 0;

  IN2 = 1;

  

  L1602_string(0,7,"r/min");

  L1602_string(1,7,"r/min");

  while(1)

  {   

    switch (mode)

    {

      case DIS_MAIN: proc_main(); break;

      case SET_KP:

      case SET_KI:

      case SET_KD:

          proc_adj();

          break;

    }

   

    if (flag_s)

    {

      flag_s = 0;

      get_sv();

      if (flag_run)

      {

        duty = motor_pid(speed_set - speed_cnt);

      }

     

      switch (mode)

      {

        case DIS_MAIN: dis_main(); break;

        case SET_KP:

        case SET_KI:

        case SET_KD:

            dis_adj();

            break;

      }

    }

  }

}

void Timer0_ser () interrupt 1

{

    TH0 = (65536- INT_TIME)/256;

    TL0 = (65536- INT_TIME)%256;

 

  timer_cnt1++;

  if (timer_cnt1 >= 100)

  {

    timer_cnt1 = 0;

    timer_cnt2++;

    if (timer_cnt2 >= 4)

    {

      timer_cnt2 = 0;

      speed_cnt = (TH1*256 + TL1);

      TH1 = 0;

      TL1 = 0;

      flag_s = 1;

    }

  }

  if (flag_run)

  {

    PWM = timer_cnt1 > duty? 0 : 1;

  }

  else

  {

    PWM = 0;

  }

}


 

第二篇:直流电机PWM闭环调速系统

直流电机PWM闭环调速系统

-

摘要:推出一种使用单片机的PWM直流电机闭环调速系统。本系统结构简单,价格低廉,在实际应用中效果良好。

    采用硬件电路实现直流电机闭环调速系统已在实践中应用多年,其硬件组成复杂,调整困难,缺乏控制的灵活性。本文介绍的直流电机PWM闭环调速系统,使用低价位的单片微机89C2051为核心,实现闭环控制,并可进行数字显示和速度预置,方便了使用。电机调速采用脉宽调制方式,与晶闸管调速相比技术先进,可减少对电源的污染。本系统已用于健身跑步机调速,工作可靠,使用效果良好。图1是本系统的线路图,主要有PWM信号发生、闭环调速微机控制、直流电机驱动等几部分组成。

1 PWM 信号发生电路
    PWM波可由具有PWM输出的单片机(如80C198等)通过编程产生,也可采用PWM专用芯片来实现。PWM波的频率太高时,对直流电机驱动
的功率管要求太高,太低时产生电磁噪声较大。实践应用中PWM波的频率在18kHz左右效果最好。经综合分析,本系统采用两片4位数值比较器4585和一片12位串行计数器4040组成了PWM信号发生电路。两片比较器U3、U2的A组接4040计数输出Q2~Q9端,B组接单片微机的P1端口。改变P1端口的输出值,可使PWM信号的占空比产生变化,进行调速控制。计数器4040的计数输入端CLK接单片机2051晶振的振荡输出XTAL2。晶振选用18MHz时,经QO~Q2的8分频,Q2~Q9的256分频,产生的PWM波形的频率为17.6kHz,适合光耦及功率开关管的合理工作范围。
    计数器4040每来8个脉冲,其输出Q2~Q9加1,当计数值小于或等于单片机P1端口输出值X时,U2的(A>B)输出端保持为低电平,当计数值大于X时U2的(A>B)输出端为高电平。随着计数值的增加,Q2~Q9由全“1”变为全“O”时,(A>B)输出端又变为低电平,这样,在U2的(A>B)端得到PWM的信号,其占空比为(255-X/255)×100%,改变X值可改变PWM信号的占空比,进行直流电机的转速控制。使用此方法单片机只需根据调整量输出X值,PWM信号由三片通用数字电路生成,使软件大大简化,有利于单片机系统正常工作。由于单片机上电复位时P1端口输出全“1”,使用4585的B组与P1端口相连,升速时PO端口输出X按一定规律减少,降速时按一定规律增大。
 
图1  直流电机PWM闭环调速系统原理图

单片微机闭环速度控制电路
    本系统的闭环控制选用低价位的单片机89C2051,与带PWM输出的80C552及80C198相比,无需外扩EPROM,且价格低的多。2051单片机片内有2K的flash程序存储器,15个I/O口,两路16位的定时/计数器,指令及中断系统与8031兼容,给闭环速度控制带来很大的灵活性。
    闭环速度控制中传感器选用霍尔传感器,小磁钢固定在被测转轴上,每转一周输出一个脉冲信号。转速脉冲信号经施密特触发器U6-1,U6-2整形后,输入到2051单片机的INTO中断口P3.2端口上。软件设置INTO为下降沿中断,进入中断服务程序后开启定时/计数器O进行定时,测出每转的周期,再由软件计算出控制值X,由P1端口输出PWM波占空比的控制数。软件中还可进行显示线速度或角速度的转换计算,由八位驱码驱动器带动LED数码管进行显示。预置速度由按键S1、S2输入,进行“+”“ -”控制,预置数也由LED数码管显示。
    显示使用了高集成度的MAX7219串行LED显示驱动器,带动八位LED数码管进行显示,前四位显示当前运行速度,后四位显示预置速度。
MAX7219是24脚窄封装芯片,串行口工作频率最高10MHz,八位LED显示,通过对译码模式寄存编程,可控制各位显示方式(BCD码或非译码),显示是片内动态扫描模式,通过一个电阻和编程可控制亮度,并可多个芯片串联显示多达64位共阴极LED数码管。MAX7219的数据输入端DIN、时钟端CLK、数据锁定端L分别与2051单片机的P3.0、P3.1、P3.5端口相接。改变电阻R6的阻值可调整显示亮度,R6取值在3.9~10kQ之间。使用MAX7219不仅可减少硬件电路,由于是片内动态扫描显示,并可降低功耗和简化软件设计。
    2051单片微机的上电复位使用了MAX812电压监控器,上电时约有200 ms的延迟,以保证复位正常进行。为了防止掉电后预置数丢失,使用了使用备用电池保护2051单片机片内RAM数值。电源经变压整流后,一路经DC-AC开关电源输出5V直流电压给单片机系统供电,一路经三端稳压元件7812稳压输出12V电压供驱动大功率开关管使用。单片机系统电源与驱动电路部分电源隔离,以提高系统工作的可靠性和安全性。

直流电机驱动系统电路
    直流电机驱动系统原理如图2所示。
 
    U2生成的PWM信号经施密特反相器U6-3驱动光电耦合器O1,送至直流电机驱动电路。大功率开关管选用N沟道VMOS功率场效应管,它为
压控元件,具有很高的输入阻抗,因而驱动功率很小,对驱动电路要求也较低。经光电耦合器传送的PWM信号,经并联使用的六施密特反相器,接到VMOS功率管Y1的栅极上,直接驱动即可。稳压管D4和电阻R8起保护作用。VMOS功率管的源极接直流电机绕组,经感抗器接电机直流电源负端。漏极接电机直流电源正端。快速关断二极管D3起保护作用,消除VMOS功率管开关过程由电机绕组产生的感生电势。电源是交流电压经C7、ZL、C8组成的滤波器后,由高压桥整流器件Z2整流,高压电解电容滤波后供VMOS功率管。VMOS功率管,快速关断二极管及高压电解电容器及整流桥等根据选用直流电机的电压、功率等要求确定相应型号和参数。

结束语
    本文所述的直流电机闭环调速系统以低价位单片微机89C2051为核心,PWM波的生成使用三片通用数字电路,显示使用了高集成度的八位LED串行译码驱动器MAX7219,电机驱动使用VMOS场效应管,反馈信号使用霍尔传感元件,系统设计合理。使用单片机定时器对传动轴的周期进行检测,可由软件计算出相应的线速度或角转速进行显示,并可进行速度定量预置。软件中可用PLD算法或查表的方法确定闭环控制的补偿量。这些是由数字线路组成的直流电机闭环调速系统所不及的。以前也曾试过使用单片机的定时/计数器直接生成PWM波,这样使软件频繁工作在中断服务程度中,整体效果不太好。使用少量硬件后单片机仅输出X值,使软件工作量大大减少,程序中有充足时间进行闭环控制的测控和计算,使程序设计和软件运行合理可靠

相关推荐