This god damn upgrade was so friggen frustrating, any only 60% of that was self sabotage. I'v spent literally 20 hours on this.
Why do this?
I wanted to take advantage of a few features that a 32bit board provides, but also didnโt want to drop a load of money on a board and screen, I also like Marlin. And has a driver for each Z stepper.
You might also want to look at the Fly-E3-Pro-v3 and the Mellow FLY 4.3, which should be a drop in replacement for the stock screen. If i knew about it a probably would have tried it out instead
Needed parts:
Highly Suggested parts:
At least 4 dupoint to dupoint wire connectors, female ends.
Suggested parts:
- 5x1 dupoint wire connector
- 6x1 and 5x1 JST XH wire connector
- Crimping tool
Flashing new firmware to the touchscreen
First were going to flash the touchscreen with firmware that will work with the Mini E3, weโll be using InsanityAutomationโs amazing fork of Marlin, at this time the (2.0bleeding branch doesnโt compile)
Download โlatest releaseโ from โhttps://github.com/Desuuuu/DGUS-reloaded/wiki/Flashing-the-firmwareโ
1) Extract File the file
2) Insert micro SD card
3) Format it as FAT32 with 4k blocks
4) Copy DWIN_SET into the freshly formatted mSD card
5) Power off your printer
6) Insert the mSD card into the screen of the printer.
- Do this by, removing the bottom case. The screen mSD card slot is on the side closest to the power switch, make sure to unplug the printer when inserting the mSD card or you risk shocking yourself.
7) Power the printer on
8) Wait about 30 seconds as the screen flashes, when it cycles through the pictures and says END!, then its done.
9) Power off the 3D Printer & Eject the mSD card.
10) Power it on to ensure the correct screen firmware flashed, it wont work for now.
Rewiring the touchscreen
Now you can swap out the boards and plug in all connectors, except the touchscreen and bl touch.
We will use the TFT pins on the Mini E3, NOT the EXP connector. Here is a pinout, TFT is at the bottom, actual pins are near the middle of the board: https://docs.vorondesign.com/build/electrical/images/miniE3-v30-pinout.png
Touchscreen to BTT Mini E3 V3
GND to GND
TX2 to RX2
RX2 to TX2
5V to +5V
RX NEEDS TO GO TO TX, transmission needs to be received, hence RX,TX.
To connect to the BTT board you have a few options:
Use 4 female to female Dupont connectors
Create a new cable with a JST XH 6x1 connector on the touchscreen side and a 5x1 Dupont (or 4 individual connectors), so you don't have extra wires.
Cut off the connector on the touchscreen size and crimp a 5x1 Dupont connector or use 4 individual Dupont connectors.
Rewiring the BL Touch
Time to Configure Firmware:
Show the Bootscreen:
#define SHOW_BOOTSCREEN
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0
#endif
#define SERIAL_PORT -1
#define BAUDRATE 115200
#define CUSTOM_MACHINE_NAME "Ender-5 Plus"
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
#define E0_DRIVER_TYPE TMC2209
You need to put the number of your temp sensor instead of #, the stock ones are 1 and 1
#define TEMP_SENSOR_0 #
#define TEMP_SENSOR_BED #
Set max Temp, 260 if its stock, 280-315 if all metal hotend
#define HEATER_0_MAXTEMP ###
#define BED_MAXTEMP ###
#define PIDTEMPBED
#define USE_ZMIN_PLUG
#define USE_XMAX_PLUG
#define USE_YMAX_PLUG
If your having reliability issues try changing this up
#define ENDSTOP_NOISE_THRESHOLD 2
#define DEFAULT_AXIS_STEPS_PER_UNIT
My Machine Screams with higher numbers, you can change the speed if you want
#define DEFAULT_MAX_FEEDRATE { 200, 200, 5, 25 }
#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING)
#define MAX_FEEDRATE_EDIT_VALUES { 300, 300, 10, 50 } // ...or, set your own edit limits
#endif
#define DEFAULT_MAX_ACCELERATION { 1200, 1200, 100, 10000 }
#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
#define MAX_ACCEL_EDIT_VALUES { 1500, 1500, 200, 20000 } // ...or, set your own edit limits
#endif
#if DISABLED(CLASSIC_JERK)
#define JUNCTION_DEVIATION_MM 0.15 // (mm) Distance from real junction edge
#define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle
// for small segments (< 1mm) with large junction angles (> 135ยฐ).
#endif
Comment out, unless your probes black and white wires are connected to the Z_min pins on the board.
Uncomment USE_PROBE_FOR_Z_HOMING to use the pins in the 5 pin probe connector.
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
#define USE_PROBE_FOR_Z_HOMING
#define BLTOUCH
Set your probe offset, default is like { -44, -5, -2 }
#define NOZZLE_TO_PROBE_OFFSET { }
Make 0,0 in the right corner
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR true
#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR -1
Bed size
#define X_BED_SIZE 350
#define Y_BED_SIZE 350
#define X_MIN_POS 8
#define Y_MIN_POS -1
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE + X_MIN_POS
#define Y_MAX_POS Y_BED_SIZE + Y_MIN_POS
#define Z_MAX_POS 405 + Z_MIN_POS
I use BILINEAR bed leveling
#define AUTO_BED_LEVELING_BILINEAR
For 5x5 bed probe.
#define GRID_MAX_POINTS_X 5
.
#define LCD_BED_TRAMMING
#define Z_SAFE_HOMING
#define VALIDATE_HOMING_ENDSTOPS
We have onboard EEPROM, I enable EEPROM_INIT_NOW so I don't have problems with previously set offsets, this clear the Eeprom every time you flash the machine.
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash.
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
#if ENABLED(EEPROM_SETTINGS)
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build.
#endif
.
#define NOZZLE_PARK_FEATURE
#define LCD_LANGUAGE en
#define DISPLAY_CHARSET_HD44780 WESTERN
#define SDSUPPORT
#define NO_LCD_MENUS
The magic to get the Screen working, note LCD_SERIAL_PORT 2 is TFT, hence TX2, RX2.
#define DGUS_LCD_UI_RELOADED
#if ENABLED(DGUS_LCD_UI_MKS)
#define USE_MKS_GREEN_UI
#endif
#define LCD_SERIAL_PORT 2
Configuation_adv:
Gets the fans started:
#define FAN_KICKSTART_TIME 100 // (ms)
#define FAN_KICKSTART_POWER 180 // 64-255
Helps with reliability:
#define BLTOUCH_FORCE_SW_MODE
#define BLTOUCH_SET_5V_MODE
Photos of my setup:
https://imgur.com/a/EwewvmY
Change log:
Changed ENDSTOP_NOISE_THRESHOLD to 2, no longer having any issues after i closed the lid and put the printer back in its usual place.
Thanks to u/DJjoey0812__, which this is highly based off.