Marlin 2.0 Support

371 views
Skip to first unread message

psa...@gmail.com

unread,
Dec 5, 2019, 12:04:04 PM12/5/19
to CERAMBOT
Has thhe CeramBot team made any changes to the Marlin v1.0 firmware?

If so, can you please share and let us get version 2.0 official supported in Marlin official repo.

I am one of the contributors and may be able to help

Jony Liu

unread,
Dec 8, 2019, 7:44:14 AM12/8/19
to CERAMBOT
Thank you for your support. Currently we are improving based on marlin 1.1.9.
We also want to create CERAMBOT's configuration.h file in example_configurations.

The currently modified marlin version number:
#define CONFIGURATION_H_VERSION 010109

The following major changes were made:

1. Opened #define MIXING_EXTRUDER and changed the following:

#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
#endif

Start M163 at the same time, add the following to the star_gcode of cura:

M163 S0 P0.5
M163 S1 P0.5
M164 S5

S0 is the output port of the extruder, and S1 is the output port of the worm gear and putter motor.

2. Modify Thermal Settings as follows:

#define TEMP_SENSOR_0 998
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_BED 0
#define TEMP_SENSOR_CHAMBER 0

3. Modify the temperature protection as follows:
#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 0

At the same time in start_gcode:
M302

4.Delta Settings have been modified as follows:

// Enable DELTA kinematics and most of the default configuration for Deltas
#define DELTA

#if ENABLED (DELTA)

  #define DELTA_SEGMENTS_PER_SECOND 80

  // Convert feedrates to apply to the Effector instead of the Carriages
  #define DELTA_FEEDRATE_SCALING

  #if ENABLED (DELTA_AUTO_CALIBRATION) || ENABLED (DELTA_CALIBRATION_MENU)
    // Set the radius for the calibration probe points-max DELTA_PRINTABLE_RADIUS for non-eccentric probes
    #define DELTA_CALIBRATION_RADIUS 78.0 // mm
    // Set the steprate for papertest probing
    #define PROBE_MANUALLY_STEP 0.05 // mm
  #endif

  // Print surface diameter / 2 minus unreachable space (avoid collisions with vertical towers).
  #define DELTA_PRINTABLE_RADIUS 85.0 // mm

  // Center-to-center distance of the holes in the diagonal push rods.
  #define DELTA_DIAGONAL_ROD 250.00 // mm

  // height from z = 0 to home position
  #define DELTA_HEIGHT 286.5 // get this value from auto calibrate


  // Horizontal distance bridged by diagonal push rods when effector is centered.
  #define DELTA_RADIUS 128.9 // mm Get this value from auto calibrate


5. Modify the limit switch:
// 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_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 probe.

6. Modify the stepper motor driver chip settings:

#define X_DRIVER_TYPE A4988
#define Y_DRIVER_TYPE A4988
#define Z_DRIVER_TYPE A4988
#define X2_DRIVER_TYPE A4988
#define Y2_DRIVER_TYPE A4988
#define Z2_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE A4988
#define E1_DRIVER_TYPE TB6600
#define E2_DRIVER_TYPE A4988
#define E3_DRIVER_TYPE A4988
#define E4_DRIVER_TYPE A4988

7. Set the number of pulses and acceleration:

// variables to calculate steps
#define XYZ_FULL_STEPS_PER_ROTATION 200
#define XYZ_MICROSTEPS 16
#define XYZ_BELT_PITCH 2
#define XYZ_PULLEY_TEETH 16

// delta speeds must be the same on xyz
#define DEFAULT_XYZ_STEPS_PER_UNIT ((XYZ_FULL_STEPS_PER_ROTATION) * (XYZ_MICROSTEPS) / double (XYZ_BELT_PITCH) / double (XYZ_PULLEY_TEETH))
#define DEFAULT_AXIS_STEPS_PER_UNIT {DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, 400} // 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 [, E4]]]]
 * /
#define DEFAULT_MAX_FEEDRATE {250, 250, 250, 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 [, E4]]]]
 * /
#define DEFAULT_MAX_ACCELERATION {9000, 9000, 9000, 3000}

/ **
 * Default Acceleration (change / s) change = mm / s
 * Override with M204
 *
 * M204 P Acceleration
 * M204 R Retract Acceleration
 * M204 T Travel Acceleration
 * /
#define DEFAULT_ACCELERATION 3000 // 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


#define DEFAULT_XJERK 20.0
#define DEFAULT_YJERK DEFAULT_XJERK
#define DEFAULT_ZJERK DEFAULT_XJERK // Must be same as XY for delta
#define DEFAULT_EJERK 5.0

8. Modify the motor direction:

// Disables axis stepper immediately when it's not being used.
// WARNING: When motors turn off there is a chance of losing position accuracy!
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
// Warn on display about possibly reduced accuracy
// # define DISABLE_REDUCED_ACCURACY_WARNING

// @section extruder

#define DISABLE_E false // For all extruders
#define DISABLE_INACTIVE_EXTRUDER true // Keep only the active extruder enabled.

// @section machine

// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false // DELTA does not invert
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false

// @section extruder

// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR false
#define INVERT_E1_DIR true
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
#define INVERT_E4_DIR false

// @section homing

#define X_HOME_DIR 1 // deltas always home to max
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1

9. Other settings:

#define EEPROM_SETTINGS // Enable for M500 and M501 commands
// # define DISABLE_M503 // Saves ~ 2700 bytes of PROGMEM. Disable for release!
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.


#define SDSUPPORT

#define REPRAP_DISCOUNT_SMART_CONTROLLER



Jony Liu

unread,
Dec 8, 2019, 7:46:23 AM12/8/19
to CERAMBOT
Specific details can be viewed here: 

Jony Liu

unread,
Dec 8, 2019, 7:50:28 AM12/8/19
to CERAMBOT
There is currently a problem with MIXING_EXTRUDER, although we have set it up as follows.

But at present this setting does not seem to work. The number of S0 and S1 signal pulses is the same, and the speed of the two extruder motors cannot be adjusted.

Jony Liu

unread,
Dec 8, 2019, 7:52:00 AM12/8/19
to CERAMBOT
Specific issues can be seen here:


Thanks for your help.

Francois Bujold

unread,
Aug 24, 2020, 12:03:21 PM8/24/20
to CERAMBOT
Have you succeeded in porting cerambot to 2.0?

Panayiotis Savva

unread,
Aug 24, 2020, 12:12:55 PM8/24/20
to CERAMBOT
Reply all
Reply to author
Forward
0 new messages