summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Phillips <david@yeah.nah.nz>2019-11-02 20:19:32 +1300
committerDavid Phillips <david@yeah.nah.nz>2019-11-02 20:19:32 +1300
commit27340a30165f9f8f45fe4b62b45ac8ec517ce382 (patch)
treeedcc3f095dd7ca11f493f7c8a880dd9f9e3a739b
downloadrepetier-config-27340a30165f9f8f45fe4b62b45ac8ec517ce382.tar.xz
Add current printer configHEADmaster
-rw-r--r--Configuration.h2006
1 files changed, 2006 insertions, 0 deletions
diff --git a/Configuration.h b/Configuration.h
new file mode 100644
index 0000000..8a964f2
--- /dev/null
+++ b/Configuration.h
@@ -0,0 +1,2006 @@
+/*
+ This file is part of Repetier-Firmware.
+
+ Repetier-Firmware is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Repetier-Firmware is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Repetier-Firmware. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef CONFIGURATION_H
+#define CONFIGURATION_H
+
+/* Some words on units:
+
+From 0.80 onwards the units used are unified for easier configuration, watch out when transferring from older configs!
+
+Speed is in mm/s
+Acceleration in mm/s^2
+Temperature is in degrees Celsius
+
+
+##########################################################################################
+## IMPORTANT ##
+##########################################################################################
+
+For easy configuration, the default settings enable parameter storage in EEPROM.
+This means, after the first upload many variables can only be changed using the special
+M commands as described in the documentation. Changing these values in the configuration.h
+file has no effect. Parameters overridden by EEPROM settings are calibration values, extruder
+values except thermistor tables and some other parameter likely to change during usage
+like advance steps or ops mode.
+To override EEPROM settings with config settings, set EEPROM_MODE 0
+
+*/
+
+
+// BASIC SETTINGS: select your board type, thermistor type, axis scaling, and endstop configuration
+
+/** Number of extruders. Maximum 6 extruders. */
+#define NUM_EXTRUDER 1
+
+/** Set to 1 if all extruder motors go to 1 nozzle that mixes your colors. */
+#define MIXING_EXTRUDER 0
+
+//// The following define selects which electronics board you have. Please choose the one that matches your setup
+// Gen3 PLUS for RepRap Motherboard V1.2 = 21
+// MEGA/RAMPS up to 1.2 = 3
+// RAMPS 1.3/RAMPS 1.4 = 33
+// Azteeg X3 = 34
+// Azteeg X3 Pro = 35
+// MPX3 (mainly RAMPS compatible) = 38
+// Ultimaker Shield 1.5.7 = 37
+// Gen6 = 5
+// Gen6 deluxe = 51
+// Sanguinololu up to 1.1 = 6
+// Sanguinololu 1.2 and above = 62
+// 3Drag/Velleman K8200 = 66 (experimental)
+// Open Motion Controller = 91
+// Melzi board = 63 // Define REPRAPPRO_HUXLEY if you have one for correct HEATER_1_PIN assignment!
+// Azteeg X1 = 65
+// 3Drag/Velleman K8200 (experimental) = 66
+// Gen7 1.1 till 1.3.x = 7
+// Gen7 1.4.1 and later = 71
+// Sethi 3D_1 = 72
+// Teensylu (at90usb) = 8 // requires Teensyduino
+// Printrboard (at90usb) = 9 // requires Teensyduino
+// Printrboard Ref. F or newer= 92 // requires Teensyduino
+// Foltyn 3D Master = 12
+// MegaTronics 1.0 = 70
+// Megatronics 2.0 = 701
+// Megatronics 3.0 = 703 // Thermistors predefined not thermocouples
+// Minitronics 1.0 = 702
+// RUMBA = 80 // Get it from reprapdiscount
+// FELIXprinters = 101
+// Rambo = 301
+// Rambo EInsy = 310
+// PiBot for Repetier V1.0-1.3= 314
+// PiBot for Repetier V1.4 = 315
+// PiBot Controller V2.0 = 316
+// Sanguish Beta = 501
+// Unique One rev. A = 88
+// SAV MK1 = 89
+// MJRice Pica Rev B = 183
+// MJRice Pica Rev C = 184
+// Zonestar ZRIB 2.1 = 39
+// User layout defined in userpins.h = 999
+
+#define MOTHERBOARD 33
+
+#include "pins.h"
+
+// Override pin definitions from pins.h
+//#define FAN_PIN 4 // Extruder 2 uses the default fan output, so move to an other pin
+//#define EXTERNALSERIAL use Arduino serial library instead of build in. Requires more ram, has only 63 byte input buffer.
+
+/*
+We can connect BlueTooth to serial converter module directly to boards based on AtMega2560 or AtMega1280 and some boards based on AtMega2561, AtMega1281 or AtMega1284p
+- On Melzi boards connect BT to TX1 and RX1 pins, then set BLUETOOTH_SERIAL to 1
+- On RUMBA boards connect BT to pin 11 and 12 of X3 connector, then set BLUETOOTH_SERIAL to 3
+- On RAMBO boards connect BT to pins 5,6 or 7,8 or 9,10 on Serial connector, then accordingly set BLUETOOTH_SERIAL to 1,2 or 3
+- On RAMPS we must remap Y_ENDSTOPS pins or Z_ENDSTOPZ pins or LCD_ENABLE and LCD_RS pins to another pins, and connect BT to:
+ a) signals of Y_MIN, Y_MAX, then set BLUETOOTH_SERIAL to 3 (RX from BT to Y_MIN, TX from BT to Y_MAX)
+ b) signals of Z_MIN, Z_MAX, then set BLUETOOTH_SERIAL to 1 (RX from BT to Z_MIN, TX from BT to Z_MAX)
+ c) pin 17 and 18 of AUX4 connector, then set BLUETOOTH_SERIAL to 2 (RX from BT to AUX4 p18, TX from BT to AUX4 p17)
+ Comment out or set the BLUETOOTH_SERIAL to 0 or -1 to disable this feature.
+*/
+#define BLUETOOTH_SERIAL 1 // Port number (1..3) - For RUMBA use 3
+#define BLUETOOTH_BAUD 115200 // communication speed
+
+// Uncomment the following line if you are using Arduino compatible firmware made for Arduino version earlier then 1.0
+// If it is incompatible you will get compiler errors about write functions not being compatible!
+//#define COMPAT_PRE1
+
+/* Define the type of axis movements needed for your printer. The typical case
+is a full cartesian system where x, y and z moves are handled by separate motors.
+
+0 = full cartesian system, xyz have separate motors.
+1 = z axis + xy H-gantry (x_motor = x+y, y_motor = x-y)
+2 = z axis + xy H-gantry (x_motor = x+y, y_motor = y-x)
+3 = Delta printers (Rostock, Kossel, RostockMax, Cerberus, etc)
+4 = Tuga printer (Scott-Russell mechanism)
+5 = Bipod system (not implemented)
+8 = y axis + xz H-gantry (x_motor = x+z, z_motor = x-z)
+9 = y axis + xz H-gantry (x_motor = x+z, z_motor = z-x)
+Cases 1, 2, 8 and 9 cover all needed xy and xz H gantry systems. If you get results mirrored etc. you can swap motor connections for x and y.
+If a motor turns in the wrong direction change INVERT_X_DIR or INVERT_Y_DIR.
+*/
+#define DRIVE_SYSTEM 0
+/*
+ Normal core xy implementation needs 2 virtual steps for a motor step to guarantee
+ that every tiny move gets maximum one step regardless of direction. This can cost
+ some speed, so alternatively you can activate the FAST_COREXYZ by uncommenting
+ the define. This solves the core movements as nonlinear movements like done for
+ deltas but without the complicated transformations. Since transformations are still
+ linear you can reduce delta computations per second to 10 and also use 10
+ subsegments instead of 20 to reduce memory usage.
+*/
+//#define FAST_COREXYZ
+
+/* You can write some GCODE to be executed on startup. Use this e.g. to set some
+pins. Separate multiple GCODEs with \n
+*/
+//#define STARTUP_GCODE ""
+
+// ##########################################################################################
+// ## Calibration ##
+// ##########################################################################################
+
+/** Drive settings for the Delta printers
+*/
+#if DRIVE_SYSTEM == DELTA
+ // ***************************************************
+ // *** These parameter are only for Delta printers ***
+ // ***************************************************
+
+/** \brief Delta drive type: 0 - belts and pulleys, 1 - filament drive */
+#define DELTA_DRIVE_TYPE 0
+
+#if DELTA_DRIVE_TYPE == 0
+/** \brief Pitch in mm of drive belt. GT2 = 2mm */
+#define BELT_PITCH 2
+/** \brief Number of teeth on X, Y and Z tower pulleys */
+#define PULLEY_TEETH 20
+#define PULLEY_CIRCUMFERENCE (BELT_PITCH * PULLEY_TEETH)
+#elif DELTA_DRIVE_TYPE == 1
+/** \brief Filament pulley diameter in millimeters */
+#define PULLEY_DIAMETER 10
+#define PULLEY_CIRCUMFERENCE (PULLEY_DIAMETER * 3.1415927)
+#endif
+
+/** \brief Steps per rotation of stepper motor */
+#define STEPS_PER_ROTATION 200
+
+/** \brief Micro stepping rate of X, Y and Y tower stepper drivers */
+#define MICRO_STEPS 16
+
+// Calculations
+#define AXIS_STEPS_PER_MM ((float)(MICRO_STEPS * STEPS_PER_ROTATION) / PULLEY_CIRCUMFERENCE)
+#define XAXIS_STEPS_PER_MM AXIS_STEPS_PER_MM
+#define YAXIS_STEPS_PER_MM AXIS_STEPS_PER_MM
+#define ZAXIS_STEPS_PER_MM AXIS_STEPS_PER_MM
+#else
+// *******************************************************
+// *** These parameter are for all other printer types ***
+// *******************************************************
+
+/** Drive settings for printers with cartesian drive systems */
+/** \brief Number of steps for a 1mm move in x direction.
+For xy gantry use 2*belt moved!
+Overridden if EEPROM activated. */
+#define XAXIS_STEPS_PER_MM 80
+/** \brief Number of steps for a 1mm move in y direction.
+For xy gantry use 2*belt moved!
+Overridden if EEPROM activated.*/
+#define YAXIS_STEPS_PER_MM 80
+/** \brief Number of steps for a 1mm move in z direction Overridden if EEPROM activated.*/
+#define ZAXIS_STEPS_PER_MM 4000
+#endif
+
+// ##########################################################################################
+// ## Extruder configuration ##
+// ##########################################################################################
+
+// You can use either PWM (pulse width modulation) or PDM (pulse density modulation) for
+// extruders or coolers. PDM will give more signal changes per second, so on average it gives
+// the cleaner signal. The only advantage of PWM is giving signals at a fixed rate and never more
+// then PWM.
+#define PDM_FOR_EXTRUDER 1
+#define PDM_FOR_COOLER 1
+
+// The firmware checks if the heater and sensor got decoupled, which is dangerous. Since it will never reach target
+// temperature, the heater will stay on for every which can burn your printer or house.
+// As an additional barrier to your smoke detectors (I hope you have one above your printer) we now
+// do some more checks to detect if something got wrong.
+
+// If the temp. is on hold target, it may not sway more then this degrees celsius, or we mark
+// sensor as defect.
+#define DECOUPLING_TEST_MAX_HOLD_VARIANCE 20
+// Minimum temp. rise we expect after the set duration of full heating is over.
+// Always keep a good safety margin to get no false positives. If your period is e.g. 10 seconds
+// because at startup you already need 7 seconds until heater starts to rise temp. for sensor
+// then you have 3 seconds of increased heating to reach 1°C.
+#define DECOUPLING_TEST_MIN_TEMP_RISE 1
+// Set to 1 if you want firmware to kill print on decouple
+#define KILL_IF_SENSOR_DEFECT 0
+// for each extruder, fan will stay on until extruder temperature is below this value
+#define EXTRUDER_FAN_COOL_TEMP 50
+// Retraction for sd pause over lcd
+#define RETRACT_ON_PAUSE 2
+// These commands get executed after storing position and going to park position.
+#define PAUSE_START_COMMANDS ""
+// These commands get executed before we go to stored position.
+#define PAUSE_END_COMMANDS ""
+/* Set to 1 if all extruders use the same heater block. Temp. control is then always
+controlled by settings in extruder 0 definition. */
+#define SHARED_EXTRUDER_HEATER 0
+/* Speed in mm/s for extruder moves fom internal commands, e.g. switching extruder. */
+#define EXTRUDER_SWITCH_XY_SPEED 100
+
+// Extruder offsets in steps not mm!
+#define EXT0_X_OFFSET 0
+#define EXT0_Y_OFFSET 0
+#define EXT0_Z_OFFSET 0
+// for skeinforge 40 and later, steps to pull the plastic 1 mm inside the extruder, not out. Overridden if EEPROM activated.
+#define EXT0_STEPS_PER_MM 413 //385
+// What type of sensor is used?
+// 0 is no thermistor/temperature control
+// 1 is 100k thermistor (Epcos B57560G0107F000 - RepRap-Fab.org and many other)
+// 2 is 200k thermistor
+// 3 is mendel-parts thermistor (EPCOS G550)
+// 4 is 10k thermistor
+// 8 is ATC Semitec 104GT-2
+// 12 is 100k RS thermistor 198-961
+// 13 is PT100 for E3D/Ultimaker
+// 14 is 100K NTC 3950
+// 15 DYZE DESIGN 500°C Thermistor
+// 16 is B3 innovations 500°C sensor
+// 5 is userdefined thermistor table 0
+// 6 is userdefined thermistor table 1
+// 7 is userdefined thermistor table 2
+// 50 is userdefined thermistor table 0 for PTC thermistors
+// 51 is userdefined thermistor table 0 for PTC thermistors
+// 52 is userdefined thermistor table 0 for PTC thermistors
+// 60 is AD8494, AD8495, AD8496 or AD8497 (5mV/degC and 1/4 the price of AD595 but only MSOT_08 package)
+// 61 is AD8494, AD8495, AD8496 or AD8497 (5mV/degC and 1.25 Vref offset like adafruit breakout)
+// 97 Generic thermistor table 1
+// 98 Generic thermistor table 2
+// 99 Generic thermistor table 3
+// 100 is AD595
+// 101 is MAX6675
+// 102 is MAX31855
+#define EXT0_TEMPSENSOR_TYPE 1
+// Analog input pin for reading temperatures or pin enabling SS for MAX6675
+#define EXT0_TEMPSENSOR_PIN TEMP_0_PIN
+// Which pin enables the heater
+#define EXT0_HEATER_PIN HEATER_0_PIN
+#define EXT0_STEP_PIN E0_STEP_PIN
+#define EXT0_DIR_PIN E0_DIR_PIN
+// set to false/true for normal / inverse direction
+#define EXT0_INVERSE true
+#define EXT0_ENABLE_PIN E0_ENABLE_PIN
+// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
+#define EXT0_ENABLE_ON 0
+/* Set to 1 to mirror motor. Pins for mirrored motor are below */
+#define EXT0_MIRROR_STEPPER 0
+#define EXT0_STEP2_PIN E0_STEP_PIN
+#define EXT0_DIR2_PIN E0_DIR_PIN
+#define EXT0_INVERSE2 false
+#define EXT0_ENABLE2_PIN E0_ENABLE_PIN
+// The following speed settings are for skeinforge 40+ where e is the
+// length of filament pulled inside the heater. For repsnap or older
+// skeinforge use higher values.
+// Overridden if EEPROM activated.
+#define EXT0_MAX_FEEDRATE 30
+// Feedrate from halted extruder in mm/s
+// Overridden if EEPROM activated.
+#define EXT0_MAX_START_FEEDRATE 10
+// Acceleration in mm/s^2
+// Overridden if EEPROM activated.
+#define EXT0_MAX_ACCELERATION 4000
+/** Type of heat manager for this extruder.
+- 0 = Simply switch on/off if temperature is reached. Works always.
+- 1 = PID Temperature control. Is better but needs good PID values. Defaults are a good start for most extruder.
+- 3 = Dead-time control. PID_P becomes dead-time in seconds.
+ Overridden if EEPROM activated.
+*/
+#define EXT0_HEAT_MANAGER 1
+/** Wait x seconds, after reaching target temperature. Only used for M109. Overridden if EEPROM activated. */
+#define EXT0_WATCHPERIOD 1
+
+/** \brief The maximum value, I-gain can contribute to the output.
+
+A good value is slightly higher then the output needed for your temperature.
+Values for starts:
+130 => PLA for temperatures from 170-180 deg C
+180 => ABS for temperatures around 240 deg C
+
+The precise values may differ for different nozzle/resistor combination.
+ Overridden if EEPROM activated.
+*/
+#define EXT0_PID_INTEGRAL_DRIVE_MAX 140
+/** \brief lower value for integral part
+
+The I state should converge to the exact heater output needed for the target temperature.
+To prevent a long deviation from the target zone, this value limits the lower value.
+A good start is 30 lower then the optimal value. You need to leave room for cooling.
+ Overridden if EEPROM activated.
+*/
+#define EXT0_PID_INTEGRAL_DRIVE_MIN 60
+/** P-gain. Overridden if EEPROM activated. */
+#define EXT0_PID_PGAIN_OR_DEAD_TIME 24
+/** I-gain. Overridden if EEPROM activated.
+*/
+#define EXT0_PID_I 0.88
+/** Dgain. Overridden if EEPROM activated.*/
+#define EXT0_PID_D 80
+// maximum time the heater is can be switched on. Max = 255. Overridden if EEPROM activated.
+#define EXT0_PID_MAX 255
+/** \brief Faktor for the advance algorithm. 0 disables the algorithm. Overridden if EEPROM activated.
+K is the factor for the quadratic term, which is normally disabled in newer versions. If you want to use
+the quadratic factor make sure ENABLE_QUADRATIC_ADVANCE is defined.
+L is the linear factor and seems to be working better then the quadratic dependency.
+*/
+#define EXT0_ADVANCE_K 0.0f
+#define EXT0_ADVANCE_L 0.0f
+/* Motor steps to remove backlash for advance algorithm. These are the steps
+needed to move the motor cog in reverse direction until it hits the driving
+cog. Direct drive extruder need 0. */
+#define EXT0_ADVANCE_BACKLASH_STEPS 0
+/** \brief Temperature to retract filament when extruder is heating up. Overridden if EEPROM activated.
+*/
+#define EXT0_WAIT_RETRACT_TEMP 150
+/** \brief Units (mm/inches) to retract filament when extruder is heating up. Overridden if EEPROM activated. Set
+to 0 to disable.
+*/
+#define EXT0_WAIT_RETRACT_UNITS 0
+
+/** You can run any GCODE command on extruder deselect/select. Separate multiple commands with a new line \n.
+That way you can execute some mechanical components needed for extruder selection or retract filament or whatever you need.
+The codes are only executed for multiple extruder when changing the extruder. */
+#define EXT0_SELECT_COMMANDS "M117 Extruder 1"
+#define EXT0_DESELECT_COMMANDS ""
+/** The extruder cooler is a fan to cool the extruder when it is heating. If you turn the extruder on, the fan goes on. */
+#define EXT0_EXTRUDER_COOLER_PIN -1
+/** PWM speed for the cooler fan. 0=off 255=full speed */
+#define EXT0_EXTRUDER_COOLER_SPEED 255
+/** Time in ms between a heater action and test of success. Must be more then time between turning heater on and first temp. rise!
+ * 0 will disable decoupling test */
+#define EXT0_DECOUPLE_TEST_PERIOD 18000
+/** Pin which toggles regularly during extrusion allowing jam control. -1 = disabled */
+#define EXT0_JAM_PIN -1
+/** Pull-up resistor for jam pin? */
+#define EXT0_JAM_PULLUP false
+/* Temperature when using preheat */
+#define EXT0_PREHEAT_TEMP 190
+// =========================== Configuration for second extruder ========================
+#define EXT1_X_OFFSET 0
+#define EXT1_Y_OFFSET 0
+#define EXT1_Z_OFFSET 0
+// for skeinforge 40 and later, steps to pull the plastic 1 mm inside the extruder, not out. Overridden if EEPROM activated.
+#define EXT1_STEPS_PER_MM 373
+// What type of sensor is used?
+// 0 is no thermistor/temperature control
+// 1 is 100k thermistor (Epcos B57560G0107F000 - RepRap-Fab.org and many other)
+// 2 is 200k thermistor
+// 3 is mendel-parts thermistor (EPCOS G550)
+// 4 is 10k thermistor
+// 5 is userdefined thermistor table 0
+// 6 is userdefined thermistor table 1
+// 7 is userdefined thermistor table 2
+// 8 is ATC Semitec 104GT-2
+// 50 is userdefined thermistor table 0 for PTC thermistors
+// 51 is userdefined thermistor table 0 for PTC thermistors
+// 52 is userdefined thermistor table 0 for PTC thermistors
+// 60 is AD8494, AD8495, AD8496 or AD8497 (5mV/degC and 1/4 the price of AD595 but only MSOT_08 package)
+// 61 is AD8494, AD8495, AD8496 or AD8497 (5mV/degC and 1.25 Vref offset like adafruit breakout)
+// 97 Generic thermistor table 1
+// 98 Generic thermistor table 2
+// 99 Generic thermistor table 3
+// 100 is AD595
+// 101 is MAX6675
+#define EXT1_TEMPSENSOR_TYPE 3
+// Analog input pin for reading temperatures or pin enabling SS for MAX6675
+#define EXT1_TEMPSENSOR_PIN TEMP_2_PIN
+// Which pin enables the heater
+#define EXT1_HEATER_PIN HEATER_2_PIN
+#define EXT1_STEP_PIN E1_STEP_PIN
+#define EXT1_DIR_PIN E1_DIR_PIN
+// set to 0/1 for normal / inverse direction
+#define EXT1_INVERSE false
+#define EXT1_ENABLE_PIN E1_ENABLE_PIN
+// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
+#define EXT1_ENABLE_ON false
+/* Set to 1 to mirror motor. Pins for mirrored motor are below */
+#define EXT1_MIRROR_STEPPER 0
+#define EXT1_STEP2_PIN E0_STEP_PIN
+#define EXT1_DIR2_PIN E0_DIR_PIN
+#define EXT1_INVERSE2 false
+#define EXT1_ENABLE2_PIN E0_ENABLE_PIN
+// The following speed settings are for skeinforge 40+ where e is the
+// length of filament pulled inside the heater. For repsnap or older
+// skeinforge use heigher values.
+// Overridden if EEPROM activated.
+#define EXT1_MAX_FEEDRATE 25
+// Feedrate from halted extruder in mm/s
+// Overridden if EEPROM activated.
+#define EXT1_MAX_START_FEEDRATE 12
+// Acceleration in mm/s^2
+// Overridden if EEPROM activated.
+#define EXT1_MAX_ACCELERATION 10000
+/** Type of heat manager for this extruder.
+- 0 = Simply switch on/off if temperature is reached. Works always.
+- 1 = PID Temperature control. Is better but needs good PID values. Defaults are a good start for most extruder.
+ Overridden if EEPROM activated.
+*/
+#define EXT1_HEAT_MANAGER 1
+/** Wait x seconds, after reaching target temperature. Only used for M109. Overridden if EEPROM activated. */
+#define EXT1_WATCHPERIOD 1
+
+/** \brief The maximum value, I-gain can contribute to the output.
+
+A good value is slightly higher then the output needed for your temperature.
+Values for starts:
+130 => PLA for temperatures from 170-180 deg C
+180 => ABS for temperatures around 240 deg C
+
+The precise values may differ for different nozzle/resistor combination.
+ Overridden if EEPROM activated.
+*/
+#define EXT1_PID_INTEGRAL_DRIVE_MAX 130
+/** \brief lower value for integral part
+
+The I state should converge to the exact heater output needed for the target temperature.
+To prevent a long deviation from the target zone, this value limits the lower value.
+A good start is 30 lower then the optimal value. You need to leave room for cooling.
+ Overridden if EEPROM activated.
+*/
+#define EXT1_PID_INTEGRAL_DRIVE_MIN 60
+/** P-gain. Overridden if EEPROM activated. */
+#define EXT1_PID_PGAIN_OR_DEAD_TIME 24
+/** I-gain. Overridden if EEPROM activated.
+*/
+#define EXT1_PID_I 0.88
+/** D-gain. Overridden if EEPROM activated.*/
+#define EXT1_PID_D 200
+// maximum time the heater is can be switched on. Max = 255. Overridden if EEPROM activated.
+#define EXT1_PID_MAX 255
+/** \brief Faktor for the advance algorithm. 0 disables the algorithm. Overridden if EEPROM activated.
+K is the factor for the quadratic term, which is normally disabled in newer versions. If you want to use
+the quadratic factor make sure ENABLE_QUADRATIC_ADVANCE is defined.
+L is the linear factor and seems to be working better then the quadratic dependency.
+*/
+#define EXT1_ADVANCE_K 0.0f
+#define EXT1_ADVANCE_L 0.0f
+/* Motor steps to remove backlash for advance algorithm. These are the steps
+needed to move the motor cog in reverse direction until it hits the driving
+cog. Direct drive extruder need 0. */
+#define EXT1_ADVANCE_BACKLASH_STEPS 0
+
+#define EXT1_WAIT_RETRACT_TEMP 150
+#define EXT1_WAIT_RETRACT_UNITS 0
+#define EXT1_SELECT_COMMANDS "M117 Extruder 2"
+#define EXT1_DESELECT_COMMANDS ""
+/** The extruder cooler is a fan to cool the extruder when it is heating. If you turn the etxruder on, the fan goes on. */
+#define EXT1_EXTRUDER_COOLER_PIN -1
+/** PWM speed for the cooler fan. 0=off 255=full speed */
+#define EXT1_EXTRUDER_COOLER_SPEED 255
+/** Time in ms between a heater action and test of success. Must be more then time between turning heater on and first temp. rise!
+ * 0 will disable decoupling test */
+#define EXT1_DECOUPLE_TEST_PERIOD 18000
+/** Pin which toggles regularly during extrusion allowing jam control. -1 = disabled */
+#define EXT1_JAM_PIN -1
+/** Pull-up resistor for jam pin? */
+#define EXT1_JAM_PULLUP false
+#define EXT1_PREHEAT_TEMP 190
+
+/** If enabled you can select the distance your filament gets retracted during a
+M140 command, after a given temperature is reached. */
+#define RETRACT_DURING_HEATUP 1
+
+/** Allow retraction with G10/G11 removing requirement for retraction setting in slicer. Also allows filament change if lcd is configured. */
+#define FEATURE_RETRACTION 1
+/** auto-retract converts pure extrusion moves into retractions. Beware that
+ simple extrusion e.g. over Repetier-Host will then not work! */
+#define AUTORETRACT_ENABLED 0
+#define RETRACTION_LENGTH 3
+#define RETRACTION_LONG_LENGTH 13
+#define RETRACTION_SPEED 40
+#define RETRACTION_Z_LIFT 0
+#define RETRACTION_UNDO_EXTRA_LENGTH 0
+#define RETRACTION_UNDO_EXTRA_LONG_LENGTH 0
+#define RETRACTION_UNDO_SPEED 20
+
+/**
+If you have a lcd display, you can do a filament switch with M600.
+It will change the current extruders filament and temperature must already be high enough.
+*/
+#define FILAMENTCHANGE_X_POS 0
+#define FILAMENTCHANGE_Y_POS 0
+#define FILAMENTCHANGE_Z_ADD 1
+/** Does a homing procedure after a filament change. This is good in case
+you moved the extruder while changing filament during print.
+0 = no homing, 1 = xy homing, 2 = xyz homing
+*/
+#define FILAMENTCHANGE_REHOME 1
+/** Will first retract short distance, go to change position and then retract longretract.
+Retractions speeds are taken from RETRACTION_SPEED and RETRACTION_UNDO_SPEED
+*/
+#define FILAMENTCHANGE_SHORTRETRACT 30
+#define FILAMENTCHANGE_LONGRETRACT 30
+
+/* Define how we detect jam/out of filament
+ 1 = Distance between signal changes increase
+ 2 = signal gets high
+ 3 = signal gets low
+
+ 2 and 3 are not jam detections, but only out of filament detection by a switch
+ that changes the signal!
+*/
+#define JAM_METHOD 1
+// Steps normally needed for a full signal cycle.
+#define JAM_STEPS 220
+// Steps for reducing speed. Must be higher then JAM_STEPS
+#define JAM_SLOWDOWN_STEPS 380
+// New speed multiplier which gets set when slowdown is reached.
+#define JAM_SLOWDOWN_TO 70
+// Last fallback. If we slip this much, we want to pause.
+#define JAM_ERROR_STEPS 430
+/** To prevent signal bouncing, only consider changes if we are this much steps
+ away from last signal change. */
+#define JAM_MIN_STEPS 10
+/*
+Determine what should be done if a jam is detected
+0 : Nothing, just mark extruder as jammed.
+1 : Jam/out of filament dialog and block communication.
+2 : Message to host/server otherwise continue and mark extruder jammed
+*/
+#define JAM_ACTION 1
+
+/** PID control only works target temperature +/- PID_CONTROL_RANGE.
+If you get much overshoot at the first temperature set, because the heater is going full power too long, you
+need to increase this value. For one 6.8 Ohm heater 10 is ok. With two 6.8 Ohm heater use 15.
+*/
+#define PID_CONTROL_RANGE 20
+
+/** Prevent extrusions longer then x mm for one command. This is especially important if you abort a print. Then the
+extrusion position might be at any value like 23344. If you then have an G1 E-2 it will roll back 23 meter! */
+#define EXTRUDE_MAXLENGTH 100
+/** Skip wait, if the extruder temperature is already within x degrees. Only fixed numbers, 0 = off */
+#define SKIP_M109_IF_WITHIN 2
+
+/** \brief Set PID scaling
+
+PID values assume a usable range from 0-255. This can be further limited to EXT0_PID_MAX by to methods.
+Set the value to 0: Normal computation, just clip output to EXT0_PID_MAX if computed value is too high.
+Set value to 1: Scale PID by EXT0_PID_MAX/256 and then clip to EXT0_PID_MAX.
+If your EXT0_PID_MAX is low, you should prefer the second method.
+*/
+#define SCALE_PID_TO_MAX 0
+
+
+#define HEATER_PWM_SPEED 1 // How fast ist pwm signal 0 = 15.25Hz, 1 = 30.51Hz, 2 = 61.03Hz, 3 = 122.06Hz
+
+/** Temperature range for target temperature to hold in M109 command. 5 means +/-5 degC
+
+Uncomment define to force the temperature into the range for given watch period.
+*/
+//#define TEMP_HYSTERESIS 5
+
+/** Userdefined thermistor table
+
+There are many different thermistors, which can be combined with different resistors. This result
+in unpredictable number of tables. As a resolution, the user can define one table here, that can
+be used as type 5 for thermistor type in extruder/heated bed definition. Make sure, the number of entries
+matches the value in NUM_TEMPS_USERTHERMISTOR0. If you span definition over multiple lines, make sure to end
+each line, except the last, with a backslash. The table format is {{adc1,temp1},{adc2,temp2}...} with
+increasing adc values. For more informations, read
+http://hydraraptor.blogspot.com/2007/10/measuring-temperature-easy-way.html
+
+If you have a sprinter temperature table, you have to multiply the first value with 4 and the second with 8.
+This firmware works with increased precision, so the value reads go from 0 to 4095 and the temperature is
+temperature*8.
+
+If you have a PTC thermistor instead of a NTC thermistor, keep the adc values increasing and use thermistor types 50-52 instead of 5-7!
+*/
+/** Number of entries in the user thermistor table 0. Set to 0 to disable it. */
+#define NUM_TEMPS_USERTHERMISTOR0 28
+#define USER_THERMISTORTABLE0 {\
+ {1*4,864*8},{21*4,300*8},{25*4,290*8},{29*4,280*8},{33*4,270*8},{39*4,260*8},{46*4,250*8},{54*4,240*8},{64*4,230*8},{75*4,220*8},\
+ {90*4,210*8},{107*4,200*8},{128*4,190*8},{154*4,180*8},{184*4,170*8},{221*4,160*8},{265*4,150*8},{316*4,140*8},{375*4,130*8},\
+ {441*4,120*8},{513*4,110*8},{588*4,100*8},{734*4,80*8},{856*4,60*8},{938*4,40*8},{986*4,20*8},{1008*4,0*8},{1018*4,-20*8} }
+
+/** Number of entries in the user thermistor table 1. Set to 0 to disable it. */
+#define NUM_TEMPS_USERTHERMISTOR1 0
+#define USER_THERMISTORTABLE1 {}
+/** Number of entries in the user thermistor table 2. Set to 0 to disable it. */
+#define NUM_TEMPS_USERTHERMISTOR2 0
+#define USER_THERMISTORTABLE2 {}
+
+/** If defined, creates a thermistor table at startup.
+
+If you don't feel like computing the table on your own, you can use this generic method. It is
+a simple approximation which may be not as accurate as a good table computed from the reference
+values in the datasheet. You can increase precision if you use a temperature/resistance for
+R0/T0, which is near your operating temperature. This will reduce precision for lower temperatures,
+which are not really important. The resistors must fit the following schematic:
+@code
+VREF ---- R2 ---+--- Termistor ---+-- GND
+ | |
+ +------ R1 -------+
+ | |
+ +---- Capacitor --+
+ |
+ V measured
+@endcode
+
+If you don't have R1, set it to 0.
+The capacitor is for reducing noise from long thermistor cable. If you don't have one, it's OK.
+
+If you need the generic table, uncomment the following define.
+*/
+//#define USE_GENERIC_THERMISTORTABLE_1
+
+/* Some examples for different thermistors:
+
+EPCOS B57560G104+ : R0 = 100000 T0 = 25 Beta = 4036
+EPCOS 100K Thermistor (B57560G1104F) : R0 = 100000 T0 = 25 Beta = 4092
+ATC Semitec 104GT-2 : R0 = 100000 T0 = 25 Beta = 4267
+Honeywell 100K Thermistor (135-104LAG-J01) : R0 = 100000 T0 = 25 Beta = 3974
+
+*/
+
+/** Reference Temperature */
+#define GENERIC_THERM1_T0 25
+/** Resistance at reference temperature */
+#define GENERIC_THERM1_R0 100000
+/** Beta value of thermistor
+
+You can use the beta from the datasheet or compute it yourself.
+See http://reprap.org/wiki/MeasuringThermistorBeta for more details.
+*/
+#define GENERIC_THERM1_BETA 4036
+/** Start temperature for generated thermistor table */
+#define GENERIC_THERM1_MIN_TEMP -20
+/** End Temperature for generated thermistor table */
+#define GENERIC_THERM1_MAX_TEMP 300
+#define GENERIC_THERM1_R1 0
+#define GENERIC_THERM1_R2 4700
+
+// The same for table 2 and 3 if needed
+
+//#define USE_GENERIC_THERMISTORTABLE_2
+#define GENERIC_THERM2_T0 170
+#define GENERIC_THERM2_R0 1042.7
+#define GENERIC_THERM2_BETA 4036
+#define GENERIC_THERM2_MIN_TEMP -20
+#define GENERIC_THERM2_MAX_TEMP 300
+#define GENERIC_THERM2_R1 0
+#define GENERIC_THERM2_R2 4700
+
+//#define USE_GENERIC_THERMISTORTABLE_3
+#define GENERIC_THERM3_T0 170
+#define GENERIC_THERM3_R0 1042.7
+#define GENERIC_THERM3_BETA 4036
+#define GENERIC_THERM3_MIN_TEMP -20
+#define GENERIC_THERM3_MAX_TEMP 300
+#define GENERIC_THERM3_R1 0
+#define GENERIC_THERM3_R2 4700
+
+/** Supply voltage to ADC, can be changed by setting ANALOG_REF below to different value. */
+#define GENERIC_THERM_VREF 5
+/** Number of entries in generated table. One entry takes 4 bytes. Higher number of entries increase computation time too.
+Value is used for all generic tables created. */
+#define GENERIC_THERM_NUM_ENTRIES 33
+
+// uncomment the following line for MAX6675 support.
+//#define SUPPORT_MAX6675
+// uncomment the following line for MAX31855 support.
+//#define SUPPORT_MAX31855
+
+// ############# Heated bed configuration ########################
+
+/** \brief Set true if you have a heated bed connected to your board, false if not */
+#define HAVE_HEATED_BED 1
+
+#define HEATED_BED_MAX_TEMP 115
+/** Skip M190 wait, if heated bed is already within x degrees. Fixed numbers only, 0 = off. */
+#define SKIP_M190_IF_WITHIN 3
+
+// Select type of your heated bed. It's the same as for EXT0_TEMPSENSOR_TYPE
+// set to 0 if you don't have a heated bed
+#define HEATED_BED_SENSOR_TYPE 1
+/** Analog pin of analog sensor to read temperature of heated bed. */
+#define HEATED_BED_SENSOR_PIN TEMP_1_PIN
+/** \brief Pin to enable heater for bed. */
+#define HEATED_BED_HEATER_PIN HEATER_1_PIN
+// How often the temperature of the heated bed is set (msec)
+#define HEATED_BED_SET_INTERVAL 5000
+
+/**
+Heat manager for heated bed:
+0 = Bang Bang, fast update
+1 = PID controlled
+2 = Bang Bang, limited check every HEATED_BED_SET_INTERVAL. Use this with relay-driven beds to save life time
+3 = dead time control
+*/
+#define HEATED_BED_HEAT_MANAGER 1
+/** \brief The maximum value, I-gain can contribute to the output.
+The precise values may differ for different nozzle/resistor combination.
+ Overridden if EEPROM activated.
+*/
+#define HEATED_BED_PID_INTEGRAL_DRIVE_MAX 255
+/** \brief lower value for integral part
+
+The I state should converge to the exact heater output needed for the target temperature.
+To prevent a long deviation from the target zone, this value limits the lower value.
+A good start is 30 lower then the optimal value. You need to leave room for cooling.
+ Overridden if EEPROM activated.
+*/
+#define HEATED_BED_PID_INTEGRAL_DRIVE_MIN 80
+/** P-gain. Overridden if EEPROM activated. */
+#define HEATED_BED_PID_PGAIN_OR_DEAD_TIME 196
+/** I-gain Overridden if EEPROM activated.*/
+#define HEATED_BED_PID_IGAIN 33.02
+/** Dgain. Overridden if EEPROM activated.*/
+#define HEATED_BED_PID_DGAIN 290
+// maximum time the heater can be switched on. Max = 255. Overridden if EEPROM activated.
+#define HEATED_BED_PID_MAX 255
+// Time to see a temp. change when fully heating. Consider that beds at higher temp. need longer to rise and cold
+// beds need some time to get the temp. to the sensor. Time is in milliseconds! Set 0 to disable
+#define HEATED_BED_DECOUPLE_TEST_PERIOD 300000
+
+// When temperature exceeds max temp, your heater will be switched off.
+// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
+#define MAXTEMP 260
+
+#define HEATED_BED_PREHEAT_TEMP 55
+
+/** Extreme values to detect defect thermistors. */
+#define MIN_DEFECT_TEMPERATURE -10
+#define MAX_DEFECT_TEMPERATURE 300
+
+//How many milliseconds a hot end 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 should be set to the time it
+//takes to reach the minimum temperature your thermistor can read. The lower
+//the better/safer, and shouldn't need to be more than 30 seconds (30000)
+#define MILLISECONDS_PREHEAT_TIME 30000
+
+// ##########################################################################################
+// ## Laser configuration ##
+// ##########################################################################################
+
+/*
+If the firmware is in laser mode, it can control a laser output to cut or engrave materials.
+Please use this feature only if you know about safety and required protection. Lasers are
+dangerous and can hurt or make you blind!!!
+
+The default laser driver only supports laser on and off. Here you control the intensity with
+your feedrate. For exchangeable diode lasers this is normally enough. If you need more control
+you can set the intensity in a range 0-255 with a custom extension to the driver. See driver.h
+and comments on how to extend the functions non invasive with our event system.
+
+If you have a laser - powder system you will like your E override. If moves contain a
+increasing extruder position it will laser that move. With this trick you can
+use existing FDM slicers to laser the output. Laser width is extrusion width.
+
+Other tools may use M3 and M5 to enable/disable laser. Here G1/G2/G3 moves have laser enabled
+and G0 moves have it disables.
+
+In any case, laser only enables while moving. At the end of a move it gets
+automatically disabled.
+*/
+
+#define SUPPORT_LASER 0 // set 1 to enable laser support
+#define LASER_PIN -1 // set to pin enabling laser
+#define LASER_ON_HIGH 1 // Set 0 if low signal enables laser
+#define LASER_WARMUP_TIME 0// wait x milliseconds to start material burning before move
+#define LASER_PWM_MAX 255 //255 8-bit PWM 4095 for 12Bit PWM
+#define LASER_WATT 1.6 // Laser diode power
+
+// ##########################################################################################
+// ## CNC configuration ##
+// ##########################################################################################
+
+/*
+If the firmware is in CNC mode, it can control a mill with M3/M4/M5. It works
+similar to laser mode, but mill keeps enabled during G0 moves and it allows
+setting rpm (only with event extension that supports this) and milling direction.
+It also can add a delay to wait for spindle to run on full speed.
+*/
+
+#define SUPPORT_CNC 0 // Set 1 for CNC support
+#define CNC_WAIT_ON_ENABLE 300 // wait x milliseconds after enabling
+#define CNC_WAIT_ON_DISABLE 0 // delay in milliseconds after disabling spindle. May be required for direction changes.
+#define CNC_ENABLE_PIN -1 // Pin to enable mill
+#define CNC_ENABLE_WITH 1 // Set 0 if low enables spindle
+#define CNC_DIRECTION_PIN -1 // Set to pin if direction control is possible
+#define CNC_DIRECTION_CW 1 // Set signal required for clockwise rotation
+#define CNC_PWM_MAX 255 //255 8-bit PWM 4095 for 12Bit PWM
+#define CNC_RPM_MAX 25000 //max spindle RPM
+#define CNC_SAFE_Z 150 // Safe Z height so tool is outside object, used for pause
+
+/* Select the default mode when the printer gets enables. Possible values are
+PRINTER_MODE_FFF 0
+PRINTER_MODE_LASER 1
+PRINTER_MODE_CNC 2
+*/
+#define DEFAULT_PRINTER_MODE PRINTER_MODE_FFF
+
+// ##########################################################################################
+// ## Endstop configuration ##
+// ##########################################################################################
+
+/* By default all endstops are pulled up to HIGH. You need a pull-up if you
+use a mechanical endstop connected with GND. Set value to false for no pull-up
+on this endstop.
+*/
+#define ENDSTOP_PULLUP_X_MIN false
+#define ENDSTOP_PULLUP_Y_MIN false
+#define ENDSTOP_PULLUP_Z_MIN false
+#define ENDSTOP_PULLUP_X_MAX true
+#define ENDSTOP_PULLUP_Y_MAX true
+#define ENDSTOP_PULLUP_Z_MAX false
+
+//set to true to invert the logic of the endstops
+#define ENDSTOP_X_MIN_INVERTING true
+#define ENDSTOP_Y_MIN_INVERTING true
+#define ENDSTOP_Z_MIN_INVERTING true
+#define ENDSTOP_X_MAX_INVERTING false
+#define ENDSTOP_Y_MAX_INVERTING false
+#define ENDSTOP_Z_MAX_INVERTING true
+
+// Set the values true where you have a hardware endstop. The Pin number is taken from pins.h.
+
+#define MIN_HARDWARE_ENDSTOP_X true
+#define MIN_HARDWARE_ENDSTOP_Y true
+#define MIN_HARDWARE_ENDSTOP_Z true
+#define MAX_HARDWARE_ENDSTOP_X false
+#define MAX_HARDWARE_ENDSTOP_Y fals