I've updated my old 19v M2 with RAMBo rev 1.3 with the latest Marlin firmware, currently v2.1.2.5. It works fine with this config. My focus has been on getting the baseline working as it was with the original firmware, but I've started including some of the new features, though some need to be enabled in gcode. (I've kep LIN_ADVANCE at 0, and I have not done anything with input shaping yet, though perhaps the Y axis is the most plausible candidate.)
Code: Select all
diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 0e22a1a0ab..74e6898102 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -61,7 +61,11 @@
// @section info
// Author info of this build printed to the host during boot and M115
-#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
+#define STRING_CONFIG_H_AUTHOR "(Ketil, Makergear M2 x1619V config)" // Who made the changes.
+// config based on sources such as:
+// https://forum.makergear.com/viewtopic.php?f=9&t=10063#p42448
+// https://reprap.org/wiki/Rambo_v1.3
+// http://makergear.wikidot.com/m2-firmware
//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
/**
@@ -88,7 +92,7 @@
// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
- #define MOTHERBOARD BOARD_RAMPS_14_EFB
+ #define MOTHERBOARD BOARD_RAMBO
#endif
// @section serial
@@ -552,7 +556,7 @@
* 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
*/
#define TEMP_SENSOR_0 1
-#define TEMP_SENSOR_1 0
+#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
@@ -682,13 +686,13 @@
#if ENABLED(PID_PARAMS_PER_HOTEND)
// Specify up to one value per hotend here, according to your setup.
// If there are fewer values, the last one applies to the remaining hotends.
- #define DEFAULT_Kp_LIST { 22.20, 22.20 }
- #define DEFAULT_Ki_LIST { 1.08, 1.08 }
- #define DEFAULT_Kd_LIST { 114.00, 114.00 }
+ #define DEFAULT_Kp_LIST { 23.59 }
+ #define DEFAULT_Ki_LIST { 2.94 }
+ #define DEFAULT_Kd_LIST { 47.34 }
#else
- #define DEFAULT_Kp 22.20
- #define DEFAULT_Ki 1.08
- #define DEFAULT_Kd 114.00
+ #define DEFAULT_Kp 23.59
+ #define DEFAULT_Ki 2.94
+ #define DEFAULT_Kd 47.34
#endif
#else
#define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current
@@ -858,7 +862,8 @@
* Note: For Bowden Extruders make this large enough to allow load/unload.
*/
#define PREVENT_LENGTHY_EXTRUDE
-#define EXTRUDE_MAXLENGTH 200
+ // The maximum length should be the full diagonal. sqrt(200^2 + 250^2) is approx 320
+#define EXTRUDE_MAXLENGTH 320
//===========================================================================
//======================== Thermal Runaway Protection =======================
@@ -1130,9 +1135,9 @@
#endif
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
-#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
+#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
@@ -1196,14 +1201,14 @@
* Override with M92
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
-#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 }
+#define DEFAULT_AXIS_STEPS_PER_UNIT { 88.88, 88.88, 400.00, 471.50 }
/**
* Default Max Feed Rate (linear=mm/s, rotational=°/s)
* Override with M203
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
-#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
+#define DEFAULT_MAX_FEEDRATE { 500, 500, 10, 25 }
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING)
@@ -1216,7 +1221,7 @@
* Override with M201
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
-#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }
+#define DEFAULT_MAX_ACCELERATION { 9000, 9000, 30, 10000 }
//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
@@ -1245,9 +1250,9 @@
*/
//#define CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
- #define DEFAULT_XJERK 10.0
- #define DEFAULT_YJERK 10.0
- #define DEFAULT_ZJERK 0.3
+ #define DEFAULT_XJERK 20.0
+ #define DEFAULT_YJERK 20.0
+ #define DEFAULT_ZJERK 0.4
//#define DEFAULT_IJERK 0.3
//#define DEFAULT_JJERK 0.3
//#define DEFAULT_KJERK 0.3
@@ -1286,7 +1291,7 @@
*
* See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
*/
-//#define S_CURVE_ACCELERATION
+#define S_CURVE_ACCELERATION
//===========================================================================
//============================= Z Probe Options =============================
@@ -1670,9 +1675,9 @@
// @section motion
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
-#define INVERT_X_DIR false
-#define INVERT_Y_DIR true
-#define INVERT_Z_DIR false
+#define INVERT_X_DIR true
+#define INVERT_Y_DIR false
+#define INVERT_Z_DIR true
//#define INVERT_I_DIR false
//#define INVERT_J_DIR false
//#define INVERT_K_DIR false
@@ -1725,15 +1730,15 @@
// The size of the printable area
#define X_BED_SIZE 200
-#define Y_BED_SIZE 200
+#define Y_BED_SIZE 250
// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
-#define X_MAX_POS X_BED_SIZE
-#define Y_MAX_POS Y_BED_SIZE
-#define Z_MAX_POS 200
+#define X_MAX_POS (X_BED_SIZE + 5)
+#define Y_MAX_POS (Y_BED_SIZE + 5)
+#define Z_MAX_POS 205
//#define I_MIN_POS 0
//#define I_MAX_POS 50
//#define J_MIN_POS 0
@@ -2130,7 +2135,7 @@
#endif
// Homing speeds (linear=mm/min, rotational=°/min)
-#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }
+#define HOMING_FEEDRATE_MM_M { (60*60), (60*60), (8*60) }
// Validate that endstops are triggered on homing moves
#define VALIDATE_HOMING_ENDSTOPS
@@ -2208,7 +2213,7 @@
* M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
* M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
*/
-//#define EEPROM_SETTINGS // Persistent storage with M500 and M501
+#define EEPROM_SETTINGS // Persistent storage with M500 and M501
//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash.
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
@@ -2494,7 +2499,7 @@
* SD Card support is disabled by default. If your controller has an SD slot,
* you must uncomment the following option or it won't work.
*/
-//#define SDSUPPORT
+#define SDSUPPORT
/**
* SD CARD: ENABLE CRC
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 6557ad8177..a6f331804b 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -605,7 +605,7 @@
* PWM on pin OC2A. Only use this option if you don't need PWM on 0C2A. (Check your schematic.)
* USE_OCR2A_AS_TOP sacrifices duty cycle control resolution to achieve this broader range of frequencies.
*/
-//#define FAST_PWM_FAN // Increase the fan PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
+#define FAST_PWM_FAN // Increase the fan PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
#if ENABLED(FAST_PWM_FAN)
//#define FAST_PWM_FAN_FREQUENCY 31400 // Define here to override the defaults below
//#define USE_OCR2A_AS_TOP
@@ -726,7 +726,7 @@
// If you want endstops to stay on (by default) even when not homing
// enable this option. Override at any time with M120, M121.
-//#define ENDSTOPS_ALWAYS_ON_DEFAULT
+#define ENDSTOPS_ALWAYS_ON_DEFAULT
// @section extras
@@ -879,7 +879,7 @@
//#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (linear=mm, rotational=°) Backoff from endstops before sensorless homing
-#define HOMING_BUMP_MM { 5, 5, 2 } // (linear=mm, rotational=°) Backoff from endstops after first bump
+#define HOMING_BUMP_MM { 5, 5, 1 } // (linear=mm, rotational=°) Backoff from endstops after first bump
#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
//#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (linear=mm, rotational=°) Backoff from endstops after homing
@@ -1081,6 +1081,7 @@
* X<1> Set the given parameters only for the X axis.
* Y<1> Set the given parameters only for the Y axis.
*/
+// TODO: Experiment with input shaping
//#define INPUT_SHAPING_X
//#define INPUT_SHAPING_Y
#if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y)
@@ -1121,7 +1122,7 @@
* Enable DISABLE_IDLE_* to shut down axis steppers after an idle period.
* The default timeout duration can be overridden with M18 and M84. Set to 0 for No Timeout.
*/
-#define DEFAULT_STEPPER_TIMEOUT_SEC 120
+#define DEFAULT_STEPPER_TIMEOUT_SEC 180
#define DISABLE_IDLE_X
#define DISABLE_IDLE_Y
#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part!
@@ -1311,7 +1312,7 @@
* M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
*/
//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps
-//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
+#define DIGIPOT_MOTOR_CURRENT { 135,135,135,165,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
/**
@@ -2111,12 +2112,12 @@
*
* See https://marlinfw.org/docs/features/lin_advance.html for full instructions.
*/
-//#define LIN_ADVANCE
+#define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE)
#if ENABLED(DISTINCT_E_FACTORS)
- #define ADVANCE_K { 0.22 } // (mm) Compression length per 1mm/s extruder speed, per extruder
+ #define ADVANCE_K { 0 } // (mm) Compression length per 1mm/s extruder speed, per extruder
#else
- #define ADVANCE_K 0.22 // (mm) Compression length applying to all extruders
+ #define ADVANCE_K 0 // (mm) Compression length applying to all extruders
#endif
//#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L.
//#define LA_DEBUG // Print debug information to serial during operation. Disable for production use.
@@ -3728,7 +3729,7 @@
*
* Execute certain G-code commands immediately after power-on.
*/
-//#define STARTUP_COMMANDS "M17 Z"
+#define STARTUP_COMMANDS "M42 I1 P6 S100"
/**
* G-code Macros
@@ -4232,7 +4233,7 @@
//
// M42 - Set pin states
//
-//#define DIRECT_PIN_CONTROL
+#define DIRECT_PIN_CONTROL
//
// M43 - display pin status, toggle pins, watch pins, watch endstops & toggle LED, test servo probe
Edit 2025-02-18: I've updated the config, which I have now built with arduino, uploaded to my printer, and I've been testing a bit. This configuration has taken inspiration from Makergear's published configs, djw's description, and new possibilities. The current config features:
When I tried going with the original PID values, the printer kept giving THERMAL_RUNAWAY errors, even though there was no thermal runaway. Apparently the PID values don't carry the same meaning across major releases of Marlin, so PID values need to be updated when doing major upgrades.