预备知识
首先,我们先回顾一下,周期信号傅里叶级数展开,三角傅里叶级数展开的展开式如下:
f
(
t
)
=
a
0
2
+
a
1
cos
(
w
t
)
+
b
1
sin
(
w
t
)
+
a
2
cos
(
2
w
t
)
+
b
2
sin
(
2
w
t
)
+
⋯
+
a
n
cos
(
k
w
t
)
+
b
n
sin
(
k
w
t
)
f(t) = \frac{a_0}{2}+a_1\cos(wt)+b_1\sin(wt)+a_2\cos(2wt)+b_2\sin(2wt)+\cdots+a_n\cos(kwt)+b_n\sin(kwt)
f(t)=2a0+a1cos(wt)+b1sin(wt)+a2cos(2wt)+b2sin(2wt)+⋯+ancos(kwt)+bnsin(kwt)
简写为,
f
(
t
)
=
a
0
2
+
∑
k
=
1
∞
a
k
cos
(
k
w
t
)
+
b
k
sin
(
k
w
t
)
f(t)=\frac{a_0}{2}+\sum^{\infty}_{k=1}a_k\cos(kwt)+b_k\sin(kwt)
f(t)=2a0+k=1∑∞akcos(kwt)+bksin(kwt)
其中 T T T为周期, k k k为谐波次数, w = 2 π T w=\frac{2\pi}{T} w=T2π为角频率。
展开式中的傅里叶系数如下:
{
a
0
=
2
T
∫
t
0
t
0
+
T
f
(
t
)
d
t
a
k
=
2
T
∫
t
0
t
0
+
T
f
(
t
)
cos
(
k
w
t
)
d
t
b
k
=
2
T
∫
t
0
t
0
+
T
f
(
t
)
sin
(
k
w
t
)
d
t
\begin{cases} a_0=\frac{2}{T}\int_{t_0}^{t_0+T}{f(t)} \,{\rm d}t\\ a_k=\frac{2}{T}\int_{t_0}^{t_0+T}{f(t)\cos(kwt)} \,{\rm d}t\\ b_k=\frac{2}{T}\int_{t_0}^{t_0+T}{f(t)\sin(kwt)} \,{\rm d}t\\ \end{cases}
⎩⎪⎨⎪⎧a0=T2∫t0t0+Tf(t)dtak=T2∫t0t0+Tf(t)cos(kwt)dtbk=T2∫t0t0+Tf(t)sin(kwt)dt
奇函数和偶函数的傅里叶级数可以做一下简化,这里直接给出结论,下面的推导中会用到。
1.函数为奇函数,那么傅里叶系数 a 0 = 0 a_0=0 a0=0, a k = 0 a_k=0 ak=0,傅里叶级数展开式即为 f ( t ) = a 0 2 + ∑ k = 1 ∞ b k sin ( k w t ) f(t)=\frac{a_0}{2}+\sum^{\infty}_{k=1}b_k\sin(kwt) f(t)=2a0+∑k=1∞bksin(kwt),也称为正弦级数;
2.函数为偶函数,那么傅里叶系数 b k = 0 b_k=0 bk=0,傅里叶级数展开式即为 f ( t ) = a 0 2 + ∑ k = 1 ∞ a k cos ( k w t ) f(t)=\frac{a_0}{2}+\sum^{\infty}_{k=1}a_k\cos(kwt) f(t)=2a0+∑k=1∞akcos(kwt),也称为余弦级数。
矩形波做傅里叶级数展开
现在我们要对任意占空比的PWM波做傅里叶级数展开,先把PWM写成分段函数的形式,
x
(
t
)
=
{
V
H
k
N
≤
t
≤
n
T
+
k
N
T
V
L
k
N
+
n
T
≤
t
≤
N
T
+
k
N
T
x(t) = \begin{cases} V_H & kN \leq t \leq nT+kNT \\ V_L & kN+nT \leq t \leq NT+kNT \\ \end{cases}
x(t)={VHVLkN≤t≤nT+kNTkN+nT≤t≤NT+kNT
其中k为谐波次数,高电平电压记为
V
H
V_H
VH,低电平记为
V
L
V_L
VL,n高电平寄存器计数值,N周期寄存器计数值,则有占空比
D
=
n
N
D=\frac{n}{N}
D=Nn,
这里把PWM矩形波作为偶函数分析,用一下上一节提到的奇偶函数的性质,则有,
a
k
=
2
T
∫
−
D
T
/
2
D
T
/
2
x
(
t
)
cos
(
k
w
t
)
d
t
a_k=\frac{2}{T}\int_{-DT/2}^{DT/2}{x(t)\cos(kwt)} \,{\rm d}t
ak=T2∫−DT/2DT/2x(t)cos(kwt)dt
化简可得,
a
k
=
4
T
(
V
H
−
V
L
)
∫
0
D
T
/
2
cos
(
k
w
t
)
d
t
=
4
T
(
V
H
−
V
L
)
T
2
π
k
sin
(
k
2
π
D
T
)
∣
0
D
T
/
2
=
2
(
V
H
−
V
L
)
k
π
sin
(
k
D
π
)
a_k=\frac{4}{T}(V_H-V_L)\int_{0}^{DT/2}{\cos(kwt)} \,{\rm d}t=\left. \frac{4}{T}(V_H-V_L)\frac{T}{2\pi k}\sin(k\frac{2\pi D}{T}) \right| _{0}^{DT/2}=\frac{2(V_H-V_L)}{k\pi}\sin(kD\pi)
ak=T4(VH−VL)∫0DT/2cos(kwt)dt=T4(VH−VL)2πkTsin(kT2πD)∣∣∣∣0DT/2=kπ2(VH−VL)sin(kDπ)
上式带入可得三角傅里叶级数展开式,
f
(
t
)
=
[
D
(
V
H
−
V
L
)
]
+
2
V
H
−
V
L
π
sin
(
n
N
π
)
cos
(
2
π
T
t
)
+
2
V
H
−
V
L
k
π
∑
k
=
2
∞
sin
(
k
n
π
N
)
cos
(
k
2
π
T
t
)
f(t)=[D(V_H-V_L)]+2\frac{V_H-V_L}{\pi}\sin(\frac{n}{N}\pi)\cos(\frac{2\pi}{T}t)+2\frac{V_H-V_L}{k\pi}\sum^{\infty}_{k=2}{\sin(k\frac{n\pi}{N})\cos(k\frac{2\pi}{T}t)}
f(t)=[D(VH−VL)]+2πVH−VLsin(Nnπ)cos(T2πt)+2kπVH−VLk=2∑∞sin(kNnπ)cos(kT2πt)
第一项, [ D ( V H − V L ) ] [D(V_H-V_L)] [D(VH−VL)]为直流分量;
第二项, 2 V H − V L π sin ( n N π ) cos ( 2 π T t ) 2\frac{V_H-V_L}{\pi}\sin(\frac{n}{N}\pi)\cos(\frac{2\pi}{T}t) 2πVH−VLsin(Nnπ)cos(T2πt)为基波分量(也叫一次谐波分量),可得到基波频率 f = 1 T f=\frac{1}{T} f=T1,就是PWM矩形波的频率;
第三项, 2 V H − V L k π ∑ k = 2 ∞ sin ( k n π N ) cos ( k 2 π T t ) 2\frac{V_H-V_L}{k\pi}\sum^{\infty}_{k=2}{\sin(k\frac{n\pi}{N})\cos(k\frac{2\pi}{T}t)} 2kπVH−VL∑k=2∞sin(kNnπ)cos(kT2πt)为高次谐波分量,各次谐波频率 f = k T f=\frac{k}{T} f=Tk,由此可见高次谐波频率都是基波的整数倍。
有了上面推导分析,我们可以很容易的知道,第一项的直流分量是随着占空比 D D D线性变化的,如果我们要用PWM波当做DAC使用,那么我们只需要通过低通滤波器滤掉谐波分量就可实现了。
滤波器设计
既然只要保留直流分量,设计一个RC低通滤波器就可以了。那么怎么知道滤波器的设计参数呢?
首先我们计算一下DAC的分辨率,分辨率与周期寄存器计数值N有关,这里假设N=1024,根据下面公式计算可得分辨率为10位。
分
辨
率
=
log
2
N
=
log
2
1024
=
10
分辨率=\log _2 N=\log _2 1024=10
分辨率=log2N=log21024=10
在10位分辨率条件下,我们要求一次谐波对输出电压的影响不要超过1个位的精度,即有
3.3
/
1024
=
0.0032
V
3.3/1024=0.0032V
3.3/1024=0.0032V。
这里我们假设使用的是 3.3 V 3.3V 3.3V系统, V H = 3.3 V V_H=3.3V VH=3.3V, V L = 0 V V_L=0V VL=0V,那么一次谐波的最大值为 2 ∗ 3.3 / π = 2.1 V 2*3.3/\pi=2.1V 2∗3.3/π=2.1V,就可以计算出RC滤波电路至少需要提供 − 20 l g ( 2.1 / 0.0032 ) = − 56 d B -20lg(2.1/0.0032)=-56dB −20lg(2.1/0.0032)=−56dB的衰减。
每衰减 20 d B 20dB 20dB,频率下降10倍,那么就可以计算出截止频率的下限为 f c = f p w m / 1 0 56 20 f_c=f_{pwm}/10^{\frac{56}{20}} fc=fpwm/102056,假设 f p w m = 8 K H z f_{pwm}=8KHz fpwm=8KHz,则有 f c = 8000 / 630.96 = 12.679 H z f_c=8000/630.96=12.679Hz fc=8000/630.96=12.679Hz
有了截止频率下限,根据截止频率公式,
f
c
=
1
2
π
τ
f_c=\frac{1}{2\pi\tau}
fc=2πτ1
τ = R C = 1 2 π f c \tau=RC=\frac{1}{2\pi f_c} τ=RC=2πfc1
就可以计算出RC时间常数 τ \tau τ,然后选择合适的 R C RC RC参数完成滤波器设计。
关于RC低通滤波截止频率公式推导过程可以看另外一篇文章,RC低通滤波器截止频率公式推导。