Browse Source

Merge pull request #3808 from thinkyhead/rc_singlenozzle

SINGLENOZZLE
pull/1/head
Scott Lahteine 9 years ago
parent
commit
89e630b2fb
  1. 10
      Marlin/Conditionals.h
  2. 3
      Marlin/Configuration.h
  3. 4
      Marlin/SanityCheck.h
  4. 3
      Marlin/example_configurations/Felix/Configuration.h
  5. 3
      Marlin/example_configurations/Felix/DUAL/Configuration.h
  6. 3
      Marlin/example_configurations/Hephestos/Configuration.h
  7. 3
      Marlin/example_configurations/Hephestos_2/Configuration.h
  8. 3
      Marlin/example_configurations/K8200/Configuration.h
  9. 3
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  10. 3
      Marlin/example_configurations/RigidBot/Configuration.h
  11. 3
      Marlin/example_configurations/SCARA/Configuration.h
  12. 3
      Marlin/example_configurations/TAZ4/Configuration.h
  13. 3
      Marlin/example_configurations/WITBOX/Configuration.h
  14. 3
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  15. 3
      Marlin/example_configurations/delta/biv2.5/Configuration.h
  16. 3
      Marlin/example_configurations/delta/generic/Configuration.h
  17. 3
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  18. 3
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  19. 3
      Marlin/example_configurations/delta/kossel_xl/Configuration.h
  20. 3
      Marlin/example_configurations/makibox/Configuration.h
  21. 3
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  22. 22
      Marlin/temperature.cpp

10
Marlin/Conditionals.h

@ -539,6 +539,16 @@
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1) #define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1)
/**
* With SINGLENOZZLE all "extruders" are in the same place
*/
#if ENABLED(SINGLENOZZLE)
#undef EXTRUDER_OFFSET_X
#undef EXTRUDER_OFFSET_Y
#define EXTRUDER_OFFSET_X { 0 }
#define EXTRUDER_OFFSET_Y { 0 }
#endif
/** /**
* Z_DUAL_ENDSTOPS endstop reassignment * Z_DUAL_ENDSTOPS endstop reassignment
*/ */

3
Marlin/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

4
Marlin/SanityCheck.h

@ -149,7 +149,9 @@
#error "EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS." #error "EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS."
#endif #endif
#endif // EXTRUDERS > 1 #elif ENABLED(SINGLENOZZLE)
#error "SINGLENOZZLE requires 2 or more EXTRUDERS."
#endif
/** /**
* Limited number of servos * Limited number of servos

3
Marlin/example_configurations/Felix/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/Felix/DUAL/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 2 #define EXTRUDERS 2
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/Hephestos/Configuration.h

@ -123,6 +123,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/Hephestos_2/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/K8200/Configuration.h

@ -127,6 +127,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/RigidBot/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 // Single extruder. Set to 2 for dual extruders #define EXTRUDERS 1 // Single extruder. Set to 2 for dual extruders
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/SCARA/Configuration.h

@ -145,6 +145,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/TAZ4/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/WITBOX/Configuration.h

@ -123,6 +123,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/adafruit/ST7565/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/delta/biv2.5/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 2 #define EXTRUDERS 2
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/delta/generic/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/delta/kossel_mini/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/delta/kossel_pro/Configuration.h

@ -126,6 +126,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/delta/kossel_xl/Configuration.h

@ -113,6 +113,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/makibox/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

3
Marlin/example_configurations/tvrrug/Round2/Configuration.h

@ -120,6 +120,9 @@
// :[1,2,3,4] // :[1,2,3,4]
#define EXTRUDERS 1 #define EXTRUDERS 1
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.

22
Marlin/temperature.cpp

@ -417,19 +417,29 @@ float Temperature::get_pid_output(int e) {
pid_output = pTerm[e] + iTerm[e] - dTerm[e]; pid_output = pTerm[e] + iTerm[e] - dTerm[e];
#if ENABLED(SINGLENOZZLE)
#define _NOZZLE_TEST true
#define _NOZZLE_EXTRUDER active_extruder
#define _CTERM_INDEX 0
#else
#define _NOZZLE_TEST e == active_extruder
#define _NOZZLE_EXTRUDER e
#define _CTERM_INDEX e
#endif
#if ENABLED(PID_ADD_EXTRUSION_RATE) #if ENABLED(PID_ADD_EXTRUSION_RATE)
cTerm[e] = 0; cTerm[_CTERM_INDEX] = 0;
if (e == active_extruder) { if (_NOZZLE_TEST) {
long e_position = stepper.position(E_AXIS); long e_position = stepper.position(E_AXIS);
if (e_position > last_position[e]) { if (e_position > last_position[_NOZZLE_EXTRUDER]) {
lpq[lpq_ptr++] = e_position - last_position[e]; lpq[lpq_ptr++] = e_position - last_position[_NOZZLE_EXTRUDER];
last_position[e] = e_position; last_position[_NOZZLE_EXTRUDER] = e_position;
} }
else { else {
lpq[lpq_ptr++] = 0; lpq[lpq_ptr++] = 0;
} }
if (lpq_ptr >= lpq_len) lpq_ptr = 0; if (lpq_ptr >= lpq_len) lpq_ptr = 0;
cTerm[e] = (lpq[lpq_ptr] / planner.axis_steps_per_unit[E_AXIS]) * PID_PARAM(Kc, e); cTerm[_CTERM_INDEX] = (lpq[lpq_ptr] / planner.axis_steps_per_unit[E_AXIS]) * PID_PARAM(Kc, e);
pid_output += cTerm[e]; pid_output += cTerm[e];
} }
#endif //PID_ADD_EXTRUSION_RATE #endif //PID_ADD_EXTRUSION_RATE

Loading…
Cancel
Save