51单片机通过脉宽调制PWM来控制电动机实现调速的设计

控制/MCU

1799人已加入

描述

直流电动机转速N的表达式为:N=U-IR/Kφ

由上式可得,直流电动机的转速控制方法可分为两类:调节励磁磁通的励磁控制方法和调节电枢电压的电枢控制方法。其中励磁控制方法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少。现在,大多数应用场合都使用电枢控制方法。

对电动机的驱动离不开半导体功率器件。在对直流电动机电枢电压的控制和驱动中,对半导体器件的使用上又可分为两种方式:线性放大驱动方式和开关驱动方式。

线性放大驱动方式是使半导体功率器件工作在线性区。这种方式的优点是:控制原理简单,输出波动小,线性好,对邻近电路干扰小;但是功率器件在线性区工作时由于产生热量会消耗大部分电功率,效率和散热问题严重,因此这种方式只用于微小功率直流电动机的驱动。绝大多数直流电动机采用开关驱动方式。开关驱动方式是使半导体器件工作在开关状态,通过脉宽调制PWM来控制电动机电枢电压,实现调速。


 

在PWM调速时,占空比α是一个重要参数。以下3种方法都可以改变占空比的值。

(1)定宽调频法

这种方法是保持t1不变,只改变t2,这样使周期T(或频率)也随之改变。

(2)调频调宽法

这种方法是保持t2不变,只改变t1,这样使周期T(或频率)也随之改变。

(3)定频调宽法

这种方法是使周期T(或频率)保持不变,而同时改变t1和t2。

前两种方法由于在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此这两种方法用得很少。目前,在直流电动机的控制中,主要使用定频调宽法。

直流电动机双极性驱动可逆PWM控制系统

双极性驱动则是指在一个PWM周期里,作为在电枢两端的脉冲电压是正负交替的。

双极性驱动电路有两种,一种称为T型,它由两个开关管组成,采用正负电源,相当于两个不可逆控制系统的组合。但由于T型双极性驱动中的开关管要承受较高的反向电压,因此只用在低压小功率直流电动机驱动。

另一种称为H型。

H型双极性驱动

1. 电动机控制电路模块

H桥电动机驱动电路的工作原理:

A:当单片机的P0.0脚输出高电平,而P0.1脚输出低电平时,通过光电耦合器后仍然输出为高电平,使Q4管导通,此时Q1也处于导通状态,但Q2管的基极的电位被强行拉低,Q2管处于截止状态。由于单片机的P0.1脚输出低电平,

Q8处于截止状态,而此时Q7因为Q5的截止而处于导通状态,从而使电动机形成回路,电机正常工作。

B:同理可得,当P0.0脚输出低电平,而P0.1脚输出高电平时,三极管的状态与上述相反,电机同样处于正常工作状态。

C:当P0.0脚和P0.1同时为高电平或低电平,由于Q4与Q8和Q3与Q7的工作状态相同,同时处于导通或截止,使电机两断电位相同,无法使电机形成闭和回路,电机不工作,着就是所谓本设计所提及的刹车状态。

由于电路中在驱动功率管的发射极各添加了一个小电感,目的是为了使电机驱动电压更加稳定,得到较为平滑的驱动电压,从而增加了刹车时动作的准确性,减少电机的在起动和停止的瞬间产生过大的电压对功率管的冲击,导致功率管的损坏。同时也提高了电机的刹车控制可靠性和准确性,不至于因惯性而导致控制上产生较大的误差。

该桥的优点是电路的原理简单、易控制、功耗低带负载能力强、刹车的精度很高而且价格低廉。在驱动电路的控制信号输入断采用了光电隔离技术,减小H桥电机驱动电路对单片机的干扰,实现模拟电路与数字电路的隔离。在单片机的配合下,通过PWM调节脉宽的方法,实现了对驱动电机的轻松调速,通过键盘的配置可以对体的参数进行修改,可以使电机适应各种不同的工作状态,而实现智能控制的目的。正因为采取了PWM该技术,使我们完成基本要求的过程变得简单易行。

在电路中所采取的功率管为中功率管,其中将驱动功率管设计为灵活替换方式,可以根据实际驱动电路的需要,从而调整功率管的型号而不用另行更改电路,就可以满足电路控制的要求

2、软件模块部分

在速度控制方面,一般是能通过改变加在电机两端的电压来实现的,可以是连续改变(加直流电压),也可以是断续改变(加脉冲电压)。为了简单用,我们采用了脉宽调速,脉宽的变化可以通过硬件或软件来实现。

方案一 硬件实现是通过改变振荡电路中RC参数来调整充放电时间。若用硬件电路来实现,在稳定性方面得不到保证。

方案三 用软件的作法是通过设置高电平及低电平的保持时间来达到PWM的脉宽调制目的。

就比较而言,软件调整量化指标更高、调整更可靠、更方便、更准确。因此在设计时,常考虑方案二。

脉冲频率对电机转机也有影响,脉冲频率高连续性好,但带负载能力差,频率低则反之。经实验发现,脉冲频率在15━20HZ效果最佳。在本设计中采用了20HZ进行设计。

脉冲调速实质上是调节加在电机两端的平均功率,通过计算可发现电机的速度与脉宽成正比。

软件编程的考虑是设置脉宽这个变量。在P0.0,P0.1的输出控制信号来产生20HZ可调脉宽方波。

下面是51单片机的实验程序

#include 《 reg51.h 》

#include 《 intrins.h 》

sbit K1 =P1^4 ; //增加键

sbit K2 =P1^5 ; //减少键

sbit P00 =P0^1;

sbit BEEP =P3^7 ; //蜂鸣器

unsigned char PWM=0xe7; //赋初值

void Beep();

void delayms(unsigned char ms);

void delay(unsigned char t);

/*********************************************************/

void main()

{

P1=0xff;

TMOD=0x21 ;

TH0=0xff ; //50us延时常数

TL0=0xce ; //频率调节

TH1=PWM ; //脉宽调节

TL1=0 ;

EA=1;

ET0=1;

ET1=1;

TR0=1 ;

while(1)

{

do{

if(PWM!=0xff)

{PWM++ ;delayms(10);}

else Beep() ;

}

while(K1==0);

do{

if(PWM!=0xce)

{PWM-- ;delayms(10);}

else Beep() ;

}

while(K2==0);

}

}

void timer0() interrupt 1

{

TR1=0 ;

TH0=0xff ;

TL0=0xce ;

TH1=PWM ;

TR1=1 ;

P00=0 ; //启动输出

}

void timer1() interrupt 3

{

TR1=0 ;

P00=1 ; //结束输出

}

/*********************************************************/

//蜂鸣器子程序

/*********************************************************/

void Beep()

{

unsigned char i ;

for (i=0 ;i《100 ;i++)

{

delay(100) ;

BEEP=!BEEP ; //Beep取反

}

BEEP=1 ; //关闭蜂鸣器

delayms(100);

}

/*********************************************************/

// 延时子程序

/*********************************************************/

void delay(unsigned char t)

{

while(t--) ;

}

/*********************************************************/

// 延时子程序

/*********************************************************/

void delayms(unsigned char ms)

{

unsigned char i ;

while(ms--)

{

for(i = 0 ; i 《 120 ; i++) ;

}

}
来源;21ic

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分