· 8 years ago · Feb 03, 2018, 10:52 PM
1//======================================================================
2/**************** TEVO TARANTULA EASY CONFIG ***************************
3 Original idea by terryb.print3d@gmail.com
4 Modified by jb.github@rcairgallery.com
5
6 The latest version of Terry's original file will always be found at:
7 https://github.com/terryb58/Marlin-EasyConfig
8
9 The latest version of this file (and complete firmware) will always
10 be found at:
11 https://github.com/JimBrown/MarlinTarantula
12
13 This is an attempt to create a simple configuration for as many
14 different Tevo Tarantula variants as possible. This will always be
15 a work in progress. Email me if you have any questions, suggestions,
16 or if you encounter problems when using Easy Config.
17
18 This is a Marlin 1.1.x configuration file. I will update this as
19 new versions of Marlin are released.
20
21 NOTE: Sanity check should still work and should not show any errors.
22 Please report any errors. Thank you.
23
24 NOTE: Don't forget to do an M502 followed by an M500 any time you
25 upload the firmware.
26
27 See https://youtu.be/-sQ8p00pG5E for an excellent tutorial on using
28 this firmware.
29
30***********************************************************************/
31
32/**
33 * Equipment options
34 */
35//#define LARGE_BED
36#define SDSUPPORT
37//#define CHANGE_Y_DIRECTION // If your bed homes in the wrong direction front to back, enable this.
38//#define CHANGE_X_DIRECTION // If your X carriage homes in the wrong direction left to right, enable this.
39//#define CHANGE_Z_DIRECTION // If your Z homes in the wrong direction bottom to top, enable this.
40//#define HOTEND_E3DV6 // Genuine E3D v6 hotend.
41//#define FULL_GRAPHIC_SMART // Enable this if you have a RepRap Discount Full Graphic Smart Controller (The
42 // stock controller is a RepRap Discount Smart Controller)
43//#define Z_DUAL_STEPPER_DRIVERS // Enable this if you have dual Z stepper motors with the second stepper motor
44 // connected to the next available E plug (usually E1)
45
46/**
47 * Offset from endpoints to get nozzle to 0,0 (front/left of bed)
48 * (How to center prints: https://github.com/JimBrown/MarlinTarantula/wiki/How-to-center-your-prints-(EasyConfig))
49 */
50#define NOZZLE_X -20
51#define NOZZLE_Y -30
52
53/**
54 * Primary Extruder steps per mm (plugged in to E0 port on controller)
55 * (How to calibrate: https://toms3d.org/2014/04/06/3d-printing-guides-calibrating-your-extruder/)
56 */
57#define E0_STEPS 100 // Stock extruder. If you have a Tevo Titan, try 400 then calibrate.
58//#define CHANGE_E0_DIRECTION // If your extruder is going backwards, enable this.
59
60/**
61 * Z Axis steps per mm (Default for stock lead screw is 1600)
62 * If you install a lead screw with a different pitch and/or lead, change this
63 */
64#define Z_STEPS 1600 // Stock lead screw
65
66/**
67 * Z-Probe type (must be none or one of them)
68 * If a Z-Probe type is selected, a Bed Leveling type other than MANUAL must be selected.
69 */
70#define BLTOUCH // ANTClabs BLTouch sensor (might also work with clones)
71//#define SN04 // Green sensor
72//#define INDUCTIVE_NO // Normally open inductive sensor
73//#define INDUCTIVE_NC // Normally closed inductive sensor
74//#define SERVO_PROBE // Endstop switch on rotating arm. Set servo angles!
75
76/**
77 * Bed leveling type (see: https://github.com/JimBrown/MarlinTarantula/wiki/Bed-leveling-types-(EasyConfig))
78 * Must choose one of these other than MANUAL if a Z-Probe type is selected.
79 */
80//#define TRIPOINT
81//#define LINEAR
82#define BILINEAR
83//#define UBL
84//#define MANUAL
85
86/**
87 * Z-Probe offset from nozzle (https://github.com/JimBrown/MarlinTarantula/wiki/How-to-determine-your-Z-Probe-offset)
88 * Use only one of Left/Right and Front/Behind. Others must be 0 (zero)
89 * If you have a dual nozzle the offsets are calculated from the primary nozzle (the one plugged in to E0)
90 */
91#define SENSOR_LEFT 42
92#define SENSOR_RIGHT 0
93#define SENSOR_FRONT 10
94#define SENSOR_BEHIND 0
95
96/**
97 * Number of grid points in each direction
98 * Minimum 3. Maximum 15 for UBL. Maximum 7 for MANUAL
99 */
100#define GRID_POINTS 3
101
102/**
103 * Margin around perimiter of bed for probing (will not probe outside this margin)
104 */
105#define BED_MARGIN 0
106
107/**
108 * Servo probe deploy and stow angles
109 */
110#define SERVO_DEPLOY 10
111#define SERVO_STOW 90
112
113/**
114 * Enable this to turn on support for two extruders
115 */
116//#define DUAL_EXTRUDER // If not single nozzle, primary nozzle plugged in to E0 port
117 // and secondary plugged in to E1 port.
118//#define SINGLENOZZLE // Enable this if you are using a single mixing nozzle (requires DUAL_EXTRUDER)
119
120/**
121 * Offset for second nozzle from first nozzle
122 * The X value is positive if the secondary nozzle is to the right of the primary and
123 * negative if the secondary nozzle is to the left of the primary.
124 * The Y value is positive if the secondary nozzle is behind the primary and
125 * negative if the secondary nozzle is in front of the primary.
126 */
127#define EXTRUDER_E1_X 0
128#define EXTRUDER_E1_Y 0
129
130/**
131 * Secondary Extruder steps per mm
132 * (how to calibrate: https://toms3d.org/2014/04/06/3d-printing-guides-calibrating-your-extruder/)
133 */
134#define E1_STEPS 100 // Stock extruder. If you have a Tevo Titan, try 400 then calibrate
135//#define CHANGE_E1_DIRECTION // If your secondary extruder is going backwards, enable this.
136
137/**
138 * TEVO Tarantula Custom PID Settings - Stock Hotend
139 */
140#define hot_Kp 9.84
141#define hot_Ki 0.50
142#define hot_Kd 48.17
143// FIND YOUR OWN: "M303 E0 C8 S200" to run autotune on the hotend at 200 degreesC for 8 cycles.
144// More info here: http://reprap.org/wiki/PID_Tuning
145
146/**
147 * TEVO Tarantula Custom PID Settings - Stock Heatbed
148 */
149#define bed_Kp 984.88
150#define bed_Ki 193.91
151#define bed_Kd 1250.55
152// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
153// More info here: http://reprap.org/wiki/PID_Tuning
154
155/**
156 * Fan Soft PWM. Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
157 * which is not as annoying as with the hardware PWM. Redo PID Autotune.
158 */
159//#define SOFT_PWM
160
161/**
162 * Enable this to provide a realtime control over the head position via the LCD menu system that works while printing.
163 * Using it, one can tune the z-position while printing the first layer.
164 *
165 * Warning: Does not respect endstops!
166 */
167//#define BABYSTEPPING
168
169/**
170 * Extra movement of X axis. Can help with probing more of the bed.
171 * Set both to 0 (zero) if you do not have a Z-Probe.
172 */
173#define XTRA_BED_LEFT 0 // Distance nozzle can move towards the left past X = 0
174#define XTRA_BED_RIGHT 0 // Distance nozzle can move towards the right past X = 200
175
176/**
177 * Extra movement of Y axis. Can help with probing more of the bed.
178 * Set both to 0 (zero) if you do not have a Z-Probe.
179 */
180#define XTRA_BED_FRONT 45 // Distance bed can move towards the front past Y = 200
181#define XTRA_BED_BACK 0 // Distance bed can move towards the back past Y = 0
182
183/************************ END OF EASY CONFIG ***************************
184//======================================================================
185// DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING!!!!!!!
186//======================================================================
187
188/**
189 * Marlin 3D Printer Firmware
190 * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
191 *
192 * Based on Sprinter and grbl.
193 * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
194 *
195 * This program is free software: you can redistribute it and/or modify
196 * it under the terms of the GNU General Public License as published by
197 * the Free Software Foundation, either version 3 of the License, or
198 * (at your option) any later version.
199 *
200 * This program is distributed in the hope that it will be useful,
201 * but WITHOUT ANY WARRANTY; without even the implied warranty of
202 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
203 * GNU General Public License for more details.
204 *
205 * You should have received a copy of the GNU General Public License
206 * along with this program. If not, see <http://www.gnu.org/licenses/>.
207 *
208 */
209
210/**
211 * Configuration.h
212 *
213 * Basic settings such as:
214 *
215 * - Type of electronics
216 * - Type of temperature sensor
217 * - Printer geometry
218 * - Endstop configuration
219 * - LCD controller
220 * - Extra features
221 *
222 * Advanced settings can be found in Configuration_adv.h
223 *
224 */
225#ifndef CONFIGURATION_H
226#define CONFIGURATION_H
227#define CONFIGURATION_H_VERSION 010107
228
229//===========================================================================
230//============================= Getting Started =============================
231//===========================================================================
232
233/**
234 * Here are some standard links for getting your machine calibrated:
235 *
236 * http://reprap.org/wiki/Calibration
237 * http://youtu.be/wAL9d7FgInk
238 * http://calculator.josefprusa.cz
239 * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
240 * http://www.thingiverse.com/thing:5573
241 * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
242 * http://www.thingiverse.com/thing:298812
243 */
244
245//===========================================================================
246//============================= DELTA Printer ===============================
247//===========================================================================
248// For a Delta printer start with one of the configuration files in the
249// example_configurations/delta directory and customize for your machine.
250//
251
252//===========================================================================
253//============================= SCARA Printer ===============================
254//===========================================================================
255// For a SCARA printer start with the configuration files in
256// example_configurations/SCARA and customize for your machine.
257//
258
259// @section info
260
261// User-specified version info of this build to display in [Pronterface, etc] terminal window during
262// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
263// build by the user have been successfully uploaded into firmware.
264#define STRING_CONFIG_H_AUTHOR "(Jim Brown, TEVO Tarantula config)" // Who made the changes.
265#define SHOW_BOOTSCREEN
266#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
267#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2
268
269//
270// *** VENDORS PLEASE READ *****************************************************
271//
272// Marlin now allow you to have a vendor boot image to be displayed on machine
273// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
274// custom boot image and then the default Marlin boot image is shown.
275//
276// We suggest for you to take advantage of this new feature and keep the Marlin
277// boot image unmodified. For an example have a look at the bq Hephestos 2
278// example configuration folder.
279//
280//#define SHOW_CUSTOM_BOOTSCREEN
281// @section machine
282
283/**
284 * Select which serial port on the board will be used for communication with the host.
285 * This allows the connection of wireless adapters (for instance) to non-default port pins.
286 * Serial port 0 is always used by the Arduino bootloader regardless of this setting.
287 *
288 * :[0, 1, 2, 3, 4, 5, 6, 7]
289 */
290#define SERIAL_PORT 0
291
292/**
293 * This setting determines the communication speed of the printer.
294 *
295 * 250000 works in most cases, but you might try a lower speed if
296 * you commonly experience drop-outs during host printing.
297 * You may try up to 1000000 to speed up SD file transfer.
298 *
299 * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
300 */
301#define BAUDRATE 115200
302
303// Enable the Bluetooth serial interface on AT90USB devices
304//#define BLUETOOTH
305
306// The following define selects which electronics board you have.
307// Please choose the name from boards.h that matches your setup
308#ifndef MOTHERBOARD
309 #define MOTHERBOARD BOARD_MKS_13
310#endif
311
312// Optional custom name for your RepStrap or other custom machine
313// Displayed in the LCD "Ready" message
314#define CUSTOM_MACHINE_NAME "TEVO Tarantula"
315
316// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
317// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
318//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
319
320// @section extruder
321
322// This defines the number of extruders
323// :[1, 2, 3, 4, 5]
324#if ENABLED(DUAL_EXTRUDER)
325 #define EXTRUDERS 2
326#else
327 #define EXTRUDERS 1
328#endif
329
330// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
331#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
332
333// For Cyclops or any "multi-extruder" that shares a single nozzle.
334//#define SINGLENOZZLE
335
336/**
337 * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
338 *
339 * This device allows one stepper driver on a control board to drive
340 * two to eight stepper motors, one at a time, in a manner suitable
341 * for extruders.
342 *
343 * This option only allows the multiplexer to switch on tool-change.
344 * Additional options to configure custom E moves are pending.
345 */
346//#define MK2_MULTIPLEXER
347#if ENABLED(MK2_MULTIPLEXER)
348 // Override the default DIO selector pins here, if needed.
349 // Some pins files may provide defaults for these pins.
350 //#define E_MUX0_PIN 40 // Always Required
351 //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
352 //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
353#endif
354
355// A dual extruder that uses a single stepper motor
356//#define SWITCHING_EXTRUDER
357#if ENABLED(SWITCHING_EXTRUDER)
358 #define SWITCHING_EXTRUDER_SERVO_NR 0
359 #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
360 #if EXTRUDERS > 3
361 #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
362 #endif
363#endif
364
365// A dual-nozzle that uses a servomotor to raise/lower one of the nozzles
366//#define SWITCHING_NOZZLE
367#if ENABLED(SWITCHING_NOZZLE)
368 #define SWITCHING_NOZZLE_SERVO_NR 0
369 #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
370 //#define HOTEND_OFFSET_Z { 0.0, 0.0 }
371#endif
372
373/**
374 * Two separate X-carriages with extruders that connect to a moving part
375 * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN.
376 */
377//#define PARKING_EXTRUDER
378#if ENABLED(PARKING_EXTRUDER)
379 #define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage
380 #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil
381 #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // Delay (ms) for magnetic field. No delay if 0 or not defined.
382 #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders
383 #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // mm to move beyond the parking point to grab the extruder
384 #define PARKING_EXTRUDER_SECURITY_RAISE 5 // Z-raise before parking
385 #define HOTEND_OFFSET_Z { 0.0, 1.3 } // Z-offsets of the two hotends. The first must be 0.
386#endif
387
388/**
389 * "Mixing Extruder"
390 * - Adds a new code, M165, to set the current mix factors.
391 * - Extends the stepping routines to move multiple steppers in proportion to the mix.
392 * - Optional support for Repetier Firmware M163, M164, and virtual extruder.
393 * - This implementation supports only a single extruder.
394 * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
395 */
396//#define MIXING_EXTRUDER
397#if ENABLED(MIXING_EXTRUDER)
398 #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder
399 #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164
400 //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands
401#endif
402
403// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
404// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
405// For the other hotends it is their distance from the extruder 0 hotend.
406#if ENABLED(DUAL_EXTRUDER) && DISABLED(SINGLENOZZLE)
407 #define HOTEND_OFFSET_X {0.0, EXTRUDER_E1_X} // (in mm) for each extruder, offset of the hotend on the X axis
408 #define HOTEND_OFFSET_Y {0.0, EXTRUDER_E1_Y} // (in mm) for each extruder, offset of the hotend on the Y axis
409#endif
410
411// @section machine
412
413/**
414 * Select your power supply here. Use 0 if you haven't connected the PS_ON_PIN
415 *
416 * 0 = No Power Switch
417 * 1 = ATX
418 * 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
419 *
420 * :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' }
421 */
422#define POWER_SUPPLY 0
423
424#if POWER_SUPPLY > 0
425 // Enable this option to leave the PSU off at startup.
426 // Power to steppers and heaters will need to be turned on with M80.
427 //#define PS_DEFAULT_OFF
428#endif
429
430// @section temperature
431
432//===========================================================================
433//============================= Thermal Settings ============================
434//===========================================================================
435
436/**
437 * --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
438 *
439 * Temperature sensors available:
440 *
441 * -3 : thermocouple with MAX31855 (only for sensor 0)
442 * -2 : thermocouple with MAX6675 (only for sensor 0)
443 * -1 : thermocouple with AD595
444 * 0 : not used
445 * 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
446 * 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
447 * 3 : Mendel-parts thermistor (4.7k pullup)
448 * 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
449 * 5 : 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
450 * 6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
451 * 7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
452 * 71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
453 * 8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
454 * 9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
455 * 10 : 100k RS thermistor 198-961 (4.7k pullup)
456 * 11 : 100k beta 3950 1% thermistor (4.7k pullup)
457 * 12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
458 * 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
459 * 20 : the PT100 circuit found in the Ultimainboard V2.x
460 * 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
461 * 66 : 4.7M High Temperature thermistor from Dyze Design
462 * 70 : the 100K thermistor found in the bq Hephestos 2
463 * 75 : 100k Generic Silicon Heat Pad with NTC 100K MGB18-104F39050L32 thermistor
464 *
465 * 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k.
466 * (but gives greater accuracy and more stable PID)
467 * 51 : 100k thermistor - EPCOS (1k pullup)
468 * 52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
469 * 55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
470 *
471 * 1047 : Pt1000 with 4k7 pullup
472 * 1010 : Pt1000 with 1k pullup (non standard)
473 * 147 : Pt100 with 4k7 pullup
474 * 110 : Pt100 with 1k pullup (non standard)
475 *
476 * Use these for Testing or Development purposes. NEVER for production machine.
477 * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below.
478 * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
479 *
480 * :{ '0': "Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '66':"Dyze Design 4.7M High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595",'998':"Dummy 1", '999':"Dummy 2" }
481 */
482#if ENABLED(HOTEND_E3DV6)
483 #define TEMP_SENSOR_0 5
484#else
485 #define TEMP_SENSOR_0 1
486#endif
487#if ENABLED(DUAL_EXTRUDER) && DISABLED(SINGLENOZZLE)
488 #define TEMP_SENSOR_1 1
489#else
490 #define TEMP_SENSOR_1 0
491#endif
492#define TEMP_SENSOR_2 0
493#define TEMP_SENSOR_3 0
494#define TEMP_SENSOR_4 0
495#define TEMP_SENSOR_BED 1
496
497// Dummy thermistor constant temperature readings, for use with 998 and 999
498#define DUMMY_THERMISTOR_998_VALUE 25
499#define DUMMY_THERMISTOR_999_VALUE 100
500
501// Use temp sensor 1 as a redundant sensor with sensor 0. If the readings
502// from the two sensors differ too much the print will be aborted.
503//#define TEMP_SENSOR_1_AS_REDUNDANT
504#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
505
506// Extruder temperature must be close to target for this long before M109 returns success
507#define TEMP_RESIDENCY_TIME 5 // (seconds)
508#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
509#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
510
511// Bed temperature must be close to target for this long before M190 returns success
512#define TEMP_BED_RESIDENCY_TIME 5 // (seconds)
513#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
514#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
515
516// The minimal temperature defines the temperature below which the heater will not be enabled It is used
517// to check that the wiring to the thermistor is not broken.
518// Otherwise this would lead to the heater being powered on all the time.
519#define HEATER_0_MINTEMP 5
520#define HEATER_1_MINTEMP 5
521#define HEATER_2_MINTEMP 5
522#define HEATER_3_MINTEMP 5
523#define HEATER_4_MINTEMP 5
524#define BED_MINTEMP 5
525
526// When temperature exceeds max temp, your heater will be switched off.
527// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
528// You should use MINTEMP for thermistor short/failure protection.
529#define HEATER_0_MAXTEMP 275
530#define HEATER_1_MAXTEMP 275
531#define HEATER_2_MAXTEMP 275
532#define HEATER_3_MAXTEMP 275
533#define HEATER_4_MAXTEMP 275
534#define BED_MAXTEMP 150
535
536//===========================================================================
537//============================= PID Settings ================================
538//===========================================================================
539// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
540
541// Comment the following line to disable PID and enable bang-bang.
542#define PIDTEMP
543#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
544#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
545#define PID_K1 0.95 // Smoothing factor within the PID
546#if ENABLED(PIDTEMP)
547 //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
548 //#define PID_DEBUG // Sends debug data to the serial port.
549 //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
550 //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
551 //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
552 // Set/get with gcode: M301 E[extruder number, 0-2]
553 #define PID_FUNCTIONAL_RANGE 25 // If the temperature difference between the target temperature and the actual temperature
554 // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
555
556 // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
557
558 // Ultimaker
559 //#define DEFAULT_Kp 22.2
560 //#define DEFAULT_Ki 1.08
561 //#define DEFAULT_Kd 114
562
563 // MakerGear
564 //#define DEFAULT_Kp 7.0
565 //#define DEFAULT_Ki 0.1
566 //#define DEFAULT_Kd 12
567
568 // Mendel Parts V9 on 12V
569 //#define DEFAULT_Kp 63.0
570 //#define DEFAULT_Ki 2.25
571 //#define DEFAULT_Kd 440
572
573 // TEVO Tarantula Custom PID Settings
574 #define DEFAULT_Kp hot_Kp
575 #define DEFAULT_Ki hot_Ki
576 #define DEFAULT_Kd hot_Kd
577
578#endif // PIDTEMP
579
580//===========================================================================
581//============================= PID > Bed Temperature Control ===============
582//===========================================================================
583// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
584//
585// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
586// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz,
587// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
588// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
589// If your configuration is significantly different than this and you don't understand the issues involved, you probably
590// shouldn't use bed PID until someone else verifies your hardware works.
591// If this is enabled, find your own PID constants below.
592#define PIDTEMPBED
593
594//#define BED_LIMIT_SWITCHING
595
596// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
597// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
598// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
599// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
600#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
601
602#if ENABLED(PIDTEMPBED)
603
604 //#define PID_BED_DEBUG // Sends debug data to the serial port.
605
606 //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
607 //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
608 //#define DEFAULT_bedKp 10.00
609 //#define DEFAULT_bedKi .023
610 //#define DEFAULT_bedKd 305.4
611
612 //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
613 //from pidautotune
614 //#define DEFAULT_bedKp 97.1
615 //#define DEFAULT_bedKi 1.41
616 //#define DEFAULT_bedKd 1675.16
617
618 // TEVO Tarantula Custom PID Settings - Heatbed
619 #define DEFAULT_bedKp bed_Kp
620 #define DEFAULT_bedKi bed_Ki
621 #define DEFAULT_bedKd bed_Kd
622
623 // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
624#endif // PIDTEMPBED
625
626// @section extruder
627
628// This option prevents extrusion if the temperature is below EXTRUDE_MINTEMP.
629// It also enables the M302 command to set the minimum extrusion temperature
630// or to allow moving the extruder regardless of the hotend temperature.
631// *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***
632#define PREVENT_COLD_EXTRUSION
633#define EXTRUDE_MINTEMP 170
634
635// This option prevents a single extrusion longer than EXTRUDE_MAXLENGTH.
636// Note that for Bowden Extruders a too-small value here may prevent loading.
637#define PREVENT_LENGTHY_EXTRUDE
638#define EXTRUDE_MAXLENGTH 650
639
640//===========================================================================
641//======================== Thermal Runaway Protection =======================
642//===========================================================================
643
644/**
645 * Thermal Protection provides additional protection to your printer from damage
646 * and fire. Marlin always includes safe min and max temperature ranges which
647 * protect against a broken or disconnected thermistor wire.
648 *
649 * The issue: If a thermistor falls out, it will report the much lower
650 * temperature of the air in the room, and the the firmware will keep
651 * the heater on.
652 *
653 * If you get "Thermal Runaway" or "Heating failed" errors the
654 * details can be tuned in Configuration_adv.h
655 */
656
657#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
658#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
659
660//===========================================================================
661//============================= Mechanical Settings =========================
662//===========================================================================
663
664// @section machine
665
666// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics
667// either in the usual order or reversed
668//#define COREXY
669//#define COREXZ
670//#define COREYZ
671//#define COREYX
672//#define COREZX
673//#define COREZY
674
675//===========================================================================
676//============================== Endstop Settings ===========================
677//===========================================================================
678
679// @section homing
680
681// Specify here all the endstop connectors that are connected to any endstop or probe.
682// Almost all printers will be using one per axis. Probes will use one or more of the
683// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
684#define USE_XMIN_PLUG
685#define USE_YMIN_PLUG
686#define USE_ZMIN_PLUG
687//#define USE_XMAX_PLUG
688//#define USE_YMAX_PLUG
689//#define USE_ZMAX_PLUG
690
691// coarse Endstop Settings
692//#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
693
694#if DISABLED(ENDSTOPPULLUPS)
695 // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
696 //#define ENDSTOPPULLUP_XMAX
697 //#define ENDSTOPPULLUP_YMAX
698 //#define ENDSTOPPULLUP_ZMAX
699 #define ENDSTOPPULLUP_XMIN
700 #define ENDSTOPPULLUP_YMIN
701 #if ENABLED(BLTOUCH) || ENABLED(SN04) || ENABLED(INDUCTIVE_NC) || ENABLED(INDUCTIVE_NO)
702 //#define ENDSTOPPULLUP_ZMIN
703 #define ENDSTOPPULLUP_ZMIN_PROBE
704 #else
705 #define ENDSTOPPULLUP_ZMIN
706 //#define ENDSTOPPULLUP_ZMIN_PROBE
707 #endif
708#endif
709
710// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
711#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
712#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
713#if ENABLED(BLTOUCH)
714 #define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
715#elif ENABLED(INDUCTIVE_NC)
716 #define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
717#else
718 #define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
719#endif
720//#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
721//#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
722//#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
723#if ENABLED(BLTOUCH) || ENABLED(INDUCTIVE_NC)
724 #define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
725#elif ENABLED(SN04) || ENABLED(INDUCTIVE_NO) || ENABLED(SERVO_PROBE)
726 #define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
727#else
728 //#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
729#endif
730
731// Enable this feature if all enabled endstop pins are interrupt-capable.
732// This will remove the need to poll the interrupt pins, saving many CPU cycles.
733//#define ENDSTOP_INTERRUPTS_FEATURE
734
735//=============================================================================
736//============================== Movement Settings ============================
737//=============================================================================
738// @section motion
739
740/**
741 * Default Settings
742 *
743 * These settings can be reset by M502
744 *
745 * Note that if EEPROM is enabled, saved values will override these.
746 */
747
748/**
749 * With this option each E stepper can have its own factors for the
750 * following movement settings. If fewer factors are given than the
751 * total number of extruders, the last value applies to the rest.
752 */
753#if ENABLED(DUAL_EXTRUDER)
754 #define DISTINCT_E_FACTORS
755#endif
756
757/**
758 * Default Axis Steps Per Unit (steps/mm)
759 * Override with M92
760 * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
761 */
762#if ENABLED(DUAL_EXTRUDER)
763 #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, Z_STEPS, E0_STEPS, E1_STEPS }
764#else
765 #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, Z_STEPS, E0_STEPS }
766#endif
767
768/**
769 * Default Max Feed Rate (mm/s)
770 * Override with M203
771 * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
772 */
773#if ENABLED(DUAL_EXTRUDER)
774 #define DEFAULT_MAX_FEEDRATE { 300, 300, 7, 50, 50 }
775#else
776 #define DEFAULT_MAX_FEEDRATE { 300, 300, 7, 50 }
777#endif
778
779/**
780 * Default Max Acceleration (change/s) change = mm/s
781 * (Maximum start speed for accelerated moves)
782 * Override with M201
783 * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
784 */
785#if ENABLED(DUAL_EXTRUDER)
786 #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000, 10000 }
787#else
788 #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }
789#endif
790
791/**
792 * Default Acceleration (change/s) change = mm/s
793 * Override with M204
794 *
795 * M204 P Acceleration
796 * M204 R Retract Acceleration
797 * M204 T Travel Acceleration
798 */
799#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E acceleration for printing moves
800#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts
801#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
802
803/**
804 * Default Jerk (mm/s)
805 * Override with M205 X Y Z E
806 *
807 * "Jerk" specifies the minimum speed change that requires acceleration.
808 * When changing speed and direction, if the difference is less than the
809 * value set here, it may happen instantaneously.
810 */
811#define DEFAULT_XJERK 4.0
812#define DEFAULT_YJERK 7.0
813#define DEFAULT_ZJERK 0.2
814#define DEFAULT_EJERK 2.5
815
816//===========================================================================
817//============================= Z Probe Options =============================
818//===========================================================================
819// @section probes
820
821//
822// See http://marlinfw.org/docs/configuration/probes.html
823//
824
825/**
826 * Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
827 *
828 * Enable this option for a probe connected to the Z Min endstop pin.
829 */
830#if ENABLED(BLTOUCH) || ENABLED(SN04) || ENABLED(INDUCTIVE_NO) || ENABLED(INDUCTIVE_NC) || ENABLED(SERVO_PROBE)
831 #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
832#endif
833
834/**
835 * Z_MIN_PROBE_ENDSTOP
836 *
837 * Enable this option for a probe connected to any pin except Z-Min.
838 * (By default Marlin assumes the Z-Max endstop pin.)
839 * To use a custom Z Probe pin, set Z_MIN_PROBE_PIN below.
840 *
841 * - The simplest option is to use a free endstop connector.
842 * - Use 5V for powered (usually inductive) sensors.
843 *
844 * - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
845 * - For simple switches connect...
846 * - normally-closed switches to GND and D32.
847 * - normally-open switches to 5V and D32.
848 *
849 * WARNING: Setting the wrong pin may have unexpected and potentially
850 * disastrous consequences. Use with caution and do your homework.
851 *
852 */
853//#define Z_MIN_PROBE_ENDSTOP
854
855/**
856 * Probe Type
857 *
858 * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
859 * Activate one of these to use Auto Bed Leveling below.
860 */
861
862/**
863 * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe.
864 * Use G29 repeatedly, adjusting the Z height at each point with movement commands
865 * or (with LCD_BED_LEVELING) the LCD controller.
866 */
867#if ENABLED(MANUAL)
868 #define PROBE_MANUALLY
869#endif
870
871/**
872 * A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
873 * (e.g., an inductive probe or a nozzle-based probe-switch.)
874 */
875#if ENABLED(SN04) || ENABLED(INDUCTIVE_NC) || ENABLED(INDUCTIVE_NO)
876 #define FIX_MOUNTED_PROBE
877#endif
878
879/**
880 * Z Servo Probe, such as an endstop switch on a rotating arm.
881 */
882#if ENABLED(SERVO_PROBE)
883 #define Z_ENDSTOP_SERVO_NR 0 // Defaults to SERVO 0 connector.
884 #define Z_SERVO_ANGLES {SERVO_DEPLOY,SERVO_STOW} // Z Servo Deploy and Stow angles
885#endif
886
887/**
888 * The BLTouch probe uses a Hall effect sensor and emulates a servo.
889 */
890#if ENABLED(BLTOUCH)
891 //#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
892#endif
893
894/**
895 * Enable one or more of the following if probing seems unreliable.
896 * Heaters and/or fans can be disabled during probing to minimize electrical
897 * noise. A delay can also be added to allow noise and vibration to settle.
898 * These options are most useful for the BLTouch probe, but may also improve
899 * readings with inductive probes and piezo sensors.
900 */
901//#define PROBING_HEATERS_OFF // Turn heaters off when probing
902//#define PROBING_FANS_OFF // Turn fans off when probing
903//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
904
905// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
906//#define SOLENOID_PROBE
907
908// A sled-mounted probe like those designed by Charles Bell.
909//#define Z_PROBE_SLED
910//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
911
912//
913// For Z_PROBE_ALLEN_KEY see the Delta example configurations.
914//
915
916/**
917 * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
918 * X and Y offsets must be integers.
919 *
920 * In the following example the X and Y offsets are both positive:
921 * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
922 * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
923 *
924 * +-- BACK ---+
925 * | |
926 * L | (+) P | R <-- probe (20,20)
927 * E | | I
928 * F | (-) N (+) | G <-- nozzle (10,10)
929 * T | | H
930 * | (-) | T
931 * | |
932 * O-- FRONT --+
933 * (0,0)
934 */
935#define X_PROBE_OFFSET_FROM_EXTRUDER SENSOR_RIGHT - SENSOR_LEFT // X offset: -left +right [of the nozzle]
936#define Y_PROBE_OFFSET_FROM_EXTRUDER SENSOR_BEHIND - SENSOR_FRONT // Y offset: -front +behind [the nozzle]
937#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
938
939// X and Y axis travel speed (mm/m) between probes
940#define XY_PROBE_SPEED 13500
941
942// Speed for the first approach when double-probing (MULTIPLE_PROBING == 2)
943#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
944
945// Speed for the "accurate" probe of each point
946#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 3)
947
948// The number of probes to perform at each point.
949// Set to 2 for a fast/slow probe, using the second probe result.
950// Set to 3 or more for slow probes, averaging the results.
951#define MULTIPLE_PROBING 2
952
953/**
954 * Z probes require clearance when deploying, stowing, and moving between
955 * probe points to avoid hitting the bed and other hardware.
956 * Servo-mounted probes require extra space for the arm to rotate.
957 * Inductive probes need space to keep from triggering early.
958 *
959 * Use these settings to specify the distance (mm) to raise the probe (or
960 * lower the bed). The values set here apply over and above any (negative)
961 * probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD.
962 * Only integer values >= 1 are valid here.
963 *
964 * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
965 * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
966 */
967#define Z_CLEARANCE_DEPLOY_PROBE 20 // Z Clearance for Deploy/Stow
968#define Z_CLEARANCE_BETWEEN_PROBES 4 // Z Clearance between probe points
969
970// For M851 give a range for adjusting the Z probe offset
971#define Z_PROBE_OFFSET_RANGE_MIN -20
972#define Z_PROBE_OFFSET_RANGE_MAX 20
973
974// Enable the M48 repeatability test to test probe accuracy
975#if (ENABLED(BLTOUCH) || ENABLED(SN04) || ENABLED(INDUCTIVE_NC) || ENABLED(INDUCTIVE_NO) || ENABLED(SERVO_PROBE)) && DISABLED(MANUAL)
976 #define Z_MIN_PROBE_REPEATABILITY_TEST
977#endif
978
979// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
980// :{ 0:'Low', 1:'High' }
981#define X_ENABLE_ON 0
982#define Y_ENABLE_ON 0
983#define Z_ENABLE_ON 0
984#define E_ENABLE_ON 0 // For all extruders
985
986// Disables axis stepper immediately when it's not being used.
987// WARNING: When motors turn off there is a chance of losing position accuracy!
988#define DISABLE_X false
989#define DISABLE_Y false
990#define DISABLE_Z false
991// Warn on display about possibly reduced accuracy
992//#define DISABLE_REDUCED_ACCURACY_WARNING
993
994// @section extruder
995
996#define DISABLE_E false // For all extruders
997#define DISABLE_INACTIVE_EXTRUDER true // Keep only the active extruder enabled.
998
999// @section machine
1000
1001// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
1002#if ENABLED(CHANGE_X_DIRECTION)
1003 #define INVERT_X_DIR true
1004#else
1005 #define INVERT_X_DIR false
1006#endif
1007#if ENABLED(CHANGE_Y_DIRECTION)
1008 #define INVERT_Y_DIR true
1009#else
1010 #define INVERT_Y_DIR false
1011#endif
1012#if ENABLED(CHANGE_Z_DIRECTION)
1013 #define INVERT_Z_DIR true
1014#else
1015 #define INVERT_Z_DIR false
1016#endif
1017
1018// Enable this option for Toshiba stepper drivers
1019//#define CONFIG_STEPPERS_TOSHIBA
1020
1021// @section extruder
1022
1023// For direct drive extruder v9 set to true, for geared extruder set to false.
1024#if ENABLED(CHANGE_E0_DIRECTION)
1025 #define INVERT_E0_DIR true
1026#else
1027 #define INVERT_E0_DIR false
1028#endif
1029#if ENABLED(CHANGE_E1_DIRECTION)
1030 #define INVERT_E1_DIR true
1031#else
1032 #define INVERT_E1_DIR false
1033#endif
1034#define INVERT_E2_DIR false
1035#define INVERT_E3_DIR false
1036#define INVERT_E4_DIR false
1037
1038// @section homing
1039
1040//#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed
1041
1042#define Z_HOMING_HEIGHT 5 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
1043 // Be sure you have this distance over your Z_MAX_POS in case.
1044
1045// Direction of endstops when homing; 1=MAX, -1=MIN
1046// :[-1,1]
1047#define X_HOME_DIR -1
1048#define Y_HOME_DIR -1
1049#define Z_HOME_DIR -1
1050
1051// @section machine
1052
1053// The size of the print bed
1054#define X_BED_SIZE 179
1055#if ENABLED(LARGE_BED)
1056 #define Y_BED_SIZE 280
1057#else
1058 #define Y_BED_SIZE 200
1059#endif
1060
1061// Travel limits (mm) after homing, corresponding to endstop positions.
1062#define X_MIN_POS 0 - XTRA_BED_LEFT
1063#define Y_MIN_POS 0 - XTRA_BED_BACK
1064#define Z_MIN_POS 0
1065#define X_MAX_POS X_BED_SIZE + XTRA_BED_RIGHT
1066#define Y_MAX_POS Y_BED_SIZE + XTRA_BED_FRONT
1067#define Z_MAX_POS 200
1068
1069/**
1070 * Software Endstops
1071 *
1072 * - Prevent moves outside the set machine bounds.
1073 * - Individual axes can be disabled, if desired.
1074 * - X and Y only apply to Cartesian robots.
1075 * - Use 'M211' to set software endstops on/off or report current state
1076 */
1077
1078// Min software endstops curtail movement below minimum coordinate bounds
1079#define MIN_SOFTWARE_ENDSTOPS
1080#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
1081 #define MIN_SOFTWARE_ENDSTOP_X
1082 #define MIN_SOFTWARE_ENDSTOP_Y
1083 #define MIN_SOFTWARE_ENDSTOP_Z
1084#endif
1085
1086// Max software endstops curtail movement above maximum coordinate bounds
1087#define MAX_SOFTWARE_ENDSTOPS
1088#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
1089 #define MAX_SOFTWARE_ENDSTOP_X
1090 #define MAX_SOFTWARE_ENDSTOP_Y
1091 #define MAX_SOFTWARE_ENDSTOP_Z
1092#endif
1093
1094/**
1095 * Filament Runout Sensor
1096 * A mechanical or opto endstop is used to check for the presence of filament.
1097 *
1098 * RAMPS-based boards use SERVO3_PIN.
1099 * For other boards you may need to define FIL_RUNOUT_PIN.
1100 * By default the firmware assumes HIGH = has filament, LOW = ran out
1101 */
1102//#define FILAMENT_RUNOUT_SENSOR
1103#if ENABLED(FILAMENT_RUNOUT_SENSOR)
1104 #define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.
1105 #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
1106 #define FILAMENT_RUNOUT_SCRIPT "M600"
1107#endif
1108
1109//===========================================================================
1110//=============================== Bed Leveling ==============================
1111//===========================================================================
1112// @section calibrate
1113
1114/**
1115 * Choose one of the options below to enable G29 Bed Leveling. The parameters
1116 * and behavior of G29 will change depending on your selection.
1117 *
1118 * If using a Probe for Z Homing, enable Z_SAFE_HOMING also!
1119 *
1120 * - AUTO_BED_LEVELING_3POINT
1121 * Probe 3 arbitrary points on the bed (that aren't collinear)
1122 * You specify the XY coordinates of all 3 points.
1123 * The result is a single tilted plane. Best for a flat bed.
1124 *
1125 * - AUTO_BED_LEVELING_LINEAR
1126 * Probe several points in a grid.
1127 * You specify the rectangle and the density of sample points.
1128 * The result is a single tilted plane. Best for a flat bed.
1129 *
1130 * - AUTO_BED_LEVELING_BILINEAR
1131 * Probe several points in a grid.
1132 * You specify the rectangle and the density of sample points.
1133 * The result is a mesh, best for large or uneven beds.
1134 *
1135 * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
1136 * A comprehensive bed leveling system combining the features and benefits
1137 * of other systems. UBL also includes integrated Mesh Generation, Mesh
1138 * Validation and Mesh Editing systems.
1139 *
1140 * - MESH_BED_LEVELING
1141 * Probe a grid manually
1142 * The result is a mesh, suitable for large or uneven beds. (See BILINEAR.)
1143 * For machines without a probe, Mesh Bed Leveling provides a method to perform
1144 * leveling in steps so you can manually adjust the Z height at each grid-point.
1145 * With an LCD controller the process is guided step-by-step.
1146 */
1147#if ENABLED(TRIPOINT)
1148 #define AUTO_BED_LEVELING_3POINT
1149#elif ENABLED(LINEAR)
1150 #define AUTO_BED_LEVELING_LINEAR
1151#elif ENABLED(BILINEAR)
1152 #define AUTO_BED_LEVELING_BILINEAR
1153#elif ENABLED(UBL)
1154 #define AUTO_BED_LEVELING_UBL
1155#elif ENABLED(MANUAL)
1156 #define MESH_BED_LEVELING
1157#endif
1158
1159/**
1160 * Enable detailed logging of G28, G29, M48, etc.
1161 * Turn on with the command 'M111 S32'.
1162 * NOTE: Requires a lot of PROGMEM!
1163 */
1164//#define DEBUG_LEVELING_FEATURE
1165
1166#if XTRA_BED_BACK > SENSOR_BEHIND
1167 #define PROBE_Y_FRONT BED_MARGIN + SENSOR_BEHIND - (XTRA_BED_BACK - (XTRA_BED_BACK - SENSOR_BEHIND))
1168#elif XTRA_BED_BACK > 0 && XTRA_BED_BACK <= SENSOR_BEHIND
1169 #define PROBE_Y_FRONT BED_MARGIN + SENSOR_BEHIND - XTRA_BED_BACK
1170#else
1171 #define PROBE_Y_FRONT BED_MARGIN + SENSOR_BEHIND
1172#endif
1173#if XTRA_BED_FRONT > SENSOR_FRONT
1174 #define PROBE_Y_BACK Y_BED_SIZE - BED_MARGIN - SENSOR_FRONT + XTRA_BED_FRONT - (XTRA_BED_FRONT - SENSOR_FRONT)
1175#elif XTRA_BED_FRONT > 0 && XTRA_BED_FRONT <= SENSOR_FRONT
1176 #define PROBE_Y_BACK Y_BED_SIZE - BED_MARGIN - SENSOR_FRONT + XTRA_BED_FRONT
1177#else
1178 #define PROBE_Y_BACK Y_BED_SIZE - BED_MARGIN - SENSOR_FRONT
1179#endif
1180#if XTRA_BED_LEFT > SENSOR_RIGHT
1181 #define PROBE_X_LEFT BED_MARGIN + SENSOR_RIGHT - (XTRA_BED_LEFT - (XTRA_BED_LEFT - SENSOR_RIGHT))
1182#elif XTRA_BED_LEFT > 0 && XTRA_BED_LEFT <= SENSOR_RIGHT
1183 #define PROBE_X_LEFT BED_MARGIN + SENSOR_RIGHT - XTRA_BED_LEFT
1184#else
1185 #define PROBE_X_LEFT BED_MARGIN + SENSOR_RIGHT
1186#endif
1187#if XTRA_BED_RIGHT > SENSOR_LEFT
1188 #define PROBE_X_RIGHT X_BED_SIZE - BED_MARGIN - SENSOR_LEFT + (XTRA_BED_RIGHT - (XTRA_BED_RIGHT - SENSOR_LEFT))
1189#elif XTRA_BED_RIGHT > 0 && XTRA_BED_RIGHT <= SENSOR_LEFT
1190 #define PROBE_X_RIGHT X_BED_SIZE - BED_MARGIN - SENSOR_LEFT + XTRA_BED_RIGHT
1191#else
1192 #define PROBE_X_RIGHT X_BED_SIZE - BED_MARGIN - SENSOR_LEFT
1193#endif
1194#define PROBE_X_MIDDLE (X_BED_SIZE / 2)
1195
1196#if ENABLED(MESH_BED_LEVELING) || ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(AUTO_BED_LEVELING_UBL)
1197 // Gradually reduce leveling correction until a set height is reached,
1198 // at which point movement will be level to the machine's XY plane.
1199 // The height can be set with M420 Z<height>
1200 #define ENABLE_LEVELING_FADE_HEIGHT
1201
1202 // For Cartesian machines, instead of dividing moves on mesh boundaries,
1203 // split up moves into short segments like a Delta. This follows the
1204 // contours of the bed more closely than edge-to-edge straight moves.
1205 #define SEGMENT_LEVELED_MOVES
1206 #define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one)
1207
1208 /**
1209 * Enable the G26 Mesh Validation Pattern tool.
1210 */
1211 #define G26_MESH_VALIDATION // Enable G26 mesh validation
1212 #if ENABLED(G26_MESH_VALIDATION)
1213 #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
1214 #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for the G26 Mesh Validation Tool.
1215 #define MESH_TEST_HOTEND_TEMP 205.0 // (°C) Default nozzle temperature for the G26 Mesh Validation Tool.
1216 #define MESH_TEST_BED_TEMP 60.0 // (°C) Default bed temperature for the G26 Mesh Validation Tool.
1217 #endif
1218
1219#endif
1220
1221#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)
1222
1223 // Set the number of grid points per dimension.
1224 #define GRID_MAX_POINTS_X GRID_POINTS
1225 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
1226
1227 // Set the boundaries for probing (where the probe can reach).
1228 #define LEFT_PROBE_BED_POSITION 0
1229 #define RIGHT_PROBE_BED_POSITION 130
1230 #define FRONT_PROBE_BED_POSITION 0
1231 #define BACK_PROBE_BED_POSITION 195
1232
1233 // The Z probe minimum outer margin (to validate G29 parameters).
1234 #define MIN_PROBE_EDGE BED_MARGIN
1235
1236 // Probe along the Y axis, advancing X after each column
1237 //#define PROBE_Y_FIRST
1238
1239 #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
1240
1241 // Beyond the probed grid, continue the implied tilt?
1242 // Default is to maintain the height of the nearest edge.
1243 //#define EXTRAPOLATE_BEYOND_GRID
1244
1245 //
1246 // Experimental Subdivision of the grid by Catmull-Rom method.
1247 // Synthesizes intermediate points to produce a more detailed mesh.
1248 //
1249 //#define ABL_BILINEAR_SUBDIVISION
1250 #if ENABLED(ABL_BILINEAR_SUBDIVISION)
1251 // Number of subdivisions between probe points
1252 #define BILINEAR_SUBDIVISIONS 3
1253 #endif
1254
1255 #endif
1256
1257#elif ENABLED(AUTO_BED_LEVELING_3POINT)
1258
1259 // 3 arbitrary points to probe.
1260 // A simple cross-product is used to estimate the plane of the bed.
1261 #define ABL_PROBE_PT_1_X PROBE_X_LEFT
1262 #define ABL_PROBE_PT_1_Y PROBE_Y_FRONT
1263 #define ABL_PROBE_PT_2_X PROBE_X_RIGHT
1264 #define ABL_PROBE_PT_2_Y PROBE_Y_FRONT
1265 #define ABL_PROBE_PT_3_X PROBE_X_MIDDLE
1266 #define ABL_PROBE_PT_3_Y PROBE_Y_BACK
1267
1268#elif ENABLED(AUTO_BED_LEVELING_UBL)
1269
1270 //===========================================================================
1271 //========================= Unified Bed Leveling ============================
1272 //===========================================================================
1273
1274 #define MESH_INSET BED_MARGIN // Mesh inset margin on print area
1275 #define GRID_MAX_POINTS_X GRID_POINTS // Don't use more than 15 points per axis, implementation limited.
1276 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
1277
1278 #define UBL_PROBE_PT_1_X PROBE_X_LEFT // Probing points for 3-Point leveling of the mesh
1279 #define UBL_PROBE_PT_1_Y PROBE_Y_FRONT
1280 #define UBL_PROBE_PT_2_X PROBE_X_RIGHT
1281 #define UBL_PROBE_PT_2_Y PROBE_Y_FRONT
1282 #define UBL_PROBE_PT_3_X PROBE_X_MIDDLE
1283 #define UBL_PROBE_PT_3_Y PROBE_Y_BACK
1284
1285 #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle
1286 #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500
1287
1288#elif ENABLED(MESH_BED_LEVELING)
1289
1290 //===========================================================================
1291 //=================================== Mesh ==================================
1292 //===========================================================================
1293
1294 #define MESH_INSET BED_MARGIN // Mesh inset margin on print area
1295 #define GRID_MAX_POINTS_X GRID_POINTS // Don't use more than 7 points per axis, implementation limited.
1296 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
1297
1298 //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest Z at Z_MIN_POS
1299
1300#endif // BED_LEVELING
1301
1302/**
1303 * Use the LCD controller for bed leveling
1304 * Requires MESH_BED_LEVELING or PROBE_MANUALLY
1305 */
1306#if DISABLED(BLTOUCH) && DISABLED(SN04) && DISABLED(INDUCTIVE_NC) && DISABLED(INDUCTIVE_NO) && DISABLED(SERVO_PROBE) && ENABLED(MANUAL)
1307 #define LCD_BED_LEVELING
1308#endif
1309
1310#if ENABLED(LCD_BED_LEVELING)
1311 #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis.
1312 #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment
1313#endif
1314
1315// Add a menu item to move between bed corners for manual bed adjustment
1316//#define LEVEL_BED_CORNERS
1317
1318/**
1319 * Commands to execute at the end of G29 probing.
1320 * Useful to retract or move the Z probe out of the way.
1321 */
1322//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"
1323
1324
1325// @section homing
1326
1327// The center of the bed is at (X=0, Y=0)
1328//#define BED_CENTER_AT_0_0
1329
1330// Manually set the home position. Leave these undefined for automatic settings.
1331// For DELTA this is the top-center of the Cartesian print volume.
1332#define MANUAL_X_HOME_POS NOZZLE_X
1333#define MANUAL_Y_HOME_POS NOZZLE_Y
1334//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
1335
1336// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
1337//
1338// With this feature enabled:
1339//
1340// - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
1341// - If stepper drivers time out, it will need X and Y homing again before Z homing.
1342// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
1343// - Prevent Z homing when the Z probe is outside bed area.
1344//
1345#if ENABLED(BLTOUCH) || ENABLED(SN04) || ENABLED(INDUCTIVE_NC) || ENABLED(INDUCTIVE_NO) || ENABLED(SERVO_PROBE)
1346 #define Z_SAFE_HOMING
1347#endif
1348
1349#if ENABLED(Z_SAFE_HOMING)
1350 #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28).
1351 #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28).
1352#endif
1353
1354// Homing speeds (mm/m)
1355#define HOMING_FEEDRATE_XY (50*60)
1356#define HOMING_FEEDRATE_Z (7*60)
1357
1358// @section calibrate
1359
1360/**
1361 * Bed Skew Compensation
1362 *
1363 * This feature corrects for misalignment in the XYZ axes.
1364 *
1365 * Take the following steps to get the bed skew in the XY plane:
1366 * 1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185)
1367 * 2. For XY_DIAG_AC measure the diagonal A to C
1368 * 3. For XY_DIAG_BD measure the diagonal B to D
1369 * 4. For XY_SIDE_AD measure the edge A to D
1370 *
1371 * Marlin automatically computes skew factors from these measurements.
1372 * Skew factors may also be computed and set manually:
1373 *
1374 * - Compute AB : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
1375 * - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
1376 *
1377 * If desired, follow the same procedure for XZ and YZ.
1378 * Use these diagrams for reference:
1379 *
1380 * Y Z Z
1381 * ^ B-------C ^ B-------C ^ B-------C
1382 * | / / | / / | / /
1383 * | / / | / / | / /
1384 * | A-------D | A-------D | A-------D
1385 * +-------------->X +-------------->X +-------------->Y
1386 * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
1387 */
1388//#define SKEW_CORRECTION
1389
1390#if ENABLED(SKEW_CORRECTION)
1391 // Input all length measurements here:
1392 #define XY_DIAG_AC 282.8427124746
1393 #define XY_DIAG_BD 282.8427124746
1394 #define XY_SIDE_AD 200
1395
1396 // Or, set the default skew factors directly here
1397 // to override the above measurements:
1398 #define XY_SKEW_FACTOR 0.0
1399
1400 //#define SKEW_CORRECTION_FOR_Z
1401 #if ENABLED(SKEW_CORRECTION_FOR_Z)
1402 #define XZ_DIAG_AC 282.8427124746
1403 #define XZ_DIAG_BD 282.8427124746
1404 #define YZ_DIAG_AC 282.8427124746
1405 #define YZ_DIAG_BD 282.8427124746
1406 #define YZ_SIDE_AD 200
1407 #define XZ_SKEW_FACTOR 0.0
1408 #define YZ_SKEW_FACTOR 0.0
1409 #endif
1410
1411 // Enable this option for M852 to set skew at runtime
1412 //#define SKEW_CORRECTION_GCODE
1413#endif
1414
1415//=============================================================================
1416//============================= Additional Features ===========================
1417//=============================================================================
1418
1419// @section extras
1420
1421//
1422// EEPROM
1423//
1424// The microcontroller can store settings in the EEPROM, e.g. max velocity...
1425// M500 - stores parameters in EEPROM
1426// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1427// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
1428//
1429#define EEPROM_SETTINGS // Enable for M500 and M501 commands
1430//#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
1431#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
1432
1433//
1434// Host Keepalive
1435//
1436// When enabled Marlin will send a busy status message to the host
1437// every couple of seconds when it can't accept commands.
1438//
1439//#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages
1440#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
1441#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating
1442
1443//
1444// M100 Free Memory Watcher
1445//
1446//#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usage
1447
1448//
1449// G20/G21 Inch mode support
1450//
1451//#define INCH_MODE_SUPPORT
1452
1453//
1454// M149 Set temperature units support
1455//
1456//#define TEMPERATURE_UNITS_SUPPORT
1457
1458// @section temperature
1459
1460// Preheat Constants
1461#define PREHEAT_1_TEMP_HOTEND 180
1462#define PREHEAT_1_TEMP_BED 70
1463#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
1464
1465#define PREHEAT_2_TEMP_HOTEND 235
1466#define PREHEAT_2_TEMP_BED 100
1467#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
1468
1469/**
1470 * Nozzle Park -- EXPERIMENTAL
1471 *
1472 * Park the nozzle at the given XYZ position on idle or G27.
1473 *
1474 * The "P" parameter controls the action applied to the Z axis:
1475 *
1476 * P0 (Default) If Z is below park Z raise the nozzle.
1477 * P1 Raise the nozzle always to Z-park height.
1478 * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS.
1479 */
1480#define NOZZLE_PARK_FEATURE
1481
1482#if ENABLED(NOZZLE_PARK_FEATURE)
1483 // Specify a park position as { X, Y, Z }
1484 #define NOZZLE_PARK_POINT { (X_MIN_POS), (Y_MAX_POS), 5 }
1485#endif
1486
1487/**
1488 * Clean Nozzle Feature -- EXPERIMENTAL
1489 *
1490 * Adds the G12 command to perform a nozzle cleaning process.
1491 *
1492 * Parameters:
1493 * P Pattern
1494 * S Strokes / Repetitions
1495 * T Triangles (P1 only)
1496 *
1497 * Patterns:
1498 * P0 Straight line (default). This process requires a sponge type material
1499 * at a fixed bed location. "S" specifies strokes (i.e. back-forth motions)
1500 * between the start / end points.
1501 *
1502 * P1 Zig-zag pattern between (X0, Y0) and (X1, Y1), "T" specifies the
1503 * number of zig-zag triangles to do. "S" defines the number of strokes.
1504 * Zig-zags are done in whichever is the narrower dimension.
1505 * For example, "G12 P1 S1 T3" will execute:
1506 *
1507 * --
1508 * | (X0, Y1) | /\ /\ /\ | (X1, Y1)
1509 * | | / \ / \ / \ |
1510 * A | | / \ / \ / \ |
1511 * | | / \ / \ / \ |
1512 * | (X0, Y0) | / \/ \/ \ | (X1, Y0)
1513 * -- +--------------------------------+
1514 * |________|_________|_________|
1515 * T1 T2 T3
1516 *
1517 * P2 Circular pattern with middle at NOZZLE_CLEAN_CIRCLE_MIDDLE.
1518 * "R" specifies the radius. "S" specifies the stroke count.
1519 * Before starting, the nozzle moves to NOZZLE_CLEAN_START_POINT.
1520 *
1521 * Caveats: The ending Z should be the same as starting Z.
1522 * Attention: EXPERIMENTAL. G-code arguments may change.
1523 *
1524 */
1525//#define NOZZLE_CLEAN_FEATURE
1526
1527#if ENABLED(NOZZLE_CLEAN_FEATURE)
1528 // Default number of pattern repetitions
1529 #define NOZZLE_CLEAN_STROKES 12
1530
1531 // Default number of triangles
1532 #define NOZZLE_CLEAN_TRIANGLES 3
1533
1534 // Specify positions as { X, Y, Z }
1535 #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
1536 #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
1537
1538 // Circular pattern radius
1539 #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
1540 // Circular pattern circle fragments number
1541 #define NOZZLE_CLEAN_CIRCLE_FN 10
1542 // Middle point of circle
1543 #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
1544
1545 // Moves the nozzle to the initial position
1546 #define NOZZLE_CLEAN_GOBACK
1547#endif
1548
1549/**
1550 * Print Job Timer
1551 *
1552 * Automatically start and stop the print job timer on M104/M109/M190.
1553 *
1554 * M104 (hotend, no wait) - high temp = none, low temp = stop timer
1555 * M109 (hotend, wait) - high temp = start timer, low temp = stop timer
1556 * M190 (bed, wait) - high temp = start timer, low temp = none
1557 *
1558 * The timer can also be controlled with the following commands:
1559 *
1560 * M75 - Start the print job timer
1561 * M76 - Pause the print job timer
1562 * M77 - Stop the print job timer
1563 */
1564#define PRINTJOB_TIMER_AUTOSTART
1565
1566/**
1567 * Print Counter
1568 *
1569 * Track statistical data such as:
1570 *
1571 * - Total print jobs
1572 * - Total successful print jobs
1573 * - Total failed print jobs
1574 * - Total time printing
1575 *
1576 * View the current statistics with M78.
1577 */
1578#define PRINTCOUNTER
1579
1580//=============================================================================
1581//============================= LCD and SD support ============================
1582//=============================================================================
1583
1584// @section lcd
1585
1586/**
1587 * LCD LANGUAGE
1588 *
1589 * Select the language to display on the LCD. These languages are available:
1590 *
1591 * en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, fr_utf8, gl,
1592 * hr, it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, sk_utf8,
1593 * tr, uk, zh_CN, zh_TW, test
1594 *
1595 * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'fr_utf8':'French (UTF8)', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'sk_utf8':'Slovak (UTF8)', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1596 */
1597#define LCD_LANGUAGE en
1598
1599/**
1600 * LCD Character Set
1601 *
1602 * Note: This option is NOT applicable to Graphical Displays.
1603 *
1604 * All character-based LCDs provide ASCII plus one of these
1605 * language extensions:
1606 *
1607 * - JAPANESE ... the most common
1608 * - WESTERN ... with more accented characters
1609 * - CYRILLIC ... for the Russian language
1610 *
1611 * To determine the language extension installed on your controller:
1612 *
1613 * - Compile and upload with LCD_LANGUAGE set to 'test'
1614 * - Click the controller to view the LCD menu
1615 * - The LCD will display Japanese, Western, or Cyrillic text
1616 *
1617 * See http://marlinfw.org/docs/development/lcd_language.html
1618 *
1619 * :['JAPANESE', 'WESTERN', 'CYRILLIC']
1620 */
1621#define DISPLAY_CHARSET_HD44780 JAPANESE
1622
1623/**
1624 * LCD TYPE
1625 *
1626 * Enable ULTRA_LCD for a 16x2, 16x4, 20x2, or 20x4 character-based LCD.
1627 * Enable DOGLCD for a 128x64 (ST7565R) Full Graphical Display.
1628 * (These options will be enabled automatically for most displays.)
1629 *
1630 * IMPORTANT: The U8glib library is required for Full Graphic Display!
1631 * https://github.com/olikraus/U8glib_Arduino
1632 */
1633//#define ULTRA_LCD // Character based
1634//#define DOGLCD // Full graphics display
1635
1636/**
1637 * SD CARD
1638 *
1639 * SD Card support is disabled by default. If your controller has an SD slot,
1640 * you must uncomment the following option or it won't work.
1641 *
1642 */
1643//#define SDSUPPORT
1644
1645/**
1646 * SD CARD: SPI SPEED
1647 *
1648 * Enable one of the following items for a slower SPI transfer speed.
1649 * This may be required to resolve "volume init" errors.
1650 */
1651//#define SPI_SPEED SPI_HALF_SPEED
1652//#define SPI_SPEED SPI_QUARTER_SPEED
1653//#define SPI_SPEED SPI_EIGHTH_SPEED
1654
1655/**
1656 * SD CARD: ENABLE CRC
1657 *
1658 * Use CRC checks and retries on the SD communication.
1659 */
1660//#define SD_CHECK_AND_RETRY
1661
1662//
1663// ENCODER SETTINGS
1664//
1665// This option overrides the default number of encoder pulses needed to
1666// produce one step. Should be increased for high-resolution encoders.
1667//
1668#define ENCODER_PULSES_PER_STEP 3
1669
1670//
1671// Use this option to override the number of step signals required to
1672// move between next/prev menu items.
1673//
1674//#define ENCODER_STEPS_PER_MENU_ITEM 5
1675
1676/**
1677 * Encoder Direction Options
1678 *
1679 * Test your encoder's behavior first with both options disabled.
1680 *
1681 * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION.
1682 * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION.
1683 * Reversed Value Editing only? Enable BOTH options.
1684 */
1685
1686//
1687// This option reverses the encoder direction everywhere.
1688//
1689// Set this option if CLOCKWISE causes values to DECREASE
1690//
1691#define REVERSE_ENCODER_DIRECTION
1692
1693//
1694// This option reverses the encoder direction for navigating LCD menus.
1695//
1696// If CLOCKWISE normally moves DOWN this makes it go UP.
1697// If CLOCKWISE normally moves UP this makes it go DOWN.
1698//
1699//#define REVERSE_MENU_DIRECTION
1700
1701//
1702// Individual Axis Homing
1703//
1704// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu.
1705//
1706#define INDIVIDUAL_AXIS_HOMING_MENU
1707
1708//
1709// SPEAKER/BUZZER
1710//
1711// If you have a speaker that can produce tones, enable it here.
1712// By default Marlin assumes you have a buzzer with a fixed frequency.
1713//
1714#define SPEAKER
1715
1716//
1717// The duration and frequency for the UI feedback sound.
1718// Set these to 0 to disable audio feedback in the LCD menus.
1719//
1720// Note: Test audio output with the G-Code:
1721// M300 S<frequency Hz> P<duration ms>
1722//
1723#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 10
1724#define LCD_FEEDBACK_FREQUENCY_HZ 500
1725
1726//
1727// CONTROLLER TYPE: Standard
1728//
1729// Marlin supports a wide variety of controllers.
1730// Enable one of the following options to specify your controller.
1731//
1732
1733//
1734// ULTIMAKER Controller.
1735//
1736//#define ULTIMAKERCONTROLLER
1737
1738//
1739// ULTIPANEL as seen on Thingiverse.
1740//
1741//#define ULTIPANEL
1742
1743//
1744// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1745// http://reprap.org/wiki/PanelOne
1746//
1747//#define PANEL_ONE
1748
1749//
1750// MaKr3d Makr-Panel with graphic controller and SD support.
1751// http://reprap.org/wiki/MaKr3d_MaKrPanel
1752//
1753//#define MAKRPANEL
1754
1755//
1756// ReprapWorld Graphical LCD
1757// https://reprapworld.com/?products_details&products_id/1218
1758//
1759//#define REPRAPWORLD_GRAPHICAL_LCD
1760
1761//
1762// Activate one of these if you have a Panucatt Devices
1763// Viki 2.0 or mini Viki with Graphic LCD
1764// http://panucatt.com
1765//
1766//#define VIKI2
1767//#define miniVIKI
1768
1769//
1770// Adafruit ST7565 Full Graphic Controller.
1771// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/
1772//
1773//#define ELB_FULL_GRAPHIC_CONTROLLER
1774
1775//
1776// RepRapDiscount Smart Controller.
1777// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
1778//
1779// Note: Usually sold with a white PCB.
1780//
1781#if DISABLED(FULL_GRAPHIC_SMART)
1782 #define REPRAP_DISCOUNT_SMART_CONTROLLER
1783#endif
1784
1785//
1786// GADGETS3D G3D LCD/SD Controller
1787// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
1788//
1789// Note: Usually sold with a blue PCB.
1790//
1791//#define G3D_PANEL
1792
1793//
1794// RepRapDiscount FULL GRAPHIC Smart Controller
1795// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
1796//
1797#if ENABLED(FULL_GRAPHIC_SMART)
1798 #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
1799#endif
1800
1801//
1802// MakerLab Mini Panel with graphic
1803// controller and SD support - http://reprap.org/wiki/Mini_panel
1804//
1805//#define MINIPANEL
1806
1807//
1808// RepRapWorld REPRAPWORLD_KEYPAD v1.1
1809// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
1810//
1811// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key
1812// is pressed, a value of 10.0 means 10mm per click.
1813//
1814//#define REPRAPWORLD_KEYPAD
1815//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1816
1817//
1818// RigidBot Panel V1.0
1819// http://www.inventapart.com/
1820//
1821//#define RIGIDBOT_PANEL
1822
1823//
1824// BQ LCD Smart Controller shipped by
1825// default with the BQ Hephestos 2 and Witbox 2.
1826//
1827//#define BQ_LCD_SMART_CONTROLLER
1828
1829//
1830// Cartesio UI
1831// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1832//
1833//#define CARTESIO_UI
1834
1835//
1836// ANET and Tronxy Controller supported displays.
1837//
1838//#define ZONESTAR_LCD // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1839 // This LCD is known to be susceptible to electrical interference
1840 // which scrambles the display. Pressing any button clears it up.
1841 // This is a LCD2004 display with 5 analog buttons.
1842
1843//#define ANET_FULL_GRAPHICS_LCD // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1844 // A clone of the RepRapDiscount full graphics display but with
1845 // different pins/wiring (see pins_ANET_10.h).
1846
1847//
1848// LCD for Melzi Card with Graphical LCD
1849//
1850//#define LCD_FOR_MELZI
1851
1852//
1853// CONTROLLER TYPE: I2C
1854//
1855// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
1856// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C
1857//
1858
1859//
1860// Elefu RA Board Control Panel
1861// http://www.elefu.com/index.php?route=product/product&product_id=53
1862//
1863//#define RA_CONTROL_PANEL
1864
1865//
1866// Sainsmart YW Robot (LCM1602) LCD Display
1867//
1868// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1869// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1870//
1871//#define LCD_I2C_SAINSMART_YWROBOT
1872
1873//
1874// Generic LCM1602 LCD adapter
1875//
1876//#define LCM1602
1877
1878//
1879// PANELOLU2 LCD with status LEDs,
1880// separate encoder and click inputs.
1881//
1882// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later.
1883// For more info: https://github.com/lincomatic/LiquidTWI2
1884//
1885// Note: The PANELOLU2 encoder click input can either be directly connected to
1886// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
1887//
1888//#define LCD_I2C_PANELOLU2
1889
1890//
1891// Panucatt VIKI LCD with status LEDs,
1892// integrated click & L/R/U/D buttons, separate encoder inputs.
1893//
1894//#define LCD_I2C_VIKI
1895
1896//
1897// SSD1306 OLED full graphics generic display
1898//
1899//#define U8GLIB_SSD1306
1900
1901//
1902// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1903//
1904//#define SAV_3DGLCD
1905#if ENABLED(SAV_3DGLCD)
1906 //#define U8GLIB_SSD1306
1907 #define U8GLIB_SH1106
1908#endif
1909
1910//
1911// CONTROLLER TYPE: Shift register panels
1912//
1913// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
1914// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD
1915//
1916//#define SAV_3DLCD
1917
1918//
1919// TinyBoy2 128x64 OLED / Encoder Panel
1920//
1921//#define OLED_PANEL_TINYBOY2
1922
1923//
1924// Makeboard 3D Printer Parts 3D Printer Mini Display 1602 Mini Controller
1925// https://www.aliexpress.com/item/Micromake-Makeboard-3D-Printer-Parts-3D-Printer-Mini-Display-1602-Mini-Controller-Compatible-with-Ramps-1/32765887917.html
1926//
1927//#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
1928
1929//
1930// MKS MINI12864 with graphic controller and SD support
1931// http://reprap.org/wiki/MKS_MINI_12864
1932//
1933//#define MKS_MINI_12864
1934
1935//
1936// Factory display for Creality CR-10
1937// https://www.aliexpress.com/item/Universal-LCD-12864-3D-Printer-Display-Screen-With-Encoder-For-CR-10-CR-7-Model/32833148327.html
1938//
1939// This is RAMPS-compatible using a single 10-pin connector.
1940// (For CR-10 owners who want to replace the Melzi Creality board but retain the display)
1941//
1942//#define CR10_STOCKDISPLAY
1943
1944//
1945// MKS OLED 1.3" 128x64 FULL GRAPHICS CONTROLLER
1946// http://reprap.org/wiki/MKS_12864OLED
1947//
1948// Tiny, but very sharp OLED display
1949// If there is a pixel shift, try the other controller.
1950//
1951//#define MKS_12864OLED // Uses the SH1106 controller (default)
1952//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
1953
1954// Silvergate GLCD controller
1955// http://github.com/android444/Silvergate
1956//
1957//#define SILVER_GATE_GLCD_CONTROLLER
1958
1959//=============================================================================
1960//=============================== Extra Features ==============================
1961//=============================================================================
1962
1963// @section extras
1964
1965// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
1966//#define FAST_PWM_FAN
1967
1968// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
1969// which is not as annoying as with the hardware PWM. On the other hand, if this frequency
1970// is too low, you should also increment SOFT_PWM_SCALE.
1971#if ENABLED(SOFT_PWM)
1972 #define FAN_SOFT_PWM
1973#endif
1974
1975// Incrementing this by 1 will double the software PWM frequency,
1976// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
1977// However, control resolution will be halved for each increment;
1978// at zero value, there are 128 effective control positions.
1979#define SOFT_PWM_SCALE 0
1980
1981// If SOFT_PWM_SCALE is set to a value higher than 0, dithering can
1982// be used to mitigate the associated resolution loss. If enabled,
1983// some of the PWM cycles are stretched so on average the desired
1984// duty cycle is attained.
1985//#define SOFT_PWM_DITHER
1986
1987// Temperature status LEDs that display the hotend and bed temperature.
1988// If all hotends, bed temperature, and target temperature are under 54C
1989// then the BLUE led is on. Otherwise the RED led is on. (1C hysteresis)
1990//#define TEMP_STAT_LEDS
1991
1992// M240 Triggers a camera by emulating a Canon RC-1 Remote
1993// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
1994//#define PHOTOGRAPH_PIN 23
1995
1996// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1997//#define SF_ARC_FIX
1998
1999// Support for the BariCUDA Paste Extruder
2000//#define BARICUDA
2001
2002// Support for BlinkM/CyzRgb
2003//#define BLINKM
2004
2005// Support for PCA9632 PWM LED driver
2006//#define PCA9632
2007
2008/**
2009 * RGB LED / LED Strip Control
2010 *
2011 * Enable support for an RGB LED connected to 5V digital pins, or
2012 * an RGB Strip connected to MOSFETs controlled by digital pins.
2013 *
2014 * Adds the M150 command to set the LED (or LED strip) color.
2015 * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of
2016 * luminance values can be set from 0 to 255.
2017 * For Neopixel LED an overall brightness parameter is also available.
2018 *
2019 * *** CAUTION ***
2020 * LED Strips require a MOFSET Chip between PWM lines and LEDs,
2021 * as the Arduino cannot handle the current the LEDs will require.
2022 * Failure to follow this precaution can destroy your Arduino!
2023 * NOTE: A separate 5V power supply is required! The Neopixel LED needs
2024 * more current than the Arduino 5V linear regulator can produce.
2025 * *** CAUTION ***
2026 *
2027 * LED Type. Enable only one of the following two options.
2028 *
2029 */
2030//#define RGB_LED
2031//#define RGBW_LED
2032
2033#if ENABLED(RGB_LED) || ENABLED(RGBW_LED)
2034 #define RGB_LED_R_PIN 34
2035 #define RGB_LED_G_PIN 43
2036 #define RGB_LED_B_PIN 35
2037 #define RGB_LED_W_PIN -1
2038#endif
2039
2040// Support for Adafruit Neopixel LED driver
2041//#define NEOPIXEL_LED
2042#if ENABLED(NEOPIXEL_LED)
2043 #define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h)
2044 #define NEOPIXEL_PIN 4 // LED driving pin on motherboard 4 => D4 (EXP2-5 on Printrboard) / 30 => PC7 (EXP3-13 on Rumba)
2045 #define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip
2046 #define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
2047 #define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
2048 //#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
2049#endif
2050
2051/**
2052 * Printer Event LEDs
2053 *
2054 * During printing, the LEDs will reflect the printer status:
2055 *
2056 * - Gradually change from blue to violet as the heated bed gets to target temp
2057 * - Gradually change from violet to red as the hotend gets to temperature
2058 * - Change to white to illuminate work surface
2059 * - Change to green once print has finished
2060 * - Turn off after the print has finished and the user has pushed a button
2061 */
2062#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_LED)
2063 #define PRINTER_EVENT_LEDS
2064#endif
2065
2066/**
2067 * R/C SERVO support
2068 * Sponsored by TrinityLabs, Reworked by codexmas
2069 */
2070
2071/**
2072 * Number of servos
2073 *
2074 * For some servo-related options NUM_SERVOS will be set automatically.
2075 * Set this manually if there are extra servos needing manual control.
2076 * Leave undefined or set to 0 to entirely disable the servo subsystem.
2077 */
2078#if ENABLED(SERVO_PROBE)
2079 #define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
2080#endif
2081
2082// Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle.
2083// 300ms is a good value but you can try less delay.
2084// If the servo can't reach the requested position, increase it.
2085#define SERVO_DELAY { 300 }
2086
2087// Servo deactivation
2088//
2089// With this option servos are powered only during movement, then turned off to prevent jitter.
2090#if ENABLED(SERVO_PROBE)
2091 //#define DEACTIVATE_SERVOS_AFTER_MOVE
2092#endif
2093
2094#endif // CONFIGURATION_H