Come configurare gli endstop? E ancora, è meglio usare tre o sei endstop?
Cominciamo dall’inizio; cosa sono gli endstop? Gli endstop (o finecorsa) sono interruttori meccanici o ottici in grado di interrompere il movimento sull’asse al quale sono assegnati se la macchina cerca di passare oltre. Può succedere per vari errori e motivi, e non averli porterebbe alla collisione di parti che non vorremmo rompere.
Inoltre, e questa è una funzione ancora più importante, permettono alla macchina di riconoscere la “home”, o meglio lo 0, 0, 0 e di partire da li nel misurare gli spostamenti.
Ricapitolando normalmente si utilizzano tre endstop per i punti minimi dei tre assi, quelli che segnano la home; se volessimo salvaguardare l’estrusore dal volare per qualche motivo fuori dal piatto dalla parte opposta dovremo mettere anche quelli per i punto massimi. In questo esempio (e nei prossimi) settiamo una configurazione a tre endstop per la home.
#define DISABLE_MAX_ENDSTOPS
//#define DISABLE_MIN_ENDSTOPS
Endstop: attivare o meno i pull-up delle resistenze
É buona norma utilizzare pull-up o pull-down in un circuito se si inserisce direttamente un interruttore meccanico fra il segnale e la messa a terra. Fortunatamente queste resistenze sono solitamente integrate nelle schede per le stampanti 3d ed è sufficiente attivarli (o non disattivarli) via codice.
Vediamo prima la configurazione corretta per degli endstop meccanici (che necessitano di pull-up) e poi per gli endstop ottici (che solitamente hanno i pull-up sulla schedina che li ospita).
Per gli endstop meccanici,
// coarse Endstop Settings
#define ENDSTOPPULLUPS
è la scelta corretta; per gli ottici invece li commentiamo:
// coarse Endstop Settings
//#define ENDSTOPPULLUPS
Ancora enstop: invertire la logica
Alcuni endstop sono in configurazione NC (normalmente chiuso, cioè passa corrente) e quando attivati spengono il circuito e altri sono NO (normally open) e quando attivati fanno passare la corrente. A livello logico dovremmo sempre configurare gli endstop come NC, così da togliere corrente se attivati fermando il tutto.
Questi sono i settaggi (NO = true e NC = false) che abbiamo attivato classici per i nostri endstop meccanici:
#const bool X_MIN_ENDSTOP_INVERTING = true;
#const bool Y_MIN_ENDSTOP_INVERTING = true;
#const bool Z_MIN_ENDSTOP_INVERTING = true;
mentre per degli endstop ottici sarebbe corretto:
#const bool X_MIN_ENDSTOP_INVERTING = false;
#const bool Y_MIN_ENDSTOP_INVERTING = false;
#const bool Z_MIN_ENDSTOP_INVERTING = false;
In sostanza: la differenza fra ottici e meccanici è l’attivazione dei pullup e l’inversione della logica. Per il resto non ci dovrebbero essere problemi, a patto di collegare correttamente i tre pin sulla scheda.
Movimenti oltre gli endstop
Teoricamente nel configurare gli endstop ottici potremmo metterli dove vogliamo, e dire alla macchina di quanto superarli ad esempio per arrivare allo zero. Non ci abbiamo mai provato e non è che mi diano molta sicurezza.
A parte gli scherzi se decidete di mettere gli enstop alla fine di ogni asse le prossime due righe vanno impostate – o lasciate – su true.
#define min_software_endstops true
#define max_software_endstops true
Qui trovate il link alla Minitronics V1.1 e alla Megatronics V3.1 nel nostro piccolo store: sono entrambe schede che utilizziamo per le nostre stampanti 3D, ci troviamo benissimo e le loro caratteristiche valgono la lettura.
Per comodità, ecco qui i link a tutti i post pubblicati fino ad ora di questo minicorso:
Costruire una stampante 3D: guida al firmware Marlin, parte prima
Costruire una stampante 3D: la scheda, Marlin e l’Arduino IDE
Costruire una stampante 3D: configurazioni generali Marlin
Costruire una stampante 3D: l’indispensabile arma dei commenti nel codice
Costruire una stampante 3D: controllare la temperatura con Marlin
Costruire una stampante 3D: come configurare gli endstop?
Costruire una stampante 3D: capire la direzione dei motori stepper
Costruire una stampante 3D: configurare gli assi