Mark2 Firmware

From Aus3D Wiki
Jump to: navigation, search

Mark2 3D Printer
Documentation | BOM | Assembly | Electronics | Firmware Setup | Software Setup | Calibration | Printing | Troubleshooting | Sample Prints | Upgrades & Modifications

Getting the Firmware

We recommend using the fantastic Marlin firmware with our Mark2 printer kits. A version of Marlin pre-customised for the Mark2 printer is available on GitHub, and we will endeavour to keep it up-to-date with the latest Marlin releases.

First, download the pre-customised firmware by clicking the "Download ZIP" button on the page here.

Next, compile and upload that firmware to your board following the guide here.

However, if you want to use a different firmware version (i.e. a newer development version of Marlin), or just if you want to check the changes for your own reference, the page below details the main changes that need to be made to suit the Mark2 3D printer.

Changes Made

You do not need to make these changes yourself - simply download the pre-configured firmware linked above. The below changes are listed for reference if you want to configure a different version of Marlin yourself.


RAMPS can usually only drive three 12V devices - by default, these are the Extruder heater (E), the print fan (F), and the heated bed (B) - or 'EFB' configuration. However, we have a separate board that will handle the fans - so we'll configure RAMPS to have two extruder heaters (E) so that the firmware and wiring for single and dual-extrusion is common. Hence, we want the 'EEB' configuration.

 #define MOTHERBOARD BOARD_RAMPS_13_EEB  // Extruder, Extruder, Bed

Next, we'll set the machine's name. This name appears on the LCD during use, and also in the terminal window when communicating with the printer via USB. You can change the name to whatever you'd like - but there is a limit of 13 characters.

 #define CUSTOM_MACHINE_NAME "Aus3D Mark2"

We're using E3D HotEnds, which use the Semitec GT2 thermistor - thermistor 5 in Marlin's thermistor list. If this is a dual extruder build, we'll also want to define TEMP_SENSOR_1 as 5. For the heated bed, we're using an Epcos 100K thermistor - thermistor 1.

 #define TEMP_SENSOR_0 5
 #define TEMP_SENSOR_1 0
 #define TEMP_SENSOR_2 0
 #define TEMP_SENSOR_3 0
 #define TEMP_SENSOR_BED 1
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
 const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
 const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
 const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
 const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
 const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
 const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
 const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
 #define INVERT_X_DIR true
 #define INVERT_Y_DIR false
 #define INVERT_Z_DIR false
 #define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
 #define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
 // Offsets to the probe relative to the extruder tip (Hotend - Probe)
 // X and Y offsets must be integers
 #define X_PROBE_OFFSET_FROM_EXTRUDER 30     // Probe on: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 0     // Probe on: -front +behind
 #define Z_PROBE_OFFSET_FROM_EXTRUDER -1.95  // -below (always!)
 #define Z_RAISE_BEFORE_PROBING 5   //How much the extruder will be raised before traveling to the first probing point.
 #define Z_RAISE_BETWEEN_PROBINGS 5  //How much the extruder will be raised when traveling from between next probing points
 #define Z_RAISE_AFTER_PROBING 5    //How much the extruder will be raised after the last probing point.
 #define HOMING_FEEDRATE {50*60, 50*60, 10*60, 0}  // set the homing speeds (mm/min)
 #define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,400,120}  // default steps per unit for Ultimaker
 #define DEFAULT_MAX_FEEDRATE          {300, 300, 10, 25}    // (mm/sec)
 #define DEFAULT_MAX_ACCELERATION      {3000,3000,50,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.

This is intended to be a complete list of the required changes. For a list of the changes specific to configuring the Z-probe, see the page here.


Configure HotEnd cooling fans for single and dual extruders:

 // @section extruder
 // Extruder cooling fans
 // Configure fan pin outputs to automatically turn on/off when the associated
 // extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
 // Multiple extruders can be assigned to the same pin in which case
 // the fan will turn on when any selected extruder is above the threshold.
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed


 #elif MB(RAMPS_13_EEF) || MB(RAMPS_13_SF)
   #define FAN_PIN           8
   #define FAN_PIN           11 // IO pin. Buffer needed

If using LCD Control Panel:

 #define BTN_EN1 33  //changed (swapped)
 #define BTN_EN2 31  //changed to correct rotation of encoder


Pre-customised Marlin Firmware

Marlin Page on GitHub

Marlin Homepage