Vai al contenuto

Progetto una core XY che "se mi ispira poi la costruisco davvero", consigli molto graditi !


Messaggi raccomandati

Inviato

Comunque ho attaccato la stampante al muro.

Immagine di repertorio (vista da sotto) con la staffa in blu sulla stampante :

image.png.8ca4cd6b47cb2b3d01c032830e040988.png

E così è come l ho fissata (piastra di acciaio inox con staffe ad L sul muro)

IMG_COM_202408182329067810.thumb.jpg.11653c7c1a399619e713e824189ea25d.jpg

 

Sono rimasto sorpreso da quanto rigida è diventata. Anche spingendo/battendosulle punte dove finiscono le rotaie di y, no si muove niente, sembra di spingere il muro (in tutte le direzioni).

Non c'è proprio storia, mi verrebbe da dire che le core xy "veloci" andrebbero tutte almeno predisposte per montarle a muro, però attendo di calibrare input shaper per avere dati reali.

  • Like 1
Inviato
1 ora fa, Cubo ha scritto:

Io però, a differenza del tuo file di configurazione non ho la parte dopo il tuo:

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.

Che probabilmente è corretto perché devo ancora fare una mesh ?

Si probabilmente quella parte viene popolata dopo con l'uso.

1 ora fa, Cubo ha scritto:

Ma è normale che quando salvo lo zoffset mi si riavvia tutto ?

Tu puoi cambiare lo z-offset da interfaccia e non si deve riavviare, quando spegni pero' perdi i cambiamenti.

Se vuoi salvare i cambiamenti devi salvare e per non fare casini quando usi quella macro SAVE_CONFIG suppongo ti faccia un reset ma se vuoi te non la usi e vai a editare a mano il file di config e fai solo SAVE senza RESTART.

---------

BTW te c'hai il letto a zone?

Vuoi vedere la macro che a seconda della dimensione / posizione mi attiva le zone?
L'ho vista ieri  sera su la stampante N4P su cui stavo lavorando, funziona.

Inviato
5 ore fa, eaman ha scritto:

Se vuoi salvare i cambiamenti devi salvare e per non fare casini quando usi quella macro SAVE_CONFIG suppongo ti faccia un reset ma se vuoi te non la usi e vai a editare a mano il file di config e fai solo SAVE senza RESTART.

OK speravo ci fosse un comando per farlo in automatico senza il reset.

5 ore fa, eaman ha scritto:

BTW te c'hai il letto a zone?

Vuoi vedere la macro che a seconda della dimensione / posizione mi attiva le zone?
L'ho vista ieri  sera su la stampante N4P su cui stavo lavorando, funziona.

Si, grazie! Mi manca proprio, son curioso di vedere come prende i riferimenti.

Inviato
7 ore fa, Cubo ha scritto:

Si, grazie! Mi manca proprio, son curioso di vedere come prende i riferimenti.

Gira  attorno a: https://github.com/OpenNeptune3D/OpenNept4une/blob/main/printer-confs/n4pro/section_extra_heating.cfg

[gcode_macro SET_BED_TEMPERATURE]   ; macros for innner & outer bed temperature depending on the print size
gcode:
    SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={params.TARGET}
    {% if not printer["gcode_macro PRINT_START"].small_print %}
      SET_HEATER_TEMPERATURE HEATER=heater_bed_outer TARGET={params.TARGET}
    {% endif %}

Print_start:

https://github.com/OpenNeptune3D/OpenNept4une/blob/main/printer-confs/base.cfg

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.

 

  • Like 1
Inviato
Il 18/8/2024 at 15:14, dnasini ha scritto:

Qualche tempo fa su Aliexpress avevo trovato del PTFEcon diametri superiori a quelli del tradizionale Capricorn, quindi si,  dovresti trovarlo

forse nessuno lo sa o se lo ricorda... ma le FDM possono stampare con filamenti da 1.75, che sono quelli che conosciamo tutti e che usiamo regolarmente, ma anche con filamenti da 2.85 mm

https://www.amazon.it/AmazonBasics-Filamento-stampanti-polilattato-85/dp/B07RZTF5QB/ref=sr_1_5?__mk_it_IT=ÅMÅŽÕÑ&crid=3L8Q1N2B85SSL&dib=eyJ2IjoiMSJ9.Uu78vwR-9N0u2I5eNFIX7iC6Iv8TRlGK-o3qHqRrjmBDVJAZYAGGAEcKh3cYm0qTPpRaC5cwaRuetnxnScbkGb2qz3NVx0eFQEdWYeHYRq4clE-pizdCajEWkfIn1QryMP0wykQDh3hoPnc5c-YrGETwTr5HS5sYGTp97GC0ttBPFRvIwdjzp0qAuTcbfUu6vNFJTn1OuTCZfnvbwgp92todTUoVJBetn65V3R-xHE1cWT6PUGOsEXTRVXLmydnEjnTvLe1I29NdApsDQhg0nybeF9QIXTNkdvcUm7T157g.vJUkucCXIB7sUzMpFmqCmwt8aIxf9ZfPNsFBg-Ek5HI&dib_tag=se&keywords=filamento+da+2.85+mm&qid=1724088025&sprefix=filamento+da+2.85+mm%2Caps%2C148&sr=8-5

il che vuol dire che esistono in commercio tubi PTFE da 3 mm

https://it.aliexpress.com/item/1005006416470064.html?spm=a2g0o.productlist.main.13.36d2A4IdA4IdVm&algo_pvid=dd0c2197-8d5b-4fdc-9974-af93a182de76&algo_exp_id=dd0c2197-8d5b-4fdc-9974-af93a182de76-6&pdp_npi=4%40dis!EUR!8.82!7.80!!!9.50!8.40!%40210384db17240875915944414e0a54!12000037094688635!sea!IT!933038164!X&curPageLogUid=Upln7jjChPx5&utparam-url=scene%3Asearch|query_from%3A

con relativi hotend per il filamento da 2.85 mm

https://www.tronxy3dprinter.com/it-it/products/tronxy-veho-series-3mm-full-metal-hotend-extruder-dual-gear-direct-drive-extruder-print-head-kits-apply-to-2-85mm-filament?variant=44308658782428

 

e relativi nozzles chiaramente

https://it.aliexpress.com/item/4000015736659.html?spm=a2g0o.productlist.main.3.161aZxjaZxjaGx&algo_pvid=5cf0ba36-1fb6-44f2-8133-c3a2877ef9b4&algo_exp_id=5cf0ba36-1fb6-44f2-8133-c3a2877ef9b4-1&pdp_npi=4%40dis!EUR!4.54!3.77!!!4.89!4.06!%402103247117240883057273935ee04f!10000000037623051!sea!IT!933038164!X&curPageLogUid=aduVvB81o1hX&utparam-url=scene%3Asearch|query_from%3A

  • Like 2
Inviato

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.

 

Inviato (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 da eaman
  • Like 2
Inviato

Mentre provo a buttare giù la macro ho lanciato una stampa abilitando lo "Z_hop a spirale" e mi da questi messaggi:
image.png.b3bb0099c833e322f8c0f0194a807f81.png

(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:

image.png.34b057005f1b8d041abeabd033aa13ee.png

Inviato (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 da eaman
  • Like 1
  • Thanks 1
Inviato (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 da Cubo

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...