直流电机调速原理及PWM控制方法

  1. 直流电机介绍

•直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转

•直流电机主要由永磁体(定子)、线圈(转子)和换向器组成

•除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等

  1. 电机驱动电路

  1. PWM波介绍

•PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域

•PWM重要参数:

频率= 1 /TS 占空比= TON / TS 精度= 占空比变化步距

  1. 产生PWM波方法

  1. 呼吸灯

1)程序

#include <REGX52.H>

sbit LED=P2^0;

void Delay(unsigned int t)
{
    while(t--);
}

void main()
{
    unsigned char Time,i;
    while(1)
    {
        for(Time=0;Time<100;Time++)        //改变亮灭时间,由暗到亮
        {
            for(i=0;i<20;i++)            //计次延时
            {
                LED=0;                    //LED亮
                Delay(Time);            //延时Time
                LED=1;                    //LED灭
                Delay(100-Time);        //延时100-Time
            }
        }
        for(Time=100;Time>0;Time--)        //改变亮灭时间,由亮到暗
        {
            for(i=0;i<20;i++)            //计次延时
            {
                LED=0;                    //LED亮
                Delay(Time);            //延时Time
                LED=1;                    //LED灭
                Delay(100-Time);        //延时100-Time
            }
        }
    }
}

2)Proteus仿真

  1. 直流电机驱动

1)程序

#include <REGX52.H>
#include "Nixie.H"
#include "Timer0.H"
#include "Key.H"

sbit Motor=P1^0;

unsigned char Counter,Compare,KeyNum,Speed;
void main ( )
{
    Timer0_Init();
  while(1)
  {
        KeyNum=Key();
        Nixie(1,Speed);    
        if(KeyNum==1)
        {
            Speed++;        
        }
        if(Speed<4)
        {
            switch(Speed)
            {
                case 0:Compare=0;
                break;
                case 1:Compare=25;
                break;                
                case 2:Compare=75;
                break;
                case 3:Compare=100;
                break;
            }
        }    
        else
            {
                Speed=0;
            }
  }
}

void Timer0_Routine() interrupt 1
{
    TL0 = 0x9C;        //设置定时初值
    TH0 = 0xFF;        //设置定时初值
    Counter++;
    Counter%=100;    //计数值变化范围限制在0~99
    if(Counter<Compare)    //计数值小于比较值
    {
        Motor=1;        //输出1
    }
    else                //计数值大于比较值
    {
        Motor=0;        //输出0
    }
}

2)仿真软件

物联沃分享整理
物联沃-IOTWORD物联网 » 直流电机调速原理及PWM控制方法

发表回复