SKR V1.4 Configuration.h Marlin 2 Setup Part 2


The next stage in setting up the SKR V1.4 with Marlin 2 covers the Configuration.h file. Taking a look at relevant settings for the SKR V1.4 and Turbo boards.

SKR V1.4 Marlin 2 Setup Guide
Software
Let’s Get Started
PLATFORMIO.INI
CONFIGURATION.H
CONFIGURATION_ADV.H
pins_BTT_SKR_V1_4.h

CONFIGURATION.H
Serial Port
BAUDRATE
MOTHERBOARD
DEFAULT_NOMINAL_FILAMENT_DIA
Thermistors
PID
ENDSTOPPULLUPS
ENDSTOPPULLDOWNS
Stepper Drivers
DEFAULT_AXIS_STEPS_PER_UNIT
Probes
BLTouch or Probe ?
NOZZLE_TO_PROBE_OFFSET
Invert Stepper Direction
3D Printer Dimensions
Software End Stops
AUTO_BED_LEVELING
EEPROM_SETTINGS
LCD
SD Support
Setting the LCD Controller
NEOPIXEL_LED

Configuration.h

@section machine

*Quick Tip – To quickly search for a key word you can use the search feature. Moreover it will show up towards the top right of Visual Studio. Furthermore simply enter the word you wish to search for and hit either the enter or return key. Without a doubt it helps speed up editing Marlin 2 firmware and makes following the SKR V1.4 Configuration easier.

Mac – Press the CMD (⌘) and the F key at the same time.
PC – Press the Ctrl and the F key at the same time.

SERIAL_PORT

Where best to start editing the SKR V1.4 Configuration file then the very beginning, so let’s start with searching for the term //#define SERIAL_PORT.

Importantly, in order to enable an option within Marlin simply remove the forward slashes //. While placing forward slashes in front of an option disables it.

Furthermore define the serial port option to 3 as shown below to enable future use with Wi-Fi modules.

#define SERIAL_PORT 3

Additionally enable the SERIAL_PORT_2 option by removing the forward slashes and set the value to -1 for the USB connection.

#define SERIAL_PORT_2 -1

BAUDRATE

While completely possible to set data transfer speeds higher in the configuration file for SKR V1.4. However for reliability whilst configuring Marlin 2, it is advisable to set the baud-rate to 115200.

#define BAUDRATE 115200

MOTHERBOARD

Now at this point in setting up the firmware for the SKR V1.4, Marlin has no idea as to what physical board the printer will be using. Because of this, we need to tell Marlin what board is being used.

Moreover we need to define the motherboard, todo this we need to change the board specified in #define MOTHERBOARD option. However frustratingly the board names seem always to be changing. But at the time of writing this guide the board name for the SKR V1.4 is BOARD_BTT_SKR_V1_4, see below.

#define MOTHERBOARD BOARD_BTT_SKR_V1_4

But if you are using the SKR V1.4 Turbo then see the below example.

#define MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO

Furthermore from here on in there are no differences between the SKR V1.4 or the SKR V1.4 Turbo.

Without a doubt, it is good practise to regular save the work for the firmware you are adjusting. While you can use the mouse to go uptown the top of the screen. Then click File, then Save. However it is far quicker to use shortcuts.

Mac – Press the CMD (⌘) and the S key at the same time.
PC – Press the Ctrl and the S key at the same time.

@section extruder

DEFAULT_NOMINAL_FILAMENT_DIA

Additionally the next option to configure in the setting up Marlin 2 with the SKR V1.4 and the Configuration file, is the default nominal filament diameter. Moreover by default the nominal filament diameter is set to 3.0mm. While this is only used for volumetric extrusions. Nonetheless it is still not a bad thing to change this to 1.75mm. Furthermore see the below example for the changes made.

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

@section temperature

Thermistors

Undoubtedly one of the most important sections within Marlin 2 is setting the correct thermistor for both the hot end, and the heated bed. Because of this, if the wrong thermistor is allocated in the configuration, then the temperature of the hot end or heat bed on the SKR V1.4 may be recorded incorrectly.

For instance you may set the hot end to 210˚C. But the thermistor may read 200˚C instead of 210˚C. As such when the thermistor displays 210˚C it is in fact 220˚C. Without a doubt this will cause issues. However the correct settings are normally supplied by the manufacture of the printer or replacement part.

Furthermore in the below example is using the default settings for the Creality Ender 3 Pro, for the hot ends thermistor..

#define TEMP_SENSOR_0 1

While the below example is for the Creality Ender 3 Hot Bed Thermistor. Moreover it is the same as the hot end, as they both use the same thermistor.

#define TEMP_SENSOR_BED 1

PID Settings

If you would like to read more about PID settings and calibrating the hot end and heated bed, then have a look at the following guides, PID Tuning Extruder Calibration and Heated Bed PID Calibration.

@section homing

ENDSTOPPULLUPS

Below we will be talking about endstops, these are the physical or optical switches that trigger when the 3D printer homes. Furthermore the homing switches are normally used on X, Y, and Z Min connectors on the SKR V1.4.

But what is a pull-up or a pull-down ?

A pull-up is a resistor that connects the pins not in use to the voltage of the switch either 3.3V or 5V. By doing so it keeps the switch as a High input. On the other hand a pull-down resistor will connect the pins not used to the ground which is 0V and as such gives a LOW input.

While on the SKR V1.4 I have not needed to individual enable any of the ENDSTOPPULLUPS options manually. However if this causes problems with your 3D printers particular setup, it’s end stops and homing. Then disable ENDSTOPPULLUPS, and enable if any of the options within the if disabled section.

Furthermore a likely option that will need to be enabled IF the ENDSTOPPULLUPS option is disabled is the ENDSTOPPULLUP_ZMIN_PROBE. Additionally in the option below #define ENDSTOPPULLUPS has been disabled by placing forward slashes in front, and the pull-up for the ENDSTOPPULLUP_ZMIN_PROBE enabled by removing the forward slashes.

//#define ENDSTOPPULLUPS
#if DISABLED(ENDSTOPPULLUPS)
//#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_ZMAX
//#define ENDSTOPPULLUP_XMIN
//#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN
#define ENDSTOPPULLUP_ZMIN_PROBE
#endif

ENDSTOPPULLDOWNS

While ENDSTOPPULLDOWNS is often not needed. However some other probes and switches require a pull-down in order to function correctly its a similar process as above but for the ENDSTOPPULLDOWNS.

If this is the case for your 3D printers setup then ensure the #define ENDSTOPPULLUPS is disabled and all the ENDSTOPPULLUP_.

#define ENDSTOPPULLDOWNS

On the rare occasion you need a mix of pull-up and pull-down resistance methods, then disable both the ENDSTOPPULLUPS and the ENDSTOPPULLDOWNS.

In addition enable the relevant switch for a pull-up or pull-down by removing those forward slashes for the individual switches. See below for example.

//#define ENDSTOPPULLUPS //SET TO DISABLED
#if DISABLED(ENDSTOPPULLUPS)
#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_ZMAX
//#define ENDSTOPPULLUP_XMIN
//#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN
#define ENDSTOPPULLUP_ZMIN_PROBE //This is only one enabled as pull-up
#endif

//#define ENDSTOPPULLDOWNS //SET TO DISABLED
#if DISABLED(ENDSTOPPULLDOWNS)
#define ENDSTOPPULLDOWN_XMAX
#define ENDSTOPPULLDOWN_YMAX
#define ENDSTOPPULLDOWN_ZMAX
#define ENDSTOPPULLDOWN_XMIN
#define ENDSTOPPULLDOWN_YMIN
#define ENDSTOPPULLDOWN_ZMIN
//#define ENDSTOPPULLDOWN_ZMIN_PROBE // This is only one not enabled as pull-down.
#endif

ENDSTOP_INVERTING

Now if upon testing your end-switches and they are not triggering you may need to invert the signal, luckily this can be in firmware rather than fitting new switches. Below is an example of an inverted logic for the probe or BLTouch not triggering when homing. Furthermore in my case I needed X, Y, and Z switches inverted. However your 3D printer may be different.

#define Z_MIN_PROBE_ENDSTOP_INVERTING true

Stepper Drivers

Obviously setting the correct stepper driver that is installed on the SKR V1.4 motherboard is important. While your particular stepper driver may differ, the below example is using TMC2208’s for UART mode, not standalone. Nonetheless Marlin lists the available stepper drivers, simply copy and paste the relevant driver to the each relevant axis.

#define X_DRIVER_TYPE TMC2208
#define Y_DRIVER_TYPE TMC2208
#define Z_DRIVER_TYPE TMC2208
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2208
//#define E1_DRIVER_TYPE TMC2208
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988

@section motion

DEFAULT_AXIS_STEPS_PER_UNIT

Without a doubt, setting the amount of steps a stepper motor needs to move per mm is important for dimensional accuracy. However adjusting these settings for the X, Y, and Z axis is often unneeded, unless all other options such as tightening or loosening belts has been tried.

However in the current Marlin version 2.0.5.3 there seems to be a typo on the Z Axis as 4000.00 steps is a bit much, and this will need adjusting. Furthermore the extruder motors steps will need to be calibrated separately., if you would like to read more about calibrating your filament extruder have a look at the Calibrating Your Filament Extruder guide.

Additionally the below example for steps per mm for the Creality Ender 3 Pro.

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80.00, 80.00, 400.00, 500.00 }

While an Anet A8 or AM8 will likely need the X and Y changed to 100.00 mm/s, see the below example.

#define DEFAULT_AXIS_STEPS_PER_UNIT { 100.00, 100.00, 400.00, 500.00 }

@section probes

Undoubtedly probes make life a little easier when it comes to bed levelling. However sometimes they take a bit of tweaking and trial and error to getting working well. Nonetheless all going well, you can simply plug into the servo or probe inserts on the SKR V1.4.

In order to work correctly, Marlin needs to know where the probe is connected. While this next step is now semi-redundant as it should be within the pins_BTT_SKR_V1_4.h file. However, it is still good practise to set it just encase there has been a mistake made with an update to Marlin.

However depending on which version of Marlin 2 you are running, there are two configuration differences for the BLTouch or Probe pin.

Marlin firmware 2.0.5.3 or higher

If the Marlin Firmware is version 2.0.5.3 and higher then use the probe pin P0_10. But because of pin definition errors on previous versions the probe pin doesn’t work and the Z-Stop (Z-Min) is used.

Furthermore search and enable #define Z_MIN_PROBE_PIN and set the pin number as set out in the below examples.

So for Marlin 2.0.5.3 or higher set the Z Min Probe pin to 10, see below.

#define Z_MIN_PROBE_PIN P0_10

Marlin firmware lower then 2.0.5.3

While for Marlin firmware versions lower than 2.0.5.3 we need to disable the Z_MIN_PROBE_PIN option and enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN instead, .see the below examples.

Firstly enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN option as below.

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

Secondly disable the Z_MIN_PROBE_PIN option as below.

//#define Z_MIN_PROBE_PIN P0_10

A point of note, the pins_BTT_SKR_V1_4.h will need changing for both the Turbo and non-Turbo versions, as the Turbo version references pins from the non-Turbo version.

BLTouch or Probe ?

In order that the reading from the sensor to be correct, we need to set what type of probe we are using. If the sensor on the 3D printer is an inductive or a switch type sat on the nozzle, then enable the fix mounted probe.

#define FIX_MOUNTED_PROBE

Else if you are using a BLTouch style sensor then enable the bltouch.

#define BLTOUCH

NOZZLE_TO_PROBE_OFFSET

So at this point Marlin knows there is a sensor, it knows what type and where it is plugged in. However it doesn’t know where it is physically attached to the printer.

Undoubtedly this is important, let’s say your probe is to the left of the nozzle by 22mm. However without Marlin knowing this, the point in height for where the nozzle will always be wrong. Due to the measurement is for 22mm away to the left of the nozzle.

So by telling Marlin where the nozzle is physically located Marlin adjusts that point of reference accordingly. As a result, the height for the nozzle is now correct. So if you are using a 3D printed model supplied from say Thingiverse or a purchased holder. Furthermore the distance from the probe to the nozzle is often documented within the description of the file.

However if you don’t know the placement you are going to need to measure the distance from the centre of the nozzle to the centre of the probe or neddle. Both in the X-Axis (Left or right) and the Y-Axis (Front or back). The Z Height adjustment comes much later.

Probe Offset Examples

So in the example below, my probe position that I designed is exactly 22mm to the right. It is not in front or behind the centre of the nozzle.

Now if the nozzle is to the left it is a negative number, if it was to the right you would leave off the minuses as it would be positive number.

#define NOZZLE_TO_PROBE_OFFSET { 22, 0, 0 }

However, let’s say your probe was to the left by 30mm, and behind the probe by 10mm it would look like below.

#define NOZZLE_TO_PROBE_OFFSET { -30, 10, 0 }

In Marlin if the probe is behind the nozzle it is a positive number, and if it was in front then it would be a negative. Marlin supplies a little example in this section.

Invert Stepper Direction

Wether you need to invert the direction in which the stepper motor moves, is dependent upon individual 3D printers. However you will notice straightaway if you need to enable this option, when things are moving in opposite to the intended direction.

Furthermore in the example below I only needed the Z axis inverted on the AM8.

#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true

However I did need the filament extruder also inverted.

#define INVERT_E0_DIR true

3D Printer Dimensions

While not just specific to the SKR V1.4 it is however worth pointing out that you need to set the correct bed size. Not only is this key for printing boundaries but also required for getting as much of the bed level as possible.

so look for and define the X_BED_SIZE and the Y_BED_SIZE options and adjust for your printer.

For example if your printer was a Anet A8 it would be 220 x 220. While if it was a Creality Ender 3 Pro, it would be 230 x 230. Why 230 ? Without a doubt you can get the automatic bed levelling nearer to the edge even with the standard setup.

#define X_BED_SIZE 230
#define Y_BED_SIZE 230

Additionally Marlin needs to know how high the printer can print too. So search for and adjust Z_MAX_POS, as a guide for the Anet A8 is 240, and the Creality Ender 3 Pro is 250.

#define Z_MAX_POS 250

Software End Stops

Furthermore within Marlin 2 there is a section for software minimum end stops. For instance lets say the height for the Z-Axis is 0mm, it would stop at 0mm and not go any lower. Because this is defined in Z_MIN_POS as 0.

However when bed levelling this causes an issue where the probe or nozzle can not be lowered enough. Naturally we want to disable this, so search for the MIN_SOFTWARE_ENDSTOPS option. Furthermore disable the option for the MIN_SOFTWARE_ENDSTOP_Z, See below for an example.

#define MIN_SOFTWARE_ENDSTOPS
#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
#define MIN_SOFTWARE_ENDSTOP_X
#define MIN_SOFTWARE_ENDSTOP_Y
//#define MIN_SOFTWARE_ENDSTOP_Z
#endif

If you haven’t already don’t forget to save your changes.

Mac – Press the CMD (⌘) and the S key at the same time.
PC – Press the Ctrl and the S key at the same time.

@section calibrate

AUTO_BED_LEVELING

While there are various options for the style of automatic bed levelling within Marlin. However the quickest and easiest to get along with is AUTO_BED_LEVELING_BILINEAR so let’s start with that.

#define AUTO_BED_LEVELING_BILINEAR

Importantly for the most part when the printer is set to home the G28 command is giving. However it will forget any previous bed levelling probing. So we need to make sure that it doesn’t forget. So search for and enable the RESTORE_LEVELING_AFTER_G28 option.

#define RESTORE_LEVELING_AFTER_G28

The next major step in setting up bed levelling within Marlin is the amount of grid lines per dimension is used. By default this is 3 x 3 however, for most beds you may need a higher value. I would suggest 9 is a good point to start with for many beds. So lets alter the value of the amount of grid points in GRID_MAX_POINTS_X.

#define GRID_MAX_POINTS_X 9

Z_SAFE_HOMING

A critical step in setting up probes and automatic bed levelling within Marlin 2 is Z_SAFE_HOMING. Without this option enabled the nozzle will crash into the bed when homing. So search and enable Z_SAFE_HOMING if using a BlTouch or probe.

#define Z_SAFE_HOMING

@section extras

Undoubtedly without the EEPROM option being enabled, many of the Marlin options will be lost once the printer is turned off. Furthermore without EEPROM enabled, many options simply won’t be available.

This is because it has not been saved into the printers memory. So memory on a printer can be via a physical chip or software via the SD card. However which ever option is used we need to enable the storing of information into that memory known as EEPROM. So search and enable EEPROM_SETTINGS.

#define EEPROM_SETTINGS

Now we want to be able to talk back and forth to that memory so we need to enable the chit-chat option.

#define EEPROM_CHITCHAT

@section lcd

SD Support

If your LCD or graphics controller has an SD card reader, then you need to enable the SD memory card option.

#define SDSUPPORT

Setting the LCD Controller

Marlin 2 needs to know the type of LCD display we are using on the 3D printer so it can display the information correctly. In this case it is important to double check what display you are using and find it in the list within the lcd section. However for most people using a purchased LCD this is going to be REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER.

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

However for those using Creality 3D printers the CR10_STOCKDISPLAY option is likely to best suited.

#define CR10_STOCKDISPLAY

NEOPIXEL_LED

While the pin number for the Neopixels needs to be set to P1_24. However additionally the number of LED’s in use also needs to be specified in the NEOPIXEL_PIXELS option. Without a doubt it is import to remember that those using the DCDC module, are limited to a maximum of 30 LED’s. Furthermore if you would like to read more on installing NeoPixels to the SKR V1.4 including its configuration then have a read of the SKR V1.4 Adding NeoPixel LED’s guide.

#define NEOPIXEL_LED
#if ENABLED(NEOPIXEL_LED) 
#define NEOPIXEL_TYPE NEO_GRB
#define NEOPIXEL_PIN P1_24
//#define NEOPIXEL2_TYPE NEOPIXEL_TYPE 
//#define NEOPIXEL2_PIN 5 
#define NEOPIXEL_PIXELS 25
//#define NEOPIXEL_IS_SEQUENTIAL
#define NEOPIXEL_BRIGHTNESS 255
#define NEOPIXEL_STARTUP_TEST 
//#define NEOPIXEL_BKGD_LED_INDEX 0 
//#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 }
#endif

SKR V1.4 Configuration File Completed

Congratulations, that is the basic setup done in the Configuration file for using the SKR V1.4 complete. Furthermore this finishes the second part of the SKR V1.4 Marlin 2 setup guide. While there are other settings that may changing within Configuration these are non-specific to the SKR V1.4 and tend to be machine specific. Nonetheless the next step of configuring the SKR V1.4 is the Configuration_adv.h file.

Additionally it is important that you remember to save your changes.

Mac – Press the CMD (⌘) and the S key at the same time.
PC – Press the Ctrl and the S key at the same time.

If you found this guide useful, please consider a donation to help keep the Make ‘N’ Print website running. For further information please have a look at our support us page

Thank You


© 2019-2020 Copyright - All Rights Reserved.