应广大粉丝要求,今天把PWM调速原理送给大家,大家遇到什么问题可以在评论区提出来,我们可以一块讨论,我也会经常分享一些技术资料,希望大家能够关注支持一下。
PWM对于接触到单片机的同学,对其并不太陌生,一般学完LED之后就会接触到用PWM做一个LED呼吸灯,也是学单片机必备的技能,然而PWM调速在控制技术逆变电路中应用最广,这也决定了PWM的重要地位,废话不多说,先来看下工作原理。
PWM原理
PWM是一种模拟控制方脉冲,利用处理芯片以数字电路形式输出到模拟电路,广泛用于电机调速,通信,功率控制等,在本质上我们调节的PWM的占空比,在非常短的时间(一个周期)内,让IO口输出一段时间高电平,一段时间输出低电平,由于时间非常短,当输出低电平的时候电机还没来得及停止转动,这时候高电平又来了,结果就是电机比正常(占空比为1)转的时候要慢,同理如果让占空比越大电机速度就越快,占空比为1时速度最快,为0时电机停止转动。
如果不好理解的话,就是在非常短的一个时间周期内,有一部分时间让电机转动,另一部分时间电机不转动,根据能量守恒定律,结果肯定是比正常转动的情况下要慢,在实际情况下一般用控制板来控制也就是上一段所说的高电平转动,低电平停止转动,这在数电中是很容易理解的。
PWM常用于电机调速
了解了工作原理之后接下来就是写程序来控制这个占空比,由于要求一个周期需要在很短的时间内完成,而单片机中的定时器可在短时间内精确使用,所以一般会用其来产生PWM
#include
sbit EN=P1^1;
int value=20,PWM=10,i=0;
void timer0()interrupt 1 using 2
{
TH0=0XFC; //1Ms定时
TL0=0X66;
i++;
if(i<=PWM)
EN=1;
if(i>PWM&&I<=value)//占空比为二分之一
EN=0;
if(i>value)
i=0;
}
main()
{
TMOD=0X01;
TH0= 0XFC; //1mS
TL0= 0X66;
TR0= 1;
ET0= 1;
EA = 1; //打开总开关
while(1);
}
注:上述程序适只用于51单片机系列,晶振为11.0592MHZ,其他单片机原理都一样,如果上述代码直接复制,如果编译出错,属于字符格式问题,在编译软件上改过来就可以了。


财经自媒体联盟

4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有