工学技術

【Python】【ローパスフィルタ(LPF)】Python controlを使った制御シミュレーション【PID制御の基礎】

スポンサーリンク

PID制御の基礎をPythonのライブラリの一種であるcontrolを使って勉強しましょう。

今回は、主にノイズ除去などに用いられる低周波信号だけを通過させるフィルタであるローパスフィルタ(Low Pass Filter:LPF)について説明していきます。

ローパスフィルタ(LPF)とは?

ローパスフィルタ(Low Pass Filter)とは低周波信号(Low)だけを通過(Pass)させるフィルタ(Filter)のことです。

主に入力信号のノイズを除去する前処理として使われます。

センサなどから入力される信号には基本的にノイズが含まれています

コントローラで制御する際にはノイズ成分を除去(前処理)して制御処理演算を実施することになります。

使用したpythonライブラリ

今回は以下のpythonライブラリを使用しました。

  • control
  • matplotlib
  • numpy
  • scipy

python controlを使ってローパスフィルタの動作を確認

python controlを使ってローパスフィルタのボード線図を描画

まずはローパスフィルタのボード線図(伝達特性)を描画してみましょう。

ローパスフィルタの伝達関数は以下です。

\[F(s) = \frac{1}{Ts+1}\]


上記pythonファイルを実行すると下図のボード線図が表示されます。

折点周波数は100Hz(フィルタ時定数Tで設定)にしています。
python controlを使ってローパスフィルタの動作を確認
ゲインが20dB下がっている折点周波数から10倍以上の周波数でノイズ除去できます。

そのため、1kHz以上のノイズ成分を除去できるフィルタが設計できたことになります。

python controlを使ってローパスフィルタの時間軸応答を表示

先程設計したローパスフィルタの時間軸応答を確認してみましょう。

以下のソースコードでローパスフィルタのステップ応答を実行します。


ローパスフィルタのステップ応答結果はこちらになります。

フィルタ時定数が1/(2*pi*100)[s]なので、約0.00159[s]で63.2%と設計値通りの応答となっています。

python controlを使ってローパスフィルタの時間軸応答を表示

python controlを使ってローパスフィルタのノイズ除去性能を確認する

最後に、正弦波を入力してローパスフィルタのノイズ除去性能を確認しましょう。

10Hzと1kHzの合成正弦波をローパスフィルタに入力し、時間軸応答を確認します。

以下のソースコードでローパスフィルタの正弦波応答シミュレーションを実行します。

python controlを使ってローパスフィルタのノイズ除去性能を確認する

上図で細かくギザギザしているのが1kHzの信号成分です。

下図のローパスフィルタの応答波形では1kHzの信号成分が小さく(ノイズ除去)なっていることが確認できます。

Python controlを使ったローパスフィルタのまとめ

pythonのライブラリであるcontrolを使ってローパスフィルタの特性と応答シミュレーションができました。

実際にセンサなどで取得したデータはサンプリングされているため、ソフトウェアに実装する際には離散(デジタル)化する必要があります。

代表的な離散化手法であるTustin近似を用いた場合のローパスフィルタについては後日追記します。

最後まで読んでいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました