This commit is contained in:
dekutree64 2026-03-15 19:32:46 -05:00 committed by GitHub
commit 3ebc35dd98
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 129 additions and 40 deletions

View file

@ -1090,38 +1090,82 @@
* Mostly Printed SCARA is an open source design by Tyler Williams. See:
* https://www.thingiverse.com/thing:2487048
* https://www.thingiverse.com/thing:1241491
*
* Merged into STANDARD_SCARA + crosstalk/elbow dir settings added by dekutree64 in Mar, 2026.
* Positive angles rotate counterclockwise when looking down from above.
* Theta is the shoulder angle. 0 degrees points along positive cartesian X axis.
* Psi is elbow bend. 0° is straight, ±180° is completely folded (right-handed positive, left-handed negative)
*/
//#define MORGAN_SCARA
#define MP_SCARA
#if ANY(MORGAN_SCARA, MP_SCARA)
//#define STANDARD_SCARA // Typical SCARA arm with two segments in series
// Note: Some arms such as Reprap Morgan use a parallellogram linkage to convey the
// elbow motion, but are kinematically equivalent to serial SCARA.
//#define MORGAN_SCARA // Preset of STANDARD_SCARA for Reprap Morgan
#define MP_SCARA // Preset of STANDARD_SCARA for Mostly Printed SCARA
#if MANY(MP_SCARA, MORGAN_SCARA)
#error "Select only one SCARA preset."
#endif
#if ENABLED(MORGAN_SCARA)
#define STANDARD_SCARA
#define DEFAULT_SEGMENTS_PER_SECOND 200
#define SCARA_LINKAGE_1 150 // (mm)
#define SCARA_LINKAGE_2 150 // (mm)
#define SCARA_OFFSET_X 100 // (mm)
#define SCARA_OFFSET_Y -56 // (mm)
#define SCARA_HOME_THETA (90+10) // (degrees)
#define SCARA_HOME_PSI (180-20) // (degrees)
#define MIDDLE_DEAD_ZONE_R 50 // (mm)
#define SCARA_ELBOW_DIR 1
#define SCARA_CROSSTALK_FACTOR 1
#define QUICKHOME
#elif ENABLED(MP_SCARA)
#define STANDARD_SCARA
#define DEFAULT_SEGMENTS_PER_SECOND 200
#define SCARA_LINKAGE_1 98.5 // (mm)
#define SCARA_LINKAGE_2 100 // (mm)
#define SCARA_OFFSET_X 0 // (mm)
#define SCARA_OFFSET_Y -120 // (mm)
#define SCARA_HOME_THETA -20 // (degrees)
#define SCARA_HOME_PSI 0 // (degrees)
#define MIDDLE_DEAD_ZONE_R 50 // (mm)
#define SCARA_ELBOW_DIR 1
#define SCARA_CROSSTALK_FACTOR 1
#define BED_CENTER_AT_0_0
#define QUICKHOME
#elif ENABLED(STANDARD_SCARA) // Custom configuration
// If movement is choppy try lowering this value
#define DEFAULT_SEGMENTS_PER_SECOND 200
// Length of inner and outer support arms. Measure arm lengths precisely.
#define SCARA_LINKAGE_1 98.41 // (mm)
#define SCARA_LINKAGE_2 100.66 // (mm)
#define SCARA_LINKAGE_1 135 // (mm)
#define SCARA_LINKAGE_2 135 // (mm)
// SCARA tower offset (position of Tower relative to bed zero position)
// SCARA tower offset (position of shoulder axis relative to bed zero position)
// This needs to be reasonably accurate as it defines the printbed position in the SCARA space.
#define SCARA_OFFSET_X 0 // (mm)
#define SCARA_OFFSET_Y 0 // (mm)
#define SCARA_OFFSET_X 0 // (mm)
#define SCARA_OFFSET_Y -150 // (mm)
#if ENABLED(MORGAN_SCARA)
// Radius of unreachable area near shoulder axis
#define MIDDLE_DEAD_ZONE_R 0 // (mm)
//#define DEBUG_SCARA_KINEMATICS
#define FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly
// Direction of elbow bend. 1 = right-handed (counterclockwise), -1 = left-handed (clockwise)
#define SCARA_ELBOW_DIR 1
// Radius around the center where the arm cannot reach
#define MIDDLE_DEAD_ZONE_R 0 // (mm)
#elif ENABLED(MP_SCARA)
#define SCARA_OFFSET_THETA1 12 // degrees
#define SCARA_OFFSET_THETA2 131 // degrees
#endif
// This defines how shoulder movement affects the distal arm angle. Common values:
// 0.0 if distal arm retains its angle relative to proximal arm (e.g. if elbow motor rides on proximal arm)
// 1.0 if distal arm retains its angle relative to cartesian X axis (e.g. Morgan and MPSCARA)
// A two-stage reduction with an intermediate pulley on the shoulder axis has crosstalk =
// intermediate_pulley_teeth/elbow_pulley_teeth (first reduction stage does not affect crosstalk)
#define SCARA_CROSSTALK_FACTOR (40.0/60.0)
// Shoulder and elbow angles when in home position. If left undefined, cartesian home is used and
// angles are calculated by inverse kinematics (note: M665 home offsets are still angles)
#define SCARA_HOME_THETA -40
#define SCARA_HOME_PSI 160
#endif
// @section tpara

View file

@ -1090,37 +1090,82 @@
* Mostly Printed SCARA is an open source design by Tyler Williams. See:
* https://www.thingiverse.com/thing:2487048
* https://www.thingiverse.com/thing:1241491
*
* Merged into STANDARD_SCARA + crosstalk/elbow dir settings added by dekutree64 in Mar, 2026.
* Positive angles rotate counterclockwise when looking down from above.
* Theta is the shoulder angle. 0 degrees points along positive cartesian X axis.
* Psi is elbow bend. 0° is straight, ±180° is completely folded (right-handed positive, left-handed negative)
*/
#define MORGAN_SCARA
//#define MP_SCARA
#if ANY(MORGAN_SCARA, MP_SCARA)
//#define STANDARD_SCARA // Typical SCARA arm with two segments in series
// Note: Some arms such as Reprap Morgan use a parallellogram linkage to convey the
// elbow motion, but are kinematically equivalent to serial SCARA.
#define MORGAN_SCARA // Preset of STANDARD_SCARA for Reprap Morgan
//#define MP_SCARA // Preset of STANDARD_SCARA for Mostly Printed SCARA
#if MANY(MP_SCARA, MORGAN_SCARA)
#error "Select only one SCARA preset."
#endif
#if ENABLED(MORGAN_SCARA)
#define STANDARD_SCARA
#define DEFAULT_SEGMENTS_PER_SECOND 200
#define SCARA_LINKAGE_1 150 // (mm)
#define SCARA_LINKAGE_2 150 // (mm)
#define SCARA_OFFSET_X 100 // (mm)
#define SCARA_OFFSET_Y -56 // (mm)
#define SCARA_HOME_THETA (90+10) // (degrees)
#define SCARA_HOME_PSI (180-20) // (degrees)
#define MIDDLE_DEAD_ZONE_R 50 // (mm)
#define SCARA_ELBOW_DIR 1
#define SCARA_CROSSTALK_FACTOR 1
#define QUICKHOME
#elif ENABLED(MP_SCARA)
#define STANDARD_SCARA
#define DEFAULT_SEGMENTS_PER_SECOND 200
#define SCARA_LINKAGE_1 98.5 // (mm)
#define SCARA_LINKAGE_2 100 // (mm)
#define SCARA_OFFSET_X 0 // (mm)
#define SCARA_OFFSET_Y -120 // (mm)
#define SCARA_HOME_THETA -20 // (degrees)
#define SCARA_HOME_PSI 0 // (degrees)
#define MIDDLE_DEAD_ZONE_R 50 // (mm)
#define SCARA_ELBOW_DIR 1
#define SCARA_CROSSTALK_FACTOR 1
#define BED_CENTER_AT_0_0
#define QUICKHOME
#elif ENABLED(STANDARD_SCARA) // Custom configuration
// If movement is choppy try lowering this value
#define DEFAULT_SEGMENTS_PER_SECOND 200
// Length of inner and outer support arms. Measure arm lengths precisely.
#define SCARA_LINKAGE_1 150 // (mm)
#define SCARA_LINKAGE_2 150 // (mm)
#define SCARA_LINKAGE_1 135 // (mm)
#define SCARA_LINKAGE_2 135 // (mm)
// SCARA tower offset (position of Tower relative to bed zero position)
// SCARA tower offset (position of shoulder axis relative to bed zero position)
// This needs to be reasonably accurate as it defines the printbed position in the SCARA space.
#define SCARA_OFFSET_X 100 // (mm)
#define SCARA_OFFSET_Y -56 // (mm)
#define SCARA_OFFSET_X 0 // (mm)
#define SCARA_OFFSET_Y -150 // (mm)
#if ENABLED(MORGAN_SCARA)
// Radius of unreachable area near shoulder axis
#define MIDDLE_DEAD_ZONE_R 0 // (mm)
//#define DEBUG_SCARA_KINEMATICS
#define FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly
// Direction of elbow bend. 1 = right-handed (counterclockwise), -1 = left-handed (clockwise)
#define SCARA_ELBOW_DIR 1
// Radius around the center where the arm cannot reach
#define MIDDLE_DEAD_ZONE_R 0 // (mm)
#elif ENABLED(MP_SCARA)
#define SCARA_OFFSET_THETA1 12 // degrees
#define SCARA_OFFSET_THETA2 131 // degrees
#endif
// This defines how shoulder movement affects the distal arm angle. Common values:
// 0.0 if distal arm retains its angle relative to proximal arm (e.g. if elbow motor rides on proximal arm)
// 1.0 if distal arm retains its angle relative to cartesian X axis (e.g. Morgan and MPSCARA)
// A two-stage reduction with an intermediate pulley on the shoulder axis has crosstalk =
// intermediate_pulley_teeth/elbow_pulley_teeth (first reduction stage does not affect crosstalk)
#define SCARA_CROSSTALK_FACTOR (40.0/60.0)
// Shoulder and elbow angles when in home position. If left undefined, cartesian home is used and
// angles are calculated by inverse kinematics (note: M665 home offsets are still angles)
#define SCARA_HOME_THETA -40
#define SCARA_HOME_PSI 160
#endif
// @section tpara