PWM(Pulse Width Modulation)即脉冲宽度调制。如下图所示,方波的周期T=20ms,方波的高电平持续时间为t。T不变的情况下,调整t时长,即为PWM,其中t/T的值称作占空比。

使用定时器产生1ms的定时,变量pwm每1ms增加1。当pwm小于duty时ENA输出高电平,ENA高电平持续时间为duty;当pwm大于duty时ENA输出低电平,ENA低电平持续时间为20-duty;当pwm大于20时,pwm归0。程序中的duty就是上图中的t,控制占空比;程序中的20就是上图中的T,控制方波周期。
void main()
{
TMOD=0X01;
TH0= 0XFC; //1ms定时初值
TL0= 0X18;
TR0= 1;
ET0= 1;
EA=1;
duty=5;
…}
void timer0() interrupt 1
{
TH0=0XFC;
TL0=0X18;
pwm++;
if(pwm<=duty)
{
ENA=1;
} else
{
ENA=0;
}
if(pwm>=20)
{
pwm=0;
}
}3、电机调速如果ENA=1时电机工作,ENA=0时电机不工作,电机工作的时间为duty,调整duty的值就可以调整一个周期内电机工作的时长。一个周期内,电机工作时间占比越高,电机的平均转速也就越快。
转载自网络,如有侵权,联系删除。
我要赚赏金
