Sikeres 3D nyomtatáshoz többek között stabil hőmérsékletre van szükség a HotEnd-ben az alapanyag megolvasztásához és a HotBed-en a fűthető tálcán is. A hőmérséklet ingadozás a nyomtatás minőségét ronthatja. A minél egyenletesebb fűtéshez PID kalibrációt kell végeznünk a nyomtatón.
De mi is ez? A Wikipedia ezt írja a PID szabályzóról:
A PID szabályozó egy lineáris rendszerek szabályozásánál gyakran alkalmazott, párhuzamos kompenzáción alapuló szabályozótípus. A PID rövidítés a szabályozó elvére utal, a szabályozó által kiadott végrehajtójel
– a hibajellel (P: proportional),
– a hibajel integráljával (I: integral), valamint
– a hibajel változási sebességével, deriváltjával (D: derivative)
arányos tagokból adódik össze, azaz a végrehajtójel a jelenlegi hiba, a múltbeli hibák és a várható hibák függvénye. Ezen tagok közül nem mindig valósítják meg mindet, ilyenkor beszélhetünk P, PI, PD szabályozókról. A végrehajtójel használható a folyamat vezérlésére, például egy fűtési rendszer energiaforrásának szabályozására.
Ez elég bonyolultan hangzik, de nekünk elég annyit megérteni belőle, hogy erre a három P, I és D-nek nevezett értékre van szüksége a vezérlőnek ahhoz, hogy precízen tudja tartani a HotEnd vagy a tálca hőmérsékletét a fűtőbetét ki/be kapcsolgatásával.
HotEnd fűtés kalibrációja
Ezek az értékek természetesen függenek a HotEnd minden fizikai jellemzőjétől, tehát ha bármit cserélünk rajta, akár csak felteszünk egy szilikon burkolatot a blok-ra, akkor új PID értékekre van szükségünk.
Szerencsére nem kell kiszámolnunk őket, Marlin-ban van erre egy automata kalibrációs rutin. Többször egymásután felfűti a HotEnd-et, majd vár, hogy hűljön kicsit. Eközben figyeli a rendszer viselkedését és a mért eredmények alapján finomítja a PID értékeket. A kalibrációt az M303-as utasítással indíthatunk el:
M303 E0 S235 C10
Az E0 a HotEnd-et jelenti az S235 azt, hogy 235℃ környékén szeretnénk, ha egészen pontosan működne. (PET-G-t használok mostanában többet), a C10 pedig azt mondja meg, hogy az iterációt tíz alkalommal hajtsa végre. Minél többször végezheti el, annál pontosabb lesz az eredmény. Grafikonon így néz ki egy ilyen kalibráció:
Miután végzett, a következőket írja vissza a konzolra:
PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
#define DEFAULT_Kp 11.77
#define DEFAULT_Ki 0.74
#define DEFAULT_Kd 47.00
A három #define kezdetű sorral lecserélhetjük a korábbi értékeket a firmware Configuration.h fájljában. Ha használunk EEPROM-ot, akkor ez után vagy az EEPROM adatait frissítjük a firmware-ből, vagy a következő bekezdés szerint járunk el:
Az értékeket ekkor még csak kiszámolta a Marlin, de nincsenek a memóriában. Ha el akarjuk menteni az EEPROM-ba akkor az M500-as előtt az M301-es utasítással a fenti értékeket be kell állítanunk. Tehát így:
M301 P11.77 I0.74 D47.00
M500
Azt vegyük észre, hogy a PID beállítás csak abban segít, hogy a beállított hőmérsékletet stabilan tudja tartani a vezérlő. De hogy ez a hőmérséklet pontosan akkora-e, mint amit beállítottunk, annak nincs semmi köze a PID szabályzáshoz. Ha gyanakodunk, hogy mégsem annyi az annyi, akkor a termisztort kell kalibrálnunk.
Tálca PID vezérlés
A HotBed fűtése alapból nem PID vezérlésre van beállítva a Marlinban. Érdemes ezt is beállítanunk, sokkal egyenletesebb lesz a tálca hőmérséklete. A kontroll led gyors villogásán fogjuk látni, hogy egészen más szisztéma szerint működik PID vezérléssel, mint a beállítás előtt.
De indokként megmutathatom grafikonon is, hogyan néz ki a konstans hőmérséklet tartás PID beállítás nélkül. A kék vonal a tálca, a piros a HotEnd. Tragikus mind a kettő…
A kalibráción kívül még magát a funkciót is be kell kapcsolnunk azzal, hogy kivesszük a kommentet a következő sor elől a Configuration.h fájlban:
#define PIDTEMPBED
A kalibráció az M303-as utasítással történik:
M303 E-1 S60 C8
Hasonló az előzőhöz, csak az E0 HotEnd helyett most E-1 értéket adunk, ami a tálcát jelenti ebben az esetben. Ismét visszakapjuk majd a friss PID értékeket, amiket az M304-es utasítással tudunk aktiválni:
M304 P640.26 I118.42 D865.39
M500
Előfordulhat, hogy megzavarodik a Marlin attól, hogy az EEPROM-ban nem volt korábban PID érték a tálcához, majd mégis feltöltöttük úgy a firmware-t, hogy PID vezérlést állítottunk be hozzá. Ha nem indul el a tálca fűtése a flash-elés után, akkor reseteljük az EEPROM tartalmát:
M502 ; reset
M500 ; saved
Persze előtte írjuk fel, vagy vezessük vissza a firmware-be azokat az értékeinket, amik így elveszhetnek, például a nozzle offset-jét.
Marlin dokumentáció: http://marlinfw.org/docs/gcode/M303.html
Minta a firmware módosításra a GitHub-on: PID beállítás: HotEnd, HotBed