Skip to content

yellowcub/myMarlinConfig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

My Marlin Configuration Files

This repository contains the configuration files I have used to build firmware for my Ender 3 Pro with a BTT SKR E3 mini v3.0 controller board. Please exercise caution, and do not use these configuration files for your own build unless you are confident your configuration matches, or at least know how to modify the Configuration.h and Configuration_adv.h files to reflect any differences.

There are a number of useful videos for getting started updating firmware. I found the following video useful:

I also recommend the following link at marlinfw.org for an explanation of each of the settings, however it may not entirely reflect the 2.1.x version of parameter names.

These configuration files are based on the 2.1.2 repository, and the original versions for comparison can be found in the fork by navigating to the Creality Ender 3 Pro examples. The files are versioned, and will only work with this fork of the Marlin Firmware code.

Compiling Marlin Firmware requires the use of VS Code and the PlatformIO extension. PlatformIO needs to be configured with the model of the board, which can be looked up in the boards.h file. For the BTT SKR E3 mini v3.0 the board is STM32G0B1RE, which can be selected within the PlatformIO extension. Alternatively, you can look up the platformio.ini file and change default_envs to STM32G0B1RE_btt. The four header files (.h) here need to be copied to the Marlin/Marlin directory replacing any existing files of the same name.

It is possible I may have missed some minor changes that did not get described below. This is a work in progress, and I may be changing other parameters as I get more comfortable with modifying the firmware.

Configuration

Changes to the Configurations.h file consist of:

  • Updating the author and machine names
  • Changing the extrudor heater maximum temperature
  • Enabling Z-Axis probing via the BLTouch
  • Geometry changes
  • Auto Bed Leveling (ABL)
  • Change E0 steps/mm to 400 for Microswiss NG extruder

Author and Machine Name

The author and machine settings are optional for keeping track of personal firmware builds.

// Author info of this build printed to the host during boot and M115
#define STRING_CONFIG_H_AUTHOR "(yellowcub, Creality E3P BTT SKR E3 mini v3.0)" // Who made the changes.

// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0
#endif

Extrudor Maximum Temperature

The maximum temperature for extrudor 0 was changed to 315.

// Above this temperature the heater will be switched off.
// This can protect components from overheating, but NOT from shorts and failures.
// (Use MINTEMP for thermistor short/failure protection.)
#define HEATER_0_MAXTEMP 315
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
#define HEATER_4_MAXTEMP 275
#define HEATER_5_MAXTEMP 275
#define HEATER_6_MAXTEMP 275
#define HEATER_7_MAXTEMP 275
#define BED_MAXTEMP 150
#define CHAMBER_MAXTEMP 60

This was intended to support the capability of the MicroSwiss all metal hot end upgrade, which should allow requesting temperatures up to 300° C (This accounts for a 15° C overtemp specified further down in the configuration). In actuality the controller would only permit a maximum temperature of 275° C because the stock thermistor does not permit higher temperatures - for good reasons! I should be able to increase this if I upgrade the thermistor and select the appropriate thermistor code for TEM_SENSOR_0. For example, for the Creality Sprite Pro Kit thermistor the code should be changed from 1 to 13.

* Temperature sensors available:
*
* SPI RTD/Thermocouple Boards - IMPORTANT: Read the NOTE below!
* -------
* -5 : MAX31865 with Pt100/Pt1000, 2, 3, or 4-wire (only for sensors 0-1)
* NOTE: You must uncomment/set the MAX31865_*_OHMS_n defines below.
* -3 : MAX31855 with Thermocouple, -200°C to +700°C (only for sensors 0-1)
* -2 : MAX6675 with Thermocouple, 0°C to +700°C (only for sensors 0-1)
*
* NOTE: Ensure TEMP_n_CS_PIN is set in your pins file for each TEMP_SENSOR_n using an SPI Thermocouple. By default,
* Hardware SPI on the default serial bus is used. If you have also set TEMP_n_SCK_PIN and TEMP_n_MISO_PIN,
* Software SPI will be used on those ports instead. You can force Hardware SPI on the default bus in the
* Configuration_adv.h file. At this time, separate Hardware SPI buses for sensors are not supported.
*
* Analog Themocouple Boards
* -------
* -4 : AD8495 with Thermocouple
* -1 : AD595 with Thermocouple
*
* Analog Thermistors - 4.7kΩ pullup - Normal
* -------
* 1 : 100kΩ EPCOS - Best choice for EPCOS thermistors
* 331 : 100kΩ Same as #1, but 3.3V scaled for MEGA
* 332 : 100kΩ Same as #1, but 3.3V scaled for DUE
* 2 : 200kΩ ATC Semitec 204GT-2
* 202 : 200kΩ Copymaster 3D
* 3 : ???Ω Mendel-parts thermistor
* 4 : 10kΩ Generic Thermistor !! DO NOT use for a hotend - it gives bad resolution at high temp. !!
* 5 : 100kΩ ATC Semitec 104GT-2/104NT-4-R025H42G - Used in ParCan, J-Head, and E3D, SliceEngineering 300°C
* 501 : 100kΩ Zonestar - Tronxy X3A
* 502 : 100kΩ Zonestar - used by hot bed in Zonestar Průša P802M
* 503 : 100kΩ Zonestar (Z8XM2) Heated Bed thermistor
* 504 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-B3950) Hotend Thermistor
* 505 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-3950) Bed Thermistor
* 512 : 100kΩ RPW-Ultra hotend
* 6 : 100kΩ EPCOS - Not as accurate as table #1 (created using a fluke thermocouple)
* 7 : 100kΩ Honeywell 135-104LAG-J01
* 71 : 100kΩ Honeywell 135-104LAF-J01
* 8 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT
* 9 : 100kΩ GE Sensing AL03006-58.2K-97-G1
* 10 : 100kΩ RS PRO 198-961
* 11 : 100kΩ Keenovo AC silicone mats, most Wanhao i3 machines - beta 3950, 1%
* 12 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT (#8) - calibrated for Makibox hot bed
* 13 : 100kΩ Hisens up to 300°C - for "Simple ONE" & "All In ONE" hotend - beta 3950, 1%
* 15 : 100kΩ Calibrated for JGAurora A5 hotend
* 18 : 200kΩ ATC Semitec 204GT-2 Dagoma.Fr - MKS_Base_DKU001327
* 22 : 100kΩ GTM32 Pro vB - hotend - 4.7kΩ pullup to 3.3V and 220Ω to analog input
* 23 : 100kΩ GTM32 Pro vB - bed - 4.7kΩ pullup to 3.3v and 220Ω to analog input
* 30 : 100kΩ Kis3d Silicone heating mat 200W/300W with 6mm precision cast plate (EN AW 5083) NTC100K - beta 3950
* 60 : 100kΩ Maker's Tool Works Kapton Bed Thermistor - beta 3950
* 61 : 100kΩ Formbot/Vivedino 350°C Thermistor - beta 3950
* 66 : 4.7MΩ Dyze Design / Trianglelab T-D500 500°C High Temperature Thermistor
* 67 : 500kΩ SliceEngineering 450°C Thermistor
* 68 : PT100 amplifier board from Dyze Design
* 70 : 100kΩ bq Hephestos 2
* 75 : 100kΩ Generic Silicon Heat Pad with NTC100K MGB18-104F39050L32
* 2000 : 100kΩ Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor
*
* Analog Thermistors - 1kΩ pullup - Atypical, and requires changing out the 4.7kΩ pullup for 1kΩ.
* ------- (but gives greater accuracy and more stable PID)
* 51 : 100kΩ EPCOS (1kΩ pullup)
* 52 : 200kΩ ATC Semitec 204GT-2 (1kΩ pullup)
* 55 : 100kΩ ATC Semitec 104GT-2 - Used in ParCan & J-Head (1kΩ pullup)
*
* Analog Thermistors - 10kΩ pullup - Atypical
* -------
* 99 : 100kΩ Found on some Wanhao i3 machines with a 10kΩ pull-up resistor
*
* Analog RTDs (Pt100/Pt1000)
* -------
* 110 : Pt100 with 1kΩ pullup (atypical)
* 147 : Pt100 with 4.7kΩ pullup
* 1010 : Pt1000 with 1kΩ pullup (atypical)
* 1022 : Pt1000 with 2.2kΩ pullup
* 1047 : Pt1000 with 4.7kΩ pullup (E3D)
* 20 : Pt100 with circuit in the Ultimainboard V2.x with mainboard ADC reference voltage = INA826 amplifier-board supply voltage.
* NOTE: (1) Must use an ADC input with no pullup. (2) Some INA826 amplifiers are unreliable at 3.3V so consider using sensor 147, 110, or 21.
* 21 : Pt100 with circuit in the Ultimainboard V2.x with 3.3v ADC reference voltage (STM32, LPC176x....) and 5V INA826 amplifier board supply.
* NOTE: ADC pins are not 5V tolerant. Not recommended because it's possible to damage the CPU by going over 500°C.
* 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x
*
* Custom/Dummy/Other Thermal Sensors
* ------
* 0 : not used
* 1000 : Custom - Specify parameters in Configuration_adv.h
*
* !!! Use these for Testing or Development purposes. NEVER for production machine. !!!
* 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below.
* 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
*
*/
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0
#define TEMP_SENSOR_6 0
#define TEMP_SENSOR_7 0
#define TEMP_SENSOR_BED 1
#define TEMP_SENSOR_PROBE 0
#define TEMP_SENSOR_CHAMBER 0
#define TEMP_SENSOR_COOLER 0
#define TEMP_SENSOR_BOARD 0
#define TEMP_SENSOR_REDUNDANT 0

Z-Axis Probing

Z-Axis probing is enabled by uncommenting the line for USE_PROBE_FOR_Z_HOMING.

// Force the use of the probe for Z-axis homing
#define USE_PROBE_FOR_Z_HOMING

As well as BLTOUCH

/**
* The BLTouch probe uses a Hall effect sensor and emulates a servo.
*/
#define BLTOUCH

I also changed the defaults for NOZZLE_TO_PROBE_OFFSET to reflect my configuration using a Hero Me v6 cooling system, but everyone's defaults will vary here.

#define NOZZLE_TO_PROBE_OFFSET { -53, -12, -1.73 }

The following lines were changed to slightly increase the ABL probing speed.

// X and Y axis travel speed (mm/min) between probes
#define XY_PROBE_FEEDRATE (166*60)
// Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2)
#define Z_PROBE_FEEDRATE_FAST (4*60)

Enabling Z-Axis probing also requires the following line uncommented from a different section.

/**
* Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
*
* - Moves the Z probe (or nozzle) to a defined XY point before Z homing.
* - Allows Z homing only when XY positions are known and trusted.
* - If stepper drivers sleep, XY homing may be required again before Z homing.
*/
#define Z_SAFE_HOMING

Geometry

I changed the following lines to reflect the limits that my gantry axes could reach before binding with other hardware. The X-axis zero position is very close to the bed edge, but allowing an additional 10 mm past the bed should allow the ABL to mesh more of the bed accounting for the probe offsets. The y axis endstop is in front of the bed and requires a negative offset [bed corner is at (0,0)]. The Z-axis was based on my comfort level for the E0 filament extruder and bowden tube meeting the top frame.

#define X_MAX_POS (X_BED_SIZE + 10)
#define Y_MAX_POS (Y_BED_SIZE + 10)
#define Z_MAX_POS 220

Auto Bed Leveling (ABL)

ABL was enabled by uncommenting the AUTO_BED_LEVELING_BILINEAR among the options.

//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
#define AUTO_BED_LEVELING_BILINEAR
//define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING

And changing the number of mesh points from 3 to 5 per axis.

// Set the number of grid points per dimension.
#define GRID_MAX_POINTS_X 5
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

I will probably enable the following option in the near future - once I have read more on it.

#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
// Beyond the probed grid, continue the implied tilt?
// Default is to maintain the height of the nearest edge.
//#define EXTRAPOLATE_BEYOND_GRID
//
// Experimental Subdivision of the grid by Catmull-Rom method.
// Synthesizes intermediate points to produce a more detailed mesh.
//
//#define ABL_BILINEAR_SUBDIVISION
#if ENABLED(ABL_BILINEAR_SUBDIVISION)
// Number of subdivisions between probe points
#define BILINEAR_SUBDIVISIONS 3
#endif
#endif

Notes

The BTT SKR mini currently only compatible with the CR10_STOCKDISPLAY, which is already selected in the file. This is the default menu system that is still compatible with the BTT TFT35 touchscreen. That system requires its own firmware for configuring the touch menu system.

I did not change the default steps per axis within Configuration.h as these can be adjusted easy enough in the settings menu. However, for my records my actual geometry adjustments are: { 80.37, 80.26, 400.26, 93 }. I already accidentally deleted this once 😅.

/**
* Default Axis Steps Per Unit (linear=steps/mm, rotational=steps/°)
* Override with M92
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }

For movement, I have gone back to the max feedrate and acceleration values for the original CrealityV422 setup. There is no reason any of these values for the BTT board should be slower. You should also make sure the settings in your slicer reflect the values here, or you will get inaccurate time to complete estimates.

Advanced Configuration

Only a few changes were made to the Configuration_adv.h file.

Babystepping

Uncommented BABYSTEP_MILLIMETER_UNITS to define units in mm instead of micro steps. This also required the changing of BABYSTEP_MULTIPLICATOR_Z and BABYSTEP_MULTIPLICATOR_XY as these values need to reflect the small sub-millimeter number for each step.

/**
* Babystepping enables movement of the axes by tiny increments without changing
* the current position values. This feature is used primarily to adjust the Z
* axis in the first layer of a print in real-time.
*
* Warning: Does not respect endstops!
*/
#define BABYSTEPPING
#if ENABLED(BABYSTEPPING)
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
#define BABYSTEP_WITHOUT_HOMING
#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
//#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
#define BABYSTEP_MULTIPLICATOR_Z 0.01 // (steps or mm) Steps or millimeter distance for each Z babystep
#define BABYSTEP_MULTIPLICATOR_XY 0.01 // (steps or mm) Steps or millimeter distance for each XY babystep

Arc support

Disabled ARC support per a recommendation I had seen online that suggested this was commonly used for other tooling, but not really for 3D printing. If anyone has other recommendations here, I would love to hear them.

//
// G2/G3 Arc Support
//
//#define ARC_SUPPORT // Requires ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MIN_ARC_SEGMENT_MM 0.1 // (mm) Minimum length of each arc segment
#define MAX_ARC_SEGMENT_MM 1.0 // (mm) Maximum length of each arc segment
#define MIN_CIRCLE_SEGMENTS 72 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use the feedrate to choose the segment length
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure
#endif

Firmware Retraction

Enabled firmware retraction by uncommenting FWRETRACT.

/**
* Firmware-based and LCD-controlled retract
*
* Add G10 / G11 commands for automatic firmware-based retract / recover.
* Use M207 and M208 to define parameters for retract / recover.
*
* Use M209 to enable or disable auto-retract.
* With auto-retract enabled, all G1 E moves within the set range
* will be converted to firmware-based retract/recover moves.
*
* Be sure to turn off auto-retract during filament change.
*
* Note that M207 / M208 / M209 settings are saved to EEPROM.
*/
#define FWRETRACT
#if ENABLED(FWRETRACT)
#define FWRETRACT_AUTORETRACT // Override slicer retractions
#if ENABLED(FWRETRACT_AUTORETRACT)
#define MIN_AUTORETRACT 0.1 // (mm) Don't convert E moves under this length
#define MAX_AUTORETRACT 10.0 // (mm) Don't convert E moves over this length
#endif
#define RETRACT_LENGTH 3 // (mm) Default retract length (positive value)
#define RETRACT_LENGTH_SWAP 13 // (mm) Default swap retract length (positive value)
#define RETRACT_FEEDRATE 45 // (mm/s) Default feedrate for retracting
#define RETRACT_ZRAISE 0.4 // (mm) Default retract Z-raise
#define RETRACT_RECOVER_LENGTH 0 // (mm) Default additional recover length (added to retract length on recover)
#define RETRACT_RECOVER_LENGTH_SWAP 0 // (mm) Default additional swap recover length (added to retract length on recover from toolchange)
#define RETRACT_RECOVER_FEEDRATE 8 // (mm/s) Default feedrate for recovering from retraction
#define RETRACT_RECOVER_FEEDRATE_SWAP 8 // (mm/s) Default feedrate for recovering from swap retraction
#if ENABLED(MIXING_EXTRUDER)
//#define RETRACT_SYNC_MIXING // Retract and restore all mixing steppers simultaneously
#endif
#endif

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages