Here it is: All direction was taken from YouTube TeachingTech and Chris' Basement.
The following describes the firmware changes I made for the Creality Ender 5, with a BTT SKR Mini E3 2.0, BLTouch and Hemera Extruder/Hotend.
E = Enable D = Disable C = Change V = Verify
Edit the platform.h to reflect the SKR Mini E3 2.0:
C default_envs = STM32F103RC_btt
Edit the configuration.h:
C EXTRUDE_MAXLENGTH 40 (This is the distance from the gear to the nozzle)
(EXTRUDE_MAXLENGTH affects the next two in configuration.adv.h)
C FILAMENT_CHANGE_UNLOAD_LENGTH 40 (= to / less than EXTRUDE_MAXLENGTH)
C FLIAMENT_CHANGE_FASTLOAD_LENGTH 40 (= to/less than EXTRUDE_MAXLENGTH)
(When you edit the previous 3 values, you’ll limit your ability to do the Extruder test because it requires 120mm. I set it to 140 for all 3, then changed it back after the test was complete.)
C DEFAULT_MAX_FEEDRATE {500, 500, 20, 120}
E CLASSIC_JERK
E&C TRAVEL_EXTRA_JERK 5.0
C DEFAULT_EJERK 15.0
The next changes will flip the default Marlin home direction settings to match the Ender 5. It’d be nice if someone would make some default changes to Marlin so you don’t have to spend 10 days experimenting until you find a way to make this work correctly:
E USE_X_MIN_PLUG
E USE_Y_MIN_PLUG
D USE_X_MAX_PLUG
D USE_Y_MAX_PLUG
D INVERT_X_DIR
D INVERT_Y_DIR
C X_HOME_DIR -1 (sets Home at right)
C Y_HOME_DIR -1 (sets Home at back)
(Set the size of the bed. Bed is smaller due the the size of the Hemera, mounting and Probe)
C X_BED_SIZE 224 (this is width of available nozzle to bed)
C Y_BED_SIZE 212 (this is depth, available nozzle to bed) Once you’ve established the home location, measure the distance to the maximum available bed width and depth. This will be your X,Y_BED_SIZE and will determine Home and Bed Center for the BLTouch etc. Replace both top/back corner brackets with the blind type that go inside the T channel and print a bracket for the Y Stop Switch and you can recover some of the lost Y_BED_SIZE.
V Z_MAX_POS 300 (Print height is 300mm for Ender 5 Pro)
D //LEVEL_BED_CORNERS (this is disabled for BLTouch)
N/C LEVEL_CORNER_HEIGHT 0.0 (unchanged as it’s inside the above “if” statement)
V Z_SAFE_HOMING_X_POINT X_CENTER
V Z_SAFE_HOMING_Y_POINT Y_CENTER
BLTouch settings for configuration.h (I'm using the Probe in the Z Stop plug)
E BLTOUCH
E ENDSTOP_INTERRUPTS_FEATURE
C NOZZLE_TO_PROBE_OFFSET {46, -4, -2.9} (these are my measured values)
Some notes on this. The Marlin directions are backwards for the Ender 5. After the changes to invert the Home position to the right/back, everything (everyfrickinthing) inverts. Even the bed leveling procedure. On the Ender 3 it starts in the left/front and ends at the right/back, the Ender 5 is the opposite. After you make these changes in the firmware and flash them, they aren’t loaded into the EEPROM until you intentionally load them. There is more about this later.
C PROBING_MARGIN 10 (this sets the hard edge of the probe area, well that’s the idea)
(Look for PROBING_MARGIN_LEFT, RIGHT, FRONT, BACK to override this default of 10, I wanted 20 front and left so I set them later on in this list)
E MULTIPLE_PROBING 2 (will probe twice at each grid location for improved results)
E Z_MIN_PROBE_REPEATABILITY_TEST
E AUTO_BED_LEVELING_BILINEAR (comment out all the others in this group)
C GRID_MAX_POINTS_X 5 (Notice that the next line uses this setting to change the Y value to the same number.) This sets a 5 x 5 probe grid. Some use 4.
E LCD_BED_LEVELING (threw error “Z Values not declared, this same issue has something to do with “ECHO: FADE HEIGHT 10.00” message in info window) After calibrations were completed I stopped getting the messages.
E Z_SAFE_HOMING (this is required and probes the Z home in the center of the bed based on the above “CENTER”)
Hemera settings for configuration.h
C HEATER_0_MAXTEMP 300 (limited to 15 under, set to achieve the needed 285)
C TEMP_SENSOR_0 5
C DEFAULT_AXIS_STEPS_PER_UNIT {80. 80. 800, 400}
configuration.adv.h
E HOTEND_IDLE_TIMEOUT 5 (This has to be disabled during final tightening of the Hemera Hot End nozzle or it will stop heating during prep. Just increase time ‘5 to 15’ will do)
E USE_CONTROLLER_FAN
E&C CONTROLLER_FAN_PIN PC7
C SLOWDOWN_DIVISOR 8
E SHOW_REMAINING_TIME
E USE_M73_REMAINING_TIME
E ROTATE_PROGRESS_DISPLAY
E PRINT_PROGRESS_SHOW_DECIMALS
E STATUS_HEAT_PERCENT
C E0_CURRENT 940 (for the Hemera Extruder, search for AXIS_IS_TMC(E0))
E CANCEL_OBJECTS
E&C PROBING_MARGIN_LEFT 20 (was PROBING_MARGIN)
E&C PROBING_MARGIN_FRONT 20 (was PROBING_MARGIN) The four possible settings can be used if you want to probe a specific target on the bed.
E BABYSTEPPING
C BABYSTEP_MULTIPLICATOR_Z 0.5 (was 1)
E DOUBLECLICK_FOR_Z_BABYSTEPPING
E BABYSTEP_ZPROBE_OFFSET
Final tightening of the Hemera Nozzle: Remove the Blue Silicon cover from Hot End.
Set nozzle heat to 285. (I had to do this from the menu/knob based interface. The touch screen was only able to achieve 275) BE CAREFUL, EVERYTHING IS VERY HOT NOW!
Let it sit for 10 minutes, but be aware the idle nozzle setting shuts the heat off around 2 minutes. This can be disabled, but I just kept an eye on it and as soon as the message came up I quickly turned the heater back to 285.
Now use a wrench to hold the metal part of the Hot End and another to tighten the nozzle. Be careful not to rotate the Hot End, and don’t over tighten the nozzle, just snug.
Turn off the heat, let it cool and it will seat the nozzle with the threaded sleeve so molton plastic can’t leak between the two. Now replace the Blue Silicon cover.
Let’s talk about Firmware and the EEPROM. I’m the second person I know of, who made between 20 and 30 changes to the firmware over the course of 6 to 8 hours and flashed them to the printer over and over only to have nothing happen, because we didn’t know that you have to intentionally load and write them for the changes to be seen by the printer.
The following is directly from the Marlin website:
“By default, EEPROM is disabled. This is to avoid the “unintended consequence” of local developers making changes to the values in Source Code and then having the printer boot up using the EEPROM values instead. But note that if you have EEPROM enabled, you can load it with “factory defaults” (coming from the Source Code) using M502 followed by M500.
M500 - store current settings in EEPROM for the next startup orM501. M501 - read all parameters from EEPROM, or undo changes. M502 - Reset current settings to defaults, as set in Configurations.h - follow with M500 to reset the EEPROM. M503 - Print the current settings – ‘‘Not the settings stored in EEPROM.’’”
To sum up: Do your calibrations and get values for the Offsets. Place them in the Configuration.h, compile and flash it to the printer. Then hook up Pronterface and send an M502 to load the defaults, then send an M500 to write them to the EEPROM so they’ll stay. Remember that this clears everything and loads defaults you’ve set. Including PID, Bed Leveling data etc. Do a bed level before you print again, and PID data should be added to the GCODE for each specific filament type.
TeachingTech has a list of calibrations on his website. search it and you can do all the required steps to get it dialed in.
I was starting to wonder if it was worth the investment, but... now that it's working I have to say the quality of the prints is much better. Absolutely zero stringy threads dangling off things. No sagging. NO BED LEVELING! Perfect starts every time! So far I've done 10 prints with it and every one came out perfect. That's it. I'll stop boring you with the Hemera upgrade. But I have to add one more thing: I can print flexible materials now!
Jeff