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