PWM—脈沖寬度調(diào)制(PulseWidthModulation),是一種周期一定而高低電平可調(diào)的方波信號。當輸出脈沖的頻率一定時,輸出脈沖的占空比越大,相對應的輸出有效電壓越大。PWM可以應用在許多方面,如電機調(diào)速、溫度控制、壓力控制等。
本文引用地址:http://m.butianyuan.cn/article/201612/324609.htm圖1PWM波示意圖
如上圖所示T1為脈沖寬度(就是導通時間),周期為T,則輸出電壓的平均值為U=VCC*T1/T=a*VCC,a是占空比,變化范圍為0≤a≤1。VCC為電源電壓。
所以當電源電壓不變的情況下,輸出電壓的平均值U取決于占空比a的大小,改變a的大小就可以改變輸出電壓的平均值,這就是PWM的工作原理。采用T2定時器產(chǎn)生PWM脈沖極其精確,誤差只在幾個us。
上PWM程序
//文件名:T2PWM.c
//功能:用T2定時器產(chǎn)生PWM波,頻率實調(diào)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;//達到脈寬設(shè)定值時,輸出PWM低電平
elseif(time==40) //PWM的頻率為1khz左右
{
time=0;
PWM=1;
}
}
voidInitTimer2(void)//初始化函數(shù)
{
RCAP2H=0xff;//定時25us初值
RCAP2L=0x0e7;//
ET2=1;
EA=1;
TR2=1;
}
voidmain(void)
{
InitTimer2();
while(1)
{
pluse=20;
}
}
評論