为了将PWM信号转成直流,需要利用低通滤波器滤除PWM信号中的高次谐波信号。
多阶RC低通滤波是一种比较常用的方法,如下图的二阶RC滤波电路:
2b57645a9a1843819df28413e01f887f~noop.image?_iz=58558&from=article.jpg
用于PWM转直流的二阶RC滤波电路

拉普拉斯变换
单位阶跃信号定义为:
96fecfae17474196ad984e3be7244e4e~noop.image?_iz=58558&from=article.jpg
单位阶跃信号

其拉普拉斯变换定义为:
46ed7238a1eb4b5682686d77cdb77444~noop.image?_iz=58558&from=article.jpg
单位阶跃信号的拉普拉斯变换

如果PWM信号的高电平为VH,当输出高电平时,输出信号的拉普拉斯变换为:
f04d16ec763c4aaea48d69e40d3ccb30.jpg
电容C3,C4在频域下的阻抗分别为 59bbb6e14389444daf11992f2a2ba4d5.jpg 以及 28e7480ea8a745ebb1af612e1ed02088.jpg ,得到频域下的等效电路和参数:
b5ccd663cb1843728ca31c223f5e5a54~noop.image?_iz=58558&from=article.jpg
频率下的电路和参数

Octave符号运算
当输入信号 50ad38a2f97641caaefa990090f841c5.jpg 时,根据频域下的电路,可以计算出电容C4两端的电压。
涉及到分式多项式的运算,运算量大,容易算错。
可以使用Octave的符号运算快速得到结果。
Symbolic符号运算包需要用到Python的SymPy库。
在Octave的命令行窗口,运行pkg install -forge symbolic,下载symbolic符号运算包,
再运行pkg load symbolic,加载symbolic符号运算包。
运行以下脚本:
syms R3 R4 C3 C4 s VHZC4=1/(C4*s);%电容C4的阻抗ZC3=1/(C3*s);%电容C3的阻抗Z1=R4+ZC4;%Z1为R4与C4串联Z2=ZC3*Z1/(ZC3+Z1);%Z2为C3与Z1并联Vo=VH/s*Z2/(Z2+R3)*ZC4/Z1;%C4两端的电压为Z2与R3分压之后,再由C4与R4分压simplify(Vo)%化简符号表达式 8b101cd0f9c24f17a2d5011bdfec1d8c~noop.image?_iz=58558&from=article.jpg
Octave符号运行过程

得到电容C4两端电压Vo(s)为:
0ef66378524741a6a4ae9c05a4020c5c.jpg
e3fb1bd608fd4be5b33c17471a8d02b1.jpg (式1)
拉普拉斯逆变换
假设 45daf64857ce4a4abeb784e07271f98d.jpg 分别为方程
197bcb145df0444eaec72f2a23edeb5b.jpg 的两个根,
则根据韦达定理,有:
ab0e575bd07d4cb3b99680433da39a76.jpg
1ac7eb95f98f4b998c8d7f53b626aea1.jpg
06b906df2b214e46b118062c4d337580.jpg 可以表示为:
59d8d56b8f5943dfb144b666a9a60ba1.jpg
对于形如 83e72fe787dc499a9e079b5717e6680d.jpg 的多项式,
可以转换为:
c8b3534c503247508411d1f698eb009c.jpg
左右两边同时乘以s,得到,
931f10650044464a8b1d173c89e385a0.jpg
在上式中,令s=0,得到:
8f8ce1fb780d478ca1c40d0ef7aa156a.jpg
左右两边同时乘以 015a2a005b254e5b9308d56be68b0fc9.jpg 之后,令 75487b1d2b6f404c909f175c0f9f8428.jpg ,得到:
0001374419444b06a9136367f425ae76.jpg
同样得到,
542e8ac977984c69b19fd5603c2cad38.jpg
所以,
565c567a71284fa0813b44ba73872740.jpg f591f1b74b7a4efd815204d71ffb803f.jpg
根据拉普拉斯的逆变换,
863732927445443880c2e30ed29ecfc0~noop.image?_iz=58558&from=article.jpg
常见的拉普拉斯变换对

得到,C4两端的电压在时域的表达式为:
00fb1414ba4f48f8b7b808b74923792e.jpg (式2)
PWM输出直流的纹波分析
当R3=R4=10kΩ,C3=C4=1uF时,
45daf64857ce4a4abeb784e07271f98d.jpg 分别是以下方程的两个根,
7ebf156e0d40418d9788b914aa7ffd92.jpg 的两个根,
根据求根公式,得到,
afb2246bad054522a8796012c7464eb3.jpg 的两个根,
假设 b71008211eef4b52ad05a690965daf6e.jpg
当PWM的频率为800Hz时,占空比为100%时,充电的最长时间为1.25ms,
此时, eff2af07911c47d0a25b56bab01ad516.jpg 最大为-38.2*1.25ms=-0.04775<1,
7757ea167d054eab8a8b122a15509bd5.jpg 最大为-261.8*1.25ms=-0.32725<1,
02f7876af1264194989737fcc1725e4a~noop.image?_iz=58558&from=article.jpg
常见函数的泰勒公式展开

将函数 cd34a72b36814c2eb961ca3c9403c1cf.jpg 22d207ffddad431a8f684a46db3d8d7a.jpg 用泰勒公式展开,并保留至第二项;
得到:
b6324d566f9945c28acd505f193c2cb7.jpg
e870478d6e4e4836a6bb71597ee56a73.jpg
代入式2,得到:
7ed6bdfbeddb4328a1242c7f46e7a80c.jpg (式3)
当考虑PWM输出一段时间之后,PWM在切换到高电平的瞬间,电容C4已经有一定的电压U0,则式1应该加到电容C4的初始电压,再经过拉普拉斯逆变换,得到,
cadd214d638040cd85b0d33ab85795b7.jpg --对于电容初始电压不为0的情况,此处分析有误,在另一篇文章的再做详细分析。
999e6c1f048d49b9b9f2f2a7681ae286~noop.image?_iz=58558&from=article.jpg
充电波形

当高电平为5V,占空比为50%时,纹波大小为:
01112a36a5a84d4f945548612c6a10e7.jpg 24ffb261969b4c1e88bd7f39bb4a7c06.jpg
34354d3108a94dbb8fd32f78b340e8f2.jpg


来源:物联网全栈开发