暇人の技術備忘録

ハサミの技術備忘録

趣味でやっている電子工作の備忘録です。

【DCモータの角度制御】第3回:Teensy LCを用いた角度制御の実装

f:id:sbasami:20200604203301p:plain

はじめに

第2回ではモデルに基づいて角度制御のシミュレーションを行いました。

sbasami-tech.hatenablog.com

第3回ではいよいよシミュレーションした制御系を実際にArduino互換ボードであるTeensy LCに実装します。

角度制御の実験

角度制御をするにあたっての全体像を図1に示します。

f:id:sbasami:20191110160113j:plain
図1.角度制御のブロック図

使用部品

使用する主な部品は以下の通り。すべてスイッチサイエンスで購入することができます。

各部品のピンアサインを図2~4に示します。

f:id:sbasami:20191028135111j:plain
図2.Teensy LC ピンアサイン(https://www.pjrc.com/teensy/pinout.html

f:id:sbasami:20191028135148j:plain
図3.モータドライバのピンアサイン(https://www.pololu.com/product/2961

f:id:sbasami:20191028140529j:plain
図4.エンコーダのピンアサイン(https://www.pololu.com/product/3081

使用プログラム

実験で使用したTeensy LC用のソースコードを以下に示します。

Teensy LCでIPD制御を行うプログラム

プログラム中のシリアル通信関連のコードは以下のサイトを参考にしました。

jumbleat.com

実験結果

実験は目標値を90度として制御ゲインを変えて3パターン行いました。

Kp = 2.234、Ki = 7.946、Kd = 0.07392の場合

シミュレーション結果と比較した入力波形と出力波形をそれぞれ図5~6に示します。

f:id:sbasami:20191110150705j:plain
図5.入力の比較(Kp = 2.234、Ki = 7.946、Kd = 0.07392)

f:id:sbasami:20191110150750j:plain
図6.出力の比較(Kp = 2.234、Ki = 7.946、Kd = 0.07392)

入力の波形はかなり振動的になっています。これは使用したエンコーダが1回転12パルスの分解能しかないため、1パルスごとの角度変化が大きくなってしまいI-PD制御の微分項が暴れているのだと考えられます。

出力は目標値に追従していますが立ち上がりはシミュレーションと一致していません。おそらくゲインが小さいので摩擦の影響が大きくなり、回転するまでに時間がかかっているのだと思います。

Kp = 11.17、Ki = 68.44、Kd = 0.1608の場合

シミュレーション結果と比較した入力波形と出力波形をそれぞれ図7~8に示します。

f:id:sbasami:20191110151018j:plain
図7.入力の比較(Kp = 11.17、Ki = 68.44、Kd = 0.1608)

f:id:sbasami:20191110151108j:plain
図8.出力の比較(Kp = 11.17、Ki = 68.44、Kd = 0.1608)

入力波形は相変わらずですが、出力波形はかなりシミュレーションと応答が一致しています。ゲインを上げたことで摩擦の影響が小さくなったものと思われます。

Kp = 40.22、Ki = 672.5、Kd = 0.6012の場合

シミュレーション結果と比較した入力波形と出力波形をそれぞれ図9~10に示します。

f:id:sbasami:20191110151159j:plain
図9.入力の比較(Kp = 40.22、Ki = 672.5、Kd = 0.6012)

f:id:sbasami:20191110151245j:plain
図10.出力の比較(Kp = 40.22、Ki = 672.5、Kd = 0.6012)

さらにゲインを上げると実機の方では入力飽和が発生しています。入力が飽和しているためか出力もシミュレーションと一致しなくなってしまいました。

Kp = 40.22、Ki = 672.5、Kd = 0.6012の場合(アンチワインドアップ制御なし)

アンチワインドアップ制御がどの程度応答に影響しているのかを確認するため、同じゲインで制御を切って応答を測定してみました。シミュレーション結果と比較した入力波形と出力波形をそれぞれ図11~12に示します。

f:id:sbasami:20191110151342j:plain
図11.入力の比較(アンチワインドアップ制御なし)

f:id:sbasami:20191110151509j:plain
図12.出力の比較(アンチワインドアップ制御なし)

出力波形がシミュレーションと一致しました。もっと入力飽和の影響が大きくなるとどうなるかは分かりませんが、今回の実験ではアンチワインドアップ制御なしの方が応答性が良いようです。

おわりに

今回はシミュレーションした「I-PD制御」と「アンチワインドアップ制御」を実際にマイコンに実装して応答を比較しました。伝達関数で表現できるシステムに関しては今回の【DCモータの角度制御】で説明した一連の流れはおそらく有効だと思います。一応これで最終回としますが、残っている課題もあるので何か書けそうなことがあれば+αとして書こうかなとは思っています。

書けそうなことあったんで書きました↓↓↓

sbasami-tech.hatenablog.com