@droxey's customized Ender 3 build featuring SKR Mini E3 V2.0 / Hemera / Filament Detection / BLTouch / UPS / Power Relay.
Component | Part | Repo |
---|---|---|
Motherboard | BTT SKR MINI E3 V2.0 | BIGTREETECH-SKR-mini-E3 |
Extruder | Hemera Direct Drive | - |
Power Supply | MeanWell LRS-350-24U | - |
Filament Sensor | BTT Smart Filament Detection | smart-filament-detection-module |
Relay | BTT Relay v1.2 | BIGTREETECH-Relay-V1.2 |
UPS | BTT UPS 24V V1.0 | BIGTREETECH-MINI-UPS-V2.0 |
Leveling / Z Endstop |
BLTouch v3.1 | - |
Dual Z Axis | ExoSlide XZ Kit | - |
Upgraded Y Axis | ExoSlide Y Bed Kit | - |
$ git clone git@github.com:MarlinFirmware/Marlin.git
$ cd Marlin
$ git checkout bugfix-2.0.x
$ curl -o 1_UpdateFirmware.patch https://raw.githubusercontent.com/linsomniac/MarlinSKRMiniE3v2.0Files/master/essential_changes.patch
$ curl -o 2_BLTouch.patch https://raw.githubusercontent.com/linsomniac/MarlinSKRMiniE3v2.0Files/master/bltouch.patch
$ patch -p1 <1_UpdateFirmware.patch
$ patch -p1 <2_BLTouch.patch
Step Daemon (
stepd
) is an external planner for 3d printers that utilizes Marlin compatible firmware to allow direct step processing by an external computer and enables the use of complex pre-processing.
Set it up on your Raspberry Pi by following the instructions in the project's README.
- Remove the jumper from
Z_DIA3
to use the BLTouch as the Z endstop. - Remove the jumper above
Z_PROBE
to enable the onboard 5v power supply.
Connect the BLTouch to Z_PROBE
on the motherboard.
Connect the UPS module to the PWR_DE
pin on the motherboard.
Open Configuration_adv.h
and modify the following settings to match the following snippet:
#define POWER_LOSS_RECOVERY
#if ENABLED(POWER_LOSS_RECOVERY)
#define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500)
#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss
#define POWER_LOSS_ZRAISE 10 // (mm) Z axis raise on resume (on power loss with UPS)
#define POWER_LOSS_PIN PC12 // Pin to detect power loss. Set to -1 to disable default pin on boards without module.
#define POWER_LOSS_STATE HIGH // State of pin indicating power loss
#define POWER_LOSS_PULL // Set pullup / pulldown as appropriate
#define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume
#define POWER_LOSS_RETRACT_LEN 10 // (mm) Length of filament to retract on fail. Requires backup power.
// Without a POWER_LOSS_PIN the following option helps reduce wear on the SD card,
// especially with "vase mode" printing. Set too high and vases cannot be continued.
#define POWER_LOSS_MIN_Z_CHANGE 0.05 // (mm) Minimum Z change before saving power-loss data
#endif
Connect the relay to your power supply according to the diagram. Connect the relay to the PS_ON
pin on your motherboard.
Open Configuration.h
and make the following modifications to the firmware:
/**
* Power Supply Control
*
* Enable and connect the power supply to the PS_ON_PIN.
* Specify whether the power supply is active HIGH or active LOW.
*/
#define PSU_CONTROL
#define PSU_NAME "Power Supply"
#if ENABLED(PSU_CONTROL)
#define PSU_ACTIVE_HIGH true // Set 'false' for ATX, 'true' for X-Box
//#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80
//#define PSU_POWERUP_DELAY 100 // (ms) Delay for the PSU to warm up to full power
// #define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin
#if ENABLED(AUTO_POWER_CONTROL)
#define AUTO_POWER_FANS // Turn on PSU if fans need power
#define AUTO_POWER_E_FANS
#define AUTO_POWER_CONTROLLERFAN
#define AUTO_POWER_CHAMBER_FAN
//#define AUTO_POWER_E_TEMP 50 // (°C) Turn on PSU over this temperature
//#define AUTO_POWER_CHAMBER_TEMP 30 // (°C) Turn on PSU over this temperature
#define POWER_TIMEOUT 30
#endif
#endif
Finally, in your slicing software, add M81
to the bottom of your end script.
-
To configure the Smart Filament Runout Sensor, open
Configuration.h
and uncomment#define FILAMENT_RUNOUT_SENSOR
. Then, ensure your settings match the following:/** * Filament Runout Sensors * Mechanical or opto endstops are used to check for the presence of filament. * * RAMPS-based boards use SERVO3_PIN for the first runout sensor. * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc. * By default the firmware assumes HIGH=FILAMENT PRESENT. */ #define FILAMENT_RUNOUT_SENSOR #define FIL_RUNOUT_PIN PC15 // Filament detection pin for BTT SKR Mini E3 v2.0 #if ENABLED(FILAMENT_RUNOUT_SENSOR) #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. #if ENABLED(INVERT_FS_LOGIC) #define FIL_RUNOUT_INVERTING true // Trigger's alternative as soon as invert filamentsensor logic is activated #else #define FIL_RUNOUT_INVERTING false // Logic inverting is automatically taken care in section 13 #endif // Set to true to invert the logic of the sensor. #if ENABLED(INVERTL_PINPULLUP_LOGIC) #define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins. #else #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins. #endif // Set one or more commands to execute on filament runout. // (After 'M412 H' Marlin will ask the host to handle the process.) #define FILAMENT_RUNOUT_SCRIPT "M600" // After a runout is detected, continue printing this length of filament // before executing the runout script. Useful for a sensor at the end of // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead. #define FILAMENT_RUNOUT_DISTANCE_MM 7 #ifdef FILAMENT_RUNOUT_DISTANCE_MM // Enable this option to use an encoder disc that toggles the runout pin // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM // large enough to avoid false positives.) #define FILAMENT_MOTION_SENSOR #endif #endif
-
In
Configuration_adv.h
, make the following changes:- To enable runout detection on serial LCDs, uncomment
#define M114_DETAIL
. This allows runout detection to function in Marlin Mode. - To add filament change support, uncomment
#define ADVANCED_PAUSE_FEATURE
. This feature also enables nozzle park when paused without further firmware modifications.
- To enable runout detection on serial LCDs, uncomment
- Initial configuration based on u/qwewer1 post on Reddit, Marlin 2.0.x guide, SKR Mini E3 v2.0, Ender 3 on 06/14/2020.
- Shoutout to @linsomniac's repository, linsomniac/MarlinSKRMiniE3v2.0Files. These patches are used to augment vanilla Marlin to support the SKR Mini E3 v2.0 motherboard.
- Step Daemon for Marlin.