7/9(木) PIDチューニング

新規フィラメントで印刷していましたが、途中でエラーで停止する現象が発生。

観察していると、ノズル温度が210度からいきなり170度になったりとかなり不安定な様子。調べてみると「PIDチューニング」をやってみてくださいとの事。

以下の動画を参考にしました
PID Tuning Voxelab Aquila:
https://www.youtube.com/watch?v=vCQWx4MBjjY&t=205s

接続図

USBで接続したことがなかったのでちょっと新鮮。手順的にはUSBでシリアル接続し、ターミナルで今の設定を確認(M503)、自動テストコマンド(M303)を実行、測定結果のPID値をセット(M301)、最後に保存(M500)する。(所要時間5分程度)

手順

  1. シリアルの通信速度は 115200
    ※ ターミナルが開くと「wait.wait.wait…」とでてくるが気にしない
  2. 設定確認コマンド「M503」を送信
    ※ 今の設定を残しておく為
>M503
echo:; Filament settings: Disabled
echo:  M200 S0 D1.7500
echo:; Steps per unit:
echo: M92 X80.0000 Y80.0000 Z400.0000 E93.0000
echo:; Maximum feedrates (units/s):
echo:  M203 X500.0000 Y500.0000 Z5.0000 E25.0000
echo:; Maximum Acceleration (units/s2):
echo:  M201 X500.0000 Y500.0000 Z100.0000 E1000.0000
echo:; Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo:  M204 P500.0000 R500.0000 T1000.0000
echo:; Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> X<max_x_jerk> Y<max_y_jerk> Z<max_z_jerk> E<max_e_jerk>
echo:  M205 B20000.0000 S0.0000 T0.0000 X10.0000 Y10.0000 Z0.3000 E5.0000
echo:; Home offset:
echo:  M206 X0.0000 Y0.0000 Z0.0000
echo:; Material heatup parameters:
echo:  M145 S0 H210 B60 F255
echo:  M145 S1 H240 B70 F255
echo:; PID settings:
echo:  M301 P28.7200 I2.6200 D78.8100   <-- 🚩これが重要メモしておく
echo:; Power-Loss Recovery:
echo:  M413 S1
ok P15 B3

3.自動測定コマンド M303

E0 … エクストルーダ番号
C10 … 一秒間に何回測定するか
S205 … 目標温度

>M303 E0 C10 S205 

 Classic PID 
 Kp: 39.1139 Ki: 5.0405 Kd: 75.8810
 T:203.92 /0.0000 (101.9375) B:31.67 /0.0000 (962.0000) @:127 B@:0
 T:203.33 /0.0000 (103.0000) B:31.74 /0.0000 (961.8125) @:127 B@:0
 T:203.78 /0.0000 (102.1875) B:31.69 /0.0000 (961.9375) @:127 B@:0
 T:205.04 /0.0000 (99.9375) B:31.51 /0.0000 (962.3750) @:17 B@:0
 T:206.37 /0.0000 (97.8125) B:31.64 /0.0000 (962.0625) @:17 B@:0
 T:206.87 /0.0000 (97.0000) B:31.77 /0.0000 (961.7500) @:17 B@:0
 T:205.90 /0.0000 (98.5625) B:31.59 /0.0000 (962.1875) @:17 B@:0
 bias: 145 d: 109 min: 203.2292 max: 206.9922 Ku: 73.7616 Tu: 14.2400
 Classic PID 
 Kp: 44.2570 Ki: 6.2159 Kd: 78.7774
 T:204.44 /0.0000 (101.0000) B:31.72 /0.0000 (961.8750) @:127 B@:0
 T:203.44 /0.0000 (102.8125) B:31.64 /0.0000 (962.0625) @:127 B@:0
 T:203.96 /0.0000 (101.8750) B:31.67 /0.0000 (962.0000) @:127 B@:0
 T:204.97 /0.0000 (100.0625) B:31.59 /0.0000 (962.1875) @:127 B@:0
 T:206.72 /0.0000 (97.2500) B:31.74 /0.0000 (961.8125) @:18 B@:0
 T:206.91 /0.0000 (96.9375) B:31.82 /0.0000 (961.6250) @:18 B@:0
 T:206.13 /0.0000 (98.1875) B:31.80 /0.0000 (961.6875) @:18 B@:0

--- snip ---

 bias: 140 d: 114 min: 203.1944 max: 207.0703 Ku: 74.8990 Tu: 14.8800
 Kp: 45.8811 Ki: 6.4440 Kd: 81.6684
 T:203.92 /0.0000 (101.9375) B:31.90 /0.0000 (961.4375) @:127 B@:0
 T:203.33 /0.0000 (103.0000) B:31.95 /0.0000 (961.3125) @:127 B@:0
 T:203.82 /0.0000 (102.1250) B:31.85 /0.0000 (961.5625) @:127 B@:0
 T:205.12 /0.0000 (99.8125) B:31.80 /0.0000 (961.6875) @:14 B@:0
 T:206.84 /0.0000 (97.0625) B:32.03 /0.0000 (961.1250) @:14 B@:0
 T:206.72 /0.0000 (97.2500) B:31.95 /0.0000 (961.3125) @:14 B@:0
 T:205.82 /0.0000 (98.6875) B:31.90 /0.0000 (961.4375) @:14 B@:0
 bias: 141 d: 113 min: 203.1250 max: 207.0312 Ku: 73.6645 Tu: 14.4000
 Classic PID 
 Kp: 44.1987 Ki: 6.1387 Kd: 79.5577
PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
#define DEFAULT_Kp 44.1987        <-- 🚩P値
#define DEFAULT_Ki 6.1387           <-- 🚩I値
#define DEFAULT_Kd 79.5577        <-- 🚩D値   
ok P15 B3
wait
wait

結果をセット(M301)・反映確認


>M301 P44.1987 I6.1387 D79.5577    <-- 🚩結果セット
一応確認
>M503
echo:; Filament settings: Disabled
echo:  M200 S0 D1.7500
echo:; Steps per unit:
echo: M92 X80.0000 Y80.0000 Z400.0000 E93.0000
echo:; Maximum feedrates (units/s):
echo:  M203 X500.0000 Y500.0000 Z5.0000 E25.0000
echo:; Maximum Acceleration (units/s2):
echo:  M201 X500.0000 Y500.0000 Z100.0000 E1000.0000
echo:; Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo:  M204 P500.0000 R500.0000 T1000.0000
echo:; Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> X<max_x_jerk> Y<max_y_jerk> Z<max_z_jerk> E<max_e_jerk>
echo:  M205 B20000.0000 S0.0000 T0.0000 X10.0000 Y10.0000 Z0.3000 E5.0000
echo:; Home offset:
echo:  M206 X0.0000 Y0.0000 Z0.0000
echo:; Material heatup parameters:
echo:  M145 S0 H210 B60 F255
echo:  M145 S1 H240 B70 F255
echo:; PID settings:
echo:  M301 P44.1987 I6.1387 D79.5577  <-- 🚩反映OK
echo:; Power-Loss Recovery:
echo:  M413 S1
ok P15 B3

5 保存

> M500  

補足

  • 一秒単位ぐらいで「wait wait wait …」と出続けますが、入力は受け付けれます。受信中などはこのメッセージは止まりますので気にせずにコマンドを送信可能のようです。
  • USBを接続すると、USBで給電され、マンドは受け付けれるっぽいです。ただし当然テストではノズル温度を上下させるので100Vの給電が必要。
  • PIDチューニングとは、PIDチューニングとは、目標値と現在値のズレをなくす自動制御(PID制御)において、機器がスムーズかつ正確に動作するように「比例(P)」「積分(I)」「微分(D)」の3つのパラメータ(ゲイン)を調整する作業のことです。

コメントする