diff options
author | David Phillips <david@yeah.nah.nz> | 2019-11-02 20:19:32 +1300 |
---|---|---|
committer | David Phillips <david@yeah.nah.nz> | 2019-11-02 20:19:32 +1300 |
commit | 27340a30165f9f8f45fe4b62b45ac8ec517ce382 (patch) | |
tree | edcc3f095dd7ca11f493f7c8a880dd9f9e3a739b | |
download | repetier-config-master.tar.xz |
-rw-r--r-- | Configuration.h | 2006 |
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 false +#define MAX_HARDWARE_ENDSTOP_Z false + +// If you have a mirrored motor you can put a second endstop to that motor. +// On homing you would then need to trigge rboth endstops. Each endstop only +// stopps one motor, so they are aligned after homing. After homing only the +// first endstop gets used. + +#define ENDSTOP_PULLUP_X2_MIN false +#define ENDSTOP_PULLUP_Y2_MIN false +#define ENDSTOP_PULLUP_Z2_MINMAX false |