使用PWM控制来实现电压的变化控制
一、简介
PWM就是Pulse Width Modulation,脉冲宽度调制。
假设一个PWM信号,V = +5V,CLK = 13KHz,Duty = 50%,那么它输出的信号就可以看成是一个+2.5V的直流信号。
二、PWM的分辨率
假设(1)芯片自带的PWM模块分辨率为10bit
(2)PWM信号参数为:Voltage = +5V,CLK = 13KHz,Duty = 50%
分析:
(1)PWM模块的分辨率为10bit,那么它的可以分为1024个等级,所以一个周期可以分为1024个刻度。所以说,每一个刻度对应的电压可以是5V的1/1024,即4.88mV左右。所以可以在0-5V区间内,实现4.88mV的步进。
(2)若PWM的时钟为25MHz的话,其输出的PWM信号最高频率可达24.4KHz左右。
计算过程:分辨率为10bit,那么PWM内部的计数cnt最高就从0-1023,而每次计数的间隔周期是1/25MHz,所以得出PWM信号频率为24.4KHz左右。
(3)也就说,在同一个输入时钟情况下,若要到达同一个电压,分辨率越高,所需要的计数cnt就越多,波形就越精细
三、PWM信号转换成直流信号
PWM信号可以使用RC低通滤波器(如下图所示)来实现将PWM信号转换成等效的直流信号。
RC滤波器的截止频率计算公式为f = 1/(2π×RC),也就是-3dB,换算过来为0.707倍,即输入1V,输出0.707V。 衰减增益的计算公式为 X dB = 20×lg(Au)。其中Au为增益。若增益Au为10^(-3/20),换算过来分别就是0.707倍,-3dB。
原理:PWM信号的正周期会对RC滤波电路中的电容充电,而负周期则是电容对外放电。这样,电容随着PWM信号而充电、放电,从而使电容的电压在PWM信号等效的直流信号附近波动。
由于电容C需要充电,而且充电的时间常数为RC,存在充电电阻R,所以电容C无法跟随输入电压的高频部分变换而变换,从而将高频部分滤除掉。
具体来说,就是PWM信号经过傅立叶变换后,2.5V是直流分量,高频分量就被滤除掉了。或者这样理解,就是一个周期内积分的平均值。如下图所示,经过滤波后,直流部分的增益为4dB左右,也就是说,直信号的振幅为10^(4/10)=2.5V。
接下来,我们使用FilterLab软件来模拟一个特定滤波器的增益曲线:
该低通滤波器的截止频率为48.3Hz,对应的增益曲线如上图所示。当频率为13KHz时候,对应的增益为-46dB左右,也就是10^(-46/20) = 0.005倍左右。
也就是说,我们对一个13KHz的PWM信号滤波,使其成为直流信号,使用该参数的低通滤波器是可以的,其纹波信号会衰减到0.005倍。
四、电路模拟
我们用Multisim软件来进行仿真。需要注意的是时间常数τ=RC会影响电容的充电时间,也就是会影响到达稳点电压的时间。
那么,用LTspice软件进行模拟来得到更精细的波形,对滤波后的波形放大来看,可以发现其纹波是比较小的。之所以有纹波,是因为RC滤波器的截止频率不够低,滤不掉所有的噪声。