Table of Contents
Flashing
USB or the ICSP header are your two programming options, both of which will use the following avrdude command:
Code:
avrdude -v -patmega1280 -cstk500v1 -PCOM4 -b19200 -U flash:w:firmware.hex
Configuration.h
First thing we define is the main board:
Code:
MOTHERBOARD BOARD_MIGHTYBOARD_REVE
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
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
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
Code:
#define BED_TRAMMING_INSET_LFRB { 60, 10, 60, 10 }
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
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
Code:
#define DIGIPOT_I2C_NUM_CHANNELS 5
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:
Code:
#define BABYSTEPPING
Code:
#define DOUBLECLICK_FOR_Z_BABYSTEPPING
Code:
#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
Code:
#define BABYSTEP_MILLIMETER_UNITS
Code:
#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
Code:
#define FILAMENT_CHANGE_UNLOAD_LENGTH 80
Code:
#define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 80
Code:
#define FILAMENT_LOAD_UNLOAD_GCODES
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
Change Suggestions
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
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
Code:
#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.
Code:
#define FAN0_PIN MOSFET_F_PIN
Last edited: