3D プリンタのヘッドの温度は PID 制御という方法にしたがっておこなわれることになっている. しかし,PID 制御のアルゴリズムにしたがうことおよびそのパラメタを最適化することは 3D プリンタでは意味のないことだとおもえる. G コードのコマンドで最適化された PID 制御のパラメタをもとめることができるが,そうするよりそのパラメタのうちの 2 個を 0 にして,もっと単純な制御をしたほうが設定温度によく追従することがわかった.
使用中の AnyCubic Kossel では Repetier のファームウェアを使用しているが,EEPROM で PID 制御の 3 つのパラメタを指定するようになっている. G コードの M303 というコマンドを使用してパラメタの最適値をもとめると,たとえば Kp = 10, Ki = 1, Kd = 50 くらいの値がえられる.
この「最適値」を設定して,ちいさな球体などを印刷すると,ヘッドの温度は設定温度にうまく追従しない. それに対して Kp = 2, Ki = 0, Kd = 0 という「単純値」にしてみると,追従性はずっとよくなる. 下の図では直径 28.8 mm のキャンドルキャップ (球体にちかいかたち) を,最初は「最適値」で印刷し,つぎに「単純値」で印刷したときの設定温度とヘッドの温度とをしめしている. 階段状になっているのが設定温度だが,「単純値」のときはヘッドの温度はそれによく追従していることがわかる. それに対して「最適値」のときはかなりおくれがある. 最適値の計算法をかえればもっとよい値がえられるとかんがえられるが,そんなことをしなくても単純な方法で十分な精度がえられていることがわかる. PID 制御なんか,くそくらえ !
これまでも Ki = 0, Kd = 0 でつかってきたが,それはつぎのプログ項目に書いた実験の結果にしたがったものだ.
AnyCubic Kossel のホットエンドの PID 制御パラメタ決定
今回,再検討したのは,ヒータを強力なものにとりかえたからなのだが,やはり結論はかわらなかった. しかも,より明確に「単純値」のほうがよいことをしめす実験結果がえられた.