diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index d7d815fe9..ce773728e 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1000,6 +1000,9 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. // // Caveats: End point Z should use the same value as Start point Z. // @@ -1011,7 +1014,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1019,6 +1022,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index d30a58d4c..05baf4c05 100755 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3164,8 +3164,9 @@ inline void gcode_G4() { const uint8_t pattern = code_seen('P') ? code_value_ushort() : 0, strokes = code_seen('S') ? code_value_ushort() : NOZZLE_CLEAN_STROKES, objects = code_seen('T') ? code_value_ushort() : NOZZLE_CLEAN_TRIANGLES; + const float radius = code_seen('R') ? code_value_float() : NOZZLE_CLEAN_CIRCLE_RADIUS; - Nozzle::clean(pattern, strokes, objects); + Nozzle::clean(pattern, strokes, radius, objects); } #endif diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h index f9dbc6cbb..eeec79db9 100644 --- a/Marlin/example_configurations/Cartesio/Configuration.h +++ b/Marlin/example_configurations/Cartesio/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1000,6 +1000,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1010,7 +1014,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1018,6 +1022,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 3c5d6a966..2e2f3ecf2 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -983,6 +983,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -993,7 +997,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1001,6 +1005,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h index 847ffa95a..9bf834d67 100644 --- a/Marlin/example_configurations/Felix/DUAL/Configuration.h +++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -983,6 +983,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -993,7 +997,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1001,6 +1005,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 0e0580bf1..6dad4643b 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -992,6 +992,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1002,7 +1006,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1010,6 +1014,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h index 6a3f548c4..2c3e399ff 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -994,6 +994,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1004,7 +1008,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1012,6 +1016,13 @@ #define NOZZLE_CLEAN_START_POINT { X_MIN_POS + 10, Y_MAX_POS - 9, (Z_MIN_POS + 0.5)} #define NOZZLE_CLEAN_END_POINT { X_MIN_POS + 90, Y_MAX_POS - 0, (Z_MIN_POS + 0.5)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position //#define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 06443e3cb..df8e92ad6 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -112,7 +112,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1029,6 +1029,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1039,7 +1043,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1047,6 +1051,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/K8400/Configuration.h b/Marlin/example_configurations/K8400/Configuration.h index c169e0098..dbc06c08c 100644 --- a/Marlin/example_configurations/K8400/Configuration.h +++ b/Marlin/example_configurations/K8400/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1000,6 +1000,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1010,7 +1014,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1018,6 +1022,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/Marlin/example_configurations/K8400/Dual-head/Configuration.h index aa11b8816..fc4f6b7ae 100644 --- a/Marlin/example_configurations/K8400/Dual-head/Configuration.h +++ b/Marlin/example_configurations/K8400/Dual-head/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1000,6 +1000,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1010,7 +1014,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1018,6 +1022,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index bf23af2ae..5088a96c5 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1000,6 +1000,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1010,7 +1014,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1018,6 +1022,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index 617fe392b..1242383b6 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -999,6 +999,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1009,7 +1013,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1017,6 +1021,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index fb8c3330c..7811a2c3a 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -128,7 +128,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1015,6 +1015,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1025,7 +1029,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1033,6 +1037,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index 36a0e8ebd..23a734b1c 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1021,6 +1021,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1031,7 +1035,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1039,6 +1043,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index bdacef218..463289365 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -992,6 +992,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1002,7 +1006,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1010,6 +1014,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 6827cfc81..6d3625871 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1000,6 +1000,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1010,7 +1014,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1018,6 +1022,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration.h b/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration.h index 4b0e327b3..e6e36ea10 100644 --- a/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration.h @@ -1,54 +1,54 @@ /** - Marlin 3D Printer Firmware - Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - - Based on Sprinter and grbl. - Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -*/ + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ /** - Configuration.h - - Basic settings such as: - - - Type of electronics - - Type of temperature sensor - - Printer geometry - - Endstop configuration - - LCD controller - - Extra features - - Advanced settings can be found in Configuration_adv.h - -*/ + * Configuration.h + * + * Basic settings such as: + * + * - Type of electronics + * - Type of temperature sensor + * - Printer geometry + * - Endstop configuration + * - LCD controller + * - Extra features + * + * Advanced settings can be found in Configuration_adv.h + * + */ #ifndef CONFIGURATION_H #define CONFIGURATION_H /** - + * * *********************************** * ** ATTENTION TO ALL DEVELOPERS ** * *********************************** - - You must increment this version number for every significant change such as, - but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - - Note: Update also Version.h ! -*/ + * + * You must increment this version number for every significant change such as, + * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. + * + * Note: Update also Version.h ! + */ #define CONFIGURATION_H_VERSION 010100 //=========================================================================== @@ -56,16 +56,16 @@ //=========================================================================== /** - Here are some standard links for getting your machine calibrated: - - http://reprap.org/wiki/Calibration - http://youtu.be/wAL9d7FgInk - http://calculator.josefprusa.cz - http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - http://www.thingiverse.com/thing:5573 - https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - http://www.thingiverse.com/thing:298812 -*/ + * Here are some standard links for getting your machine calibrated: + * + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 + */ //=========================================================================== //============================= DELTA Printer =============================== @@ -106,22 +106,22 @@ // @section machine /** - Select which serial port on the board will be used for communication with the host. - This allows the connection of wireless adapters (for instance) to non-default port pins. - Serial port 0 is always used by the Arduino bootloader regardless of this setting. - - :[0, 1, 2, 3, 4, 5, 6, 7] -*/ + * Select which serial port on the board will be used for communication with the host. + * This allows the connection of wireless adapters (for instance) to non-default port pins. + * Serial port 0 is always used by the Arduino bootloader regardless of this setting. + * + * :[0, 1, 2, 3, 4, 5, 6, 7] + */ #define SERIAL_PORT 0 /** - This setting determines the communication speed of the printer. - - 250000 works in most cases, but you might try a lower speed if - you commonly experience drop-outs during host printing. - - :[2400, 9600, 19200, 38400, 57600, 115200, 250000] -*/ + * This setting determines the communication speed of the printer. + * + * 250000 works in most cases, but you might try a lower speed if + * you commonly experience drop-outs during host printing. + * + * :[2400, 9600, 19200, 38400, 57600, 115200, 250000] + */ #define BAUDRATE 250000 // Enable the Bluetooth serial interface on AT90USB devices @@ -130,7 +130,7 @@ // The following define selects which electronics board you have. // Please choose the name from boards.h that matches your setup #ifndef MOTHERBOARD -#define MOTHERBOARD BOARD_RAMPS_13_EFB + #define MOTHERBOARD BOARD_RAMPS_13_EFB #endif // Optional custom name for your RepStrap or other custom machine @@ -155,24 +155,24 @@ // Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z //#define SWITCHING_EXTRUDER #if ENABLED(SWITCHING_EXTRUDER) -#define SWITCHING_EXTRUDER_SERVO_NR 0 -#define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 -//#define HOTEND_OFFSET_Z {0.0, 0.0} + #define SWITCHING_EXTRUDER_SERVO_NR 0 + #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 + //#define HOTEND_OFFSET_Z {0.0, 0.0} #endif /** - "Mixing Extruder" - - Adds a new code, M165, to set the current mix factors. - - Extends the stepping routines to move multiple steppers in proportion to the mix. - - Optional support for Repetier Host M163, M164, and virtual extruder. - - This implementation supports only a single extruder. - - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation -*/ + * "Mixing Extruder" + * - Adds a new code, M165, to set the current mix factors. + * - Extends the stepping routines to move multiple steppers in proportion to the mix. + * - Optional support for Repetier Host M163, M164, and virtual extruder. + * - This implementation supports only a single extruder. + * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation + */ //#define MIXING_EXTRUDER #if ENABLED(MIXING_EXTRUDER) -#define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder -#define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 -//#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands + #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder + #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 + //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands #endif // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). @@ -182,20 +182,20 @@ //#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis /** - Select your power supply here. Use 0 if you haven't connected the PS_ON_PIN - - 0 = No Power Switch - 1 = ATX - 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) - - :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' } -*/ + * Select your power supply here. Use 0 if you haven't connected the PS_ON_PIN + * + * 0 = No Power Switch + * 1 = ATX + * 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + * + * :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' } + */ #define POWER_SUPPLY 0 #if POWER_SUPPLY > 0 -// Enable this option to leave the PSU off at startup. -// Power to steppers and heaters will need to be turned on with M80. -//#define PS_DEFAULT_OFF + // Enable this option to leave the PSU off at startup. + // Power to steppers and heaters will need to be turned on with M80. + //#define PS_DEFAULT_OFF #endif // @section temperature @@ -205,50 +205,50 @@ //=========================================================================== /** - --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table - - Temperature sensors available: - - -3 : thermocouple with MAX31855 (only for sensor 0) - -2 : thermocouple with MAX6675 (only for sensor 0) - -1 : thermocouple with AD595 - 0 : not used - 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup) - 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) - 3 : Mendel-parts thermistor (4.7k pullup) - 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! - 5 : 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) - 6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) - 7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) - 71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) - 8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) - 9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) - 10 : 100k RS thermistor 198-961 (4.7k pullup) - 11 : 100k beta 3950 1% thermistor (4.7k pullup) - 12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) - 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" - 20 : the PT100 circuit found in the Ultimainboard V2.x - 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 - 66 : 4.7M High Temperature thermistor from Dyze Design - 70 : the 100K thermistor found in the bq Hephestos 2 - - 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k. - (but gives greater accuracy and more stable PID) - 51 : 100k thermistor - EPCOS (1k pullup) - 52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup) - 55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) - - 1047 : Pt1000 with 4k7 pullup - 1010 : Pt1000 with 1k pullup (non standard) - 147 : Pt100 with 4k7 pullup - 110 : Pt100 with 1k pullup (non standard) - - Use these for Testing or Development purposes. NEVER for production machine. - 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. - 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. - - :{ '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" } -*/ + * --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table + * + * Temperature sensors available: + * + * -3 : thermocouple with MAX31855 (only for sensor 0) + * -2 : thermocouple with MAX6675 (only for sensor 0) + * -1 : thermocouple with AD595 + * 0 : not used + * 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup) + * 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) + * 3 : Mendel-parts thermistor (4.7k pullup) + * 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! + * 5 : 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) + * 6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) + * 7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) + * 71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) + * 8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) + * 9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) + * 10 : 100k RS thermistor 198-961 (4.7k pullup) + * 11 : 100k beta 3950 1% thermistor (4.7k pullup) + * 12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) + * 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" + * 20 : the PT100 circuit found in the Ultimainboard V2.x + * 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 + * 66 : 4.7M High Temperature thermistor from Dyze Design + * 70 : the 100K thermistor found in the bq Hephestos 2 + * + * 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k. + * (but gives greater accuracy and more stable PID) + * 51 : 100k thermistor - EPCOS (1k pullup) + * 52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup) + * 55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) + * + * 1047 : Pt1000 with 4k7 pullup + * 1010 : Pt1000 with 1k pullup (non standard) + * 147 : Pt100 with 4k7 pullup + * 110 : Pt100 with 1k pullup (non standard) + * + * Use these for Testing or Development purposes. NEVER for production machine. + * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. + * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. + * + * :{ '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" } + */ #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 @@ -302,36 +302,36 @@ #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current #define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current #if ENABLED(PIDTEMP) -#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. -//#define PID_DEBUG // Sends debug data to the serial port. -//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX -//#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 -//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) -// Set/get with gcode: M301 E[extruder number, 0-2] -#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature -// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. -#define K1 0.95 //smoothing factor within the PID - -// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it -// Ultimaker -//#define DEFAULT_Kp 22.2 -//#define DEFAULT_Ki 1.08 -//#define DEFAULT_Kd 114 - -// MakerGear -//#define DEFAULT_Kp 7.0 -//#define DEFAULT_Ki 0.1 -//#define DEFAULT_Kd 12 - -// Mendel Parts V9 on 12V -//#define DEFAULT_Kp 63.0 -//#define DEFAULT_Ki 2.25 -//#define DEFAULT_Kd 440 - -//E3D with 30MM fan -#define DEFAULT_Kp 24.77 -#define DEFAULT_Ki 1.84 -#define DEFAULT_Kd 83.61 + #define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#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 + //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define K1 0.95 //smoothing factor within the PID + + // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it + // Ultimaker + //#define DEFAULT_Kp 22.2 + //#define DEFAULT_Ki 1.08 + //#define DEFAULT_Kd 114 + + // MakerGear + //#define DEFAULT_Kp 7.0 + //#define DEFAULT_Ki 0.1 + //#define DEFAULT_Kd 12 + + // Mendel Parts V9 on 12V + //#define DEFAULT_Kp 63.0 + //#define DEFAULT_Ki 2.25 + //#define DEFAULT_Kd 440 + + //E3D with 30MM fan + #define DEFAULT_Kp 24.77 + #define DEFAULT_Ki 1.84 + #define DEFAULT_Kd 83.61 #endif // PIDTEMP @@ -359,26 +359,26 @@ #if ENABLED(PIDTEMPBED) -//#define PID_BED_DEBUG // Sends debug data to the serial port. + //#define PID_BED_DEBUG // Sends debug data to the serial port. -//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -//#define DEFAULT_bedKp 10.00 -//#define DEFAULT_bedKi .023 -//#define DEFAULT_bedKd 305.4 + //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) + //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + //#define DEFAULT_bedKp 10.00 + //#define DEFAULT_bedKi .023 + //#define DEFAULT_bedKd 305.4 -//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -//#define DEFAULT_bedKp 97.1 -//#define DEFAULT_bedKi 1.41 -//#define DEFAULT_bedKd 1675.16 + //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) + //from pidautotune + //#define DEFAULT_bedKp 97.1 + //#define DEFAULT_bedKi 1.41 + //#define DEFAULT_bedKd 1675.16 -//D-force -#define DEFAULT_bedKp 22.97 -#define DEFAULT_bedKi 3.76 -#define DEFAULT_bedKd 29.2 + //D-force + #define DEFAULT_bedKp 22.97 + #define DEFAULT_bedKi 3.76 + #define DEFAULT_bedKd 29.2 -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. + // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED // @section extruder @@ -400,16 +400,16 @@ //=========================================================================== /** - Thermal Protection protects your printer from damage and fire if a - thermistor falls out or temperature sensors fail in any way. - - The issue: If a thermistor falls out or a temperature sensor fails, - Marlin can no longer sense the actual temperature. Since a disconnected - thermistor reads as a low temperature, the firmware will keep the heater on. - - If you get "Thermal Runaway" or "Heating failed" errors the - details can be tuned in Configuration_adv.h -*/ + * Thermal Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * If you get "Thermal Runaway" or "Heating failed" errors the + * details can be tuned in Configuration_adv.h + */ #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed @@ -437,42 +437,42 @@ #if ENABLED(DELTA) -// Make delta curves from many straight lines (linear interpolation). -// This is a trade-off between visible corners (not enough segments) -// and processor overload (too many expensive sqrt calls). -#define DELTA_SEGMENTS_PER_SECOND 160 + // Make delta curves from many straight lines (linear interpolation). + // This is a trade-off between visible corners (not enough segments) + // and processor overload (too many expensive sqrt calls). + #define DELTA_SEGMENTS_PER_SECOND 160 -// NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them + // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them -// Center-to-center distance of the holes in the diagonal push rods. -#define DELTA_DIAGONAL_ROD 218.0 // mm + // Center-to-center distance of the holes in the diagonal push rods. + #define DELTA_DIAGONAL_ROD 218.0 // mm -// Horizontal offset from middle of printer to smooth rod center. -#define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm + // Horizontal offset from middle of printer to smooth rod center. + #define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm -// Horizontal offset of the universal joints on the end effector. -#define DELTA_EFFECTOR_OFFSET 24.0 // mm + // Horizontal offset of the universal joints on the end effector. + #define DELTA_EFFECTOR_OFFSET 24.0 // mm -// Horizontal offset of the universal joints on the carriages. -#define DELTA_CARRIAGE_OFFSET 22.0 // mm + // Horizontal offset of the universal joints on the carriages. + #define DELTA_CARRIAGE_OFFSET 22.0 // mm -// Horizontal distance bridged by diagonal push rods when effector is centered. -#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) + // Horizontal distance bridged by diagonal push rods when effector is centered. + #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) -// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). -#define DELTA_PRINTABLE_RADIUS 85.0 + // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). + #define DELTA_PRINTABLE_RADIUS 85.0 -// Delta calibration menu -// uncomment to add three points calibration menu option. -// See http://minow.blogspot.com/index.html#4918805519571907051 -// If needed, adjust the X, Y, Z calibration coordinates -// in ultralcd.cpp@lcd_delta_calibrate_menu() -//#define DELTA_CALIBRATION_MENU + // Delta calibration menu + // uncomment to add three points calibration menu option. + // See http://minow.blogspot.com/index.html#4918805519571907051 + // If needed, adjust the X, Y, Z calibration coordinates + // in ultralcd.cpp@lcd_delta_calibrate_menu() + //#define DELTA_CALIBRATION_MENU -// After homing move down to a height where XY movement is unconstrained -//#define DELTA_HOME_TO_SAFE_ZONE + // After homing move down to a height where XY movement is unconstrained + //#define DELTA_HOME_TO_SAFE_ZONE -//#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } + //#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } #endif @@ -499,14 +499,14 @@ #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors #if DISABLED(ENDSTOPPULLUPS) -// fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined -//#define ENDSTOPPULLUP_XMAX -//#define ENDSTOPPULLUP_YMAX -//#define ENDSTOPPULLUP_ZMAX -//#define ENDSTOPPULLUP_XMIN -//#define ENDSTOPPULLUP_YMIN -//#define ENDSTOPPULLUP_ZMIN -//#define ENDSTOPPULLUP_ZMIN_PROBE + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + //#define ENDSTOPPULLUP_XMAX + //#define ENDSTOPPULLUP_YMAX + //#define ENDSTOPPULLUP_ZMAX + //#define ENDSTOPPULLUP_XMIN + //#define ENDSTOPPULLUP_YMIN + //#define ENDSTOPPULLUP_ZMIN + //#define ENDSTOPPULLUP_ZMIN_PROBE #endif // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). @@ -516,7 +516,7 @@ #define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. +#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe. // Enable this feature if all enabled endstop pins are interrupt-capable. // This will remove the need to poll the interrupt pins, saving many CPU cycles. @@ -529,57 +529,58 @@ // delta speeds must be the same on xyz /** - Default Settings - - These settings can be reset by M502 - - You can set distinct factors for each E stepper, if needed. - If fewer factors are given, the last will apply to the rest. - - Note that if EEPROM is enabled, saved values will override these. -*/ + * Default Settings + * + * These settings can be reset by M502 + * + * You can set distinct factors for each E stepper, if needed. + * If fewer factors are given, the last will apply to the rest. + * + * Note that if EEPROM is enabled, saved values will override these. + */ /** - Default Axis Steps Per Unit (steps/mm) - Override with M92 - X, Y, Z, E0 [, E1[, E2[, E3]]] -*/ + * Default Axis Steps Per Unit (steps/mm) + * Override with M92 + * X, Y, Z, E0 [, E1[, E2[, E3]]] + */ #define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 100, 90 } // default steps per unit for Kossel (GT2, 20 tooth) /** - Default Max Feed Rate (mm/s) - Override with M203 - X, Y, Z, E0 [, E1[, E2[, E3]]] -*/ + * Default Max Feed Rate (mm/s) + * Override with M203 + * X, Y, Z, E0 [, E1[, E2[, E3]]] + */ #define DEFAULT_MAX_FEEDRATE { 200, 200, 200, 200 } /** - Default Max Acceleration (change/s) change = mm/s - (Maximum start speed for accelerated moves) - Override with M201 - X, Y, Z, E0 [, E1[, E2[, E3]]] -*/ + * Default Max Acceleration (change/s) change = mm/s + * (Maximum start speed for accelerated moves) + * Override with M201 + * X, Y, Z, E0 [, E1[, E2[, E3]]] + */ #define DEFAULT_MAX_ACCELERATION { 4000, 4000, 4000, 4000 } /** - Default Acceleration (change/s) change = mm/s - Override with M204 - - M204 P Acceleration - M204 R Retract Acceleration - M204 T Travel Acceleration -*/ + * Default Acceleration (change/s) change = mm/s + * Override with M204 + * + * M204 P Acceleration + * M204 R Retract Acceleration + * M204 T Travel Acceleration + */ #define DEFAULT_ACCELERATION 2500 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts #define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves /** - Default Jerk (mm/s) - - "Jerk" specifies the minimum speed change that requires acceleration. - When changing speed and direction, if the difference is less than the - value set here, it may happen instantaneously. -*/ + * Default Jerk (mm/s) + * Override with M205 X Y Z E + * + * "Jerk" specifies the minimum speed change that requires acceleration. + * When changing speed and direction, if the difference is less than the + * value set here, it may happen instantaneously. + */ #define DEFAULT_XJERK 20.0 #define DEFAULT_YJERK DEFAULT_XJERK #define DEFAULT_ZJERK DEFAULT_YJERK // Must be same as XY for delta @@ -654,46 +655,46 @@ //#define Z_PROBE_ALLEN_KEY #if ENABLED(Z_PROBE_ALLEN_KEY) -// 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, -// if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. - -// Kossel Mini -#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0 -#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS -#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 -#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED - -#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0 -#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS -#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0 -#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10) - -#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 -#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 -#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z -#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED - -#define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20 -// Move the probe into position -#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 -#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0 -#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0 -#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED -// Move the nozzle down further to push the probe into retracted position. -#define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X -#define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y -#define Z_PROBE_ALLEN_KEY_STOW_2_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH) -#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED/10) -// Raise things back up slightly so we don't bump into anything -#define Z_PROBE_ALLEN_KEY_STOW_3_X Z_PROBE_ALLEN_KEY_STOW_2_X -#define Z_PROBE_ALLEN_KEY_STOW_3_Y Z_PROBE_ALLEN_KEY_STOW_2_Y -#define Z_PROBE_ALLEN_KEY_STOW_3_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH) -#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_PROBE_SPEED/2) - -#define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 -#define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 -#define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z -#define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED + // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, + // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. + + // Kossel Mini + #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS + #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED + + #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS + #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10) + + #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 + #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 + #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z + #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED + + #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20 + // Move the probe into position + #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 + #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0 + #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0 + #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED + // Move the nozzle down further to push the probe into retracted position. + #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X + #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y + #define Z_PROBE_ALLEN_KEY_STOW_2_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH) + #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED/10) + // Raise things back up slightly so we don't bump into anything + #define Z_PROBE_ALLEN_KEY_STOW_3_X Z_PROBE_ALLEN_KEY_STOW_2_X + #define Z_PROBE_ALLEN_KEY_STOW_3_Y Z_PROBE_ALLEN_KEY_STOW_2_Y + #define Z_PROBE_ALLEN_KEY_STOW_3_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH) + #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_PROBE_SPEED/2) + + #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 + #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 + #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z + #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED #endif // Z_PROBE_ALLEN_KEY @@ -744,19 +745,19 @@ #define Z_MIN_PROBE_REPEATABILITY_TEST /** - Z probes require clearance when deploying, stowing, and moving between - probe points to avoid hitting the bed and other hardware. - Servo-mounted probes require extra space for the arm to rotate. - Inductive probes need space to keep from triggering early. - - Use these settings to specify the distance (mm) to raise the probe (or - lower the bed). The values set here apply over and above any (negative) - probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD. - Only integer values >= 1 are valid here. - - Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. - But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. -*/ + * Z probes require clearance when deploying, stowing, and moving between + * probe points to avoid hitting the bed and other hardware. + * Servo-mounted probes require extra space for the arm to rotate. + * Inductive probes need space to keep from triggering early. + * + * Use these settings to specify the distance (mm) to raise the probe (or + * lower the bed). The values set here apply over and above any (negative) + * probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD. + * Only integer values >= 1 are valid here. + * + * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. + * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. + */ #define Z_CLEARANCE_DEPLOY_PROBE 50 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points @@ -803,8 +804,8 @@ // @section homing -#define Z_HOMING_HEIGHT 15 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... -// Be sure you have this distance over your Z_MAX_POS in case. +#define Z_HOMING_HEIGHT 15 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... + // Be sure you have this distance over your Z_MAX_POS in case. // ENDSTOP SETTINGS: // Sets direction of endstops when homing; 1=MAX, -1=MIN @@ -826,17 +827,19 @@ #define Y_MAX_POS DELTA_PRINTABLE_RADIUS #define Z_MAX_POS MANUAL_Z_HOME_POS -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament -// RAMPS-based boards use SERVO3_PIN. For other boards you may need to define FIL_RUNOUT_PIN. -// It is assumed that when logic high = filament available -// when logic low = filament ran out +/** + * Filament Runout Sensor + * A mechanical or opto endstop is used to check for the presence of filament. + * + * RAMPS-based boards use SERVO3_PIN. + * For other boards you may need to define FIL_RUNOUT_PIN. + * By default the firmware assumes HIGH = has filament, LOW = ran out + */ +//#define FILAMENT_RUNOUT_SENSOR #if ENABLED(FILAMENT_RUNOUT_SENSOR) -#define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor. -#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. -#define FILAMENT_RUNOUT_SCRIPT "M600" + #define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor. + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" #endif //=========================================================================== @@ -847,23 +850,23 @@ //#define MESH_BED_LEVELING // Enable mesh bed leveling. #if ENABLED(MESH_BED_LEVELING) -#define MESH_INSET 10 // Mesh inset margin on print area -#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. -#define MESH_NUM_Y_POINTS 3 -#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. + #define MESH_INSET 10 // Mesh inset margin on print area + #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. + #define MESH_NUM_Y_POINTS 3 + #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. -#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] + //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] -#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. + //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. -#if ENABLED(MANUAL_BED_LEVELING) -#define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. -#endif // MANUAL_BED_LEVELING + #if ENABLED(MANUAL_BED_LEVELING) + #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. + #endif // MANUAL_BED_LEVELING -// Gradually reduce leveling correction until a set height is reached, -// at which point movement will be level to the machine's XY plane. -// The height can be set with M420 Z -#define ENABLE_LEVELING_FADE_HEIGHT + // Gradually reduce leveling correction until a set height is reached, + // at which point movement will be level to the machine's XY plane. + // The height can be set with M420 Z + #define ENABLE_LEVELING_FADE_HEIGHT #endif // MESH_BED_LEVELING @@ -873,93 +876,92 @@ // @section bedlevel /** - Select one form of Auto Bed Leveling below. - - If you're also using the Probe for Z Homing, it's - highly recommended to enable Z_SAFE_HOMING also! - - - 3POINT - Probe 3 arbitrary points on the bed (that aren't collinear) - You specify the XY coordinates of all 3 points. - The result is a single tilted plane. Best for a flat bed. - - - LINEAR - Probe several points in a grid. - You specify the rectangle and the density of sample points. - The result is a single tilted plane. Best for a flat bed. - - - BILINEAR - Probe several points in a grid. - You specify the rectangle and the density of sample points. - The result is a mesh, best for large or uneven beds. -*/ + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ //#define AUTO_BED_LEVELING_3POINT // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling. //#define AUTO_BED_LEVELING_LINEAR // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling. #define AUTO_BED_LEVELING_BILINEAR // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling. /** - Enable detailed logging of G28, G29, M48, etc. - Turn on with the command 'M111 S32'. - NOTE: Requires a lot of PROGMEM! -*/ + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE #if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. - // Works best with 5 or more points in each dimension. #define ABL_GRID_MAX_POINTS_X 9 #define ABL_GRID_MAX_POINTS_Y ABL_GRID_MAX_POINTS_X -// Set the boundaries for probing (where the probe can reach). -#define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 15) -#define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) -#define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS -#define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) -#define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS + // Set the boundaries for probing (where the probe can reach). + #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 15) + #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS + #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS -// The Z probe minimum outer margin (to validate G29 parameters). -#define MIN_PROBE_EDGE 10 + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 -// Probe along the Y axis, advancing X after each column -//#define PROBE_Y_FIRST + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST -#if ENABLED(AUTO_BED_LEVELING_BILINEAR) + #if ENABLED(AUTO_BED_LEVELING_BILINEAR) -// Gradually reduce leveling correction until a set height is reached, -// at which point movement will be level to the machine's XY plane. -// The height can be set with M420 Z -#define ENABLE_LEVELING_FADE_HEIGHT + // Gradually reduce leveling correction until a set height is reached, + // at which point movement will be level to the machine's XY plane. + // The height can be set with M420 Z + #define ENABLE_LEVELING_FADE_HEIGHT -// -// Experimental Subdivision of the grid by Catmull-Rom method. -// Synthesizes intermediate points to produce a more detailed mesh. -// -//#define ABL_BILINEAR_SUBDIVISION -#if ENABLED(ABL_BILINEAR_SUBDIVISION) -// Number of subdivisions between probe points -#define BILINEAR_SUBDIVISIONS 3 -#endif + // + // Experimental Subdivision of the grid by Catmull-Rom method. + // Synthesizes intermediate points to produce a more detailed mesh. + // + //#define ABL_BILINEAR_SUBDIVISION + #if ENABLED(ABL_BILINEAR_SUBDIVISION) + // Number of subdivisions between probe points + #define BILINEAR_SUBDIVISIONS 3 + #endif -#endif + #endif #elif ENABLED(AUTO_BED_LEVELING_3POINT) -// 3 arbitrary points to probe. -// A simple cross-product is used to estimate the plane of the bed. -#define ABL_PROBE_PT_1_X 15 -#define ABL_PROBE_PT_1_Y 180 -#define ABL_PROBE_PT_2_X 15 -#define ABL_PROBE_PT_2_Y 20 -#define ABL_PROBE_PT_3_X 170 -#define ABL_PROBE_PT_3_Y 20 + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 #endif /** - Commands to execute at the end of G29 probing. - Useful to retract or move the Z probe out of the way. -*/ + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" @@ -982,11 +984,11 @@ // - If stepper drivers time out, it will need X and Y homing again before Z homing. // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). // - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING // To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +//#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) -#define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). -#define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). #endif // Delta only homes to Z @@ -1009,8 +1011,8 @@ #define EEPROM_SETTINGS #if ENABLED(EEPROM_SETTINGS) -// To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: -#define EEPROM_CHITCHAT // Please keep turned on if you can. + // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: + #define EEPROM_CHITCHAT // Please keep turned on if you can. #endif // @@ -1042,11 +1044,11 @@ // Preheat Constants #define PREHEAT_1_TEMP_HOTEND 180 #define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 // // Nozzle Park -- EXPERIMENTAL @@ -1068,8 +1070,8 @@ //#define NOZZLE_PARK_FEATURE #if ENABLED(NOZZLE_PARK_FEATURE) -// Specify a park position as { X, Y, Z } -#define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } + // Specify a park position as { X, Y, Z } + #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } #endif // @@ -1082,13 +1084,13 @@ // // Available list of patterns: // P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. +// material at a fixed bed location. S defines "strokes" i.e. +// back-and-forth movements between the starting and end points. // // P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" // defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example +// number of strokes aka one back-and-forth movement. Zig-zags will +// be performed in whichever dimension is smallest. As an example, // sending "G12 P1 S1 T3" will execute: // // -- @@ -1101,6 +1103,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1109,15 +1115,25 @@ //#define NOZZLE_CLEAN_FEATURE #if ENABLED(NOZZLE_CLEAN_FEATURE) -// Number of pattern repetitions -#define NOZZLE_CLEAN_STROKES 12 + // Default number of pattern repetitions + #define NOZZLE_CLEAN_STROKES 12 + + // Default number of triangles + #define NOZZLE_CLEAN_TRIANGLES 3 -// Specify positions as { X, Y, Z } -#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} -#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Specify positions as { X, Y, Z } + #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} + #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} -// Moves the nozzle to the initial position -#define NOZZLE_CLEAN_GOBACK + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + + // Moves the nozzle to the initial position + #define NOZZLE_CLEAN_GOBACK #endif // @@ -1201,7 +1217,7 @@ // IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! // https://github.com/olikraus/U8glib_Arduino // -#define ULTRA_LCD // Character based +//#define ULTRA_LCD // Character based //#define DOGLCD // Full graphics display // @@ -1244,14 +1260,14 @@ //#define ENCODER_STEPS_PER_MENU_ITEM 5 /** - Encoder Direction Options - - Test your encoder's behavior first with both options disabled. - - Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - Reversed Value Editing only? Enable BOTH options. -*/ + * Encoder Direction Options + * + * Test your encoder's behavior first with both options disabled. + * + * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. + * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. + * Reversed Value Editing only? Enable BOTH options. + */ // // This option reverses the encoder direction everywhere @@ -1450,8 +1466,8 @@ // //#define SAV_3DGLCD #if ENABLED(SAV_3DGLCD) -//#define U8GLIB_SSD1306 -#define U8GLIB_SH1106 + //#define U8GLIB_SSD1306 + #define U8GLIB_SH1106 #endif // @@ -1503,14 +1519,14 @@ // Support for an RGB LED using 3 separate pins with optional PWM //#define RGB_LED #if ENABLED(RGB_LED) -#define RGB_LED_R_PIN 34 -#define RGB_LED_G_PIN 43 -#define RGB_LED_B_PIN 35 + #define RGB_LED_R_PIN 34 + #define RGB_LED_G_PIN 43 + #define RGB_LED_B_PIN 35 #endif /*********************************************************************\ - R/C SERVO support - Sponsored by TrinityLabs, Reworked by codexmas +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas **********************************************************************/ // Number of servos @@ -1522,7 +1538,7 @@ // //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. +// Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle. // 300ms is a good value but you can try less delay. // If the servo can't reach the requested position, increase it. #define SERVO_DELAY 300 @@ -1533,15 +1549,15 @@ //#define DEACTIVATE_SERVOS_AFTER_MOVE /**********************************************************************\ - Support for a filament diameter sensor - Also allows adjustment of diameter at print time (vs at slicing) - Single extruder only at this point (extruder 0) - - Motherboards - 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - 301 - Rambo - uses Analog input 3 - Note may require analog pins to be defined for different motherboards + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards **********************************************************************/ // Uncomment below to enable //#define FILAMENT_WIDTH_SENSOR @@ -1549,17 +1565,17 @@ #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation #if ENABLED(FILAMENT_WIDTH_SENSOR) -#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) -#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) + #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel -#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm -#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm -#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm + #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm + #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) -#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially -//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. -//#define FILAMENT_LCD_DISPLAY + //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. + //#define FILAMENT_LCD_DISPLAY #endif #endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration_adv.h index 9251c7967..386513f99 100644 --- a/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/flsun_kossel_mini/Configuration_adv.h @@ -217,13 +217,12 @@ * Multiple extruders can be assigned to the same pin in which case * the fan will turn on when any selected extruder is above the threshold. */ - #define E0_AUTO_FAN_PIN -1 #define E1_AUTO_FAN_PIN -1 #define E2_AUTO_FAN_PIN -1 #define E3_AUTO_FAN_PIN -1 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed // Define a pin to turn case light on/off //#define CASE_LIGHT_PIN 4 @@ -309,13 +308,13 @@ // Remember: you should set the second extruder x-offset to 0 in your slicer. // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + // Mode 0 (DXC_FULL_CONTROL_MODE): Full control. The slicer has full control over both x-carriages and can achieve optimal travel results + // as long as it supports dual x-carriages. (M605 S0) + // Mode 1 (DXC_AUTO_PARK_MODE) : Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so + // that additional slicer support is not required. (M605 S1) + // Mode 2 (DXC_DUPLICATION_MODE) : Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all + // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at + // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) // This is the default power-up mode which can be later using M605. #define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_FULL_CONTROL_MODE @@ -428,6 +427,9 @@ // On the Info Screen, display XY with one decimal place when possible //#define LCD_DECIMAL_SMALL_XY +// The timeout (in ms) to return to the status screen from sub-menus +//#define LCD_TIMEOUT_TO_STATUS 15000 + #if ENABLED(SDSUPPORT) // Some RAMPS and other boards don't detect when an SD card is inserted. You can work @@ -445,6 +447,42 @@ // using: //#define MENU_ADDAUTOSTART + /** + * Sort SD file listings in alphabetical order. + * + * With this option enabled, items on SD cards will be sorted + * by name for easier navigation. + * + * By default... + * + * - Use the slowest -but safest- method for sorting. + * - Folders are sorted to the top. + * - The sort key is statically allocated. + * - No added G-code (M34) support. + * - 40 item sorting limit. (Items after the first 40 are unsorted.) + * + * SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the + * compiler to calculate the worst-case usage and throw an error if the SRAM + * limit is exceeded. + * + * - SDSORT_USES_RAM provides faster sorting via a static directory buffer. + * - SDSORT_USES_STACK does the same, but uses a local stack-based buffer. + * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!) + * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!) + */ + //#define SDCARD_SORT_ALPHA + + // SD Card Sorting options + #if ENABLED(SDCARD_SORT_ALPHA) + #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). + #define FOLDER_SORTING -1 // -1=above 0=none 1=below + #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 g-code. + #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. + #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) + #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. + #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! + #endif + // Show a progress bar on HD44780 LCDs for SD printing //#define LCD_PROGRESS_BAR @@ -457,6 +495,8 @@ #define PROGRESS_MSG_EXPIRE 0 // Enable this to show messages for MSG_TIME then hide them //#define PROGRESS_MSG_ONCE + // Add a menu item to test the progress bar: + //#define LCD_PROGRESS_BAR_TEST #endif // This allows hosts to request long names for files and folders with M33 @@ -469,8 +509,25 @@ #endif // SDSUPPORT -// Some additional options are available for graphical displays: +/** + * Additional options for Graphical Displays + * + * Use the optimizations here to improve printing performance, + * which can be adversely affected by graphical display drawing, + * especially when doing several short moves, and when printing + * on DELTA and SCARA machines. + * + * Some of these options may result in the display lagging behind + * controller events, as there is a trade-off between reliable + * printing performance versus fast display updates. + */ #if ENABLED(DOGLCD) + // Enable to save many cycles by drawing a hollow frame on the Info Screen + #define XYZ_HOLLOW_FRAME + + // Enable to save many cycles by drawing a hollow frame on Menu Screens + #define MENU_HOLLOW_FRAME + // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM. // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. //#define USE_BIG_EDIT_FONT @@ -510,36 +567,6 @@ #define BABYSTEP_MULTIPLICATOR 1 //faster movements #endif -// -// Ensure Smooth Moves -// -// Enable this option to prevent the machine from stuttering when printing multiple short segments. -// This feature uses two strategies to eliminate stuttering: -// -// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets -// completely drained. When this happens pauses are introduced between short segments, and print moves -// will become jerky until a longer segment provides enough time for the buffer to be filled again. -// This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue -// by pausing the LCD until there's enough time to safely update. -// -// NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive. -// Enable ALWAYS_ALLOW_MENU to keep the controller responsive. -// -// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main -// loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to -// interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from -// draining. -// -#define ENSURE_SMOOTH_MOVES -#if ENABLED(ENSURE_SMOOTH_MOVES) - //#define ALWAYS_ALLOW_MENU // If enabled, the menu will always be responsive. - // WARNING: Menu navigation during short moves may cause stuttering! - #define LCD_UPDATE_THRESHOLD 135 // (ms) Minimum duration for the current segment to allow an LCD update. - // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER). - // You may try to lower this value until you printer starts stuttering again as if ENSURE_SMOOTH_MOVES is disabled. - #define MIN_BLOCK_TIME 6 // (ms) Minimum duration of a single block. You shouldn't need to modify this. -#endif - // @section extruder // extruder advance constant (s2/mm3) @@ -561,19 +588,37 @@ * * Assumption: advance = k * (delta velocity) * K=0 means advance disabled. - * To get a rough start value for calibration, measure your "free filament length" - * between the hobbed bolt and the nozzle (in cm). Use the formula below that fits - * your setup, where L is the "free filament length": - * - * Filament diameter | 1.75mm | 3.0mm | - * ----------------------------|-----------|------------| - * Stiff filament (PLA) | K=47*L/10 | K=139*L/10 | - * Softer filament (ABS, nGen) | K=88*L/10 | K=260*L/10 | + * See Marlin documentation for calibration instructions. */ //#define LIN_ADVANCE #if ENABLED(LIN_ADVANCE) #define LIN_ADVANCE_K 75 + + /** + * Some Slicers produce Gcode with randomly jumping extrusion widths occasionally. + * For example within a 0.4mm perimeter it may produce a single segment of 0.05mm width. + * While this is harmless for normal printing (the fluid nature of the filament will + * close this very, very tiny gap), it throws off the LIN_ADVANCE pressure adaption. + * + * For this case LIN_ADVANCE_E_D_RATIO can be used to set the extrusion:distance ratio + * to a fixed value. Note that using a fixed ratio will lead to wrong nozzle pressures + * if the slicer is using variable widths or layer heights within one print! + * + * This option sets the default E:D ratio at startup. Use `M905` to override this value. + * + * Example: `M905 W0.4 H0.2 D1.75`, where: + * - W is the extrusion width in mm + * - H is the layer height in mm + * - D is the filament diameter in mm + * + * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves. + * + * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode. + * Cura (as of this writing) may produce Gcode incompatible with the automatic mode. + */ + #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI) + // Example: 0.4 * 0.2 / ((1.75 / 2) ^ 2 * PI) = 0.033260135 #endif // @section leveling @@ -680,33 +725,42 @@ #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif +/** + * Filament Change + * Experimental filament change support. + * Adds the GCode M600 for initiating filament change. + * + * Requires an LCD display. + * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. + */ +//#define FILAMENT_CHANGE_FEATURE +#if ENABLED(FILAMENT_CHANGE_FEATURE) + #define FILAMENT_CHANGE_X_POS 3 // X position of hotend + #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend + #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) + #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) + #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) + #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s + #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm + // It is a short retract used immediately after print interrupt before move to filament exchange position + #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast + #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm + // Longer length for bowden printers to unload filament from whole bowden tube, + // shorter length for printers without bowden to unload filament from extruder only, + // 0 to disable unloading for manual unloading + #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast + #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm + // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, + // Short or zero length for printers without bowden where loading is not used + #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate + #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend, + // 0 to disable for manual extrusion + // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, + // or until outcoming filament color is not clear for filament color change + #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L // Turn off nozzle if user doesn't change filament within this time limit in seconds + #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5L // Number of alert beeps before printer goes quiet + #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change + // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. #endif /******************************************************************************\ @@ -1101,4 +1155,29 @@ */ //#define EXTENDED_CAPABILITIES_REPORT +/** + * Double-click the Encoder button on the Status Screen for Z Babystepping. + */ +//#define DOUBLECLICK_FOR_Z_BABYSTEPPING +#define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. + // Note: You may need to add extra time to mitigate controller latency. + +/** + * Volumetric extrusion default state + * Activate to make volumetric extrusion the default method, + * with DEFAULT_NOMINAL_FILAMENT_DIA as the default diameter. + * + * M200 D0 to disable, M200 Dn to set a new diameter. + */ +//#define VOLUMETRIC_DEFAULT_ON + +/** + * Enable this option for a leaner build of Marlin that removes all + * workspace offsets, simplifying coordinate transformations, leveling, etc. + * + * - M206 and M428 are disabled. + * - G92 will revert to its behavior from Marlin 1.0. + */ +//#define NO_WORKSPACE_OFFSETS + #endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 97108ebf6..98b17324c 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1087,6 +1087,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1097,7 +1101,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1105,6 +1109,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 39a8dcfb9..bce910de7 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1090,6 +1090,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1100,7 +1104,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1108,6 +1112,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 2bf9aa34a..437b9bcfe 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -100,7 +100,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1089,6 +1089,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1099,7 +1103,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1107,6 +1111,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index 6fd3a1aae..c8a28c42d 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -89,7 +89,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1093,6 +1093,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1103,7 +1107,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1111,6 +1115,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 9503c1122..bc95a78c4 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -1003,6 +1003,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1013,7 +1017,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1021,6 +1025,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index f2607066c..e5c43a832 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -96,7 +96,7 @@ // // Marlin now allow you to have a vendor boot image to be displayed on machine // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. +// custom boot image and then the default Marlin boot image is shown. // // We suggest for you to take advantage of this new feature and keep the Marlin // boot image unmodified. For an example have a look at the bq Hephestos 2 @@ -996,6 +996,10 @@ // |________|_________|_________| // T1 T2 T3 // +// P2: This starts a circular pattern with circle with middle in +// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S. +// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT. +// // Caveats: End point Z should use the same value as Start point Z. // // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments @@ -1006,7 +1010,7 @@ #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 - + // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 @@ -1014,6 +1018,13 @@ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} + // Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 + // Circular pattern circle fragments number + #define NOZZLE_CLEAN_CIRCLE_FN 10 + // Middle point of circle + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + // Moves the nozzle to the initial position #define NOZZLE_CLEAN_GOBACK #endif diff --git a/Marlin/nozzle.cpp b/Marlin/nozzle.cpp new file mode 100644 index 000000000..92f697df1 --- /dev/null +++ b/Marlin/nozzle.cpp @@ -0,0 +1,236 @@ +#include "nozzle.h" + +#include "Marlin.h" +#include "point_t.h" + +/** + * @brief Stroke clean pattern + * @details Wipes the nozzle back and forth in a linear movement + * + * @param start point_t defining the starting point + * @param end point_t defining the ending point + * @param strokes number of strokes to execute + */ +void Nozzle::stroke( + __attribute__((unused)) point_t const &start, + __attribute__((unused)) point_t const &end, + __attribute__((unused)) uint8_t const &strokes +) { + #if ENABLED(NOZZLE_CLEAN_FEATURE) + + #if ENABLED(NOZZLE_CLEAN_GOBACK) + // Store the current coords + point_t const initial = { + current_position[X_AXIS], + current_position[Y_AXIS], + current_position[Z_AXIS], + current_position[E_AXIS] + }; + #endif // NOZZLE_CLEAN_GOBACK + + // Move to the starting point + do_blocking_move_to_xy(start.x, start.y); + do_blocking_move_to_z(start.z); + + // Start the stroke pattern + for (uint8_t i = 0; i < (strokes >>1); i++) { + do_blocking_move_to_xy(end.x, end.y); + do_blocking_move_to_xy(start.x, start.y); + } + + #if ENABLED(NOZZLE_CLEAN_GOBACK) + // Move the nozzle to the initial point + do_blocking_move_to(initial.x, initial.y, initial.z); + #endif // NOZZLE_CLEAN_GOBACK + + #endif // NOZZLE_CLEAN_FEATURE +} + +/** + * @brief Zig-zag clean pattern + * @details Apply a zig-zag cleanning pattern + * + * @param start point_t defining the starting point + * @param end point_t defining the ending point + * @param strokes number of strokes to execute + * @param objects number of objects to create + */ +void Nozzle::zigzag( + __attribute__((unused)) point_t const &start, + __attribute__((unused)) point_t const &end, + __attribute__((unused)) uint8_t const &strokes, + __attribute__((unused)) uint8_t const &objects +) { + #if ENABLED(NOZZLE_CLEAN_FEATURE) + const float A = nozzle_clean_horizontal ? nozzle_clean_height : nozzle_clean_length, // [twice the] Amplitude + P = (nozzle_clean_horizontal ? nozzle_clean_length : nozzle_clean_height) / (objects << 1); // Period + + // Don't allow impossible triangles + if (A <= 0.0f || P <= 0.0f ) return; + + #if ENABLED(NOZZLE_CLEAN_GOBACK) + // Store the current coords + point_t const initial = { + current_position[X_AXIS], + current_position[Y_AXIS], + current_position[Z_AXIS], + current_position[E_AXIS] + }; + #endif // NOZZLE_CLEAN_GOBACK + + for (uint8_t j = 0; j < strokes; j++) { + for (uint8_t i = 0; i < (objects << 1); i++) { + float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); + float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); + + do_blocking_move_to_xy(x, y); + if (i == 0) do_blocking_move_to_z(start.z); + } + + for (int i = (objects << 1); i > -1; i--) { + float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); + float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); + + do_blocking_move_to_xy(x, y); + } + } + + #if ENABLED(NOZZLE_CLEAN_GOBACK) + // Move the nozzle to the initial point + do_blocking_move_to_z(initial.z); + do_blocking_move_to_xy(initial.x, initial.y); + #endif // NOZZLE_CLEAN_GOBACK + + #endif // NOZZLE_CLEAN_FEATURE +} + + +/** + * @brief Circular clean pattern + * @details Apply a circular cleaning pattern + * + * @param start point_t defining the middle of circle + * @param strokes number of strokes to execute + * @param radius radius of circle + */ +void Nozzle::circle( + __attribute__((unused)) point_t const &start, + __attribute__((unused)) point_t const &middle, + __attribute__((unused)) uint8_t const &strokes, + __attribute__((unused)) float const &radius +) { + #if ENABLED(NOZZLE_CLEAN_FEATURE) + if (strokes == 0) return; + + #if ENABLED(NOZZLE_CLEAN_GOBACK) + // Store the current coords + point_t const initial = { + current_position[X_AXIS], + current_position[Y_AXIS], + current_position[Z_AXIS], + current_position[E_AXIS] + }; + #endif // NOZZLE_CLEAN_GOBACK + + if (start.z <= current_position[Z_AXIS]) { + // Order of movement is pretty darn important here + do_blocking_move_to_xy(start.x, start.y); + do_blocking_move_to_z(start.z); + } else { + do_blocking_move_to_z(start.z); + do_blocking_move_to_xy(start.x, start.y); + } + + float x, y; + for (uint8_t s = 0; s < strokes; s++) { + for (uint8_t i = 0; i < NOZZLE_CLEAN_CIRCLE_FN; i++) { + x = middle.x + sin((M_2_PI / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius; + y = middle.y + cos((M_2_PI / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius; + + do_blocking_move_to_xy(x, y); + } + } + + // Let's be safe + do_blocking_move_to_xy(start.x, start.y); + + #if ENABLED(NOZZLE_CLEAN_GOBACK) + // Move the nozzle to the initial point + if (start.z <= initial.z) { + // As above order is important + do_blocking_move_to_z(initial.z); + do_blocking_move_to_xy(initial.x, initial.y); + } else { + do_blocking_move_to_xy(initial.x, initial.y); + do_blocking_move_to_z(initial.z); + } + #endif // NOZZLE_CLEAN_GOBACK + + #endif // NOZZLE_CLEAN_FEATURE +} + +/** + * @brief Clean the nozzle + * @details Starts the selected clean procedure pattern + * + * @param pattern one of the available patterns + * @param argument depends on the cleaning pattern + */ +void Nozzle::clean( + __attribute__((unused)) uint8_t const &pattern, + __attribute__((unused)) uint8_t const &strokes, + __attribute__((unused)) float const &radius, + __attribute__((unused)) uint8_t const &objects +) { + #if ENABLED(NOZZLE_CLEAN_FEATURE) + #if ENABLED(DELTA) + if (current_position[Z_AXIS] > delta_clip_start_height) + do_blocking_move_to_z(delta_clip_start_height); + #endif + switch (pattern) { + case 1: + Nozzle::zigzag( + NOZZLE_CLEAN_START_POINT, + NOZZLE_CLEAN_END_POINT, strokes, objects); + break; + + case 2: + Nozzle::circle( + NOZZLE_CLEAN_START_POINT, + NOZZLE_CLEAN_CIRCLE_MIDDLE, strokes, radius); + break; + + default: + Nozzle::stroke( + NOZZLE_CLEAN_START_POINT, + NOZZLE_CLEAN_END_POINT, strokes); + } + #endif // NOZZLE_CLEAN_FEATURE +} + +void Nozzle::park( + __attribute__((unused)) uint8_t const &z_action +) { + #if ENABLED(NOZZLE_PARK_FEATURE) + float const z = current_position[Z_AXIS]; + point_t const park = NOZZLE_PARK_POINT; + + switch(z_action) { + case 1: // force Z-park height + do_blocking_move_to_z(park.z); + break; + + case 2: // Raise by Z-park height + do_blocking_move_to_z( + (z + park.z > Z_MAX_POS) ? Z_MAX_POS : z + park.z); + break; + + default: // Raise to Z-park height if lower + if (current_position[Z_AXIS] < park.z) + do_blocking_move_to_z(park.z); + } + + do_blocking_move_to_xy(park.x, park.y); + + #endif // NOZZLE_PARK_FEATURE +} diff --git a/Marlin/nozzle.h b/Marlin/nozzle.h index 14423adfb..f98bc40db 100644 --- a/Marlin/nozzle.h +++ b/Marlin/nozzle.h @@ -53,40 +53,11 @@ class Nozzle { __attribute__((unused)) point_t const &start, __attribute__((unused)) point_t const &end, __attribute__((unused)) uint8_t const &strokes - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_CLEAN_FEATURE) - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Store the current coords - point_t const initial = { - current_position[X_AXIS], - current_position[Y_AXIS], - current_position[Z_AXIS], - current_position[E_AXIS] - }; - #endif // NOZZLE_CLEAN_GOBACK - - // Move to the starting point - do_blocking_move_to_xy(start.x, start.y); - do_blocking_move_to_z(start.z); - - // Start the stroke pattern - for (uint8_t i = 0; i < (strokes >>1); i++) { - do_blocking_move_to_xy(end.x, end.y); - do_blocking_move_to_xy(start.x, start.y); - } - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Move the nozzle to the initial point - do_blocking_move_to(initial.x, initial.y, initial.z); - #endif // NOZZLE_CLEAN_GOBACK - - #endif // NOZZLE_CLEAN_FEATURE - } + ) __attribute__((optimize ("Os"))); /** * @brief Zig-zag clean pattern - * @details Apply a zig-zag cleanning pattern + * @details Apply a zig-zag cleaning pattern * * @param start point_t defining the starting point * @param end point_t defining the ending point @@ -98,49 +69,22 @@ class Nozzle { __attribute__((unused)) point_t const &end, __attribute__((unused)) uint8_t const &strokes, __attribute__((unused)) uint8_t const &objects - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_CLEAN_FEATURE) - float A = nozzle_clean_horizontal ? nozzle_clean_height : nozzle_clean_length; // [twice the] Amplitude - float P = ( nozzle_clean_horizontal ? nozzle_clean_length : nozzle_clean_height ) / (objects << 1); // Period - - // Don't allow impossible triangles - if (A <= 0.0f || P <= 0.0f ) return; - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Store the current coords - point_t const initial = { - current_position[X_AXIS], - current_position[Y_AXIS], - current_position[Z_AXIS], - current_position[E_AXIS] - }; - #endif // NOZZLE_CLEAN_GOBACK - - for (uint8_t j = 0; j < strokes; j++) { - for (uint8_t i = 0; i < (objects << 1); i++) { - float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); - float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); - - do_blocking_move_to_xy(x, y); - if (i == 0) do_blocking_move_to_z(start.z); - } - - for (int i = (objects << 1); i > -1; i--) { - float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); - float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) ); - - do_blocking_move_to_xy(x, y); - } - } - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Move the nozzle to the initial point - do_blocking_move_to_z(initial.z); - do_blocking_move_to_xy(initial.x, initial.y); - #endif // NOZZLE_CLEAN_GOBACK + ) __attribute__((optimize ("Os"))); - #endif // NOZZLE_CLEAN_FEATURE - } + /** + * @brief Circular clean pattern + * @details Apply a circular cleaning pattern + * + * @param start point_t defining the middle of circle + * @param strokes number of strokes to execute + * @param radius radius of circle + */ + static void circle( + __attribute__((unused)) point_t const &start, + __attribute__((unused)) point_t const &middle, + __attribute__((unused)) uint8_t const &strokes, + __attribute__((unused)) float const &radius + ) __attribute__((optimize ("Os"))); public: /** @@ -153,54 +97,13 @@ class Nozzle { static void clean( __attribute__((unused)) uint8_t const &pattern, __attribute__((unused)) uint8_t const &strokes, + __attribute__((unused)) float const &radius, __attribute__((unused)) uint8_t const &objects = 0 - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_CLEAN_FEATURE) - #if ENABLED(DELTA) - if (current_position[Z_AXIS] > delta_clip_start_height) - do_blocking_move_to_z(delta_clip_start_height); - #endif - switch (pattern) { - case 1: - Nozzle::zigzag( - NOZZLE_CLEAN_START_POINT, - NOZZLE_CLEAN_END_POINT, strokes, objects); - break; - - default: - Nozzle::stroke( - NOZZLE_CLEAN_START_POINT, - NOZZLE_CLEAN_END_POINT, strokes); - } - #endif // NOZZLE_CLEAN_FEATURE - } + ) __attribute__((optimize ("Os"))); static void park( __attribute__((unused)) uint8_t const &z_action - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_PARK_FEATURE) - float const z = current_position[Z_AXIS]; - point_t const park = NOZZLE_PARK_POINT; - - switch(z_action) { - case 1: // force Z-park height - do_blocking_move_to_z(park.z); - break; - - case 2: // Raise by Z-park height - do_blocking_move_to_z( - (z + park.z > Z_MAX_POS) ? Z_MAX_POS : z + park.z); - break; - - default: // Raise to Z-park height if lower - if (current_position[Z_AXIS] < park.z) - do_blocking_move_to_z(park.z); - } - - do_blocking_move_to_xy(park.x, park.y); - - #endif // NOZZLE_PARK_FEATURE - } + ) __attribute__((optimize ("Os"))); }; #endif