单片机必备PWM调速原理,附带程序

单片机必备PWM调速原理,附带程序
2017年11月16日 22:25 一个普通虫子

应广大粉丝要求,今天把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,其他单片机原理都一样,如果上述代码直接复制,如果编译出错,属于字符格式问题,在编译软件上改过来就可以了。

0条评论|0人参与网友评论
最热评论

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部