工学技術

【Python】Python controlを使ったDCモータの回転制御シミュレーション(外乱応答編)【PID制御の基礎】

スポンサーリンク

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

今回は、ミニ四駆などのおもちゃによく使われているDCモータの特性と回転制御をシミュレーションで確認します。

この記事を読めば、DCモータの外乱応答のモデル化とpythonを使った外乱応答のシミュレーションがわかります。

外乱を含んだDCモータモデル

DCモータに環境変化による抵抗力などのトルク外乱が入った場合を考えてみましょう。

ブロック線図は以下のようになります。

ブロック線図等価変換1

使用したpythonライブラリ

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

  • control
  • matplotlib
  • numpy
  • scipy
  • pandas

python controlでシミュレーションするために伝達関数を等価変換する

ブロック線図等価変換1

矢印

ブロック線図等価変換7

外乱トルクが入ったDCモータモデルのブロック線図を下図のように等価変換(簡単化)することができます。

詳細はこちらの記事に書いてますので参考にしてください。

DCモータの回転制御シミュレーション

python controlを使ってDCモータの外乱応答を確認する

DCモータの端子間に電圧を3.15V(約1000rpm指令相当)印加したときのステップ応答を確認します。

0.5s時点で左上の電圧指令値が0V → 3.15Vに変化しています。

左下の青線が目標値応答伝達関数の出力で、1000rpmに向けて上昇していることがわかります。

5s時点で右上の外乱トルクが入力されています。

左下の赤線が外乱応答伝達関数の出力で、外乱トルクに応じて回転を妨げる(マイナス方向)の回転数を出力しています。

右下図が目標値応答と外乱応答を足し合わせた最終的な出力になり、外乱トルクが入力された後では所望の回転数1000rpmを維持することができていないことがわかると思います。
SIM結果PID制御あり(外乱応答)

シミュレーションのpythonソースコード

今回入力データが『電圧目標値』と『外乱トルク』の2つを用意するため、csvファイルからデータを読み込んでいます。

Python controlを使ったDCモータの回転制御シミュレーション(外乱応答)まとめ

今回はDCモータに外乱トルクが加わった場合に回転数が維持できなくなることをシミュレーションで確認しました。

次回はPID制御コントローラを使って、外乱が加わっても回転数を維持できるように制御したいと思います。

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

pythonで制御の勉強にはこの本がおススメ!

created by Rinker
¥2,860 (2024/03/03 14:15:48時点 楽天市場調べ-詳細)

コメント

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