Marlin Makerbot Replicator Marlin 2.1.3 & 2.1.2

Article Placeholder
DSC_0027Marlin.jpg

We actually wrote the example configurations for the original Makerbot Replicator so this guide will be more or less the same.

First thing we define is the main board:
Code:
MOTHERBOARD BOARD_MIGHTYBOARD_REVE
You will need to set your environment to Mightyboard1280

This may not be necessary but a good idea to drop the baud rate to makerbots original spec:
Code:
#define BAUDRATE 115200

For dual extruder models we will uncomment E1 driver type:
Code:
#define E1_DRIVER_TYPE A4988
Then set the number extruders to 2:
Code:
#define EXTRUDERS 2

For dual extruder models uncomment the hotend x offset and set it to -33
Code:
#define HOTEND_OFFSET_X { 0.0, -33.00 }

Change the hotend temp sensor type to -2, for dual extruder models do both sensors 0 and 1:
Code:
#define TEMP_SENSOR_0 -2
#define TEMP_SENSOR_1 -2

Optionally you can bump the Max temp up to 280 to match makerbots firmware, Sailfish had the max bed temp at 130:
Code:
#define HEATER_0_MAXTEMP 280
#define HEATER_1_MAXTEMP 280

#define BED_MAXTEMP      130
It's worth noting ABS bed temps on the replicator eventually warp the arms.

Optionally lower the overshoot from 15 to 10 to allow ABS preheat to be set as high as 270:
Code:
#define HOTEND_OVERSHOOT 10

Set the hotend PID values. I always recommend doing a PID tune on the actual machine after.
Code:
    #define DEFAULT_Kp  36.67
    #define DEFAULT_Ki   3.86
    #define DEFAULT_Kd  87.11

Uncomment PID support for the bed:
Code:
#define PIDTEMPBED
Set the bed PID values:
Code:
  #define DEFAULT_bedKp 51.04
  #define DEFAULT_bedKi 6.92
  #define DEFAULT_bedKd 250.85

Enable to the PID auto tune menu. We probably do not have room to also enable the manual value edit menu.
Code:
  #define PID_AUTOTUNE_MENU

Change the hit states to LOW for the used endstops:
Code:
#define X_MAX_ENDSTOP_HIT_STATE LOW

#define Y_MAX_ENDSTOP_HIT_STATE LOW
#define Z_MIN_ENDSTOP_HIT_STATE LOW

Define the steps per mm. These values are directly from makerbots firmware:
Code:
#define DEFAULT_AXIS_STEPS_PER_UNIT   {  94.139704, 94.139704, 400, 96.275202}

Optionally increase the max feed rates to match Makerbots firmware. The Z rate might be a little high:
Code:
#define DEFAULT_MAX_FEEDRATE          { 300, 300, 19, 30 }

Adjust the max acceleration. Values are from the Makerbot firmware.
Code:
#define DEFAULT_MAX_ACCELERATION      { 1000, 1000, 150, 4000 }

Also adjust the default and travel acceleration. Makerbot's firmware likely allowed higher travel acceleration so the values are not the same here.
Code:
#define DEFAULT_ACCELERATION          1000
#define DEFAULT_TRAVEL_ACCELERATION   1000

Uncomment classic jerk. This uses a little less space than junction deviation:
Code:
#define CLASSIC_JERK

Single extruder builds have enough room for s curve acceleration but dual by default will not. There is a guide at the end of this article to gain enough space.
Code:
#define S_CURVE_ACCELERATION

Invert the X and Z direction by setting to true:
Code:
#define INVERT_X_DIR true

#define INVERT_Z_DIR true

Invert the first extruder direction, second extruder should remain false:
Code:
#define INVERT_E0_DIR true

Switch X and Y to home to max by setting to 1:
Code:
#define X_HOME_DIR 1
#define Y_HOME_DIR 1

Adjust the bed size:
Code:
#define X_BED_SIZE 227
#define Y_BED_SIZE 148

Adjust the travel limits:
Code:
#define X_MIN_POS -8
#define Y_MIN_POS -2

#define X_MAX_POS 264
#define Y_MAX_POS 152
#define Z_MAX_POS 150

Bed tramming was a stock feature so lets enable it:
Code:
#define LCD_BED_TRAMMING
Adjust the points, 65, 5, 65, 5 would be almost directly over the screws which is great with a PEI flex sheet but not so much a kapton taped bed:
Code:
  #define BED_TRAMMING_INSET_LFRB { 60, 10, 60, 10 }
Include center point checking:
Code:
#define BED_TRAMMING_INCLUDE_CENTER

Enable EEPROM Settings
Code:
#define EEPROM_SETTINGS

Optionally adjust the preheat settings. PLA should be at least 200 though higher is common:
Code:
#define PREHEAT_1_TEMP_HOTEND 200

Enable Nozzle Park as it will be required for Advanced Pause which gives is the filament load menu and M600:
Code:
#define NOZZLE_PARK_FEATURE
Optionally adjust the parking position. Default is close to great for getting both nozzles away from the bed. I would adjust it a little closer:
Code:
  #define NOZZLE_PARK_POINT { (X_MIN_POS + 5), (Y_MAX_POS - 5), 20 }

Enable SD card support:
Code:
#define SDSUPPORT

Fix menu direction:
Code:
#define REVERSE_MENU_DIRECTION

Enable the individual axis homing menu if desired:
Code:
#define INDIVIDUAL_AXIS_HOMING_MENU

Enable the screen:
Code:
#define FF_INTERFACEBOARD

Enable support for the LED controller:
Code:
#define PCA9533

Configuration_adv.h

Disable Autotemp for space:
Code:
//#define AUTOTEMP

For safety lets enable an idle timeout for the heaters:
Code:
#define HOTEND_IDLE_TIMEOUT

Enable the hotend cooling fans by commenting them out. Just E0 for single, E1 as well for dual:
Code:
//#define E0_AUTO_FAN_PIN -1
//#define E1_AUTO_FAN_PIN -1

Enable support for controlling stepper current:
Code:
#define DIGIPOT_MCP4018
Adjust the number of channels to 5:
Code:
  #define DIGIPOT_I2C_NUM_CHANNELS 5
Edit the motor currents down to 5 values. These closely match the makerbot values. The Z motor will whine way louder if you set it too high so do not forget to adjust these:
Code:
 #define DIGIPOT_I2C_MOTOR_CURRENTS { 0.81, 0.81, 0.28, 0.81, 0.81 }

Uncomment to save space:
Code:
  #define SDCARD_READONLY

Uncomment to save space:
Code:
  #define NO_SD_AUTOSTART

Babystepping is optional but a great feature to adjust the Z offset during a print, Single extruder builds can fit this easily:
#define BABYSTEPPING
#define DOUBLECLICK_FOR_Z_BABYSTEPPING
#define BABYSTEP_DISPLAY_TOTAL

Left out of my example to save a tiny amount of space. You may also wish to have babystepping use mm units instead of steps
#define BABYSTEP_MILLIMETER_UNITS
#define BABYSTEP_MULTIPLICATOR_Z .01


Disable arc support to save space. You want it, but were probably not using it and we do not have space for it:
Code:
//#define ARC_SUPPORT

To gain the filament loading menu's we will need advanced pause, this also gives us M600:
Code:
#define ADVANCED_PAUSE_FEATURE
Adjust the load lengths to preference, these are from the flashforge example:
Code:
  #define FILAMENT_CHANGE_UNLOAD_LENGTH       80
Code:
  #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH    80
Uncomment to gain the filament loading menu:
Code:
  #define FILAMENT_LOAD_UNLOAD_GCODES
In trade disable support for M603 to have space for the menu:

Code:
  //#define CONFIGURE_FILAMENT_CHANGE

Disable volumetric extrusion to gain space. We wouldn't be using this:
Code:
#define NO_VOLUMETRICS

Disable Workspace offsets to gain space:
Code:
#define NO_WORKSPACE_OFFSETS

We don't have room for LED control stuff so I set this command to turn the LEDs to white when the printer turns on:
Code:
#define STARTUP_COMMANDS "M150 RUB255"

For dual extruder builds uncomment this to gain more room:
Code:
#define MARLIN_SMALL_BUILD



Making room for S Curve Acceleration on Dual Extruder Builds

You can disable baby stepping entirely but not enabling DOUBLECLICK_FOR_Z_BABYSTEPPING, BABYSTEP_DISPLAY_TOTAL
Code:
//#define DOUBLECLICK_FOR_Z_BABYSTEPPING
Code:
//#define BABYSTEP_DISPLAY_TOTAL
and removing M603 support from advanced pause will allow S_CURVE_ACCELERATION to fit currently:
Code:
//#define CONFIGURE_FILAMENT_CHANGE


Modifications

If you have added a part cooling fan to the extra mosfet you need to uncomment #define NUM_M106_FANS
#define NUM_M106_FANS 1

You will also need to set the pin definition. This can actually be inserted right below the line you just uncommented.
#define FAN0_PIN MOSFET_F_PIN
 
Last edited: