Cubo Inviato 20 Agosto 2024 Autore Inviato 20 Agosto 2024 Per la cronaca, il sensore per tarare inputshaper è fallato, ne ho preso uno nuovo e sono in attesa che arrivi. Peccato perché senza input shaper ha poco senso avere una stampante da 15K+ mm/s^2. 16 ore fa, eaman ha scritto: BTW questa usa KAMP ma anche lo slicer dovrebbe passare le dimensione delle mesh oppure con label object ci dovrebbero essere le info sulle dimensioni. Label object in orca segnala ad ogni layer quando finisci di stampare un oggetto ed inizia un altro (segnando gli id) ma non sembra dare info sugli ingombri. Mi verrebbe da scrivere un breve script/macro che per il primo layer va a prendere i massimi ed i minimi delle coordinate X ed Y di ogni oggetto, da questi si ricava gli spigoli dei rettangoli che includono gli oggetti e poi attiva solo i letti dove cade almeno uno spigolo. Il problema è che non saprei come fare in modo che un codice in una macro vada ad analizzare un gcode... Forse non si può neanche. Comunque quei dati sugli ingombi (gli spigoli) sono certamente già ricavati da klipper per fare la mesh dinamica però ancora una volta non saprei come andare a prendere quei parametri (cioè come trovare i loro nomi). Sarebbe facile se ci fosse una lista con tutti i parametri dove cercare un model1.xmax per dire. Cita
eaman Inviato 20 Agosto 2024 Inviato 20 Agosto 2024 (aggiornato) Se guardi in Orca Slicer ha del codice per fare la mesh dinamica con Marlin, immagino le dimensioni le calcoli lo slicer e poi prepari le posizioni per la sonda. START GCODE nello slicer: PRINT_START BED_TEMP=[hot_plate_temp_initial_layer] EXTRUDER_TEMP=[nozzle_temperature_initial_layer] AREA_START={first_layer_print_min[0]},{first_layer_print_min[1]} AREA_END={first_layer_print_max[0]},{first_layer_print_max[1]} BED_MESH=adaptive Prusa Slicer BED_MESH_CALIBRATE AREA_START={first_layer_print_min[0]},{first_layer_print_min[1]} AREA_END={first_layer_print_max[0]},{first_layer_print_max[1]} Ideal maker BED_MESH_CALIBRATE AREA_START={print_pos_min_x},{print_pos_min_y} AREA_END={print_pos_max_x},{print_pos_max_y} Cura slicer BED_MESH_CALIBRATE AREA_START=%MINX%,%MINY% AREA_END=%MAXX%,%MAXY% https://gist.github.com/ChipCE/95fdbd3c2f3a064397f9610f915f7d02 Modificato 20 Agosto 2024 da eaman 2 Cita
Cubo Inviato 20 Agosto 2024 Autore Inviato 20 Agosto 2024 Mentre provo a buttare giù la macro ho lanciato una stampa abilitando lo "Z_hop a spirale" e mi da questi messaggi: (Su orca ho messo "gcode flavour: Klipper") G3 è l'istruzione per gli archi antiorari. G17 se ho capito bene definisce il piano su cui eseguire (XY) l'arco. A quanto pare il mio klipper non li conosce... Qualcuno usa lo z-hop a spirale senza problemi per caso ? Volevo provarlo ma a questo punto evito. Ecco un G17 G3 nel gcode che sto stampando: Cita
eaman Inviato 20 Agosto 2024 Inviato 20 Agosto 2024 (aggiornato) 1 ora fa, Cubo ha scritto: A quanto pare il mio klipper non li conosce... Devi avere una stanza: [gcode_arcs] #resolution: 1.0 # An arc will be split into segments. Each segment's length will # equal the resolution in mm set above. Lower values will produce a # finer arc, but also more work for your machine. Arcs smaller than # the configured value will become straight lines. The default is # 1mm. Nel printer.config Modificato 20 Agosto 2024 da eaman 1 1 Cita
Cubo Inviato 21 Agosto 2024 Autore Inviato 21 Agosto 2024 (aggiornato) Ho provato a scrivere una macro, sicuramente ci saranno degli errori, c'è un modo per testarla ? Non dico nell'ambiente klipper proprio ma magari poter testare anche solo il ciclo che dalle coordinate definisce i letti attivi... Io ho Pycharm ma vedo che per usare come interprete Jinja serve la versione pro... Per caso conoscete qualche programma che lo ha gratis ? Altra cosa, banale ma non riesco a trovarla, quale è la sintassi per assegnare nello start gcode delle variabili con dei nomi ? Ad esempio dire a klipper che la variabile A vale 10. Ultima domanda, la regione di stampa "totale" (dove fa la mesh adattiva) è sempre rettangolare o può capitare che venga fuori anche "ad L" per esempio se gli oggetti sono messi in quel modo? Grazie [gcode_macro SCALDA_QUALI_LETTI] #definisce quali letti vanno scaldati gcode: # VANNO DEFINITE DA GCODE (SLICER): Xmin, Ymin, Xmax, Ymax della regione di stampa (sempre rettangolare, vero?) #imposta coordinate min/max x/y della regione di stampa {% set ANGOLI_STAMPA = {"Xmin" = Xmin, "Xmax" = Xmax, "Ymin" = Ymin, "Ymax" = Ymax} %} #crea dizionario delle coordinate min/max x/y dei tre letti (RT=retro DX=destra SX=sinistra) {% set LETTO_RT = {"Xmin": 0 - 10, "Xmax": 345 + 10, "Ymin": 150, "Ymax": 450 + 10, "nome": "RT" %} {% set LETTO_DX = {"Xmin": 0 - 10, "Xmax": 172.5, "Ymin": 0 - 10, "Ymax": 150, "nome": "DX" %} {% set LETTO_SX = {"Xmin": 172.5, "Xmax": 345 + 10, "Ymin": 0 - 10, "Ymax": 150, "nome": "SX" %} #inizializza set (vuoto) dei letti attivi {% LETTI_ATTIVI = {} %} #crea lista dei dizionari delle coordinate dei letti {% set LETTI = [LETTO_RT, LETTO_DX, LETTO_SX] %} #controlla in quali letti cadono gli angoli della regione di stampa e ne inserisce i nomi nel set LETTI_ATTIVI {% for LETTO in LETTI %} #considera un letto per volta #controlla se la X dei lati più a sinistra dell'area di stampa si allinea dento al letto (se accade allora gli spigoli di quel lato potrebbero stare nel letto) {% if ANGOLI_STAMPA.Xmin >= LETTO.Xmin and ANGOLI_STAMPA.Xmix <= LETTO.Xmax %} #controlla se la Y dei lati più "vicini" si allinea dentro al letto (se accade allora il punto davanti a dx è nel letto considerato) {% if ANGOLI_STAMPA.Ymin >= LETTO.Ymin and ANGOLI_STAMPA.Ymix <= LETTO.Ymax %} LETTI_ATTIVI.add(LETTO[nome]) #aggiunge il nome del letto al set #controlla se la Y dei lati più "lontani" si allinea dentro al letto (se accade allora il punto dietro a dx è nel letto considerato) {% elif ANGOLI_STAMPA.Ymax >= LETTO.Ymin and ANGOLI_STAMPA.Ymax <= LETTO.Ymax %} LETTI_ATTIVI.add(LETTO[nome]) #aggiunge il nome del letto al set {% endif %} {% endif %} #controlla se la X dei lati più a destra dell'area di stampa si allinea dento al letto (se accade allora gli spigoli di quel lato potrebbero stare nel letto) {% if ANGOLI_STAMPA.Xmax >= LETTO.Xmin and ANGOLI_STAMPA.Xmax <= LETTO.Xmax %} #controlla se la Y dei lati più "vicini" si allinea dentro al letto (se accade allora il punto davanti a sx è nel letto considerato) {% if ANGOLI_STAMPA.Ymin >= LETTO.Ymin and ANGOLI_STAMPA.Ymix <= LETTO.Ymax %} LETTI_ATTIVI.add(LETTO[nome]) #aggiunge il nome del letto al set #controlla se la Y dei lati più "lontani" si allinea dentro al letto (se accade allora il punto dietro a sx è nel letto considerato) {% elif ANGOLI_STAMPA.Ymax >= LETTO.Ymin and ANGOLI_STAMPA.Ymax <= LETTO.Ymax %} LETTI_ATTIVI.add(LETTO[nome]) #aggiunge il nome del letto al set {% endif %} {% endif %} {% endfor %} [gcode_macro M190] #assegna la temperatura dei comandi M190 ai letti attivi rename_existing: M190.1 gcode: {% for LETTO_ATTIVO in LETTI_ATTIVI %} {% if LETTO_ATTIVO == "RT" %} M190 S{params.BED_TEMP|default(60)|float %} {% elif LETTO_ATTIVO == "DX" %} SET_HEATER_TEMPERATURE HEATER=<letto_DX> [TARGET = params.BED_TEMP|default(60)|float %] {% elif LETTO_ATTIVO == "DX" %} SET_HEATER_TEMPERATURE HEATER=<letto_SX> [TARGET = params.BED_TEMP|default(60)|float %] {% endif %} {% endfor %} Modificato 21 Agosto 2024 da Cubo Cita
Cubo Inviato 23 Agosto 2024 Autore Inviato 23 Agosto 2024 Sto avendo risultati altalenanti con il bed_mesh. Nello START gcode ho messo: BED_MESH_CALIBRATE METHOD=automatic ADAPTIVE=1 BED_MESH_PROFILE LOAD=default Su alcune stampe funziona bene (cioè su due stampe ha funzionato bene, stampando solo sul piatto grande) ma ho appena provato a stampare un "foglio" su tutta la superficie e ho dovuto interrompere perché stampava troppo in aria da un lato e troppo schiacciato dall'altro. I miei letti appaiono così: Interessantemente stampava in aria sull aparte che si vede in rosso... quindi l'algoritmo credeva che fosse più in alto di quanto in realtà era... Cosa potrei fare per migliorare l'affidabilità ? Il range della mesh era di 0,7mm... è troppo o dovrebbe essere gestibile ? I punti della mia mesh distano circa 3,7cm... converrebbe farla più fitta ? Voi quanto fitta la fate ? 1 Cita
eaman Inviato 23 Agosto 2024 Inviato 23 Agosto 2024 7 minuti fa, Cubo ha scritto: BED_MESH_PROFILE LOAD=default Questo non ci vuole, altrimenti ti carica la vecchia mesh salvata. 1 Cita
dnasini Inviato 23 Agosto 2024 Inviato 23 Agosto 2024 3 minuti fa, Cubo ha scritto: BED_MESH_PROFILE LOAD=default Nn sono un guru, ad ogni modo, a mio avviso, questo comando rischia di incasinarti la mesh. Nel comando precedente, dici a klipper di fare una mesh adattiva, mentre nel secondo gli dici di caricare una mesh... Da quello che ho capito, la mesh adattiva e' calcolata al momento, utilizzata per la stampa ma nn salvata. Questo fa sì che se richiami la mesh "default" subito dopo, vai a sovrascrivere in memoria quella appena calcolata e nn e detto che questa sia consistente con il livellamento del tuo piatto 1 1 Cita
Cubo Inviato 23 Agosto 2024 Autore Inviato 23 Agosto 2024 (aggiornato) Avevo letto che klipper non carica più in automatico le mesh dopo averle fatte e bisogna dargli il comando load. Forse però non vale per le adattive? Domani riprovo togliendo il LOAD e vado a vedere se e cosa mostra il grafico del letto durante la stampa dopo la mesh adattiva. Modificato 23 Agosto 2024 da Cubo Cita
eaman Inviato 24 Agosto 2024 Inviato 24 Agosto 2024 Be' bisogna piuttosto che controlli la console mentre stampa: dovresti vedere che prima fa le bazze per la mesh adattiva (che non viene salvata di default) e poi carica la prima mesh (default) che hai salvato. Comunque questa roba c'e' nella documentazione se te la sei persa 🙂 2 Cita
Messaggi raccomandati
Partecipa alla conversazione
Puoi pubblicare ora e registrarti più tardi. Se hai un account, accedi ora per pubblicarlo con il tuo account.