PIC单片机之PWM原理分析
2020-02-25 来源:elecfans
1、什么是PWM
什么是PWM,专业点说脉宽调制,通俗点说 就是不断的输出高低电平。 比如 单片机 40ms的时间 输出高电平然后60ms的时间 输出低电平接着一直不断周期性的交替输出高低电平 这就是典型的PWM波。高电平输出的时间40ms就是传说中的脉宽,40ms+60ms=100ms 便是PWM的周期。假定我们把周期定为100ms.我们可以根据我们的需要 把高电平的时间加大或者减小,比如 高电平输出时间加大为80ms.那么低电平的时间就变为20ms. 也可以 高电平输出时间减小为20ms.那么低电平的时间就变为80ms.这即是脉宽调制 调的便是这高电平的时间。 而高电平(脉宽)在周期中,所占用的时间比例 就被称为占空比。用数学公式表示 高电平的时间/周期的时间=占空比。
2、PWM的实现方式
我们如何让单片机输出PWM波。有两种方式 一种是直接用I/O输出,另一种方式利用模块。
2.1利用I/O口输出PWM
如果你的单片机没有带有PWM输出功能模块,那么你可以自己写个程序输出PWM波。因为PWM不就是高低电平。一个I/O在加上一个定时器,对于任何单片机来说都是很容易做到的。
2.2利用模块输出PWM
对于PIC单片机而言就带有输出PWM的功能模块。利用模块输出PWM其实比利用I/O输出PWM更加简单便捷精确。
3、PWM控制的基本原理
理论基础:
冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。冲量指窄脉冲的面积。效果基本相同,是指环节的输出响应波形基本相同。低频段非常接近,仅在高频段略有差异。
图1形状不同而冲量相同的各种窄脉冲
面积等效原理:
分别将如图1所示的电压窄脉冲加在一阶惯性环节(R-L电路)上,如图2a所示。其输出电流i(t)对不同窄脉冲时的响应波形如图2b所示。从波形可以看出,在i(t)的上升段,i(t)的形状也略有不同,但其下降段则几乎完全相同。脉冲越窄,各i(t)响应波形的差异也越小。如果周期性地施加上述脉冲,则响应i(t)也是周期性的。用傅里叶级数分解后将可看出,各i(t)在低频段的特性将非常接近,仅在高频段有所不同。
图2冲量相同的各种窄脉冲的响应波形
用一系列等幅不等宽的脉冲来代替一个正弦半波,正弦半波N等分,看成N个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。
SPWM波形——脉冲宽度按正弦规律变化而和正弦波等效的PWM波形。
图3用PWM波代替正弦半波
4、PWM工作原理分析
脉冲宽度调制波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例。下图所示为脉冲宽度调制系统的原理框图和波形图。该系统有一个比较器和一个周期为Ts的锯齿波发生器组成。语音信号如果大于锯齿波信号,比较器输出正常数A,否则输出0。因此,从图中可以看出,比较器输出一列下降沿调制的脉冲宽度调制波。
通过图b的分析可以看出,生成的矩形脉冲的宽度取决于脉冲下降沿时刻t k时的语音信号幅度值。因而,采样值之间的时间间隔是非均匀的。在系统的输入端插入一个采样保持电路可以得到均匀的采样信号,但是对于实际中tk-kTs《 《的情况,均匀采样和非均匀采样差异非常小。如果假定采样为均匀采样,第k个矩形脉冲可以表示为:
其中,x{t}是离散化的语音信号;Ts是采样周期; 是未调制宽度;m是调制指数。
然而,如果对矩形脉冲作如下近似:脉冲幅度为A,中心在t = k Ts处, 在相邻脉冲间变化缓慢,则脉冲宽度调制波xp(t)可以表示为:
其中, 。无需作频谱分析,由式(2)可以看出脉冲宽度信号由语音信号x(t)加上一个直流成分以及相位调制波构成。当时,相位调制部分引起的信号交迭可以忽略,因此,脉冲宽度调制波可以直接通过低通滤波器进行解调。
5、PWM的优点
PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。
对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。
总之,PWM既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术。
6、PWM的作用
PWM能用来做什么?PWM比较典型的应用就是对LED调光和电机调速。那PWM是如何进行调光和调速的呢,其实也很好理解。以给LED调光为例。给LED一直通电LED是最亮的。不给LED断电LED是不亮的。那要是在极短的时间内给LED不断的通电断电。那给人眼的感觉就是LED虽然是亮的,但亮度较低。
如果单片机高平输出时LED是亮的。那么在PWM波中高电平输出的时间越长LED就越亮,反之则越暗。
7、PIC单片机学习之PWM信号输出
实现功能:通过键盘(BUTTON)控制蜂鸣器发生,键盘按下,通过RC2/CCP1接口输出PWM信号(频率880Hz,脉宽50)驱动蜂鸣器发声。
实验环境:Proteus
编程语言:汇编
编程环境:MPLAB
单片机:PIC16F877
晶振:20MHz
Proteus仿真电路如下图:
实验源程序:
LIST P=16F877
;设置pwm为880Hz,50%占空比 INCLUDE P16F877.INC
ORG
0000H
START BANKSEL TRISC;进入TRISC所在BANK BCF
TRISC,2;清零TRIC的bit2,以使CCP1引脚成为输出
MOVLW D‘70’
MOVWF PR2;将70写入PR2以设置PWM周期
BANKSEL CCPR1L
MOVLW D‘35’
MOVWF CCPR1L
MOVLW 0X06
MOVWF T2CON;bit2=1,使能TImer2,bit1-1,预分频值为16
CHECKBUTTON BTFSC PORTA,4
GOTO
BUTTONOFF
BUTTONON MOVLW H‘0C’
MOVWF CCP1CON;设置CCP1为PWM模式
GOTO
CHECKBUTTON
BUTTONOFF
CLRF CCP1CON
GOTO CHECKBUTTON
END