Carsco Inviato 2 Dicembre 2020 Condividi Inviato 2 Dicembre 2020 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? Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Carsco Inviato 2 Dicembre 2020 Autore Condividi Inviato 2 Dicembre 2020 Sto provando un barbatrucco: E se dopo aver estruso 15mm ritraggo IO 15mm e poi do' M600? A questo punto la stampante trovera' "E" nel punto di prima e non dovra' ritrarre nulla prima di tornare a stampare. Adesso provo. Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Killrob Inviato 2 Dicembre 2020 Condividi Inviato 2 Dicembre 2020 E se gli lasci le coordinate assolute prima di estrudere i 15mm? Che succede? Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Marco-67 Inviato 2 Dicembre 2020 Condividi Inviato 2 Dicembre 2020 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 3 Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Carsco Inviato 2 Dicembre 2020 Autore Condividi Inviato 2 Dicembre 2020 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. Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
invernomuto Inviato 2 Dicembre 2020 Condividi Inviato 2 Dicembre 2020 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. Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Carsco Inviato 2 Dicembre 2020 Autore Condividi Inviato 2 Dicembre 2020 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? Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Marco-67 Inviato 2 Dicembre 2020 Condividi Inviato 2 Dicembre 2020 9 minuti fa, Carsco dice: Come funziona M0? ne ho parlato qua https://www.stampa3d-forum.it/forum/topic/12610-gcode-per-pausa/?tab=comments#comment-98718 ovviamente devi aggiungere le varie ritrazioni 1 Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Carsco Inviato 2 Dicembre 2020 Autore Condividi Inviato 2 Dicembre 2020 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. Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Marco-67 Inviato 2 Dicembre 2020 Condividi Inviato 2 Dicembre 2020 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? Cita Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Partecipa alla conversazione
Puoi pubblicare ora e registrarti più tardi. Se hai un account, accedi ora per pubblicarlo con il tuo account.