Marlin Firmware for Creality Ender 3 Printers with MKS GEN L V2.0 Board and TMC2209 Stepper Motors
The following guide is for use without a BLTouch. For more information about using one, please see Using a BLTouch
There is currently an issue when using Octoprint with the PSU Control plugin / supplying power to the stepper motors after boot. See the corresponding ticket at MarlinFirmware/Marlin#17671.
Fix: Connect to the printer using Printrun, Octoprint or similar. Send a M502
, followed by an M500
GCODE command via console to the printer to do a factory reset. This will get rid of the error message. Keep in mind that you have to reapply all previous settings such as Z-Offset, if you had any.
The Marlin folder contains a current fork of the Marlin branch, the changes from the original Ender 3 template and my changes to the files to make them work with the MKS GEN L V2.0 Board and TMC2209 Stepper Motors. If you want to make the changes yourself, see my changes listed below.
Please copy the correct configuration file from the config folder (normal or for use with a BLTouch and ABL). There is also file with the modified startup GCODE for Cura.
Use the schematic below to wire up your printer
Place a jumper on the outlined pins to enable UART.
Connect the ribbon cable to EXT3 on your display. As you have to plug the plug in reverse, you have to sand down the notch on the outside of the plug.
Place the cables from the endstops on the top and the bottom pin of each plug, so that the switch is connected to the 5V and D pin in this schematic. You must use either jumper cables or resolder the plugs.
I made some adapter cables so that I could easily undo the changes in the future. In terms of plugs you are looking for JST connectors, 2.5mm XH 3-Pin. This is what my adapter looks like:
Make sure you copy the Ender-3 config files first (https://github.com/MarlinFirmware/Configurations/tree/import-2.0.x/config/examples/Creality/Ender-3/CrealityV1) and then apply my changes
//#define SHOW_CUSTOM_BOOTSCREEN
and
// #define CUSTOM_STATUS_SCREEN_IMAGE
(optional) Removes the custom boot logo and logo on the status page
#define MOTHERBOARD BOARD_MKS_GEN_L_V2
Defines the correct board
#define X_MIN_ENDSTOP_INVERTING true
#define Y_MIN_ENDSTOP_INVERTING true
#define Z_MIN_ENDSTOP_INVERTING true
Inverts the logic of the endstops
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
and
#define E0_DRIVER_TYPE TMC2209
Enables support for TMC2209 in UART mode. Requires that UART jumper is set correctly. Set drivers to TMC2209_STANDALONE
otherwise
#define E0_AUTO_FAN_PIN 7
Sets the correct output for the fan, which will automatically enable when the hotend reaches 50° or more
#define HOMING_BUMP_MM { 5, 5, 2 }
Only when using an older config file. Replaces X_HOME_BUMP_MM
, Y_HOME_BUMP_MM
and Z_HOME_BUMP_MM
as Marlin changed the variable name
Use this thing from Thingiverse, it works great!
The metioned pins correspond to this schematic.
The 3 wire plug goes on the D11 pin, orientate it in a way that the yellow cable is on the leftmost pin.
The 2 wire black and white cable goes to the green Z-min header, however unlike the normal endstops, the black cable goes on the middle plug (GND) and the white one on the lowermost one (D18).
Change the following parameters in addition to the changes above
#define BLTOUCH
#define NOZZLE_TO_PROBE_OFFSET { -41, -10, 0 }
#define PROBING_MARGIN 30
#define AUTO_BED_LEVELING_BILINEAR
#define Z_SAFE_HOMING
#define NUM_SERVOS 1