Model Predictive Control namesto PID v Marlinu

Različne vrste 3Dp, izdelki, gkoda, konstrukcije

Model Predictive Control namesto PID v Marlinu

OdgovorNapisal/-a Carko » 30 Jul 2022, 21:31

Po dolgem času sem nadgradil Marlina na enem od 3D printerjev (Kitajcu), pa sem videl, da zadnja večja verzija 2.1 vsebuje tudi podporo za MPC kontrolo temperature glave.

Pred časom sem to že omenjal tukaj, ampak takrat je bilo samo teoretično.

PID krmiljenje je zelo enostavno, ima pa težavo, da ima samo en vhod in izhod in da ne ve nič o sistemu, ki ga krmili. Pri regulaciji temperature glave v 3D tiskalniku je tako vedno nekaj zamika, saj lahko PID le reagira na napako (razliko med želeno in dejansko temperaturo), poleg tega regulira temperaturo senzorja in ne glave same.

Pri začetnem segrevanju glave natančnost (overshoot) in hitrost segrevanja nista pomembna, se pa težava pojavi pri regulaciji temperature med printom - poleg okoliškega zraka (recimo, da je to približno konstantno) je glavni vzrok hlajenja glave filament, ki ga je treba staliti. Hitrost podajanja filamenta skozi glavo pa niti približno ni konstantna in pri velikih razlikah hitrosti lahko temperatura precej poskakuje. Marlin ima za PID opcijo neke konstante glede na hitrost podajanja filamenta, ampak ni to to.

Tudi nastavitev PID je odvisna od temperature - za 200 in 250 stopinj optimalni parametri ne bodo čisto enaki.

MPC deluje popolnoma drugače, saj je sestavljen tako, da vsebuje model sistema, konkretno za 3D printer (na koncu se lahko še malo bolj poenostavi):
- okoliški zrak, ki ohlaja hladilnik in grelni blok
- hladilnik, ki ohlaja grelni blok
- grelec, ki greje grelni blok
- senzor temperature
- filament, ki hladi grelni blok
- ventilator, ki hladi hladilnik
- ventilator, ki hladi izdelek in s tem grelni blok

Če poznamo koeficienta prenosa toplote med posameznimi elementi, lahko zelo dobro izračunamo, kako se bo energija, vloženo preko grelca, prenesla do ostalih elementov.

Auto-tuning ni iterativen kot pri PID, ampak enostavno izmeri posamezne koeficiente. Kot vhodni podatek rabi le moč grelca, vse ostalo (z izjemo podatkov filamentu, ti so vnešeni kot konstanta) izmeri sam s hitrostjo gretja in ohlajanja.

Na koncu deluje tako, da ne poskuša nastavljati temperature senzorja, ampak temperaturo grelnega bloka v simuliranem modelu. Temperatura iz senzorja se uporablja le za blago korekcijo odstopanj. Ko se npr. temperatura okoliškega zraka spremeni, to zazna (ker pozna hitrost ogrevanja in ohlajevanja glave) in napravi korekcijo v modelu.

Na zgoraj omenjene spremembe hitrosti ekstrudiranja filament skozi glavo lahko tako reagira mnogo hitreje, saj lahko začne delati korekcijo, takoj ko se hitrost ekstrudiranja spremeni in preden se učinek tega prenese do senzorja temperature.

V Marlinu je uporaba res enostavna, saj je potrebno zadevo le vključiti in z ukazom "M306 T" zalaufati tuning. Niti temperature ni treba podati, saj temperatura ne vpliva (bistveno) na konstante v sistemu.

Še primerjava (glej rdečo črto):

PID:
pid.png


MPC:
mpc.png
Nimate dovoljenj za ogled prilog tega prispevka.
Carko
 
Prispevkov: 3163
Pridružen: 10 Jan 2015, 00:46
Zahvalil se je: 207 krat
Prejel zahvalo: 1049 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 235

Vrni se na 3d printerji

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost