FC2ブログ
2018-08-22 08:16 | カテゴリ:PIC応用回路
色々な実験を経て、PID制御のパラメータに関して、ほぼ納得のいく係数を得る事が出来ました。

これまでの実験は、KATOのDD51を実験車両として使用してきました。
この車両は、モーター軸のフライホイールは無く、モーター直駆動です。
現在販売されているほとんどの車両は、フライホイールが付いていますし、モーターも慣性が小さなコアレスモーターが搭載されつつあります。

今回のPFM+PWM+PID制御のプログラムが、フライホイール付きの車両でどの様に効果が出るのか、否かをちょっとテストしてみました。

まず、テスト車両を選定します。
カトーのEF81にしました。

(PID5-01)
PID5-01.jpg





続きは、、、




結構古いモデルで、購入後、うん十年選手です。(笑)
普通に走行させるには、問題なさそうですが、念のためボディーを開けて、電気の導通部分のクリーニングを行い、車両内での接触不良をまず防止しておきます。



(PID5-02)
PID5-02.jpg


これまでいろいろ実験したパラメータを試してみました。
結論からいいますと、Kpをかなり大きくし、かつ、Kdも大きくして、良い感じになりました。
考えられる理由は、フライホイールの慣性です。

安定走行のためにモーター軸に重いフライホイールが直についていますので、これを駆動するには大きなパワーが必要です。
相当なエネルギーを印加しても大丈夫なようです。
また、回転を抑える際には、大きな慣性モーメントが働きますので、モーターへの電力も一気に低下させなければなりません。

以下に設定値の候補を示します。

case 0:
Kp = 1; //初期のDD51のベスト値
Ki = 1;
Kd = 5;
break;

case 1:
Kp = 0.8; //新しいベストDD51
Ki = 1;
Kd = 7;
break;

case 2:
Kp = 5; //ここからEF81の設定。
Ki = 1;
Kd = 50;
break;

case 3:
Kp = 5; // Case3以下はテスト設定です。これくらい
Ki = 1; // Kdを大きくしてもフライホイールの慣性モーメントのおかげで
Kd = 60; // 安定しています。
break;

case 4:
Kp = 5;
Ki = 1;
Kd = 70;//これくらいのKd値が反応が良さそうです。
break;

case 5:
Kp = 5;
Ki = 1;
Kd = 80;
break;

case 6:
Kp = 5;
Ki = 1;
Kd = 90;



これまでのDD51の値と比較して、かなり桁違いな係数になりました。
これで、結構、良い感じです。

制御パラメータ表の意味ですが、
C項目は、瞬間の車両からのBEMF値、T項目は、走行速度を指示するBEMF値で、車両のBEMF値が指示されたBEMF値と同じであれば、制御が良く保たれているという事になります。


ちなみに、このEF81の設定で、これまでのDD51を走行させると、相当不安定で、SD値も多くく変動してしまいました。
係数はCase2で撮影しました。

PID5-03)
PID5-03.jpg


しかし、EF81を走行させると、フライホイールの効果とPID制御が合いまって、うまく制御されているようです。

(PID5-04)
PID5-04.jpg

いくつかの係数で試した結果、Case4がよさそうです。
走行の様子と、その際の制御状態を動画撮影しましたので、ご覧ください。

Nゲージの弱点は、その小ささと軽さの為に、通常のパワーパックで走行させると、微妙に速度が変動し、走行が「軽い」印象です。
しかし、PFMと本PID制御を合わせると、走行が非常に安定し、「走行に重量感」が出ている気がします。
動画撮影はCase4の設定で行いました。


(PID5-06EF81動画)




ここまで来ると、パラメータの模索を手動ではなく、なんとかPIC自身に自動でやらせたいです。
ところが、今使用しているPICの16F1716のプログラムメモリーが8KBですが、実はもう一杯いっぱいの99%です。

別のPICに置換しないとこのままでは、無理です。

目的のPICの仕様としては、

メモリ 16-32KB以上
周辺モジュールとして、AD変換、PWM、そしてCLCとi2cのサポートと、現行のHWにピン変更なしで置き換えできる事です。

「なお」さんから、16F1938はどうかとアドバイスをいただきました。(ありがとうございます!)
データシートで調べたら、メモリは16KBでよさそうですが、CLCが無いようです。
後日、ライトの常点灯をPWMで考えていまして、それらの信号を合成したいので、CLCは必要なんです。

いろいろ調べて、16F18875が見つかりました。
運よく、昔に購入していたPICの在庫にありました!(嘘みたい)


(PID5-05)
PID5-05.jpg



これにプログラムを移植して、現状の機能を復活して、新たに、パラメータ自動調整機能を考えたいと思います。
早速、移植はしてみたのですが、実はこれが暗黒面への入り口になっていることに気づくはずもありませんでした!(笑)


この後の悪夢のお話は次回にさせていただきます、、、、


関連記事

管理者のみに表示する