单片机如何产生PWM
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机产生PWM
1.PWM定义
脉冲宽度调制(PWM)是英文“Pulse Width Modulation”的缩写,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。
脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。
2.PWM控制的基本原理
理论基础:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。冲量指窄脉冲的面积。效果基本相同,是指环节的输出响应波形基本相同。低频段非常接近,仅在高频段略有差异。
图1 形状不同而冲量相同的各种窄脉冲
面积等效原理:
分别将如图1所示的电压窄脉冲加在一阶惯性环节(R-L电路)上,如图2a所示。其输出电流i(t)对不同窄脉冲时的响应波形如图2b所示。从波形可以看出,在i(t)的上升段,i(t)的形状也略有不同,但其下降段则几乎完全相同。脉冲越窄,各i(t)响应波形的差异也越小。如果周期性地施加上述
脉冲,则响应i(t)也是周期性的。用傅里叶级数分解后将可看出,各i(t)在低频段的特性将非常接近,仅在高频段有所不同。
图2冲量相同的各种窄脉冲的响应波形
3. PWM相关概念
占空比:就是输出的PWM中,高电平保持的时间与该PWM的时钟周期的时间之比
如,一PWM的频率是1000Hz,那么它的时钟周期就是1ms,如果高电平出现的时间是200us,那么低电平的时间肯定是800us,那么占空比就是200:1000,也就是说PWM的占空比就是1:5。
分辨率:占空比最小能达到的值,如8位的PWM,理论的分辨率就是1:255(单斜率), 16位的的PWM理论就是1:65535(单斜率)。
频率:如16位的PWM,它的分辨率达到了1:65535,要达到这个分辨率,T/C就必须从0计数到65535才能达到。相对于周期就是65535*计数脉冲时间。
双斜率 / 单斜率:
假设一个PWM从0计数到80,之后又从0计数到80.......这个就是单斜率。
假设一个PWM从0计数到80,之后是从80计数到0.......这个就是双斜率。
可见,双斜率的计数时间多了一倍,所以输出的PWM频率就慢了一半,但是分辨率却是1:(80+80) =1:160,就是提高了一倍。
假设PWM是单斜率,设定最高计数是80,我们再设定一个比较值是10,那么T/C从0计数到10时(这时计数器还是一直往上计数,直到计数到设定值
80),单片机就会根据你的设定,控制某个IO口在这个时候是输出1还是输
出0还是端口取反,这样,就是PWM的最基本的原理了。
4.单片机产生PWM
4.1:单片机控制开关电源方式
单片机控制开关电源,单从对电源输出的控制来说,可以有几种控制方式.
其一是单片机输出一个电压(经DA芯片或PWM方式),用作电源的基准电压.
这种方式仅仅是用单片机代替了原来的基准电压,可以用按键输入电源的输出电压值,单片机并没有加入电源的反馈环,电源电路并没有什么改动.这种方式最简单.
其二是单片机扩展AD,不断检测电源的输出电压,根据电源输出电压与设定值之差,调整DA的输出,控制PWM芯片,间接控制电源的工作.这种方式单片机已加入到电源的反馈环中,代替原来的比较放大环节,单片机的程序要采用比较复杂的PID算法.
其三是单片机扩展AD,不断检测电源的输出电压,根据电源输出电压与设定值之差,输出PWM波,直接控制电源的工作.这种方式单片机介入电源工作最多.
第三种方式是最彻底的单片机控制开关电源,但对单片机的要求也最高.要求单片机运算速度快,而且能够输出足够高频率的PWM波.这样的单片机显然价格也高.
4.2:使用单片机产生PWM
MCS51单片机
假设51单片机晶振频率为12MHz。51单片机内部含有两个16位可编程定时器/计数器,可设置计数器位数16位,13位,8位
计数器位数16,振荡周期12分频后脉冲计数,则计数一次为1us,每个PWM周期为65536us,频率为1*1000000/65536=15Hz。频率太低,导致开关电源严格的电惯性。
计数器位数13,振荡周期12分频后脉冲计数,则计数一次为1us,每个PWM周期为8192us,频率为1*1000000/8192=122Hz。音频范围之内,不可忍受。
计数器位数8,振荡周期12分频后脉冲计数,则计数一次为1us,每个PWM周期为256us,频率为1*1000000/256=3906Hz。音频范围之内,且频率远远低于现阶段开关电源的频率范围。
AVR单片机
AVR单片机采用精简指令集,时钟频率最高为16MHz。
如果PWM分辨率为10位,那么PWM波的频率也就是开关电源的工作频率为16000000/1024=15625(Hz)。在音频范围之内,且开关电源工作在这个频率下显然不够。
取PWM分辨率为9位,这次开关电源的工作频率为16000000/512=32768(Hz),在音频范围外,可以用,但距离现代开关电源的工作频率还有一定距离.
不过必须注意,9位分辨率是说功率管导通-关断这个周期中,可以分成512份,单就导通而言,假定占空比为0.5,则只能分成256份.考虑到脉冲宽度与电源的输出并非线性关系,需要至少再打个对折,也就是说,电源输出最多只能控制到1/128,无论负载变化还是网电源电压变化,控制的程度只能到此为止.
还要注意,上面所述只有一个PWM波,是单端工作.如果要推挽工作(包括半桥),那就需要两个PWM波,上述控制精度还要减半,只能控制到约1/64.对要求不高的电源例如电池充电,可以满足使用要求,但对要求输出精度较高的电源,这就不够了.
综上所述,AVR单片机只能很勉强地使用在直接控制PWM的方式中.
综上,使用单片机产生PWM波形是远远不够的,因此个人觉得单片机参与的开关电源完全可以胜任第二种工作方式,单片机一方面完成开关芯片的PID控制,一方面完成人机接口。