This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 3 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Version EX- Inicio PAG 27 30/7/20] 3D-Printer LGR-EX Open Source
Buenos dias Chicos, tengo una dudilla, ya que en tema de codigo ando un poco pez, Como o que tendria que hacer, para pasar El "E2" de mi tarjeta Rumba para ser otro Z?
dentro de marlin Veo que me trae E0,E1,E2, entiendo que estan asigandos a los extrusores, y la verdad que no se como cambiarlo, para que el E2 Se otro Z

haber si me poddeis echar un cable.

Gracias

viendo en nmarlin e econtrado esto pero no se como interpretarlo, ya que las  lineas estan descomentadas

Código:
//
// Dual Y and Dual Z support
// These options are mutually-exclusive
//

#define __EPIN(p,q) E##p##_##q##_PIN
#define _EPIN(p,q) __EPIN(p,q)

// The Y2 axis, if any, should be the next open extruder port
#ifndef Y2_STEP_PIN
 #define Y2_STEP_PIN   _EPIN(EXTRUDERS, STEP)
 #define Y2_DIR_PIN    _EPIN(EXTRUDERS, DIR)
 #define Y2_ENABLE_PIN _EPIN(EXTRUDERS, ENABLE)
#endif

// The Z2 axis, if any, should be the next open extruder port
#ifndef Z2_STEP_PIN
 #define Z2_STEP_PIN   _EPIN(EXTRUDERS, STEP)
 #define Z2_DIR_PIN    _EPIN(EXTRUDERS, DIR)
 #define Z2_ENABLE_PIN _EPIN(EXTRUDERS, ENABLE)
#endif

#define SENSITIVE_PINS { 0, 1, \
   X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
   Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
   Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \
   PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, \
   _E0_PINS _E1_PINS _E2_PINS _E3_PINS \
   analogInputToDigitalPin(TEMP_BED_PIN) \
 }

#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))

#endif //__PINS_H
  Responder
Muy buenas Sacha!!! Yo he conectado para probar 4 motores en serie ( 2 en serie, los otros 2 en serie y estos en paralelo....No se si me explico) a un driver del eje Z y funcionan pero cuando cargas peso en la cama después de subirlo y bajarlo varias veces pierde algún paso y la cama se queda torcida.
Así que también me interesaría poner el otro extrusor como eje Z MUCHÍSIMO.
Una pregunta: has pensado utilizar en vez de nema 23 unos de estos nema 17 Con reductora incorporada como los que se ponen a veces para el extrusor??
  Responder
(04-10-2016, 11:23 PM)pica2079 escribió: Muy buenas Sacha!!! Yo he conectado para probar 4 motores en serie ( 2 en serie, los otros 2 en serie y estos en paralelo....No se si me explico) a un driver del eje Z y funcionan pero cuando cargas peso en la cama después de subirlo y bajarlo varias veces pierde algún paso y la cama se queda torcida.
Así que también me interesaría poner el otro extrusor como eje Z MUCHÍSIMO.
Una pregunta: has pensado utilizar en vez de nema 23 unos de estos nema 17  Con reductora incorporada como los que se ponen a veces para el extrusor??

otra solucion no es perder un extrusor... si no , conectar a un driver que de mas amperiors a los motores para que estos 2 , repartan mas fuerza entre ellos.... por ejemplo un tb65xx v2 o v3

otro dato, la solucion para que un motor no pierda pasos respecto al otro, es que vayan unidos con una correa cerrada, asi aunque uno pierda un paso, el otro motor "tira" de el
  Responder
(03-10-2016, 12:04 PM)sacha escribió: Buenos dias Chicos, tengo una dudilla, ya que en tema de codigo ando un poco pez, Como o que tendria que hacer, para pasar El "E2" de mi tarjeta Rumba para ser otro Z?
dentro de marlin Veo que me trae E0,E1,E2, entiendo que estan asigandos a los extrusores, y la verdad que no se como cambiarlo, para que el E2 Se otro Z

haber si me poddeis echar un cable.

Gracias

viendo en nmarlin e econtrado esto pero no se como interpretarlo, ya que las  lineas estan descomentadas

//
// Dual Y and Dual Z support
// These options are mutually-exclusive
//

#define __EPIN(p,q) E##p##_##q##_PIN
#define _EPIN(p,q) __EPIN(p,q)

// The Y2 axis, if any, should be the next open extruder port
#ifndef Y2_STEP_PIN
 #define Y2_STEP_PIN   _EPIN(EXTRUDERS, STEP)
 #define Y2_DIR_PIN    _EPIN(EXTRUDERS, DIR)
 #define Y2_ENABLE_PIN _EPIN(EXTRUDERS, ENABLE)
#endif

// The Z2 axis, if any, should be the next open extruder port
#ifndef Z2_STEP_PIN
 #define Z2_STEP_PIN   _EPIN(EXTRUDERS, STEP)
 #define Z2_DIR_PIN    _EPIN(EXTRUDERS, DIR)
 #define Z2_ENABLE_PIN _EPIN(EXTRUDERS, ENABLE)
#endif

#define SENSITIVE_PINS { 0, 1, \
   X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
   Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
   Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \
   PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, \
   _E0_PINS _E1_PINS _E2_PINS _E3_PINS \
   analogInputToDigitalPin(TEMP_BED_PIN) \
 }

#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))

#endif //__PINS_H

En principio..., el operador ifndef, concretamente esa linea, te indica que, en caso de no estar definida esta constante en el fichero de pines (pins.h), se activaría y pillaría como driver extra para tu eje Z, el driver de tu siguiente extrusor libre (Si estas usando el E0, pillaría el E1, si tienes dos extrusores (E0,E1) entonces pillaría el E2)

Este es el esquemático de tu placa si no me equivoco: http://reprap.org/mediawiki/images/2/24/...MATICS.png
[Imagen: RRD-RUMBA_SCHEMATICS.png]

Este otro es el de la Ramps 1.4 por si a alguien le interesa: http://reprap.org/mediawiki/images/3/3f/...ematic.png)

Y aquí tienes toda la info relativa a la placa así como su configuración de Marlin: http://reprap.org/wiki/RUMBA
Si te fijas en el fichero de config (pins.h) tendrás lo siguiente:

Cita://to use Z_DUAL_STEPPER_DRIVER in Marlin
#define Z2_STEP_PIN        26
#define Z2_DIR_PIN         25
#define Z2_ENABLE_PIN      27


#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        29
#define E2_DIR_PIN         28
#define E2_ENABLE_PIN      39
Seguramente la parte de Z2_STEP_PIN la tendrás comentada por defecto, si es así, descomentala.

En el fichero de pins.h deberías hacer esto:
Cita://to use Z_DUAL_STEPPER_DRIVER in Marlin
#define Z2_STEP_PIN        29
#define Z2_DIR_PIN         28
#define Z2_ENABLE_PIN      39


#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        -1
#define E2_DIR_PIN         -1
#define E2_ENABLE_PIN      -1
El -1 es para cargarte esos pines... dejarlos como que el E2 esta deshabilitado... si los comentas, no se si fallaría al compilarse, pero teniendo en cuenta que marlin verifica si esta todo declarado antes de usarlo, seguramente podrías comentarlo y funcionaria perfectamente. Si prefieres utilizar el E1 en lugar del E2 para el eje Z extra solamente debes cambiar los pines y listo.

Con esto debería ser suficiente y te debería de funcionar bien, ya nos contarás que tal te ha ido.
Espero que te haya aclarado algo las cosas, y espero que te sirva de algo toda esta parrafada.  Guiño
  Responder
Cita:Entiendo que en este caso no usarias la placa Tb-6560-V2 y alimentarías la placa Rumba por el Main Power a 24V para alimentar los motores a 24V. El CC/CC que integra la rumba (LM2596) permite una corriente máxima de 3A. Lo veo un poco justo para calentar el hot end, ya que es de 40W (3,3A a 12V). También es cierto que el hot end solo consume 40W en el momento que empieza la impresión, hasta que el hot end alcance la temperatura establecida. Una vez ya está estabilizado el consumo se reduce, pero aún así no me gusta. Ten en cuenta además que las salidas HE0 y HE1 tienen la misma tensión que los motores, que sería 24V. La salida HE2 si podrías ponerla como 12V usando un jumper de selección, pero como te he comentado, vas muy justo de corriente. Cuidado con alimentar el cartucho calefactor del hot end de 12V a 24V, ya que la potencia disipada sería de 160W en vez de 40W y se podría quemar (sobre todo en el momento de arrancar la impresora).
Tienes la opción de comprar un cartucho de 24V.

Pregunta a Campy puede que tenga algunos cartuchos de 16 Ohmios. A 24V dan unos 38W.
  Responder
Buenas tardes chicos muchas gracias por las repuestas esta noche las leeré detenidamente y contestare e estado dos dias fuera de viaje, tengo no vedases también luego subo alguna fotito y respondo a todos,

Gracias de nuevo a todos por los aportes


Enviado desde mi iPhone utilizando Tapatalk
  Responder
Vaya ya me has dejado con SAV...
  Responder
(05-10-2016, 10:32 AM)neoxM3 escribió:
(04-10-2016, 11:23 PM)pica2079 escribió: Muy buenas Sacha!!! Yo he conectado para probar 4 motores en serie ( 2 en serie, los otros 2 en serie y estos en paralelo....No se si me explico) a un driver del eje Z y funcionan pero cuando cargas peso en la cama después de subirlo y bajarlo varias veces pierde algún paso y la cama se queda torcida.
Así que también me interesaría poner el otro extrusor como eje Z MUCHÍSIMO.
Una pregunta: has pensado utilizar en vez de nema 23 unos de estos nema 17  Con reductora incorporada como los que se ponen a veces para el extrusor??

otra solucion no es perder un extrusor... si no , conectar a un driver que de mas amperiors a los motores para que estos 2 , repartan mas fuerza entre ellos.... por ejemplo un tb65xx v2 o v3

otro dato, la solucion para que un motor no pierda pasos respecto al otro, es que vayan unidos con una correa cerrada, asi aunque uno pierda un paso, el otro motor "tira" de el

Ya e deducido despues de todos los comentarios y la Info que  no es Factible Juntar estos en un Solo Driver, y mas cuando tengo una placa , para poner dos Z y Dos Extruseres
sin tener que apañar nada De Origen, que Fue por lo que me Decidi a pillar La rumba, Recomendacion De campy.

 al Final pille estos, Por mas que busco Comprar TB6560 V2 o V3 No me aparece nada, ya Fuera del aliexpress y todo eso  o soy un inutil
o no los encuentro.

Pille este de 3A, ya que los Nema que e pillado Tinene un Torque de 25kg Cada Motor a 2.8A

https://www.aliexpress.com/item/TB6560-3...0.0.2WtGBP

Respecto al Video que te enseñe Por Mp, que dijiste que era un poco cahpuza el menda, pues bien me puse en contacto con El la imprsora Sige siendo asi un poco Frankestein, pero,
 a reorganizado Todo bien con Drivers extenernos, Vi las Fotos A mejorado un poco, le comente Dentro de los que el traductor me quiso dejar, como puedes ver en el video, los pines de los
drivers de la Rumba, Los lleva Puenteados, para poder Conectar el Molex de 4 pines Directo a la Rumba, en vez de Tener que enganchar cada Cable a un Slot de donde va el Driver en la Rumba

Si bien como en el video se ve que los tiene puenteados y funciona segun este esquema que amablemente me paso

[Imagen: 29531232684_5b3f3bea16_c.jpg]

Le retoque con el TB6560 y se lo mande y segun el me confirmo que estaria bien y funcionaria, no  esuqe no me Fie de el Pero si le podeis Echar un ojo estaria muy bien y podria dar por Zanjado el 
tema de conexionado RUMBA/NEMA23/TB6560.
Aunque se me Fue un poco el Raton mandan los colores de que estan en la conexion del Driver en Rumba

[Imagen: 30075291381_58d4a6249d_c.jpg]

(05-10-2016, 07:00 PM)Shellmer escribió:
(03-10-2016, 12:04 PM)sacha escribió: Buenos dias Chicos, tengo una dudilla, ya que en tema de codigo ando un poco pez, Como o que tendria que hacer, para pasar El "E2" de mi tarjeta Rumba para ser otro Z?
dentro de marlin Veo que me trae E0,E1,E2, entiendo que estan asigandos a los extrusores, y la verdad que no se como cambiarlo, para que el E2 Se otro Z

haber si me poddeis echar un cable.

Gracias

viendo en nmarlin e econtrado esto pero no se como interpretarlo, ya que las  lineas estan descomentadas

//
// Dual Y and Dual Z support
// These options are mutually-exclusive
//

#define __EPIN(p,q) E##p##_##q##_PIN
#define _EPIN(p,q) __EPIN(p,q)

// The Y2 axis, if any, should be the next open extruder port
#ifndef Y2_STEP_PIN
 #define Y2_STEP_PIN   _EPIN(EXTRUDERS, STEP)
 #define Y2_DIR_PIN    _EPIN(EXTRUDERS, DIR)
 #define Y2_ENABLE_PIN _EPIN(EXTRUDERS, ENABLE)
#endif

// The Z2 axis, if any, should be the next open extruder port
#ifndef Z2_STEP_PIN
 #define Z2_STEP_PIN   _EPIN(EXTRUDERS, STEP)
 #define Z2_DIR_PIN    _EPIN(EXTRUDERS, DIR)
 #define Z2_ENABLE_PIN _EPIN(EXTRUDERS, ENABLE)
#endif

#define SENSITIVE_PINS { 0, 1, \
   X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
   Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
   Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \
   PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, \
   _E0_PINS _E1_PINS _E2_PINS _E3_PINS \
   analogInputToDigitalPin(TEMP_BED_PIN) \
 }

#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))

#endif //__PINS_H

En principio..., el operador ifndef, concretamente esa linea, te indica que, en caso de no estar definida esta constante en el fichero de pines (pins.h), se activaría y pillaría como driver extra para tu eje Z, el driver de tu siguiente extrusor libre (Si estas usando el E0, pillaría el E1, si tienes dos extrusores (E0,E1) entonces pillaría el E2)

Este es el esquemático de tu placa si no me equivoco: http://reprap.org/mediawiki/images/2/24/...MATICS.png
[Imagen: RRD-RUMBA_SCHEMATICS.png]

Este otro es el de la Ramps 1.4 por si a alguien le interesa: http://reprap.org/mediawiki/images/3/3f/...ematic.png)

Y aquí tienes toda la info relativa a la placa así como su configuración de Marlin: http://reprap.org/wiki/RUMBA
Si te fijas en el fichero de config (pins.h) tendrás lo siguiente:

Cita://to use Z_DUAL_STEPPER_DRIVER in Marlin
#define Z2_STEP_PIN        26
#define Z2_DIR_PIN         25
#define Z2_ENABLE_PIN      27


#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        29
#define E2_DIR_PIN         28
#define E2_ENABLE_PIN      39
Seguramente la parte de Z2_STEP_PIN la tendrás comentada por defecto, si es así, descomentala.

En el fichero de pins.h deberías hacer esto:
Cita://to use Z_DUAL_STEPPER_DRIVER in Marlin
#define Z2_STEP_PIN        29
#define Z2_DIR_PIN         28
#define Z2_ENABLE_PIN      39


#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        -1
#define E2_DIR_PIN         -1
#define E2_ENABLE_PIN      -1
El -1 es para cargarte esos pines... dejarlos como que el E2 esta deshabilitado... si los comentas, no se si fallaría al compilarse, pero teniendo en cuenta que marlin verifica si esta todo declarado antes de usarlo, seguramente podrías comentarlo y funcionaria perfectamente. Si prefieres utilizar el E1 en lugar del E2 para el eje Z extra solamente debes cambiar los pines y listo.

Con esto debería ser suficiente y te debería de funcionar bien, ya nos contarás que tal te ha ido.
Espero que te haya aclarado algo las cosas, y espero que te sirva de algo toda esta parrafada.  Guiño

Muchisimas Gracias por Toda la Info te lo agradezco de verdad, ya que el Codigo no es lo mio, y este tipo de Ayuda/explicacion bien mas que bien, pero mi torpeza no me deja ver mas alla

 no encuentro esto por ningun Lado

//to use Z_DUAL_STEPPER_DRIVER in Marlin

#define Z2_STEP_PIN        26
#define Z2_DIR_PIN         25
#define Z2_ENABLE_PIN      27


[b]#define E2_STEP_PIN        -1
#define E2_DIR_PIN         -1
#define E2_ENABLE_PIN      -1
[/b]



Si no es Molestia te dejo El Pins.H , rumba.pins, Config Adnv  , para ver si me podrias Decir exactamente Sobre Mi marlin que es lo que deberia Tocar, E0,E1 son los Extrusores, y El E2 es el que quiero para Z, pero Me gustaria saber como tocar, para Poder Hacer un Doble Z pero sin tener que asiganar Z2 a E1, ya que quiero montar algunas Con doble Z y que se pueda Instalar el Segundo Extrusor Cuando Quiera Sin tener Que Reasignar nada,
solo cambiar en marlin El tema de extrusores, que supongo que es mas Facil por lo que e podido ver y leer, otra cosa es cuando llege a ese punto, que seguro que me surge algo.

Si puedes Explicamelo Asi como para Gente que le cuesta Un poco y tal y yo ya me estudio tu respuesta y tal y voy asociando Confundido Confundido

Código:
* Basic settings can be found in Configuration.h
*
*/
#ifndef CONFIGURATION_ADV_H
#define CONFIGURATION_ADV_H

/**
*
*  ***********************************
*  **  ATTENTION TO ALL DEVELOPERS  **
*  ***********************************
*
* You must increment this version number for every significant change such as,
* but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
*
* Note: Update also Version.h !
*/
#define CONFIGURATION_ADV_H_VERSION 010100

// @section temperature

//===========================================================================
//=============================Thermal Settings  ============================
//===========================================================================

#if DISABLED(PIDTEMPBED)
 #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
 #if ENABLED(BED_LIMIT_SWITCHING)
   #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
 #endif
#endif

/**
* Thermal Protection protects your printer from damage and fire if a
* thermistor falls out or temperature sensors fail in any way.
*
* The issue: If a thermistor falls out or a temperature sensor fails,
* Marlin can no longer sense the actual temperature. Since a disconnected
* thermistor reads as a low temperature, the firmware will keep the heater on.
*
* The solution: Once the temperature reaches the target, start observing.
* If the temperature stays too far below the target (hysteresis) for too long (period),
* the firmware will halt the machine as a safety precaution.
*
* If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
*/
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
 #define THERMAL_PROTECTION_PERIOD 40        // Seconds
 #define THERMAL_PROTECTION_HYSTERESIS 4     // Degrees Celsius

 /**
  * Whenever an M104 or M109 increases the target temperature the firmware will wait for the
  * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE
  * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109,
  * but only if the current temperature is far enough below the target for a reliable test.
  *
  * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE
  * WATCH_TEMP_INCREASE should not be below 2.
  */
 #define WATCH_TEMP_PERIOD 20                // Seconds
 #define WATCH_TEMP_INCREASE 2               // Degrees Celsius
#endif

/**
* Thermal Protection parameters for the bed are just as above for hotends.
*/
#if ENABLED(THERMAL_PROTECTION_BED)
 #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius

 /**
  * Whenever an M140 or M190 increases the target temperature the firmware will wait for the
  * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE
  * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190,
  * but only if the current temperature is far enough below the target for a reliable test.
  *
  * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease
  * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.)
  */
 #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
#endif

#if ENABLED(PIDTEMP)
 // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
 // if Kc is chosen well, the additional required power due to increased melting should be compensated.
 //#define PID_EXTRUSION_SCALING
 #if ENABLED(PID_EXTRUSION_SCALING)
   #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
   #define LPQ_MAX_LEN 50
 #endif
#endif

/**
* Automatic Temperature:
* The hotend target temperature is calculated by all the buffered lines of gcode.
* The maximum buffered steps/sec of the extruder motor is called "se".
* Start autotemp mode with M109 S<mintemp> B<maxtemp> F<factor>
* The target temperature is set to mintemp+factor*se[steps/sec] and is limited by
* mintemp and maxtemp. Turn this off by executing M109 without F*
* Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp.
* On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
*/
#define AUTOTEMP
#if ENABLED(AUTOTEMP)
 #define AUTOTEMP_OLDWEIGHT 0.98
#endif

//Show Temperature ADC value
//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
//#define SHOW_TEMP_ADC_VALUES

/**
* High Temperature Thermistor Support
*
* Thermistors able to support high temperature tend to have a hard time getting
* good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
* will probably be caught when the heating element first turns on during the
* preheating process, which will trigger a min_temp_error as a safety measure
* and force stop everything.
* To circumvent this limitation, we allow for a preheat time (during which,
* min_temp_error won't be triggered) and add a min_temp buffer to handle
* aberrant readings.
*
* If you want to enable this feature for your hotend thermistor(s)
* uncomment and set values > 0 in the constants below
*/

// The number of consecutive low temperature errors that can occur
// before a min_temp_error is triggered. (Shouldn't be more than 10.)
//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0

// The number of milliseconds a hotend will preheat before starting to check
// the temperature. This value should NOT be set to the time it takes the
// hot end to reach the target temperature, but the time it takes to reach
// the minimum temperature your thermistor can read. The lower the better/safer.
// This shouldn't need to be more than 30 seconds (30000)
//#define MILLISECONDS_PREHEAT_TIME 0

// @section extruder

//  extruder run-out prevention.
//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
//#define EXTRUDER_RUNOUT_PREVENT
#define EXTRUDER_RUNOUT_MINTEMP 190
#define EXTRUDER_RUNOUT_SECONDS 30
#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
#define EXTRUDER_RUNOUT_EXTRUDE 100

// @section temperature

//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements.
//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET"
#define TEMP_SENSOR_AD595_OFFSET 0.0
#define TEMP_SENSOR_AD595_GAIN   1.0

//This is for controlling a fan to cool down the stepper drivers
//it will turn on when any driver is enabled
//and turn off after the set amount of seconds from last driver being disabled again
#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable)
#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
#define CONTROLLERFAN_SPEED 255  // == full speed

// When first starting the main fan, run it at full speed for the
// given number of milliseconds.  This gets the fan spinning reliably
// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
//#define FAN_KICKSTART_TIME 100

// This defines the minimal speed for the main fan, run in PWM mode
// to enable uncomment and set minimal PWM speed for reliable running (1-255)
// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM
//#define FAN_MIN_PWM 50

// @section extruder

// Extruder cooling fans
// Configure fan pin outputs to automatically turn on/off when the associated
// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
// Multiple extruders can be assigned to the same pin in which case
// the fan will turn on when any selected extruder is above the threshold.
#define EXTRUDER_0_AUTO_FAN_PIN -1
#define EXTRUDER_1_AUTO_FAN_PIN -1
#define EXTRUDER_2_AUTO_FAN_PIN -1
#define EXTRUDER_3_AUTO_FAN_PIN -1
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed

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

// @section homing

// If you want endstops to stay on (by default) even when not homing
// enable this option. Override at any time with M120, M121.
//#define ENDSTOPS_ALWAYS_ON_DEFAULT

// @section extras

//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.

// Dual X Steppers
// Uncomment this option to drive two X axis motors.
// The next unused E driver will be assigned to the second X stepper.
//#define X_DUAL_STEPPER_DRIVERS
#if ENABLED(X_DUAL_STEPPER_DRIVERS)
 // Set true if the two X motors need to rotate in opposite directions
 #define INVERT_X2_VS_X_DIR true
#endif


// Dual Y Steppers
// Uncomment this option to drive two Y axis motors.
// The next unused E driver will be assigned to the second Y stepper.
//#define Y_DUAL_STEPPER_DRIVERS
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
 // Set true if the two Y motors need to rotate in opposite directions
 #define INVERT_Y2_VS_Y_DIR true
#endif

// A single Z stepper driver is usually used to drive 2 stepper motors.
// Uncomment this option to use a separate stepper driver for each Z axis motor.
// The next unused E driver will be assigned to the second Z stepper.
//#define Z_DUAL_STEPPER_DRIVERS

#if ENABLED(Z_DUAL_STEPPER_DRIVERS)

 // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper.
 // That way the machine is capable to align the bed during home, since both Z steppers are homed.
 // There is also an implementation of M666 (software endstops adjustment) to this feature.
 // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed.
 // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2.
 // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive.
 // Play a little bit with small adjustments (0.5mm) and check the behaviour.
 // The M119 (endstops report) will start reporting the Z2 Endstop as well.

 //#define Z_DUAL_ENDSTOPS

 #if ENABLED(Z_DUAL_ENDSTOPS)
   #define Z2_USE_ENDSTOP _XMAX_
 #endif

#endif // Z_DUAL_STEPPER_DRIVERS

// Enable this for dual x-carriage printers.
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
//#define DUAL_X_CARRIAGE
#if ENABLED(DUAL_X_CARRIAGE)
 // Configuration for second X-carriage
 // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
 // the second x-carriage always homes to the maximum endstop.
 #define X2_MIN_POS 80     // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
 #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
 #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
 #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
     // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
     // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
     // without modifying the firmware (through the "M218 T1 X???" command).
     // Remember: you should set the second extruder x-offset to 0 in your slicer.

 // There are a few selectable movement modes for dual x-carriages using M605 S<mode>
 //    Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
 //                           as long as it supports dual x-carriages. (M605 S0)
 //    Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
 //                           that additional slicer support is not required. (M605 S1)
 //    Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
 //                           actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
 //                           once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])

 // This is the default power-up mode which can be later using M605.
 #define DEFAULT_DUAL_X_CARRIAGE_MODE 0

 // Default settings in "Auto-park Mode"
 #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
 #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder

 // Default x offset in duplication mode (typically set to half print bed width)
 #define DEFAULT_DUPLICATION_X_OFFSET 100

#endif //DUAL_X_CARRIAGE

// @section homing

//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
#define X_HOME_BUMP_MM 5
#define Y_HOME_BUMP_MM 5
#define Z_HOME_BUMP_MM 2
#define HOMING_BUMP_DIVISOR {2, 2, 4}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
//#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.

// When G28 is called, this option will make Y home before X
//#define HOME_Y_BEFORE_X

// @section machine

#define AXIS_RELATIVE_MODES {false, false, false, false}

// Allow duplication mode with a basic dual-nozzle extruder
//#define DUAL_NOZZLE_DUPLICATION_MODE

// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
#define INVERT_X_STEP_PIN false
#define INVERT_Y_STEP_PIN false
#define INVERT_Z_STEP_PIN false
#define INVERT_E_STEP_PIN false

// Default stepper release if idle. Set to 0 to deactivate.
// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
// Time can be set by M18 and M84.
#define DEFAULT_STEPPER_DEACTIVE_TIME 120
#define DISABLE_INACTIVE_X true
#define DISABLE_INACTIVE_Y true
#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
#define DISABLE_INACTIVE_E true

#define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
#define DEFAULT_MINTRAVELFEEDRATE     0.0

// @section lcd

#if ENABLED(ULTIPANEL)
 #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
 #define ULTIPANEL_FEEDMULTIPLY  // Comment to disable setting feedrate multiplier via encoder
#endif

// @section extras

// minimum time in microseconds that a movement needs to take if the buffer is emptied.
#define DEFAULT_MINSEGMENTTIME        20000

// If defined the movements slow down when the look ahead buffer is only half full
#define SLOWDOWN

// Frequency limit
// See nophead's blog for more info
// Not working O
//#define XY_FREQUENCY_LIMIT  15

// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
// of the buffer and all stops. This should not be much greater than zero and should only be changed
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)

// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]

// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)

// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current)
//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps

// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
//#define DIGIPOT_I2C
// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
#define DIGIPOT_I2C_NUM_CHANNELS 8
// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}

//===========================================================================
//=============================Additional Features===========================
//===========================================================================

#define ENCODER_RATE_MULTIPLIER         // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
#define ENCODER_10X_STEPS_PER_SEC 75    // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
#define ENCODER_100X_STEPS_PER_SEC 160  // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value

//#define CHDK 4        //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again

// @section lcd

// Include a page of printer information in the LCD Main Menu
//#define LCD_INFO_MENU

#if ENABLED(SDSUPPORT)

 // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
 // around this by connecting a push button or single throw switch to the pin defined
 // as SD_DETECT_PIN in your board's pins definitions.
 // This setting should be disabled unless you are using a push button, pulling the pin to ground.
 // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER).
 #define SD_DETECT_INVERTED

 #define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
 #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.

 #define SDCARD_RATHERRECENTFIRST  //reverse file order of sd card menu display. Its sorted practically after the file system block order.
 // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that.
 // using:
 //#define MENU_ADDAUTOSTART

 // Show a progress bar on HD44780 LCDs for SD printing
 //#define LCD_PROGRESS_BAR

 #if ENABLED(LCD_PROGRESS_BAR)
   // Amount of time (ms) to show the bar
   #define PROGRESS_BAR_BAR_TIME 2000
   // Amount of time (ms) to show the status message
   #define PROGRESS_BAR_MSG_TIME 3000
   // Amount of time (ms) to retain the status message (0=forever)
   #define PROGRESS_MSG_EXPIRE   0
   // Enable this to show messages for MSG_TIME then hide them
   //#define PROGRESS_MSG_ONCE
 #endif

 // This allows hosts to request long names for files and folders with M33
 //#define LONG_FILENAME_HOST_SUPPORT

 // This option allows you to abort SD printing when any endstop is triggered.
 // This feature must be enabled with "M540 S1" or from the LCD menu.
 // To have any effect, endstops must be enabled during SD printing.
 //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED

#endif // SDSUPPORT

// for dogm lcd displays you can choose some additional fonts:
#if ENABLED(DOGLCD)
 // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 // we don't have a big font for Cyrillic, Kana
 //#define USE_BIG_EDIT_FONT

 // If you have spare 2300Byte of progmem and want to use a
 // smaller font on the Info-screen uncomment the next line.
 //#define USE_SMALL_INFOFONT
#endif // DOGLCD

// @section safety

// The hardware watchdog should reset the microcontroller disabling all outputs,
// in case the firmware gets stuck and doesn't do temperature regulation.
#define USE_WATCHDOG

#if ENABLED(USE_WATCHDOG)
 // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on.
 // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset.
 //  However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled.
 //#define WATCHDOG_RESET_MANUAL
#endif

// @section lcd

// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process
// it can e.g. be used to change z-positions in the print startup phase in real-time
// does not respect endstops!
//#define BABYSTEPPING
#if ENABLED(BABYSTEPPING)
 #define BABYSTEP_XY  //not only z, but also XY in the menu. more clutter, more functions
                      //not implemented for deltabots!
 #define BABYSTEP_INVERT_Z false  //true for inverse movements in Z
 #define BABYSTEP_MULTIPLICATOR 1 //faster movements
#endif

// @section extruder

// extruder advance constant (s2/mm3)
//
// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2
//
// Hooke's law says:    force = k * distance
// Bernoulli's principle says:  v ^ 2 / 2 + g . h + pressure / density = constant
// so: v ^ 2 is proportional to number of steps we advance the extruder
//#define ADVANCE

#if ENABLED(ADVANCE)
 #define EXTRUDER_ADVANCE_K .0
 #define D_FILAMENT 2.85
#endif

// Implementation of a linear pressure control
// Assumption: advance = k * (delta velocity)
// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
//#define LIN_ADVANCE

#if ENABLED(LIN_ADVANCE)
 #define LIN_ADVANCE_K 75
#endif

// @section leveling

// Default mesh area is an area with an inset margin on the print area.
// Below are the macros that are used to define the borders for the mesh area,
// made available here for specialized needs, ie dual extruder setup.
#if ENABLED(MESH_BED_LEVELING)
 #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
 #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
 #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
 #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
#endif

// @section extras

// Arc interpretation settings:
#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
#define MM_PER_ARC_SEGMENT 1
#define N_ARC_CORRECTION 25

// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
//#define BEZIER_CURVE_SUPPORT

const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement

// @section temperature

// Control heater 0 and heater 1 in parallel.
//#define HEATERS_PARALLEL

//===========================================================================
//================================= Buffers =================================
//===========================================================================

// @section hidden

// The number of linear motions that can be in the plan at any give time.
// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
#if ENABLED(SDSUPPORT)
 #define BLOCK_BUFFER_SIZE 16   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
#else
 #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
#endif

// @section serial

// The ASCII buffer for serial input
#define MAX_CMD_SIZE 96
#define BUFSIZE 4

// Transfer Buffer Size
// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
// To buffer a simple "ok" you need 4 bytes.
// For ADVANCED_OK (M105) you need 32 bytes.
// For debug-echo: 128 bytes for the optimal speed.
// Other output doesn't need to be that speedy.
// :[0,2,4,8,16,32,64,128,256]
#define TX_BUFFER_SIZE 0

// Enable an emergency-command parser to intercept certain commands as they
// enter the serial receive buffer, so they cannot be blocked.
// Currently handles M108, M112, M410
// Does not work on boards using AT90USB (USBCON) processors!
//#define EMERGENCY_PARSER

// Bad Serial-connections can miss a received command by sending an 'ok'
// Therefore some clients abort after 30 seconds in a timeout.
// Some other clients start sending commands while receiving a 'wait'.
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
//#define NO_TIMEOUTS 1000 // Milliseconds

// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
//#define ADVANCED_OK

// @section fwretract

// Firmware based and LCD controlled retract
// M207 and M208 can be used to define parameters for the retraction.
// The retraction can be called by the slicer using G10 and G11
// until then, intended retractions can be detected by moves that only extrude and the direction.
// the moves are than replaced by the firmware controlled ones.

//#define FWRETRACT  //ONLY PARTIALLY TESTED
#if ENABLED(FWRETRACT)
 #define MIN_RETRACT 0.1                //minimum extruded mm to accept a automatic gcode retraction attempt
 #define RETRACT_LENGTH 3               //default retract length (positive mm)
 #define RETRACT_LENGTH_SWAP 13         //default swap retract length (positive mm), for extruder change
 #define RETRACT_FEEDRATE 45            //default feedrate for retracting (mm/s)
 #define RETRACT_ZLIFT 0                //default retract Z-lift
 #define RETRACT_RECOVER_LENGTH 0       //default additional recover length (mm, added to retract length when recovering)
 #define RETRACT_RECOVER_LENGTH_SWAP 0  //default additional swap recover length (mm, added to retract length when recovering from extruder change)
 #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
#endif

// Add support for experimental filament exchange support M600; requires display
#if ENABLED(ULTIPANEL)
 // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
 #if ENABLED(FILAMENT_CHANGE_FEATURE)
   #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
   #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
   #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
   #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
   #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
   #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
                                               // It is a short retract used immediately after print interrupt before move to filament exchange position
   #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
   #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
                                               // Longer length for bowden printers to unload filament from whole bowden tube,
                                               // shorter lenght for printers without bowden to unload filament from extruder only,
                                               // 0 to disable unloading for manual unloading
   #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
                                               // Short or zero length for printers without bowden where loading is not used
   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
                                               // 0 to disable for manual extrusion
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
                                               // or until outcoming filament color is not clear for filament color change
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 #endif
#endif

/******************************************************************************\
* enable this section if you have TMC26X motor drivers.
* you need to import the TMC26XStepper library into the Arduino IDE for this
******************************************************************************/

// @section tmc

//#define HAVE_TMCDRIVER
#if ENABLED(HAVE_TMCDRIVER)

 //#define X_IS_TMC
 #define X_MAX_CURRENT 1000  //in mA
 #define X_SENSE_RESISTOR 91 //in mOhms
 #define X_MICROSTEPS 16     //number of microsteps

 //#define X2_IS_TMC
 #define X2_MAX_CURRENT 1000  //in mA
 #define X2_SENSE_RESISTOR 91 //in mOhms
 #define X2_MICROSTEPS 16     //number of microsteps

 //#define Y_IS_TMC
 #define Y_MAX_CURRENT 1000  //in mA
 #define Y_SENSE_RESISTOR 91 //in mOhms
 #define Y_MICROSTEPS 16     //number of microsteps

 //#define Y2_IS_TMC
 #define Y2_MAX_CURRENT 1000  //in mA
 #define Y2_SENSE_RESISTOR 91 //in mOhms
 #define Y2_MICROSTEPS 16     //number of microsteps

 //#define Z_IS_TMC
 #define Z_MAX_CURRENT 1000  //in mA
 #define Z_SENSE_RESISTOR 91 //in mOhms
 #define Z_MICROSTEPS 16     //number of microsteps

 //#define Z2_IS_TMC
 #define Z2_MAX_CURRENT 1000  //in mA
 #define Z2_SENSE_RESISTOR 91 //in mOhms
 #define Z2_MICROSTEPS 16     //number of microsteps

 //#define E0_IS_TMC
 #define E0_MAX_CURRENT 1000  //in mA
 #define E0_SENSE_RESISTOR 91 //in mOhms
 #define E0_MICROSTEPS 16     //number of microsteps

 //#define E1_IS_TMC
 #define E1_MAX_CURRENT 1000  //in mA
 #define E1_SENSE_RESISTOR 91 //in mOhms
 #define E1_MICROSTEPS 16     //number of microsteps

 //#define E2_IS_TMC
 #define E2_MAX_CURRENT 1000  //in mA
 #define E2_SENSE_RESISTOR 91 //in mOhms
 #define E2_MICROSTEPS 16     //number of microsteps

 //#define E3_IS_TMC
 #define E3_MAX_CURRENT 1000  //in mA
 #define E3_SENSE_RESISTOR 91 //in mOhms
 #define E3_MICROSTEPS 16     //number of microsteps

#endif

/******************************************************************************\
* enable this section if you have L6470  motor drivers.
* you need to import the L6470 library into the Arduino IDE for this
******************************************************************************/

// @section l6470

//#define HAVE_L6470DRIVER
#if ENABLED(HAVE_L6470DRIVER)

 //#define X_IS_L6470
 #define X_MICROSTEPS 16     //number of microsteps
 #define X_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define X_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define X2_IS_L6470
 #define X2_MICROSTEPS 16     //number of microsteps
 #define X2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define X2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define Y_IS_L6470
 #define Y_MICROSTEPS 16     //number of microsteps
 #define Y_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define Y_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define Y2_IS_L6470
 #define Y2_MICROSTEPS 16     //number of microsteps
 #define Y2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define Y2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define Z_IS_L6470
 #define Z_MICROSTEPS 16     //number of microsteps
 #define Z_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define Z_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define Z2_IS_L6470
 #define Z2_MICROSTEPS 16     //number of microsteps
 #define Z2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define Z2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define E0_IS_L6470
 #define E0_MICROSTEPS 16     //number of microsteps
 #define E0_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define E0_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define E1_IS_L6470
 #define E1_MICROSTEPS 16     //number of microsteps
 #define E1_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define E1_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define E2_IS_L6470
 #define E2_MICROSTEPS 16     //number of microsteps
 #define E2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define E2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall

 //#define E3_IS_L6470
 #define E3_MICROSTEPS 16     //number of microsteps
 #define E3_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
 #define E3_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
 #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall

#endif

/**
* TWI/I2C BUS
*
* This feature is an EXPERIMENTAL feature so it shall not be used on production
* machines. Enabling this will allow you to send and receive I2C data from slave
* devices on the bus.
*
* ; Example #1
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
* ; It uses multiple M155 commands with one B<base 10> arg
* M155 A99  ; Target slave address
* M155 B77  ; M
* M155 B97  ; a
* M155 B114 ; r
* M155 B108 ; l
* M155 B105 ; i
* M155 B110 ; n
* M155 S1   ; Send the current buffer
*
* ; Example #2
* ; Request 6 bytes from slave device with address 0x63 (99)
* M156 A99 B5
*
* ; Example #3
* ; Example serial output of a M156 request
* echo:i2c-reply: from:99 bytes:5 data:hello
*/

// @section i2cbus

//#define EXPERIMENTAL_I2CBUS

#endif // CONFIGURATION_ADV_H

Código:
/**
* RUMBA pin assignments
*/

#ifndef __AVR_ATmega2560__
 #error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
#endif

#if E_STEPPERS > 3 || HOTENDS > 3
 #error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif

#define DEFAULT_MACHINE_NAME "Rumba"
#define BOARD_NAME           "Rumba"

#define X_STEP_PIN         17
#define X_DIR_PIN          16
#define X_ENABLE_PIN       48
#define X_MIN_PIN          37
#define X_MAX_PIN          36

#define Y_STEP_PIN         54
#define Y_DIR_PIN          47
#define Y_ENABLE_PIN       55
#define Y_MIN_PIN          35
#define Y_MAX_PIN          34

#define Z_STEP_PIN         57
#define Z_DIR_PIN          56
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          33
#define Z_MAX_PIN          32

#ifndef Z_MIN_PROBE_PIN
 #define Z_MIN_PROBE_PIN  33
#endif

#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        29
#define E2_DIR_PIN         28
#define E2_ENABLE_PIN      39

#define LED_PIN            13

#define FAN_PIN             7
#define FAN1_PIN            8

#define PS_ON_PIN          45
#define KILL_PIN           46

#define HEATER_0_PIN        2   // EXTRUDER 1
#define HEATER_1_PIN        3   // EXTRUDER 2
#define HEATER_2_PIN        6   // EXTRUDER 3

#if TEMP_SENSOR_0 == -1
 #define TEMP_0_PIN        6   // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used
#else
 #define TEMP_0_PIN       15   // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used
#endif

#if TEMP_SENSOR_1 == -1
 #define TEMP_1_PIN        5   // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used
#else
 #define TEMP_1_PIN       14   // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used
#endif

#if TEMP_SENSOR_2 == -1
 #define TEMP_2_PIN        7   // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple
#else
 #define TEMP_2_PIN       13   // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used
#endif

//optional for extruder 4 or chamber: #define TEMP_X_PIN         12   // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used
//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN       8    // EXTRUDER 4

#define HEATER_BED_PIN      9    // BED
#if TEMP_SENSOR_BED == -1
 #define TEMP_BED_PIN      7    // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple
#else
 #define TEMP_BED_PIN     11    // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used
#endif

#define SDSS               53
#define SD_DETECT_PIN      49
#define BEEPER_PIN         44
#define LCD_PINS_RS        19
#define LCD_PINS_ENABLE    42
#define LCD_PINS_D4        18
#define LCD_PINS_D5        38
#define LCD_PINS_D6        41
#define LCD_PINS_D7        40
#define BTN_EN1            11
#define BTN_EN2            12
#define BTN_ENC            43

#define SERVO0_PIN         5

Código:
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*/

#ifndef PINS_H
#define PINS_H

#if MB(GEN7_CUSTOM)
 #include "pins_GEN7_CUSTOM.h"
#elif MB(GEN7_12)
 #include "pins_GEN7_12.h"
#elif MB(GEN7_13)
 #include "pins_GEN7_13.h"
#elif MB(GEN7_14)
 #include "pins_GEN7_14.h"
#elif MB(CNCONTROLS_11)
 #include "pins_CNCONTROLS_11.h"
#elif MB(CNCONTROLS_12)
 #include "pins_CNCONTROLS_12.h"
#elif MB(CHEAPTRONIC)
 #include "pins_CHEAPTRONIC.h"
#elif MB(SETHI)
 #include "pins_SETHI.h"
#elif MB(RAMPS_OLD)
 #include "pins_RAMPS_OLD.h"
#elif MB(RAMPS_13_EFB)
 #define IS_RAMPS_EFB
 #include "pins_RAMPS_13.h"
#elif MB(RAMPS_13_EEB)
 #define IS_RAMPS_EEB
 #include "pins_RAMPS_13.h"
#elif MB(RAMPS_13_EFF)
 #define IS_RAMPS_EFF
 #include "pins_RAMPS_13.h"
#elif MB(RAMPS_13_EEF)
 #define IS_RAMPS_EEF
 #include "pins_RAMPS_13.h"
#elif MB(RAMPS_13_SF)
 #define IS_RAMPS_SF
 #include "pins_RAMPS_13.h"
#elif MB(RAMPS_14_EFB)
 #define IS_RAMPS_EFB
 #include "pins_RAMPS.h"
#elif MB(RAMPS_14_EEB)
 #define IS_RAMPS_EEB
 #include "pins_RAMPS.h"
#elif MB(RAMPS_14_EFF)
 #define IS_RAMPS_EFF
 #include "pins_RAMPS.h"
#elif MB(RAMPS_14_EEF)
 #define IS_RAMPS_EEF
 #include "pins_RAMPS.h"
#elif MB(RAMPS_14_SF)
 #define IS_RAMPS_SF
 #include "pins_RAMPS.h"
#elif MB(GEN6)
 #include "pins_GEN6.h"
#elif MB(GEN6_DELUXE)
 #include "pins_GEN6_DELUXE.h"
#elif MB(SANGUINOLOLU_11)
 #include "pins_SANGUINOLOLU_11.h"
#elif MB(SANGUINOLOLU_12)
 #include "pins_SANGUINOLOLU_12.h"
#elif MB(MELZI)
 #include "pins_MELZI.h"
#elif MB(STB_11)
 #include "pins_STB_11.h"
#elif MB(AZTEEG_X1)
 #include "pins_AZTEEG_X1.h"
#elif MB(MELZI_MAKR3D)
 #include "pins_MELZI_MAKR3D.h"
#elif MB(AZTEEG_X3)
 #include "pins_AZTEEG_X3.h"
#elif MB(AZTEEG_X3_PRO)
 #include "pins_AZTEEG_X3_PRO.h"
#elif MB(ULTIMAKER)
 #include "pins_ULTIMAKER.h"
#elif MB(ULTIMAKER_OLD)
 #include "pins_ULTIMAKER_OLD.h"
#elif MB(ULTIMAIN_2)
 #include "pins_ULTIMAIN_2.h"
#elif MB(3DRAG)
 #include "pins_3DRAG.h"
#elif MB(K8200)
 #include "pins_K8200.h"
#elif MB(K8400)
 #include "pins_K8400.h"
#elif MB(TEENSYLU)
 #include "pins_TEENSYLU.h"
#elif MB(RUMBA)
 #include "pins_RUMBA.h"
#elif MB(PRINTRBOARD)
 #include "pins_PRINTRBOARD.h"
#elif MB(PRINTRBOARD_REVF)
 #include "pins_PRINTRBOARD_REVF.h"
#elif MB(BRAINWAVE)
 #include "pins_BRAINWAVE.h"
#elif MB(BRAINWAVE_PRO)
 #include "pins_BRAINWAVE_PRO.h"
#elif MB(SAV_MKI)
 #include "pins_SAV_MKI.h"
#elif MB(TEENSY2)
 #include "pins_TEENSY2.h"
#elif MB(GEN3_PLUS)
 #include "pins_GEN3_PLUS.h"
#elif MB(GEN3_MONOLITHIC)
 #include "pins_GEN3_MONOLITHIC.h"
#elif MB(MEGATRONICS)
 #include "pins_MEGATRONICS.h"
#elif MB(MINITRONICS)
 #include "pins_MINITRONICS.h"
#elif MB(MEGATRONICS_2)
 #include "pins_MEGATRONICS_2.h"
#elif MB(MEGATRONICS_3)
 #include "pins_MEGATRONICS_3.h"
#elif MB(OMCA_A)
 #include "pins_OMCA_A.h"
#elif MB(OMCA)
 #include "pins_OMCA.h"
#elif MB(RAMBO)
 #include "pins_RAMBO.h"
#elif MB(MINIRAMBO)
 #include "pins_MINIRAMBO.h"
#elif MB(ELEFU_3)
 #include "pins_ELEFU_3.h"
#elif MB(5DPRINT)
 #include "pins_5DPRINT.h"
#elif MB(LEAPFROG)
 #include "pins_LEAPFROG.h"
#elif MB(BAM_DICE)
 #include "pins_RAMPS.h"
#elif MB(BAM_DICE_DUE)
 #include "pins_BAM_DICE_DUE.h"
#elif MB(FELIX2)
 #include "pins_FELIX2.h"
#elif MB(MKS_BASE)
 #include "pins_MKS_BASE.h"
#elif MB(RIGIDBOARD)
 #include "pins_RIGIDBOARD.h"
#elif MB(RIGIDBOARD_V2)
 #include "pins_RIGIDBOARD_V2.h"
#elif MB(MEGACONTROLLER)
 #include "pins_MEGACONTROLLER.h"
#elif MB(BQ_ZUM_MEGA_3D)
 #include "pins_BQ_ZUM_MEGA_3D.h"
#elif MB(99)
 #include "pins_99.h"
#elif MB(AJ4P)
 #include "pins_AJ4P.h"
#elif MB(MKS_13)
 #include "pins_MKS_13.h"
#elif MB(SAINSMART_2IN1)
 #include "pins_SAINSMART_2IN1.h"
#else
 #error "Unknown MOTHERBOARD value set in Configuration.h"
#endif

// Define certain undefined pins
#ifndef X_MS1_PIN
 #define X_MS1_PIN -1
#endif
#ifndef X_MS2_PIN
 #define X_MS2_PIN -1
#endif
#ifndef Y_MS1_PIN
 #define Y_MS1_PIN -1
#endif
#ifndef Y_MS2_PIN
 #define Y_MS2_PIN -1
#endif
#ifndef Z_MS1_PIN
 #define Z_MS1_PIN -1
#endif
#ifndef Z_MS2_PIN
 #define Z_MS2_PIN -1
#endif
#ifndef E0_MS1_PIN
 #define E0_MS1_PIN -1
#endif
#ifndef E0_MS2_PIN
 #define E0_MS2_PIN -1
#endif
#ifndef E1_MS1_PIN
 #define E1_MS1_PIN -1
#endif
#ifndef E1_MS2_PIN
 #define E1_MS2_PIN -1
#endif

#ifndef FAN_PIN
 #define FAN_PIN -1
#endif
#ifndef FAN1_PIN
 #define FAN1_PIN -1
#endif
#ifndef FAN2_PIN
 #define FAN2_PIN -1
#endif

#ifndef HEATER_0_PIN
 #define HEATER_0_PIN -1
#endif
#ifndef HEATER_1_PIN
 #define HEATER_1_PIN -1
#endif
#ifndef HEATER_2_PIN
 #define HEATER_2_PIN -1
#endif
#ifndef HEATER_3_PIN
 #define HEATER_3_PIN -1
#endif
#ifndef HEATER_BED_PIN
 #define HEATER_BED_PIN -1
#endif

#ifndef TEMP_0_PIN
 #define TEMP_0_PIN -1
#endif
#ifndef TEMP_1_PIN
 #define TEMP_1_PIN -1
#endif
#ifndef TEMP_2_PIN
 #define TEMP_2_PIN -1
#endif
#ifndef TEMP_3_PIN
 #define TEMP_3_PIN -1
#endif
#ifndef TEMP_BED_PIN
 #define TEMP_BED_PIN -1
#endif

#ifndef SD_DETECT_PIN
 #define SD_DETECT_PIN -1
#endif
#ifndef SDPOWER
 #define SDPOWER -1
#endif
#ifndef SDSS
 #define SDSS -1
#endif
#ifndef LED_PIN
 #define LED_PIN -1
#endif
#ifndef PS_ON_PIN
 #define PS_ON_PIN -1
#endif
#ifndef KILL_PIN
 #define KILL_PIN -1
#endif
#ifndef SUICIDE_PIN
 #define SUICIDE_PIN -1
#endif

// Marlin needs to account for pins that equal -1
#define marlinAnalogInputToDigitalPin(p) ((p) == -1 ? -1 : (p) + 0xA0)

// List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those!
#define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, E0_MS1_PIN, E0_MS2_PIN,
#define _E1_PINS
#define _E2_PINS
#define _E3_PINS

#if EXTRUDERS > 1
 #undef _E1_PINS
 #define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, E1_MS1_PIN, E1_MS2_PIN,
 #if EXTRUDERS > 2
   #undef _E2_PINS
   #define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN,
   #if EXTRUDERS > 3
     #undef _E3_PINS
     #define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN,
   #endif
 #endif
#endif

#define _H0_PINS HEATER_0_PIN, EXTRUDER_0_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_0_PIN),
#define _H1_PINS
#define _H2_PINS
#define _H3_PINS

#if HOTENDS > 1
 #undef _H1_PINS
 #define _H1_PINS HEATER_1_PIN, EXTRUDER_1_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_1_PIN),
 #if HOTENDS > 2
   #undef _H2_PINS
   #define _H2_PINS HEATER_2_PIN, EXTRUDER_2_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_2_PIN),
   #if HOTENDS > 3
     #undef _H3_PINS
     #define _H3_PINS HEATER_3_PIN, EXTRUDER_3_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_3_PIN),
   #endif
 #endif
#elif ENABLED(MIXING_EXTRUDER)
 #undef _E1_PINS
 #define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN,
 #if MIXING_STEPPERS > 2
   #undef _E2_PINS
   #define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN,
   #if MIXING_STEPPERS > 3
     #undef _E3_PINS
     #define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN,
   #endif
 #endif
#endif

#define BED_PINS HEATER_BED_PIN, marlinAnalogInputToDigitalPin(TEMP_BED_PIN),

//
// Assign endstop pins for boards with only 3 connectors
//
#ifdef X_STOP_PIN
 #if X_HOME_DIR < 0
   #define X_MIN_PIN X_STOP_PIN
   #define X_MAX_PIN -1
 #else
   #define X_MIN_PIN -1
   #define X_MAX_PIN X_STOP_PIN
 #endif
#endif

#ifdef Y_STOP_PIN
 #if Y_HOME_DIR < 0
   #define Y_MIN_PIN Y_STOP_PIN
   #define Y_MAX_PIN -1
 #else
   #define Y_MIN_PIN -1
   #define Y_MAX_PIN Y_STOP_PIN
 #endif
#endif

#ifdef Z_STOP_PIN
 #if Z_HOME_DIR < 0
   #define Z_MIN_PIN Z_STOP_PIN
   #define Z_MAX_PIN -1
 #else
   #define Z_MIN_PIN -1
   #define Z_MAX_PIN Z_STOP_PIN
 #endif
#endif

//
// Disable unused endstop / probe pins
//
#if ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) || DISABLED(Z_MIN_PROBE_ENDSTOP) // Allow code to compile regardless of Z_MIN_PROBE_ENDSTOP setting.
 #undef Z_MIN_PROBE_PIN
 #define Z_MIN_PROBE_PIN    -1
#endif

#if DISABLED(USE_XMAX_PLUG)
 #undef X_MAX_PIN
 #define X_MAX_PIN          -1
#endif

#if DISABLED(USE_YMAX_PLUG)
 #undef Y_MAX_PIN
 #define Y_MAX_PIN          -1
#endif

#if DISABLED(USE_ZMAX_PLUG)
 #undef Z_MAX_PIN
 #define Z_MAX_PIN          -1
#endif

#if DISABLED(USE_XMIN_PLUG)
 #undef X_MIN_PIN
 #define X_MIN_PIN          -1
#endif

#if DISABLED(USE_YMIN_PLUG)
 #undef Y_MIN_PIN
 #define Y_MIN_PIN          -1
#endif

#if DISABLED(USE_ZMIN_PLUG)
 #undef Z_MIN_PIN
 #define Z_MIN_PIN          -1
#endif

//
// Dual X-carriage, Dual Y, Dual Z support
//

#define _X2_PINS
#define _Y2_PINS
#define _Z2_PINS

#define __EPIN(p,q) E##p##_##q##_PIN
#define _EPIN(p,q) __EPIN(p,q)

// The X2 axis, if any, should be the next open extruder port
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(X_DUAL_STEPPER_DRIVERS)
 #ifndef X2_STEP_PIN
   #define X2_STEP_PIN   _EPIN(E_STEPPERS, STEP)
   #define X2_DIR_PIN    _EPIN(E_STEPPERS, DIR)
   #define X2_ENABLE_PIN _EPIN(E_STEPPERS, ENABLE)
 #endif
 #undef _X2_PINS
 #define _X2_PINS X2_STEP_PIN, X2_DIR_PIN, X2_ENABLE_PIN,
 #define Y2_E_INDEX INCREMENT(E_STEPPERS)
#else
 #define Y2_E_INDEX E_STEPPERS
#endif

// The Y2 axis, if any, should be the next open extruder port
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
 #ifndef Y2_STEP_PIN
   #define Y2_STEP_PIN   _EPIN(Y2_E_INDEX, STEP)
   #define Y2_DIR_PIN    _EPIN(Y2_E_INDEX, DIR)
   #define Y2_ENABLE_PIN _EPIN(Y2_E_INDEX, ENABLE)
 #endif
 #undef _Y2_PINS
 #define _Y2_PINS Y2_STEP_PIN, Y2_DIR_PIN, Y2_ENABLE_PIN,
 #define Z2_E_INDEX INCREMENT(Y2_E_INDEX)
#else
 #define Z2_E_INDEX Y2_E_INDEX
#endif

// The Z2 axis, if any, should be the next open extruder port
#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
 #ifndef Z2_STEP_PIN
   #define Z2_STEP_PIN   _EPIN(Z2_E_INDEX, STEP)
   #define Z2_DIR_PIN    _EPIN(Z2_E_INDEX, DIR)
   #define Z2_ENABLE_PIN _EPIN(Z2_E_INDEX, ENABLE)
 #endif
 #undef _Z2_PINS
 #define _Z2_PINS Z2_STEP_PIN, Z2_DIR_PIN, Z2_ENABLE_PIN,
#endif

#define SENSITIVE_PINS { 0, 1, \
   X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
   Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
   Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \
   PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, FAN1_PIN, FAN2_PIN, CONTROLLERFAN_PIN, \
   _E0_PINS _E1_PINS _E2_PINS _E3_PINS BED_PINS \
   _H0_PINS _H1_PINS _H2_PINS _H3_PINS \
   _X2_PINS _Y2_PINS _Z2_PINS \
   X_MS1_PIN, X_MS2_PIN, Y_MS1_PIN, Y_MS2_PIN, Z_MS1_PIN, Z_MS2_PIN \
 }

#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))

#ifndef SCK_PIN
 #define SCK_PIN  SCK
#endif
#ifndef MISO_PIN
 #define MISO_PIN MISO
#endif
#ifndef MOSI_PIN
 #define MOSI_PIN MOSI
#endif
#ifndef SS_PIN
 #define SS_PIN   SS
#endif

#endif //__PINS_H


Todo lo que me decis de codigo lo apunto en mi cuaderno, estoy esperando a que me llegen los End stop para el sensor de Filamento, que Fbforos me Dijo tambien El pin a cambiar en la Rumba
de aqui lo doy de nuevo las Gracias y una vez me llege y los instale Lo publicare para que lo vea, que no se me a olvidado Su aporte.

Bueno Respecto a la LGR V1.0 decir que estoy Montando una Para un encargo, Con paneles, cama caliente Siliconada, y Un modulo Externo para Electronica.
Hay partes como la electronica y la colocacion de los motores de extrusion externos que no es  a mi eleccion ya que es a lo que me an dicho que aga.

Le e variado Los pilares Se los E cambiado de 20x20 a 20x40m e reducido en 40mm el cierre del anillo central ya que son los 40mm que se comen por el cambio de perfil,
despues de una liada del Chino de aliexpress mandarin, me e visto obligado a cambiar el Carro X a una Guia 12H en vez de 12C como estaba Diseñada ya que El Chino pido una Guia y me manda
un Husillo, Flipante, pero Bueno como Soy A4 en Ali, ya me an devueto la pasta y tengo un Husillo que ya le sacare Provecho.

Sengun vaya Montando esta Y prube algunas Cosillas Subiere las Nuevas Piezas del Eje Z, al acople de motor Tal y como Sugirio Sx3tec se le a Incorporado Un rodamiento 608 En la base un poco mas para arriba
del Acoplador, Como tamabien Indico Eizarr E echo la pieza con otro Rodamiento en Su parte Superior, para que vaya Totalemte Centrado.

Estas Piezas Las subire cuando las tenga Probadas.

Tambien me a llegado El SF1204, solo e pillado 1 para ver como es de calidad, desmontar y trastear un rato con el, para ver como Funcionaba ya, e sacado las Bolas e visto como iba lo e cerrado Bien y va delujo,
lo e pillado con terminacion BF 10 para ver como Era, pero eso Ultimo no me a convencido del Todo. 

me Gustaria Poder Mecanizar el Husillo si biene de 12,16 o 20mm a tanto por arriba como por abajo rebajar a la medida que yo quiera segun mande la pieza que diseñe, y Sin Rosa.
 ¿ Conoceis a alguien del Foro que mecanize es decir que de 16 me lo baje una parte a 10mm?

Otra cosa me han Abierto Ficha de Cliente en Tecnopower, ya Puedo Adquirir Productos, Hoy e mandado un mail Piediendo Presupuesto para Husillo y Guias Lineales Hiwin Originales.
Si alguen esta Interesado, que me mande un Mp y cuando me manden los precios Si os cuadra podemos pillar y haber si nos rebajan Algo.

Os dejo unas Fototitos del Comienzo del Montaje esta es tal y como esta el Boom Colgado en el Foro



[Imagen: 30075996941_7408ae2b64_c.jpg]
[Imagen: 29531826393_96a828aef3_c.jpg]
[Imagen: 30075994581_5382ef3db5_c.jpg]

Modula para la electronica que en el panel Frontal llevara Integrado El LCD

[Imagen: 29531822293_ff0e03b8ff_c.jpg]

[Imagen: 30160307005_c89db88790_c.jpg]

para no quedarme Corto en este y otro proyecto pedi casi 3500 tornillos a la web que me dijisteis por aqui, todo perfecto casi 4.3kg de Tonillos

[Imagen: 30160310685_274330759b_c.jpg]
[Imagen: 29531823163_d618f71592_c.jpg]

[url=https://flic.kr/
  Responder
[Imagen: 30160304225_a09246cf9a_c.jpg]

[Imagen: 29531819693_314a09f850_c.jpg]
[Imagen: 29531812344_b6f864e65e_c.jpg]

[Imagen: 30046221542_ca38e06496_c.jpg]


 nuevo soporte para Z con rodamiento
[Imagen: 30125642946_9d0fa014f6_c.jpg]

[Imagen: 30125642766_53bdc763da_c.jpg]


refuerzo de piezas Guias

[Imagen: 30160448975_20d6d2a6a4_c.jpg]
  Responder
Por lo que entiendo viendo ese codigo, simplemente tienes que irte al fichero de rumba.pins, poner los pines del E2 a -1 como te he dicho para anular ese extrusor (o comentar esas lineas) y en todo caso añadir tu a mano las lineas del enable, step y direction del Z2, lo que te marque en verde. Lo puedes añadir donde quieras, mismo debajo de la declaracion de los pines de los extrusores.

Con eso usarias si o si el E2 para el segundo driver del eje Z, con la posibilidad de en un futuro usar 2 extrusores igualmente sin liarte mas.

Si no lo pillas, te lo dejo yo configurado y te envio el archivo, pero creo que es importante que lo entiendas para saber como funciona tu maquina... ahora no puedo hacerlo porque te estoy contestando por el movil, pero si es necesario dilo y te lo modifico yo.

Edit: Aprovecho que estoy en el ordenador ahora para dejarte el fichero configurado, comparalo con el antiguo si te es más facil para ver los cambios:

Antiguo:
Código:
/**
* RUMBA pin assignments
*/

#ifndef __AVR_ATmega2560__
#error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
#endif

#if E_STEPPERS > 3 || HOTENDS > 3
#error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif

#define DEFAULT_MACHINE_NAME "Rumba"
#define BOARD_NAME           "Rumba"

#define X_STEP_PIN         17
#define X_DIR_PIN          16
#define X_ENABLE_PIN       48
#define X_MIN_PIN          37
#define X_MAX_PIN          36

#define Y_STEP_PIN         54
#define Y_DIR_PIN          47
#define Y_ENABLE_PIN       55
#define Y_MIN_PIN          35
#define Y_MAX_PIN          34

#define Z_STEP_PIN         57
#define Z_DIR_PIN          56
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          33
#define Z_MAX_PIN          32

#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN  33
#endif

#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        29
#define E2_DIR_PIN         28
#define E2_ENABLE_PIN      39

#define LED_PIN            13

#define FAN_PIN             7
#define FAN1_PIN            8

#define PS_ON_PIN          45
#define KILL_PIN           46

#define HEATER_0_PIN        2   // EXTRUDER 1
#define HEATER_1_PIN        3   // EXTRUDER 2
#define HEATER_2_PIN        6   // EXTRUDER 3

#if TEMP_SENSOR_0 == -1
#define TEMP_0_PIN        6   // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_0_PIN       15   // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used
#endif

#if TEMP_SENSOR_1 == -1
#define TEMP_1_PIN        5   // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_1_PIN       14   // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used
#endif

#if TEMP_SENSOR_2 == -1
#define TEMP_2_PIN        7   // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple
#else
#define TEMP_2_PIN       13   // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used
#endif

//optional for extruder 4 or chamber: #define TEMP_X_PIN         12   // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used
//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN       8    // EXTRUDER 4

#define HEATER_BED_PIN      9    // BED
#if TEMP_SENSOR_BED == -1
#define TEMP_BED_PIN      7    // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple
#else
#define TEMP_BED_PIN     11    // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used
#endif

#define SDSS               53
#define SD_DETECT_PIN      49
#define BEEPER_PIN         44
#define LCD_PINS_RS        19
#define LCD_PINS_ENABLE    42
#define LCD_PINS_D4        18
#define LCD_PINS_D5        38
#define LCD_PINS_D6        41
#define LCD_PINS_D7        40
#define BTN_EN1            11
#define BTN_EN2            12
#define BTN_ENC            43

#define SERVO0_PIN         5

Nuevo código reconfigurado, Eje Z2 en el E2
Código:
/**
* RUMBA pin assignments
*/

#ifndef __AVR_ATmega2560__
#error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
#endif

#if E_STEPPERS > 3 || HOTENDS > 3
#error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif

#define DEFAULT_MACHINE_NAME "Rumba"
#define BOARD_NAME           "Rumba"

#define X_STEP_PIN         17
#define X_DIR_PIN          16
#define X_ENABLE_PIN       48
#define X_MIN_PIN          37
#define X_MAX_PIN          36

#define Y_STEP_PIN         54
#define Y_DIR_PIN          47
#define Y_ENABLE_PIN       55
#define Y_MIN_PIN          35
#define Y_MAX_PIN          34

#define Z_STEP_PIN         57
#define Z_DIR_PIN          56
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          33
#define Z_MAX_PIN          32

#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN  33
#endif

#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        -1
#define E2_DIR_PIN         -1
#define E2_ENABLE_PIN      -1

#define Z2_STEP_PIN        29
#define Z2_DIR_PIN         28
#define Z2_ENABLE_PIN      39

#define LED_PIN            13

#define FAN_PIN             7
#define FAN1_PIN            8

#define PS_ON_PIN          45
#define KILL_PIN           46

#define HEATER_0_PIN        2   // EXTRUDER 1
#define HEATER_1_PIN        3   // EXTRUDER 2
#define HEATER_2_PIN        6   // EXTRUDER 3

#if TEMP_SENSOR_0 == -1
#define TEMP_0_PIN        6   // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_0_PIN       15   // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used
#endif

#if TEMP_SENSOR_1 == -1
#define TEMP_1_PIN        5   // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_1_PIN       14   // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used
#endif

#if TEMP_SENSOR_2 == -1
#define TEMP_2_PIN        7   // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple
#else
#define TEMP_2_PIN       13   // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used
#endif

//optional for extruder 4 or chamber: #define TEMP_X_PIN         12   // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used
//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN       8    // EXTRUDER 4

#define HEATER_BED_PIN      9    // BED
#if TEMP_SENSOR_BED == -1
#define TEMP_BED_PIN      7    // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple
#else
#define TEMP_BED_PIN     11    // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used
#endif

#define SDSS               53
#define SD_DETECT_PIN      49
#define BEEPER_PIN         44
#define LCD_PINS_RS        19
#define LCD_PINS_ENABLE    42
#define LCD_PINS_D4        18
#define LCD_PINS_D5        38
#define LCD_PINS_D6        41
#define LCD_PINS_D7        40
#define BTN_EN1            11
#define BTN_EN2            12
#define BTN_ENC            43

#define SERVO0_PIN         5

En principio creo que te debería funcionar correctamente, si te da fallo por tener los pines a -1, comenta esas lineas, aunque no creo que te de fallo ninguno.
  Responder
(07-10-2016, 07:53 AM)Shellmer escribió: Por lo que entiendo viendo ese codigo, simplemente tienes que irte al fichero de rumba.pins, poner los pines del E2 a -1 como te he dicho para anular ese extrusor (o comentar esas lineas) y en todo caso añadir tu a mano las lineas del enable, step y direction del Z2, lo que te marque en verde. Lo puedes añadir donde quieras, mismo debajo de la declaracion de los pines de los extrusores.

Con eso usarias si o si el E2 para el segundo driver del eje Z, con la posibilidad de en un futuro usar 2 extrusores igualmente sin liarte mas.

Si no lo pillas, te lo dejo yo configurado y te envio el archivo, pero creo que es importante que lo entiendas para saber como funciona tu maquina... ahora no puedo hacerlo porque te estoy contestando por el movil, pero si es necesario dilo y te lo modifico yo.

Edit: Aprovecho que estoy en el ordenador ahora para dejarte el fichero configurado, comparalo con el antiguo si te es más facil para ver los cambios:

Antiguo:
Código:
/**
* RUMBA pin assignments
*/

#ifndef __AVR_ATmega2560__
#error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
#endif

#if E_STEPPERS > 3 || HOTENDS > 3
#error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif

#define DEFAULT_MACHINE_NAME "Rumba"
#define BOARD_NAME           "Rumba"

#define X_STEP_PIN         17
#define X_DIR_PIN          16
#define X_ENABLE_PIN       48
#define X_MIN_PIN          37
#define X_MAX_PIN          36

#define Y_STEP_PIN         54
#define Y_DIR_PIN          47
#define Y_ENABLE_PIN       55
#define Y_MIN_PIN          35
#define Y_MAX_PIN          34

#define Z_STEP_PIN         57
#define Z_DIR_PIN          56
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          33
#define Z_MAX_PIN          32

#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN  33
#endif

#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        29
#define E2_DIR_PIN         28
#define E2_ENABLE_PIN      39

#define LED_PIN            13

#define FAN_PIN             7
#define FAN1_PIN            8

#define PS_ON_PIN          45
#define KILL_PIN           46

#define HEATER_0_PIN        2   // EXTRUDER 1
#define HEATER_1_PIN        3   // EXTRUDER 2
#define HEATER_2_PIN        6   // EXTRUDER 3

#if TEMP_SENSOR_0 == -1
#define TEMP_0_PIN        6   // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_0_PIN       15   // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used
#endif

#if TEMP_SENSOR_1 == -1
#define TEMP_1_PIN        5   // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_1_PIN       14   // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used
#endif

#if TEMP_SENSOR_2 == -1
#define TEMP_2_PIN        7   // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple
#else
#define TEMP_2_PIN       13   // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used
#endif

//optional for extruder 4 or chamber: #define TEMP_X_PIN         12   // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used
//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN       8    // EXTRUDER 4

#define HEATER_BED_PIN      9    // BED
#if TEMP_SENSOR_BED == -1
#define TEMP_BED_PIN      7    // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple
#else
#define TEMP_BED_PIN     11    // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used
#endif

#define SDSS               53
#define SD_DETECT_PIN      49
#define BEEPER_PIN         44
#define LCD_PINS_RS        19
#define LCD_PINS_ENABLE    42
#define LCD_PINS_D4        18
#define LCD_PINS_D5        38
#define LCD_PINS_D6        41
#define LCD_PINS_D7        40
#define BTN_EN1            11
#define BTN_EN2            12
#define BTN_ENC            43

#define SERVO0_PIN         5

Nuevo código reconfigurado, Eje Z2 en el E2
Código:
/**
* RUMBA pin assignments
*/

#ifndef __AVR_ATmega2560__
#error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
#endif

#if E_STEPPERS > 3 || HOTENDS > 3
#error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif

#define DEFAULT_MACHINE_NAME "Rumba"
#define BOARD_NAME           "Rumba"

#define X_STEP_PIN         17
#define X_DIR_PIN          16
#define X_ENABLE_PIN       48
#define X_MIN_PIN          37
#define X_MAX_PIN          36

#define Y_STEP_PIN         54
#define Y_DIR_PIN          47
#define Y_ENABLE_PIN       55
#define Y_MIN_PIN          35
#define Y_MAX_PIN          34

#define Z_STEP_PIN         57
#define Z_DIR_PIN          56
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          33
#define Z_MAX_PIN          32

#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN  33
#endif

#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        -1
#define E2_DIR_PIN         -1
#define E2_ENABLE_PIN      -1

#define Z2_STEP_PIN        29
#define Z2_DIR_PIN         28
#define Z2_ENABLE_PIN      39

#define LED_PIN            13

#define FAN_PIN             7
#define FAN1_PIN            8

#define PS_ON_PIN          45
#define KILL_PIN           46

#define HEATER_0_PIN        2   // EXTRUDER 1
#define HEATER_1_PIN        3   // EXTRUDER 2
#define HEATER_2_PIN        6   // EXTRUDER 3

#if TEMP_SENSOR_0 == -1
#define TEMP_0_PIN        6   // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_0_PIN       15   // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used
#endif

#if TEMP_SENSOR_1 == -1
#define TEMP_1_PIN        5   // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_1_PIN       14   // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used
#endif

#if TEMP_SENSOR_2 == -1
#define TEMP_2_PIN        7   // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple
#else
#define TEMP_2_PIN       13   // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used
#endif

//optional for extruder 4 or chamber: #define TEMP_X_PIN         12   // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used
//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN       8    // EXTRUDER 4

#define HEATER_BED_PIN      9    // BED
#if TEMP_SENSOR_BED == -1
#define TEMP_BED_PIN      7    // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple
#else
#define TEMP_BED_PIN     11    // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used
#endif

#define SDSS               53
#define SD_DETECT_PIN      49
#define BEEPER_PIN         44
#define LCD_PINS_RS        19
#define LCD_PINS_ENABLE    42
#define LCD_PINS_D4        18
#define LCD_PINS_D5        38
#define LCD_PINS_D6        41
#define LCD_PINS_D7        40
#define BTN_EN1            11
#define BTN_EN2            12
#define BTN_ENC            43

#define SERVO0_PIN         5

En principio creo que te debería funcionar correctamente, si te da fallo por tener los pines a -1, comenta esas lineas, aunque no creo que te de fallo ninguno.


Buenos días gracias por constestar estoy fuera y desde el móvil no me aparece el código, esta noche que ya estaré en casa lo miro haber si consigo verlo por mí mismo si no te escribo con la fusila que tenga,


Muchas gracias


Enviado desde mi iPhone utilizando Tapatalk
  Responder
Muy buena maquina sacha. Por cuanto sale el tinglado entero? Habria posibilidad de aumentar las medidas o hacerla hibrida CNC para hacer algun tipo de corte laser/plasma?
  Responder
(09-10-2016, 08:54 AM)sacha escribió:
(07-10-2016, 07:53 AM)Shellmer escribió: Por lo que entiendo viendo ese codigo, simplemente tienes que irte al fichero de rumba.pins, poner los pines del E2 a -1 como te he dicho para anular ese extrusor (o comentar esas lineas) y en todo caso añadir tu a mano las lineas del enable, step y direction del Z2, lo que te marque en verde. Lo puedes añadir donde quieras, mismo debajo de la declaracion de los pines de los extrusores.

Con eso usarias si o si el E2 para el segundo driver del eje Z, con la posibilidad de en un futuro usar 2 extrusores igualmente sin liarte mas.

Si no lo pillas, te lo dejo yo configurado y te envio el archivo, pero creo que es importante que lo entiendas para saber como funciona tu maquina... ahora no puedo hacerlo porque te estoy contestando por el movil, pero si es necesario dilo y te lo modifico yo.

Edit: Aprovecho que estoy en el ordenador ahora para dejarte el fichero configurado, comparalo con el antiguo si te es más facil para ver los cambios:

Antiguo:
Código:
/**
* RUMBA pin assignments
*/

#ifndef __AVR_ATmega2560__
#error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
#endif

#if E_STEPPERS > 3 || HOTENDS > 3
#error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif

#define DEFAULT_MACHINE_NAME "Rumba"
#define BOARD_NAME           "Rumba"

#define X_STEP_PIN         17
#define X_DIR_PIN          16
#define X_ENABLE_PIN       48
#define X_MIN_PIN          37
#define X_MAX_PIN          36

#define Y_STEP_PIN         54
#define Y_DIR_PIN          47
#define Y_ENABLE_PIN       55
#define Y_MIN_PIN          35
#define Y_MAX_PIN          34

#define Z_STEP_PIN         57
#define Z_DIR_PIN          56
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          33
#define Z_MAX_PIN          32

#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN  33
#endif

#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        29
#define E2_DIR_PIN         28
#define E2_ENABLE_PIN      39

#define LED_PIN            13

#define FAN_PIN             7
#define FAN1_PIN            8

#define PS_ON_PIN          45
#define KILL_PIN           46

#define HEATER_0_PIN        2   // EXTRUDER 1
#define HEATER_1_PIN        3   // EXTRUDER 2
#define HEATER_2_PIN        6   // EXTRUDER 3

#if TEMP_SENSOR_0 == -1
#define TEMP_0_PIN        6   // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_0_PIN       15   // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used
#endif

#if TEMP_SENSOR_1 == -1
#define TEMP_1_PIN        5   // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_1_PIN       14   // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used
#endif

#if TEMP_SENSOR_2 == -1
#define TEMP_2_PIN        7   // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple
#else
#define TEMP_2_PIN       13   // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used
#endif

//optional for extruder 4 or chamber: #define TEMP_X_PIN         12   // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used
//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN       8    // EXTRUDER 4

#define HEATER_BED_PIN      9    // BED
#if TEMP_SENSOR_BED == -1
#define TEMP_BED_PIN      7    // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple
#else
#define TEMP_BED_PIN     11    // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used
#endif

#define SDSS               53
#define SD_DETECT_PIN      49
#define BEEPER_PIN         44
#define LCD_PINS_RS        19
#define LCD_PINS_ENABLE    42
#define LCD_PINS_D4        18
#define LCD_PINS_D5        38
#define LCD_PINS_D6        41
#define LCD_PINS_D7        40
#define BTN_EN1            11
#define BTN_EN2            12
#define BTN_ENC            43

#define SERVO0_PIN         5

Nuevo código reconfigurado, Eje Z2 en el E2
Código:
/**
* RUMBA pin assignments
*/

#ifndef __AVR_ATmega2560__
#error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
#endif

#if E_STEPPERS > 3 || HOTENDS > 3
#error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif

#define DEFAULT_MACHINE_NAME "Rumba"
#define BOARD_NAME           "Rumba"

#define X_STEP_PIN         17
#define X_DIR_PIN          16
#define X_ENABLE_PIN       48
#define X_MIN_PIN          37
#define X_MAX_PIN          36

#define Y_STEP_PIN         54
#define Y_DIR_PIN          47
#define Y_ENABLE_PIN       55
#define Y_MIN_PIN          35
#define Y_MAX_PIN          34

#define Z_STEP_PIN         57
#define Z_DIR_PIN          56
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          33
#define Z_MAX_PIN          32

#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN  33
#endif

#define E0_STEP_PIN        23
#define E0_DIR_PIN         22
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        26
#define E1_DIR_PIN         25
#define E1_ENABLE_PIN      27

#define E2_STEP_PIN        -1
#define E2_DIR_PIN         -1
#define E2_ENABLE_PIN      -1

#define Z2_STEP_PIN        29
#define Z2_DIR_PIN         28
#define Z2_ENABLE_PIN      39

#define LED_PIN            13

#define FAN_PIN             7
#define FAN1_PIN            8

#define PS_ON_PIN          45
#define KILL_PIN           46

#define HEATER_0_PIN        2   // EXTRUDER 1
#define HEATER_1_PIN        3   // EXTRUDER 2
#define HEATER_2_PIN        6   // EXTRUDER 3

#if TEMP_SENSOR_0 == -1
#define TEMP_0_PIN        6   // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_0_PIN       15   // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used
#endif

#if TEMP_SENSOR_1 == -1
#define TEMP_1_PIN        5   // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used
#else
#define TEMP_1_PIN       14   // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used
#endif

#if TEMP_SENSOR_2 == -1
#define TEMP_2_PIN        7   // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple
#else
#define TEMP_2_PIN       13   // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used
#endif

//optional for extruder 4 or chamber: #define TEMP_X_PIN         12   // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used
//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN       8    // EXTRUDER 4

#define HEATER_BED_PIN      9    // BED
#if TEMP_SENSOR_BED == -1
#define TEMP_BED_PIN      7    // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple
#else
#define TEMP_BED_PIN     11    // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used
#endif

#define SDSS               53
#define SD_DETECT_PIN      49
#define BEEPER_PIN         44
#define LCD_PINS_RS        19
#define LCD_PINS_ENABLE    42
#define LCD_PINS_D4        18
#define LCD_PINS_D5        38
#define LCD_PINS_D6        41
#define LCD_PINS_D7        40
#define BTN_EN1            11
#define BTN_EN2            12
#define BTN_ENC            43

#define SERVO0_PIN         5

En principio creo que te debería funcionar correctamente, si te da fallo por tener los pines a -1, comenta esas lineas, aunque no creo que te de fallo ninguno.


Buenos días gracias por constestar estoy fuera y desde el móvil no me aparece el código, esta noche que ya estaré en casa lo miro haber si consigo verlo por mí mismo si no te escribo con la fusila que tenga,


Muchas gracias


Enviado desde mi iPhone utilizando Tapatalk


Compi Muchas Gracias e comparado Los Dos Codigos lo veo Claro, Muchas Gracias Por el Aporte, Pondre Una carpeta con el marlin Con Dos Z, para que todo El mundo Lo pueda Hacer.
mañana por la noche voy a Probar Sobre Unos nema que tengo en casa y os ago un pequeño Video.
(09-10-2016, 05:22 PM)Esael escribió: Muy buena maquina sacha. Por cuanto sale el tinglado entero? Habria posibilidad de aumentar las medidas o hacerla hibrida CNC para hacer algun tipo de corte laser/plasma?


Muchas Gracias, Pues Ronda de 600-800€ dependiendo de los materiales que Utilices Y sin paneles mas o menos, 
Respecto al Corte laser No creo que Sea muy DificiL adaptar el carro X, para un corte, pero no tengo ni idea de CNC o cortes laser, no te podria Ayudar.
Esta es el Tamaño maximo para este Modelo, mas de aqui hay que cambiar Piezas, rediseñar, y Gastarse un poco de € en los cambios de Motor y Drivers.


Estoy Trabajando En Otra XXXL pero ira con calma ya que para montarla voy a desmontar medo taller para hacerla Hueco, ya os ire contando, toda la info
recopilada en este Post que tanto os e dado la lata, Sobre nema 23 Drivers, conexionado, pines..... no es vano toda esta Info la Utilizare para El Siguiente Proyecto Open Source que tengo ya 
diseñando.

Hize la LGR V1.0 espero que de este Foro salga la V1.5 ya por algun Usuario que la Pueda mejorar, y podamos disfrutar mas de ella, Ya sabiendo que Funciona es Cuestion de Timpo que mejoren, pero 
el tamaño agrandarla Supone un cambio de Piezas.

De momento me han llegado Estos Dos Motores Algo ya potente 24.8Kg Torque Max por motor a 2.8A, un par de estos ya hablamos que levantan casi 50Kg de cama Con esto 
ya se Pueden hacer medidas XXXL, ahora os adelanto que las Dimesiones Externas de la Impresora Se Disparan por  Encima de los 1200/1400mm en Todos Los Ejes,

Pensar bien una vez salga el proyecto Si realmente la vais a dar uso.


Nema 23 / nema 17

[Imagen: 30223248285_934b928dc0_c.jpg]

[Imagen: 30223246825_c0ff144f08_c.jpg]

(04-10-2016, 11:23 PM)pica2079 escribió: Muy buenas Sacha!!! Yo he conectado para probar 4 motores en serie ( 2 en serie, los otros 2 en serie y estos en paralelo....No se si me explico) a un driver del eje Z y funcionan pero cuando cargas peso en la cama después de subirlo y bajarlo varias veces pierde algún paso y la cama se queda torcida.
Así que también me interesaría poner el otro extrusor como eje Z MUCHÍSIMO.
Una pregunta: has pensado utilizar en vez de nema 23 unos de estos nema 17  Con reductora incorporada como los que se ponen a veces para el extrusor??

Buenas No no me planteo Reductora, Sumando el precio del Motor Y Reductora, pillo unos nema 23 Potentes y me dejo de Complicaciones,
se hablo de este tema en las 1º paginas, y despues de ver valore, y videos y Buscar Info, Personalmente opino que Pongo el Motor Potente
y me quito De Historias.
  Responder
buenas Noches Compañeros,  despues de hacer unos Cortes de cable y conectar Todo a Funcionado,


e descomentado De El Z dual en la configuracion avanzada y e puesto El codigo, compilado, y listo, dejo un video mejor que unas fotos, 
el segundo video, ya tengo la pantalla Tactil, para la Impresora, la e probado y va bien, de cara al Futuro pillare una con mas Resolucion 
pero por 23€ esta Delujo.



  Responder
(11-10-2016, 12:58 AM)sacha escribió: buenas Noches Compañeros,  despues de hacer unos Cortes de cable y conectar Todo a Funcionado,


e descomentado De El Z dual en la configuracion avanzada y e puesto El codigo, compilado, y listo, dejo un video mejor que unas fotos, 
el segundo video, ya tengo la pantalla Tactil, para la Impresora, la e probado y va bien, de cara al Futuro pillare una con mas Resolucion 
pero por 23€ esta Delujo.




Me alegro mucho de que te haya funcionado, no estaba del todo seguro de que fuese hacerlo pues yo nunca he utilizado Rumba, y aparte, mis dos motores del eje Z están conectados en paralelo, pero vamos, cojonudo si lo ha hecho.

Yo me voy a aventurar en breves a instalar un nuevo extrusor en mi Prusa, concretamente un extrusor Dondolo, que utiliza un servo para cambiar de boquilla cada vez que se cambia el color. Tendré que hacer múltiples ajustes al código, así como programarlo para que en el cambio de extrusor active un servo y cambie la dirección del motor del extrusor, pero bueno, malo será. Algún día, cuando tenga el dinero suficiente, el tiempo y las ganas, probablemente monte una impresora como la tuya, pero algo bastante grande para poder realizar impresiones grandes... hace poco le he puesto la cama de 200x300mm, y me llega, pero hay veces que quiero hacer piezas largas, y por desgracia no puedo realizarlas sin cortarlas  Triste

Por otra parte, mi ramps solo tiene 3 salidas para extrusor/cama, y por desgracia actualmente utilizo las 3, una para el extrusor 1, otra para el ventilador de capa, y la ultima para la cama... me da que tendré que modificar el código también para añadir un mosfet externo para conectar por ejemplo el ventilador de capa y utilizar la salida que actualmente uso para el ventilador para colocar el segundo cartucho calefactor... utilizaré uno de los pines auxiliares de la ramps para ello, posiblemente uno de los de los servos, ya que son PWM, si lo hago ya haré algún pequeño tutorial, pues realmente, una Ramps no deja de ser una interfaz que permite conectar todo de manera más sencilla, se puede extender y utilizar más extrusores utilizando las salidas auxiliares de forma muy sencilla editando solamente el código de la impresora.
Ya os contaré de mis andanzas, quizá no tenga que ver mucho con esta impresora, pero seguro que alguna cosilla buena se puede sacar para mejorar este y otros modelos en caso necesario.
  Responder
Puedes comentarnos tus Avances, Todo lo que podamos incluir y mejorar Bienvenido es Shy Shy

Bueno os dejo algunas Fotillos, de las Canaletas de 19x19, y la electronica va a ser un modulo independiente, estoy empezando
con el soldado de todos los conectores Gx Tipo CNC para poder hacer un conexionado Independiente y modular.

Tambien me a llegado Hoy los Nuevos Nema 17 de 6.6Kg/Torque para el Eje Z ya comentare que tal Van.

[Imagen: 30152419872_47103e3d24_c.jpg]
[Imagen: 29637801563_16876df3a6_c.jpg]

[Imagen: 30233154546_9622bb8a17_c.jpg]

[Imagen: 30152416542_be7f32e491_c.jpg]

[Imagen: 30233152086_fdea338887_c.jpg]
  Responder
En el marlin del Dropbox, no está habilitada la función de cmabio de filamento. Como se activa en el marlin?

Enviado desde mi Nexus 6 mediante Tapatalk
  Responder
Está en la página 12/13 o 14 esta tarde subo una copia de Marín habilitando el cambio


Enviado desde mi iPhone utilizando Tapatalk
  Responder
(15-10-2016, 08:19 AM)sacha escribió: Está en la página 12/13 o 14 esta tarde subo una copia de Marín habilitando el cambio


Enviado desde mi iPhone utilizando Tapatalk

Buenas Sacha. Como llevas la impresora?. Me gustaria intentar montarla aprovechando la electronica y lo que puede de mi steel. Los perfiles donde los has comprado y en caso de ser corte de barras largas como lo has cortado para optimizar la longitud de las mismas?
  Responder
Buenos dos los perfiles se compran en motedis.com
Van al
Corte pones las medidas en la web, no compro por barras ya que me las mandan cortaditas y me sale barato, la impresora está terminada, ya hay un par de usuarios que la tienen montada.

De la steel puedes aprovechar toda la electrónica y motores, pero recuerda que el eje Z mínimo a de ser de 4.8kg/torque por motor.

Un saludo


Enviado desde mi iPhone utilizando Tapatalk

para los que esteis interesados en Hacerla, mandarme un mp, ya que en breves me van a llegar los Chasis, que pedi, voy a tener un par de kits, listos para que montar.
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  [PROYECTO] C-Bot Core XY 3D Printer en proceso con fotos y vídeos. NeoGames76 11 6,136 11-07-2017, 01:37 PM
Último mensaje: NeoGames76