Welcome! Log In Create A New Profile

Advanced

Guida collegamento endstop [WIKI]

Posted by Gordie 
Guida collegamento endstop [WIKI]
February 23, 2014 08:50AM
Sulla pagina Wiki dedicata: [reprap.org] ma soprattutto la guida passo passo sulla pagina della RAMPS: [reprap.org].
Possiamo leggere che la scheda ArduinoMEGA ha già le resistenze di pullup quindi non servono 3 cavi. Guardiamo l'immagine qui sotto a sinistra, rappresenta la RAMPS vista da sopra.
In alto a destra troviamo i connettori segnalati END STOPS, sono sei con rispettive etichette [D3][D2][D14][ETC] e assi
(x-min, x-max, y-min, y-max, z-min, z-max).
Possiamo anche vedere a lato +, - ,S.
Questa immagine mostra un esempio di collegamento di finecorsa sulla RAMPS. Click per ingrandire.

PREMESSA: Data la generalità dell'argomento colleghiamo gli interruttori finecorsa meccanici in configurazione NC ovvero Normalmente Chiusi usando 2 cavi (mette a massa se non è premuto):

Il pin 2 denominato C del finecorsa va collegato al pin denominato S sulla Ramps mentre, il pin 1 denominato NC va collegato al pin denominato - sulla Ramps.
Pin 1 e 2 possono essere contrassegnati sul finecorsa con NC e C, ogni finecorsa ha la propria disposizione dei contatti/pin.
Attenzione: non fare il collegamento del + al -, ovvero non collegare + a C o NC.
Mechanical Endstop Mechanical Endstop with led
Riferimenti generici per gli endstop
Sugli endstop Sulla RAMPS Su opto/mech & led PCB
1 NC GND o G o - GND o G o -
2 C S o SGN o Signal S o SGN o Signal
3 NO VCC o V o + VCC o V o +

ATTENZIONE quelle che seguono sono considerazioni GENERALI:
Il collegamento al + sulla RAMPS serve per i finecorsa ottici (opto endstops) che utilizzano 3 cavi; anche i finecorsa che montano un led hanno bisogno del collegamento al +.
Quindi se avete un endstop/finecorsa meccanico con led dovrete collegare 3 cavi: NC al -, C al S, NO al +
. Prima di fare questo collegamento, però, è consigliabile controllare che i pin del connettore della schedina che monta il vostro endstop (che sia opto, meccanico, etc.) siano corretti come appena affermato, in alcuni casi infatti è stato riscontrato che i produttori cinesi hanno dei pin invertiti.
Per effettuare un test su queste schedine munite di led bastano due batterie da 1,5v collegate in serie; Informatevi sul Web e forum per il vostro specifico opto/endstop con led, soprattutto se montato su schedina/PCB! In allegato qua sotto trovate le immagini del collegamento dei pin di una schedina endstop & led Makerbot V1.2

C'è da tener conto anche della parte del Firmware, ad esempio Marlin ha come impostazione standard il collegamento dei pin NO e C, non NC e C. Per maggiori informazioni proseguite nella lettura qua sotto.
Gli altri finecorsa li colleghiamo con la stessa procedura.

Fatto il collegamento bisogna impostare il Firmware, ad esempio Marlin, apriamo il file nell'IDE di Arduino per modificarne il Configuration.h:

Parte di Configuration.h dove si impostano gli endstop


//===========================================================================
//=============================Mechanical Settings===========================
//===========================================================================

// Uncomment the following line to enable CoreXY kinematics
// #define COREXY

// coarse Endstop Settings
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors


#ifndef ENDSTOPPULLUPS
// fine Enstop settings: Individual Pullups. will be ignored if ENDSTOPPULLUPS is defined
// #define ENDSTOPPULLUP_XMAX
// #define ENDSTOPPULLUP_YMAX
// #define ENDSTOPPULLUP_ZMAX
// #define ENDSTOPPULLUP_XMIN
// #define ENDSTOPPULLUP_YMIN
// #define ENDSTOPPULLUP_ZMIN
#endif


#ifdef ENDSTOPPULLUPS
#define ENDSTOPPULLUP_XMAX
#define ENDSTOPPULLUP_YMAX
#define ENDSTOPPULLUP_ZMAX
#define ENDSTOPPULLUP_XMIN
#define ENDSTOPPULLUP_YMIN
#define ENDSTOPPULLUP_ZMIN
#endif


// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.

//#define DISABLE_MAX_ENDSTOPS
//#define DISABLE_MIN_ENDSTOPS


// Disable max endstops for compatibility with endstop checking routine
#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
#define DISABLE_MAX_ENDSTOPS
#endif

// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders

// Disables axis when it's not being used.
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false // For all extruders

#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false

// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1


#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below.

// Travel limits after homing
#define X_MAX_POS 205
#define X_MIN_POS 0
#define Y_MAX_POS 205
#define Y_MIN_POS 0
#define Z_MAX_POS 200
#define Z_MIN_POS 0

#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)


Abbiamo detto che i nostri finecorsa meccanici non hanno bisogno della resistenza di pullup e che sfruttano quelle di Arduino, Marlin è già preimpostato per funzionare così; infatti troviamo nella sezione =Mechanical Settings= la voce:

// coarse Endstop Settings
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
Questa voce è abilitata per default. Se mettiamo // prima di #define andiamo a commentare quindi rendiamo "inutile" quella riga di codice perché diventa un commento, ovvero diciamo a Marlin di NON usare le resistenze di pullup di Arduino. Questa riga di codice, se disabilitata, è utile per l'utilizzo di finecorsa ottici ed anche per impostare una stampante che ha vari tipi di finecorsa, non solo meccanici o meccanici con la resistenza di pullup nel loro circuito in cui sono montati. Se chi sta leggendo questa guida ha degli endstops Makerbot rimando a questa discussione e al file allegato qua sotto: [forums.reprap.org]. Inoltre quella riga, se disabilitata, influenzerà le righe di codice successive che servono per impostare singolarmente i pullup dei finecorsa.

Andiamo avanti:
#ifndef ENDSTOPPULLUPS
// fine Enstop settings: Individual Pullups. will be ignored if ENDSTOPPULLUPS is defined
// #define ENDSTOPPULLUP_XMAX
// #define ENDSTOPPULLUP_YMAX
// #define ENDSTOPPULLUP_ZMAX
// #define ENDSTOPPULLUP_XMIN
// #define ENDSTOPPULLUP_YMIN
// #define ENDSTOPPULLUP_ZMIN
#endif
Come appena detto, in queste righe di codice, che vengono utilizzate se //#define ENDSTOPPULLUPS, troviamo l'attivazione delle resistenze di pullup per ogni singolo finecorsa, questo per impostare una stampante che ha vari tipi di finecorsa. Consideriamo ora che //#define ENDSTOPPULLUPS sia impostato.
Ad ogni riga corrisponde un finecorsa: se all'inizio del codice si commenta (si mette //) allora quel finecorsa NON utilizzerà la resistenza di pullup di Arduino (ovvero userà una resistenza di pullup presente sul proprio circuito ); se all'inizio del codice non c'è //, quindi viene eseguita quella riga, allora quel finecorsa userà la resistenza di pullup di Arduino.


La stessa cosa la abbiamo nelle righe successive del codice:
#ifdef ENDSTOPPULLUPS
#define ENDSTOPPULLUP_XMAX
#define ENDSTOPPULLUP_YMAX
#define ENDSTOPPULLUP_ZMAX
#define ENDSTOPPULLUP_XMIN
#define ENDSTOPPULLUP_YMIN
#define ENDSTOPPULLUP_ZMIN
#endif
Ad ogni riga corrisponde un finecorsa: se all'inizio del codice si commenta (si mette //) allora quel finecorsa NON utilizzerà la resistenza di pullup di Arduino (ovvero userà una resistenza di pullup presente sul proprio circuito ); se all'inizio del codice non c'è //, quindi viene eseguita quella riga, allora quel finecorsa userà la resistenza di pullup di Arduino.

Passiamo alla parte di codice successiva:
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
In queste righe si dichiarano le logiche dei finecorsa.
Riprendendo ciò che abbiamo detto all'inizio, se abbiamo collegato i due pin NC - C del finecorsa cosa avviene all'interno del finecorsa quando viene premuto?
Il collegamento tra NC e C viene aperto quindi NC e C non sono più collegati tra loro; il finecorsa è un interruttore, ricordiamocelo. Il Firmware interpreta questa apertura come un segnale digitale 1 e blocca i motori o attiva l'homing o fa altro, mentre se NC e C sono collegati ovvero il finecorsa non è premuto, il Firmware rileva un segnale logico di 0 e non fa nulla.
Impostazione in Marlin
Collegamento Endstop con 2 cavi Sulla RAMPS Marlin
NC - C GND - S false
NO - C GND - S true
Opto Endstop false
Detto questo, cosa succede se collego il pin NO al pin C? NO significa Normalmente Aperto, i due pin non sono in contatto tra loro; se il finecorsa non è premuto NO - C non sono collegati ovvero abbiamo un segnale logico di 1; se il finecorsa viene premuto i due pin vengono collegati quindi avremo un segnale logico di 0. Si può intuire che il comportamento è esattamente il contrario della situazione NC - C.
Quindi la parte di codice in grigio qua sopra serve per dire al Firmware quali endstop abbiamo "invertiti" ovvero collegati NO - C.
Come dice il commento // set to true to invert the logic of the endstop. per invertire la logica dobbiamo scrivere true al posto di false.
Perché come detto prima Marlin considera come impostazione di default che voi abbiate connesso alla RAMPS NO e C sui finecorsa.

Ripetiamo il concetto, tutti gli esempi portati finora prevedono il collegamento (con 2 cavi) alla RAMPS di NC e C dei finecorsa, mentre Marlin è preimpostato per la connessione alla RAMPS di NO e C (per questo trovate tutti true nel codice vergine quando lo scaricate la prima volta).
Passiamo alle istruzioni codice successive:
//#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS
Come possiamo vedere queste due righe sono commentate, quindi non sono attive/utilizzate. Queste due righe (che sonodisabilitateper default) permettono l'Homing degli assi ai finecorsa collegati su X+, Y+, Z+ (MAX) o X-, Y-, Z- (MIN). Quindi non dovreste modificarle.

Andando oltre troviamo l'Homing:
// ENDSTOP SETTINGS: // Sets direction of endstops when homing; 1=MAX, -1=MIN #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1
Qui si configura la posizione dei vostri finecorsa e l'Homing. Praticamente gli diciamo a Marlin dove sono posizionati i finecorsa rispetto agli assi, con -1 o 1. Qui dipende tutto dal tipo di stampante che avete.

Problemi di stampa specchiata? [www.ivanbortolin.it]
Per la calibrazione della stampante guardate le risorse nelle nostre FAQ.

Edited 20 time(s). Last edit at 07/15/2014 09:29AM by Gordie.
Attachments:
open | download - ends.jpg (18.9 KB)
open | download - RAMPS1.4+Generic M'Bot1.jpg (272 KB)
Sorry, you can't reply to this topic. It has been closed.