rilyのアイコン画像
rily 2026年05月15日作成 (2026年05月19日更新)
セットアップや使用方法 セットアップや使用方法 閲覧数 86
rily 2026年05月15日作成 (2026年05月19日更新) セットアップや使用方法 セットアップや使用方法 閲覧数 86

PWM信号をフーリエ展開してみる

様々な波形を三角関数で近似できるフーリエ変換ですが、周波数成分や直流成分などを可視化することが可能になります。今回はただただPWM信号のフーリエ展開をするだけの記事になります。

いざフーリエ展開

さてフーリエ級数F(θ)は

F(θ)=12α0+n=0βnsin(2πnθTθ)+αncos(2πnθTθ){F(\theta)=\frac{1}{2}\alpha_0+\sum_{n=0}^\infty \beta_n \sin(\frac{2\pi n\theta}{T_{\theta}})+\alpha_n \cos(\frac{2\pi n\theta}{T_{\theta}})}

そして各フーリエ係数は

α0=2TθTθf(θ)dθ{\alpha_0=\frac{2}{T_{\theta}}\int_{T_{\theta}}f(\theta)d\theta}

βn=2TθTθf(θ)sin(2πnθTθ)dθ{\beta_n=\frac{2}{T_{\theta}}\int_{T_{\theta}}f(\theta)\sin(\frac{2\pi n\theta}{T_{\theta}})d\theta}

αn=2TθTθf(θ)cos(2πnθTθ)dθ{\alpha_n=\frac{2}{T_{\theta}}\int_{T_{\theta}}f(\theta)\cos(\frac{2\pi n\theta}{T_{\theta}})d\theta}

と定義しておきますね。

今回展開する波形がこちら
PWM波形
こんな感じの波形とします。周期Tθ=2πですね。ちなみにデューティ比Dを絡めると、θ'=2πDになります。
ではα0を求めます。

α0=2TθTθf(θ)dθ=22π(0θvdθ+θ2π0dθ)=vθπ{\alpha_0=\frac{2}{T_{\theta}}\int_{T_{\theta}}f(\theta)d\theta=\frac{2}{2\pi}(\int_0^{\theta'}vd\theta+\int_{\theta'}^{2\pi}0d\theta)=\frac{v\theta'}{\pi}}

積分区間のうち[θ'→2π]の区間は0ですね。なので以降のβnとαnでも飛ばします。
続いてβnを求めます。

βn=2TθTθf(θ)sin(2πnθTθ)dθ=22π0θvsin(2πnθ2π)dθ=vπn[cos(nθ)]0θ=vπn(1cos(nθ)){\beta_n=\frac{2}{T_{\theta}}\int_{T_{\theta}}f(\theta)\sin(\frac{2\pi n\theta}{T_{\theta}})d\theta=\frac{2}{2\pi}\int_0^{\theta'}v\sin(\frac{2\pi n \theta}{2\pi})d\theta=-\frac{v}{\pi n}[\cos(n\theta)]_0^{\theta'}=\frac{v}{\pi n}(1-\cos(n\theta'))}

βn=vπn(1cos(nθ)){\beta_n=\frac{v}{\pi n}(1-\cos(n\theta'))}

次にαnを求めます。

αn=2TθTθf(θ)cos(2πnθTθ)dθ=22π0θvcos(2πnθ2π)dθ=vπn[sin(nθ)]0θ=vπnsin(nθ){\alpha_n=\frac{2}{T_{\theta}}\int_{T_{\theta}}f(\theta)\cos(\frac{2\pi n\theta}{T_{\theta}})d\theta=\frac{2}{2\pi}\int_0^{\theta'}v\cos(\frac{2\pi n \theta}{2\pi})d\theta=\frac{v}{\pi n}[\sin(n\theta)]_0^{\theta'}=\frac{v}{\pi n}\sin(n\theta')}

αn=vπnsin(nθ){\alpha_n=\frac{v}{\pi n}\sin(n\theta')}

次にフーリエ級数の式に当てはめます。

F(θ)=12α0+n=0βnsin(2πnθTθ)+αncos(2πnθTθ)=vθ2π+vπn=01n((1cos(nθ))sin(2πnθ2π)+sin(nθ)cos(2πnθ2π)){F(\theta)=\frac{1}{2}\alpha_0+\sum_{n=0}^\infty \beta_n \sin(\frac{2\pi n\theta}{T_{\theta}})+\alpha_n \cos(\frac{2\pi n\theta}{T_{\theta}})=\frac{v\theta'}{2\pi}+\frac{v}{\pi}\sum_{n=0}^\infty \frac{1}{n}((1-\cos(n\theta'))\sin(\frac{2\pi n\theta}{2\pi})+\sin(n\theta')\cos(\frac{2\pi n\theta}{2\pi}))}

F(θ)=v{θ2π+1πn=01n((1cos(nθ))sin(2πnθ2π)+sin(nθ)cos(2πnθ2π))}{F(\theta)=v\{\frac{\theta'}{2\pi}+\frac{1}{\pi}\sum_{n=0}^\infty \frac{1}{n}((1-\cos(n\theta'))\sin(\frac{2\pi n\theta}{2\pi})+\sin(n\theta')\cos(\frac{2\pi n\theta}{2\pi}))\}}

ここで位相φは

ϕ=tan1(αnβn)=tan1(sin(nθ)1cos(nθ)){\phi=\tan^{-1}(\frac{\alpha_n}{\beta_n})=\tan^{-1}(\frac{\sin(n\theta')}{1-\cos(n\theta')})}

う〜ん...三角比が発散したり不定形になる可能性があるので注意ですね。。。
さらに

(βn)2+(αn)2=vπn(1cos(nθ))2+sin2(nθ)=vπn2(1cos(nθ)){\sqrt{(\beta_n)^2+(\alpha_n)^2}=\frac{v}{\pi n}\sqrt{(1-\cos(n\theta'))^2+\sin^2(n\theta')}=\frac{v}{\pi n}\sqrt{2(1-\cos(n\theta'))}}

つまり

F(θ)=v{θ2π+1πn=12(1cos(nθ))nsin(nθ+ϕ)}{F(\theta)=v\{\frac{\theta'}{2\pi}+\frac{1}{\pi}\sum_{n=1}^\infty \frac{\sqrt{2(1-\cos(n\theta'))}}{n}\sin(n\theta+\phi)\}}

ϕ=tan1(sin(nθ)1cos(nθ)){\phi=\tan^{-1}(\frac{\sin(n\theta')}{1-\cos(n\theta')})}

となりました。位相がわかりやすくなりましたね!もう一度言いますが、位相成分の三角比が無限大に発散したり不定形になることがあるので要注意です。
さてこれを時間空間上のtの関数V(t)にしてあげましょう。

θ=2πfct{\theta=2\pi f_ct}

θ=2πfcTcD=2πD{\theta'=2\pi f_cT_cD=2\pi D}

つまり

V(t)=v{2πD2π+1πn=12(1cos(2πDn))nsin(2πfcn+ϕ)}=v{D+1πn=12(1cos(2πDn))nsin(2πfcn+ϕ)}{V(t)=v\{\frac{2\pi D}{2\pi}+\frac{1}{\pi}\sum_{n=1}^\infty \frac{\sqrt{2(1-\cos(2\pi Dn))}}{n}\sin(2\pi f_cn+\phi)\}=v\{D+\frac{1}{\pi}\sum_{n=1}^\infty \frac{\sqrt{2(1-\cos(2\pi Dn))}}{n}\sin(2\pi f_cn+\phi)\}}

V(t)=v{D+1πn=12(1cos(2πDn))nsin(2πfcn+ϕ)}{V(t)=v\{D+\frac{1}{\pi}\sum_{n=1}^\infty \frac{\sqrt{2(1-\cos(2\pi Dn))}}{n}\sin(2\pi f_cn+\phi)\}}

ϕ=tan1(sin(2πDn)1cos(2πDn)){\phi=\tan^{-1}(\frac{\sin(2\pi Dn)}{1-\cos(2\pi Dn)})}

位相Φがわかりやすい形に整理できましたね。再度再度言いますが、位相成分の三角比が無限大に発散したり不定形になることがあるので要注意です。
そしてこのV(t)から第二項目以降を取り除いた直流項V0は

V0(D)=vD{V_0(D)=vD}

のよく見る形になりましたね。つまりフィルターで交流成分をカットオフすれば、元の直流電圧vをデューティ比Dで可変できるというわけですね。

三角比が発散したり不定形になったときの位相

何度も位相の三角比が発散や不定形になると言いましたね。
例えばnθ'=2πのときは

ϕ=tan1(sin(2π)1cos(2π))=tan1(00){\phi=\tan^{-1}(\frac{\sin(2\pi)}{1-\cos(2\pi)})=\tan^{-1}(\frac{0}{0})}

0/0は不定形なので、ロピタルの定理を使って分母分子を微分の上で数式を無理やりしばきます。

ddθsin(θ)ddθ(1cos(θ))=cos(θ)sin(θ){\frac{\frac{d}{d\theta}\sin(\theta)}{\frac{d}{d\theta}(1-\cos(\theta))}=\frac{\cos(\theta)}{\sin(\theta)}}

つまり

ϕ=tan1(sin(2π)1cos(2π))tan1(cos(2π)sin(2π))=tan1()=π2{\phi=\tan^{-1}(\frac{\sin(2\pi)}{1-\cos(2\pi)})\to \tan^{-1} (\frac{\cos(2\pi)}{\sin(2\pi)})=\tan^{-1}(\infty)=\frac{\pi}{2}}

極限を使わず手荒に計算しましたが、arctanの値域は(-2/π)から(2/π)なので無限大に飛ばすとこのような結果になります。

さらに整理(位相がわかりにくくなります)

先程、無限大に発散しちゃう問題がありましたので、、、整理しつつ表記を変えてみますね。

F(θ)=v{θ2π+1πn=11n(sin(nθ)cos(nθ)sin(nθ)+sin(nθ)cos(nθ))}{F(\theta)=v\{\frac{\theta'}{2\pi}+\frac{1}{\pi}\sum_{n=1}^\infty \frac{1}{n}(\sin(n\theta)-\cos(n\theta')\sin(n\theta)+\sin(n\theta')\cos(n\theta))\}}

ここで三角関数の積の公式より

sin(x)cos(y)=12(sin(x+y)+sin(xy)){\sin(x)\cos(y)=\frac{1}{2}(\sin(x+y)+\sin(x-y))}

またsinは奇関数なのでsin(-x)=-sin(x)が成り立つので

sin(x)cos(y)=12(sin(x+y)+sin(xy))=12(sin(x+y)sin(yx)){\sin(x)\cos(y)=\frac{1}{2}(\sin(x+y)+\sin(x-y))=\frac{1}{2}(\sin(x+y)-\sin(y-x))}

となります。そして

cos(nθ)sin(nθ)=12(sin(n(θ+θ))+sin(n(θθ))){-\cos(n\theta')\sin(n\theta)=-\frac{1}{2}(\sin(n(\theta+\theta'))+\sin(n(\theta-\theta')))}

sin(nθ)cos(nθ)=12(sin(n(θ+θ))sin(n(θθ))){\sin(n\theta')\cos(n\theta)=\frac{1}{2}(\sin(n(\theta+\theta'))-\sin(n(\theta-\theta')))}

つまり

cos(nθ)sin(nθ)+sin(nθ)cos(nθ)=sin(n(θθ)){-\cos(n\theta')\sin(n\theta)+\sin(n\theta')\cos(n\theta)=-\sin(n(\theta-\theta'))}

なので

v{θ2π+1πn=11n(sin(nθ)cos(nθ)sin(nθ)+sin(nθ)cos(nθ))}=v{θ2π+1πn=11n(sin(nθ)sin(n(θθ)))}{v\{\frac{\theta'}{2\pi}+\frac{1}{\pi}\sum_{n=1}^\infty \frac{1}{n}(\sin(n\theta)-\cos(n\theta')\sin(n\theta)+\sin(n\theta')\cos(n\theta))\}=v\{\frac{\theta'}{2\pi}+\frac{1}{\pi}\sum_{n=1}^\infty \frac{1}{n}(\sin(n\theta)-\sin(n(\theta-\theta')))\}}

F(θ)=v{θ2π+1πn=11n(sin(nθ)sin(n(θθ)))}{F(\theta)=v\{\frac{\theta'}{2\pi}+\frac{1}{\pi}\sum_{n=1}^\infty \frac{1}{n}(\sin(n\theta)-\sin(n(\theta-\theta')))\}}

となりましたとさ、ちゃんちゃん。これじゃ位相が分からないですね。

式の検証

念の為導出したF(θ)が合っているのかwolframalphaで検証しましょう。
といってもそのままの式では使えないので

θ=π40.785{\theta'=\frac{\pi}{4}\simeq 0.785}

v=1{v=1}

とおいて

18+1πn=1401n(sin(nθ)sin(n(θπ4))){\frac{1}{8}+\frac{1}{\pi}\sum_{n=1}^{40} \frac{1}{n}(\sin(n\theta)-\sin(n(\theta-\frac{\pi}{4})))}

40次近似で計算してみます。
出力波形
いい感じじゃないですか〜

1
rilyのアイコン画像
直感でアナログ回路を主体に設計してま〜す。 作った回路,プログラム等が正しく動く補償はできないのでご注意を
  • rily さんが 前の金曜日の19:26 に 編集 をしました。 (メッセージ: 初版)
  • rily さんが 前の金曜日の19:31 に 編集 をしました。
  • rily さんが 前の金曜日の21:11 に 編集 をしました。
  • rily さんが 前の金曜日の21:14 に 編集 をしました。
  • rily さんが 前の金曜日の21:19 に 編集 をしました。
  • rily さんが 前の金曜日の21:30 に 編集 をしました。
  • rily さんが 前の日曜日の1:58 に 編集 をしました。
  • rily さんが 前の日曜日の2:02 に 編集 をしました。
  • rily さんが 前の日曜日の2:05 に 編集 をしました。
  • rily さんが 前の日曜日の11:29 に 編集 をしました。
  • rily さんが 前の日曜日の11:38 に 編集 をしました。
  • rily さんが 前の日曜日の12:07 に 編集 をしました。
  • rily さんが 前の火曜日の11:02 に 編集 をしました。
  • rily さんが 前の火曜日の11:03 に 編集 をしました。
ログインしてコメントを投稿する