PWM—脉冲宽度调制(PulseWidthModulation),是一种周期一定而高低电平可调的方波信号。当输出脉冲的频率一定时,输出脉冲的占空比越大,相对应的输出有效电压越大。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。
本文引用地址:https://www.eepw.com.cn/article/201612/324609.htm图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;
}
}
评论