Vai al contenuto

Problemi con GCODE


Messaggi raccomandati

Proprio non capisco come risolvere.

 

Sto usando una Ender 3 Pro e ho necessita', in un cambio filo con M600, di estrudere 15mm prima del comando stesso.
Se non lo faccio non riesco a estrarre il filamento dal bowden.

 

Ho quindi usato questo GCODE semplicissimo:

 

G91              ; coordinate relative
G1 Z10           ; alza di 10mm

G90              ; coordinate assolute
G1 X0 Y0 F1000   ; sposta carrello

G91              ; coordinate relative
G1 F200 E15     ; Estrudi 15
G90              ; coordinate assolute

M600             ; cambio filo

G91              ; coordinate relative
G1 Z-10          ; abbassa di 10mm
G90              ; coordinate assolute

 

Funziona tutto, il filamento riesco ad estrarlo e reinserirlo, ma dopo che abbassa Z di 10mm (penultima riga) la stampante esegue una retrazione di 15mm, poi sposta il carrello e torna a stampare.
Il problema e' che quella retrazione di 15mm non fa uscire filamento per 5-6 secondi, e non va bene.

 

Perche' succede questo?

E' come se "si ricordasse" dove era l'estrusore e lo rimette a posto estrudendo SEMPRE quello che tolgo alla sesta riga.

Se alla sesta riga metto E50 (estrudi 50mm) allora prima di tornare a stampare mi ritrare 50mm.

 

Il consiglio di @Salvogi di aggiungere E92 E0 alla fine e' controproducente perche', resettando "E" nel corso della stampa magari quando E era a 1234, la stampante non sa che l'ho fatto e il prossimo comando E sara' E1235 estrudendomi 1234mm di filamento a vuoto.

 

Che faccio?
 

Adesso ho tolto M600 dal codice.
Bene, fa la stessa identica cosa.

Alza il carrello di 10, si sposta a 0,0 poi estrude 15, si abbassa di 10 e, prima di tornare al centro del piatto, ritrae quegli stessi 15mm.

Come se il comando dato durante "coordinate relative" fosse comunque conteggiato in quelli assoluti. La stampante SA che ho estruso 15mm e me li toglie perche' e' da li' che vuole partire.

Perche'?
Allora qual e' il modo per far estrudere 15mm senza che il "ragioniere della Ender" ne tenga traccia e senza dover resettare il contatore E?

Link al commento
Condividi su altri siti

1 ora fa, Carsco dice:

Perche' succede questo?

secondo me perchè l'M600 racchiude una serie di funzioni preimpostate, se tu sei a x100 y100 z2 E1234 con M600 memorizza tutto anche perchè tu sei andato in X0 Y0 e non gli hai detto di tornare in posizione, ci va da solo quindi lo ha memorizzato, come il valore E che da 1234 lo hai portato a 1249 (+15) e lui torna a 1234 che ha in memoria... se vuoi una cosa personalizzata conviene usare M0

  • Like 3
Link al commento
Condividi su altri siti

1 ora fa, Killrob dice:

E se gli lasci le coordinate assolute prima di estrudere i 15mm? Che succede? 

Non posso!
Ragiona con me: per farlo devo conoscere la posizione di E in quell'istante e sommargli 15 (ok si puo' fare), e poi dovrei sommare 15 a tutto il resto del GCODE perche' i conti non appatterebbero piu'.
Non si puo'.

Dovrei estrudere 15 senza che questi vengano conteggiati in "E" ed ecco perche' esiste il comando relativo solo che qui non funziona o ha un bug.
Ed e' un periodo che i bug mi vengono proprio a cercare.

 

Allora: ho fatto il seguente ragionamento.
Se estrudo 15 e lui mi ritrae 15, allora io ne estrudo 15 e subito dopo ne ritraggo 15: che mi frega? Tanto poi inizia la retrazione del cambio filo...

 

Ecco il codice:

G91              ; coordinate relative
G1 Z10           ; alza di 10mm

G90              ; coordinate assolute
G1 X0 Y0 F1000   ; sposta carrello

G91              ; coordinate relative
G1 F200 E15      ; Estrudi 15
G1 F200 E-15     ; Ritrai 15

G90              ; coordinate assolute

M600             ; cambio filo

G91              ; coordinate relative
G1 Z-10          ; abbassa di 10mm
G90              ; coordinate assolute

 

Sai che succede? 🙂

Succede che estrude 15 (mezzo giro di motore, ormai lo so), ritrae 15 e poi inizia il cambio filo. Fin qui tutto ok.
Io cambio il filo, lui lo reinserisce, abbassa il carrello di 10 e...  ESTRUDE qualcosa, tipo 10mm. MA PERCHE'???? 😤

 

Va bene va bene, calma.

Faccio respirazione yoga e rifaccio altre prove.

Variando la mia ritrazione varia anche l'operazione che fa al ritorno stampa.

Esempio:

G1 F200 E15      ; Estrudi 15
G1 F200 E-5     ; Ritrai 5

 

Al ritorno alla stampa mi ritrae tipo 5 (non so quantificare)
 

Allora io:
Codice:

G1 F200 E15      ; Estrudi 15
G1 F200 E-7.5     ; Ritrai 7.5

 

Al ritorno alla stampa QUASI non muove E.


Allora io:

Codice:
G1 F200 E15      ; Estrudi 15
G1 F200 E-10     ; Ritrai 10

 

Adesso dopo che abbassa il carrello (Z-10) estrude circa 5 o 6. Ma estrude lo stesso.
Va bene, mi dico, va bene lo stesso. Che mi frega?
Glielo tolgo mentre sposta il carrello prima di tornare alla stampa.
Va bene cosi' (anche se non so il motivo per cui fa cosi').

E qui il nuovo problema: il sistema di "estrudi lentamente e poi ritrai" e' il modo migliore per stappare e svuotare il nozzle.

Lo uso sempre quando cambio filo e infatti quando metto il nuovo non devo attendere che si svuoti il nozzle dal vecchio colore: esce immediatamente il nuovo filamento.


Pero' esce senza "pressione" perche' le pareti interne del nozzle sono vuote.

Ed e' esattamente quel che accade: per i primi 2 secondi di stampa "reale" (con E15 e E-10) il filamento esce "a spruzzi", ma esce. Roba di un paio di secondi ma e' sopportabile.

E' il massimo che ho potuto fare, e per ora "mi sto".

Certo, c'e' da capire se avro' bisogno di tutto cio' quando mi arrivera' lanuova gola all-metal (quella che abbiamo preso insieme).
Per ora e' l'unico sistema per poter cambiare filo senza impazzire cercando di far passare una bolla di filamento da 2.1mm attraverso il bowden di 2mm.

L'ultima volta si e' strappato il filamento dentro, e per fortuna siamo a dicembre e i calendari per ora li regalano.

 

Aggiungo anche il "bug" non si manifesta in Z, dove il carrello con +10 e -10 torna esattamente al suo posto.

Link al commento
Condividi su altri siti

Se tu chiedi un cambio di filo (M600), da firmware esegue tutta una serie di operazioni, che non puoi bypassare da GCode. Le riporto di seguito:

 

#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
  #define PAUSE_PARK_RETRACT_FEEDRATE         60  // (mm/s) Initial retract feedrate.
  #define PAUSE_PARK_RETRACT_LENGTH            2  // (mm) Initial retract.
                                                  // This short retract is done immediately, before parking the nozzle.
  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE     25  // (mm/s) Unload filament feedrate. This can be pretty fast.
  #define FILAMENT_CHANGE_UNLOAD_ACCEL        20  // (mm/s^2) Lower acceleration may allow a faster feedrate.
  #define FILAMENT_CHANGE_UNLOAD_LENGTH      400  // (mm) The length of filament for a complete unload.
                                                  //   For Bowden, the full length of the tube and nozzle.
                                                  //   For direct drive, the full length of the nozzle.
                                                  //   Set to 0 for manual unloading.
  #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE   6  // (mm/s) Slow move when starting load.
  #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH     0  // (mm) Slow length, to allow time to insert material.
                                                  // 0 to disable start loading and skip to fast load only
  #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE  25  // (mm/s) Load filament feedrate. This can be pretty fast.
  #define FILAMENT_CHANGE_FAST_LOAD_ACCEL     20  // (mm/s^2) Lower acceleration may allow a faster feedrate.
  #define FILAMENT_CHANGE_FAST_LOAD_LENGTH   400  // (mm) Load length of filament, from extruder gear to nozzle.
                                                  //   For Bowden, the full length of the tube and nozzle.
                                                  //   For direct drive, the full length of the nozzle.
  #define ADVANCED_PAUSE_CONTINUOUS_PURGE         // Purge continuously up to the purge length until interrupted.
  #define ADVANCED_PAUSE_PURGE_FEEDRATE        3  // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
  #define ADVANCED_PAUSE_PURGE_LENGTH        150  // (mm) Length to extrude after loading.
                                                  //   Set to 0 for manual extrusion.
                                                  //   Filament can be extruded repeatedly from the Filament Change menu
                                                  //   until extrusion is consistent, and to purge old filament.
  #define ADVANCED_PAUSE_RESUME_PRIME          0  // (mm) Extra distance to prime nozzle after returning from park.
  //#define ADVANCED_PAUSE_FANS_PAUSE             // Turn off print-cooling fans while the machine is paused.

                                                  // Filament Unload does a Retract, Delay, and Purge first:
  #define FILAMENT_UNLOAD_PURGE_RETRACT       13  // (mm) Unload initial retract length.
  #define FILAMENT_UNLOAD_PURGE_DELAY       5000  // (ms) Delay for the filament to cool after retract.
  #define FILAMENT_UNLOAD_PURGE_LENGTH         8  // (mm) An unretract is done, then this length is purged.
  #define FILAMENT_UNLOAD_PURGE_FEEDRATE      25  // (mm/s) feedrate to purge before unload

  #define PAUSE_PARK_NOZZLE_TIMEOUT           45  // (seconds) Time limit before the nozzle is turned off for safety.
  #define FILAMENT_CHANGE_ALERT_BEEPS         10  // Number of alert beeps to play when a response is needed.
  #define PAUSE_PARK_NO_STEPPER_TIMEOUT           // Enable for XYZ steppers to stay powered on during filament change.

  #define PARK_HEAD_ON_PAUSE                      // Park the nozzle during pause and filament change.
  #define HOME_BEFORE_FILAMENT_CHANGE             // If needed, home before parking for filament change

  #define FILAMENT_LOAD_UNLOAD_GCODES             // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
  //#define FILAMENT_UNLOAD_ALL_EXTRUDERS         // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif

 

Dovremmo vedere i valori che hai a firmware e modificarne qualcuno, tipo il FILAMENT_UNLOAD_PURGE_RETRACT per capire come risolvere il tuo problema.

 

Link al commento
Condividi su altri siti

3 minuti fa, invernomuto dice:

che non puoi bypassare da GCode


Mi sta bene, ma perche' quando non faccio alcuna estrusione e retrazione manuale in "relativo" (quindi solo M600) non fa alcun movimento extra?
 

Le estrusioni e ritrazioni (a questo punto, senza senso) vengono aggiunte solo se io faccio operazioni e, di logica, non dovrebbero avvenire.

50 minuti fa, Marco-67 dice:

con M600 memorizza tutto anche perchè tu sei andato in X0 Y0 e non gli hai detto di tornare in posizione, ci va da solo quindi lo ha memorizzato, come il valore E che da 1234 lo hai portato a 1249 (+15) e lui torna a 1234 che ha in memoria...

 

Sembra la cosa piu' sensata che io abbia letto.
Il ragionamento fila.

 

Come funziona M0?

Link al commento
Condividi su altri siti

3 minuti fa, Marco-67 dice:

ne ho parlato qua


Lo leggero' quanto prima.

 

Sul discorso di prima, pero', i torni non contano: M600 io lo do' DOPO essermi spostato a 0,0 ed aver fatto carrello giu, estrusione e retrazione.
Al massimo memorizza le cose da questo momento, mica da quando IO ho deviato la stampa col mio codice.

Pensandoci bene non serve nemmeno che M600 memorizzi la posizione di stampa perche' e' scritta (X Y Z ed E), in maniera assoluta, nelle righe di codice successive.

Quindi il problema secondo me e' altrove.

 

Link al commento
Condividi su altri siti

8 minuti fa, Carsco dice:

Sul discorso di prima, pero', i torni non contano: M600 io lo do' DOPO essermi spostato a 0,0

si ma puo' essere che vada a cercare la prima (in ordine l'ultima) stringa utile completa che da codice compilato è G X Y Z E le tue invece sono incomplete non ci sono tutti e quattro gli assi in una sola stringa

40 minuti fa, invernomuto dice:

Le riporto di seguito:

in quale file sono queste righe?

Link al commento
Condividi su altri siti

Partecipa alla conversazione

Puoi pubblicare ora e registrarti più tardi. Se hai un account, accedi ora per pubblicarlo con il tuo account.

Ospite
Rispondi a questa discussione...

×   Hai incollato il contenuto con la formattazione.   Rimuovere la formattazione

  Sono consentiti solo 75 emoticon max.

×   Il tuo collegamento è stato incorporato automaticamente.   Mostra come un collegamento

×   Il tuo contenuto precedente è stato ripristinato.   Pulisci editor

×   Non puoi incollare le immagini direttamente. Carica o inserisci immagini dall'URL.


×
×
  • Crea Nuovo...