【DCモータの角度制御】第3回:Teensy LCを用いた角度制御の実装
はじめに
第2回ではモデルに基づいて角度制御のシミュレーションを行いました。
第3回ではいよいよシミュレーションした制御系を実際にArduino互換ボードであるTeensy LCに実装します。
角度制御の実験
角度制御をするにあたっての全体像を図1に示します。
使用部品
使用する主な部品は以下の通り。すべてスイッチサイエンスで購入することができます。
各部品のピンアサインを図2~4に示します。
使用プログラム
実験で使用したTeensy LC用のソースコードを以下に示します。
プログラム中のシリアル通信関連のコードは以下のサイトを参考にしました。
実験結果
実験は目標値を90度として制御ゲインを変えて3パターン行いました。
Kp = 2.234、Ki = 7.946、Kd = 0.07392の場合
シミュレーション結果と比較した入力波形と出力波形をそれぞれ図5~6に示します。
入力の波形はかなり振動的になっています。これは使用したエンコーダが1回転12パルスの分解能しかないため、1パルスごとの角度変化が大きくなってしまいI-PD制御の微分項が暴れているのだと考えられます。
出力は目標値に追従していますが立ち上がりはシミュレーションと一致していません。おそらくゲインが小さいので摩擦の影響が大きくなり、回転するまでに時間がかかっているのだと思います。
Kp = 11.17、Ki = 68.44、Kd = 0.1608の場合
シミュレーション結果と比較した入力波形と出力波形をそれぞれ図7~8に示します。
入力波形は相変わらずですが、出力波形はかなりシミュレーションと応答が一致しています。ゲインを上げたことで摩擦の影響が小さくなったものと思われます。
Kp = 40.22、Ki = 672.5、Kd = 0.6012の場合
シミュレーション結果と比較した入力波形と出力波形をそれぞれ図9~10に示します。
さらにゲインを上げると実機の方では入力飽和が発生しています。入力が飽和しているためか出力もシミュレーションと一致しなくなってしまいました。
Kp = 40.22、Ki = 672.5、Kd = 0.6012の場合(アンチワインドアップ制御なし)
アンチワインドアップ制御がどの程度応答に影響しているのかを確認するため、同じゲインで制御を切って応答を測定してみました。シミュレーション結果と比較した入力波形と出力波形をそれぞれ図11~12に示します。
出力波形がシミュレーションと一致しました。もっと入力飽和の影響が大きくなるとどうなるかは分かりませんが、今回の実験ではアンチワインドアップ制御なしの方が応答性が良いようです。
おわりに
今回はシミュレーションした「I-PD制御」と「アンチワインドアップ制御」を実際にマイコンに実装して応答を比較しました。伝達関数で表現できるシステムに関しては今回の【DCモータの角度制御】で説明した一連の流れはおそらく有効だと思います。一応これで最終回としますが、残っている課題もあるので何か書けそうなことがあれば+αとして書こうかなとは思っています。
書けそうなことあったんで書きました↓↓↓