網頁

Prusa i3自動校正擠出機與加熱床PID

PID控制在機械與電機系統中是十分重要的技術。姑且不論其運作原理,從一個加熱器的功能來說,PID可以讓加熱到目標溫度的過程又快又準又穩,PID真的不是三言兩語可以解釋,自己調整其參數又抓不著頭緒。

幸好在3D印表機的韌體Marlin裡面,已經很貼心地幫我們做了一個功能,那就是自動調整PID參數(M303: Run PID tuning)

Gcode- RepRapWiki中我們得知,這個G-code將艱難的PID參數調整過程,化為一串簡單的指令,讓我們能輕鬆的調整出適當的PID參數,與其說調整不如說是讓電腦自動的測試出參數。

關於PID的調整也可以參考"陳亮宇"前輩所撰寫的Marlin 擠出頭溫度控制PID值校正一文。同時他也手動的測試與調整PID參數,並進行模擬實驗,是了解PID很不錯的文章PID控制動手玩玩看


接著讓我們開始自動調整PID參數的過程吧,首先我們打開Repetier-Host視窗,並接上3D印表機,在手動輸入G-code的地方打上M303 C8 S185(C是指在目標溫度上下震盪8次;S後面是目標溫度,建議設置自己常用的列印溫度)。

【擠出頭PID自動校正中】


這時候我們只要在旁邊等它跑完8個波浪並顯示OK,就可以得到它自動校正後的PID值了。

【擠出頭PID自動校正完畢】


這時候我們已經有擠出機加熱棒的PID參數了,接著打開3D印表機韌體的Marlin→ Configuration.h,並將校正後的PID值修改到程式內。

【修改Marlin擠出頭PID值】



記得別忘了加熱床也要進行PID調整,我們用一樣的方法也來把加熱床校正一下。我都是印PLA材料而已,因此加熱床的工作溫度是50度左右。(你可以視你最常使用的溫度做PID校正的基準)

這時候我們輸入M303 E-1 C8 S50來校正加熱床的PID值,E0一般是指加熱頭(沒打的話就默認)而E1一般指的是加熱床。where E0 is the first temperature control module (usually the hot end) and E1 is the second temperature control module (usually the bed)

M303 E-1 C<cycles> S<temperature>

【加熱床PID自動校正中】


【加熱床PID自動校正完畢】


這時候我們一樣到Marlin→ Configuration.h把校正後的PID值修改一下。
(記得加熱床跟擠出頭是不同PID位置,不要搞混了)

【修改Marlin加熱床PID值】


一般而言調整過PID的加熱曲線應該是要這樣的,升溫快速又不會超出太多,同時後面的溫度可以穩住。




簡單來說PID調的好大概要滿足幾點:
1.升溫快
2.第一個超越目標值的溫度不應過大(最大超越量)
3.後面的溫度要穩住在目標值附近,不宜偏差過多

但是我上圖是沒在運作時截圖的,因此曲線當然很漂亮。這時讓我們看看工作中的溫度圖長怎樣吧。

【校正PID後的實際列印溫度曲線】


從圖中我們可以看到紅線為擠出頭,藍線為加熱床。在一開始紅線直逼198度,離目標溫度185度差了13度,最大超越量約7%,如果是還沒工作的時候(列印前),這樣還可以接受,超過20度就不好了。

而開始工作後溫度大約在±5度內震盪,但是重點在於第一層過去後,我的工件風扇開啟導致將噴頭溫度往下拉,此時噴頭溫度掉到了176度,但是後面又有在穩定回來。總體而言自動校正PID的功能算是相當簡單實用,不用再為了調整參數而傷透腦筋。

附上一張校正前的溫度圖,沒校正PID前連待機溫度都可以飄成這樣 。(19:50手動開啟工件風扇)

【未校正PID前溫度曲線】


最後祝大家都能找到屬於自己的PID~

(20230318補充:現在的印表機好像在操控面板上都能直接進行PID校正了,不用像早期還要這樣校正完抄寫PID數值還要重燒錄韌體,真的是方便許多。)

參考資料:
RepRap-Wiki
3D印表機 DIY 建構筆記