您的位置 首页 IC

PWM的单片机发生

在上次说的直流电机调速的项目中,用了S52单片机的T2定时器产生PWM波信号,用于控制直流电机的转速,虽然电机的平均速度与占空比不是

在前次说的直流电机调速的项目中,用了S52单片机的T2守时器发生PWM波信号,用于操控直流电机的转速,尽管电机的平均速度与占空比不是严厉的线性关系,但是在调理占空比能够显着的看出电机转速发生了改动,也算是满意了课题的要求。下面温习一下PWM的常识吧。

PWM—脉冲宽度调制(PulseWidthModulation),是一种周期必定而凹凸电平可调的方波信号。当输出脉冲的频率必守时,输出脉冲的占空比越大,相对应的输出有用电压越大。PWM能够应用在许多方面,如电机调速、温度操控、压力操控等。

图1PWM波示意图

如上图所示T1为脉冲宽度(便是导通时刻),周期为T,则输出电压的平均值为U=VCC*T1/T=a*VCC,a是占空比,改动规模为0≤a≤1。VCC为电源电压。

所以当电源电压不变的情况下,输出电压的平均值U取决于占空比a的巨细,改动a的巨细就能够改动输出电压的平均值,这便是PWM的作业原理。选用T2守时器发生PWM脉冲极端准确,差错只在几个us。

上PWM程序

//文件名:T2PWM.c
//功用:用T2守时器发生PWM波,频率实调1khz

//阐明:单片机AT89S52,晶振12MHZ;
//日期:2011年4月6日

#include”reg52.h”

#defineuintunsignedint

#defineucharunsignedchar

sbitPWM = P1^1;

ucharpluse; //占空比寄存器

voidTimer2()interrupt5

{

staticuchartime;

TF2=0;

if(++time==pluse)PWM=0;//到达脉宽设定值时,输出PWM低电平

elseif(time==40) //PWM的频率为1khz左右

{

time=0;

PWM=1;

}

}

voidInitTimer2(void)//初始化函数

{

RCAP2H=0xff;//守时25us初值

RCAP2L=0x0e7;//

ET2=1;

EA=1;

TR2=1;

}

voidmain(void)

{

InitTimer2();

while(1)

{

pluse=20;

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/253996.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部