AnyCubic Kossel 3D プリンタの調整の 1 項目として,ホットエンドの PID 制御パラメタを調整した. プリンタに M303 というコマンドをおくると自動でパラメタの値をきめてくれることになっているが,この方法で適切なパラメタがきめられるとはおもえない. 結局,Kp = 2, Ki = 0, Kd = 0 という単純な値におちついた.
これまでつかってきた Rostock MAX は最初に M303 コマンドで PID パラメタの値をきめた. その後は再調整していないこともあって,適切な値になっているとはおもえない. 温度上昇がおそいにもかかわらずヒータ出力が低下してしまう.
AnyCubic Kossel でもまず M303 コマンドで値をもとめてみた. 温度が 200℃ のとき,280℃ のときの値をもとめてみた結果,Kp = 10〜17, Ki = 1.3〜3, Kd = 14〜60 くらいになった. まずこの範囲の値を設定してみたが,温度上昇が必要以上におそくなっているようにみえる. 最初の図は (Kp, Ki, Kd) の組が (14, 2, 14) で設定温度が 210℃,ヘッドを静止させ風もないときのときのようすだ. 210℃ にちかづくにつれて温度上昇の速度が低下していることがわかる. 温度が 210℃ に達したあとの変動幅は非常にちいさくて,よく制御されていることがわかる.
そこで,温度上昇がもっとはやくなるように,パラメタを手動できめてみた. その結果,Ki, Kd は 0 のほうがよい (つまり,積分項や微分項は不要) こと,Kp も 0 にちかい値のほうがよいことがわかった. Kp = 0 だと設定温度が 210℃ のときはやや振動的なふるまいがみられる (それでも振動の幅は ±2度 くらいなので問題はない) ので,Kp = 2 にした. これで温度上昇はそれほどおそくならず,かつ振動がちいさくなる. 上の 2 番めの図がそのようすだ. 理論とこれだけ差がでるのは,ヒータ出力がかぎられていることと,設定温度より 20度 ひくいところでヒータ出力が 90% になることによっているとかんがえられる. 差分項だけでオーバーシュートがおこらないのはそのためだとかんがえられる.
設定温度を 280℃ にすると,Kp = 0 でも設定温度には達しなくなる. 3 番めの写真 (左下) が (14, 2, 14) のときのようすであり,4 番めの写真が (2, 0, 0) のときのようすだ. (14, 2, 14) のときは,あきらかに 280℃ よりひくい温度で安定している. (2, 0, 0) のときは振動的なふるまいをしているが,温度の平均値ではなく上限が 280℃ だ. ヒータ出力を 90% にするだけでも過剰な制御をしているということができるが,210℃ のときのことをかんがえて,Kp = 2 のままにしておく. それでも M303 でもとめた値をつかうより,はるかにはやく設定温度にちかづくし,設定温度ちかくに達する.
ヘッドが静止したままでもファンでノズル付近に風をあてると,さらにひくい温度で安定するようになる (下の図は (14, 2, 14) のときのようす).