Introduction: My CR10 New Life: SKR Mainboard and Marlin
My standard MELZI board was dead and I was in need of an urgent replacement to bring my CR10 alive.
- First step, choose a replacement board, so I've choosen Bigtreetech skr v1.3 that is a 32 bits board, with TMC2208 drivers (with support for UART mode)
- Second step, choose the firmware, so Marlin 2.0, a very common choise for this kind of printers.
I've used all the standard wiring and parts from my CR10.
This is my very quick guide to replace the board and setup Marlin on it.
Supplies
- Skr 1.3 Mainboard with 4 TMC2208 drivers (Amazon link)
Step 1: DOWNLOAD VISUAL STUDIO AND MARLIN FIRMWARE
- Install Visual Studio text Editor from https://code.visualstudio.com/download
- Once done click Extension icon and search for PlatformIO extension and install it
- Download Marlin Firmware from github repository: https://github.com/MarlinFirmware/Marlin
- Select 2.0 version, click on Code and Download ZIP
Step 2: ADD CR10 DEFAULT SETTINGS
- Unzip the file
- Go to https://github.com/MarlinFirmware/Configurations repository and search for examples / Creality / CR10 folder and download all the files
- Copy all the files and Paste and Override on the Marlin folder unzipped at previus steps
Step 3: SETUP MARLIN FOR SKR BOARD
- Open Visual Studio and open Platform IO extension (alien icon on the left tool bar), click Open new Project, select your Marlin folder
- Open platform.ini file and replace mega2560 default_envs with LPC1768 (for SKR1.3)
- Open Configuration.h file
- Search for SERIAL_PORT:
- Set #define SERIAL_PORT equals to -1
- Remove // comment chars before define SERIAL_PORT_2
- Set #define SERIAL_PORT_2 equals to 0
- Search for MOTHERBORD:
- Set #define MOTHERBORD equals to BOARD_BTT_SKR_V1_3
- Search for DRIVER_TYPE:
- Set #define X_DRIVER, Y_DRIVER and Z_DRIVER equals to TMC2208
- Search for CLASSIC_JERK (not mandatory step):
- Set #define DEFAULT_XJERK and DEFAULT_YJERK equals to 7.0
- Open Configuration_adv.h file
- Search for SDCARD_CONNECTION:
- Remove // comment chars before define SDCARD_CONNECTION
- Set #define SDCARD_CONNECTION equals to ONBOARD
- Search for INDIVIDUAL_AXIS_HOMING_MENU (not mandatory step):
- Remove // comment chars before define INDIVIDUAL_AXIS_HOMING_MENU
- Search for TMC_DEBUG (not mandatory step):
- Remove // comment chars before define TMC_DEBUG
- Search for E0_AUTO_FAN_PIN (extruder fan):
- Set #define E0_AUTO_FAN_PIN equals to FAN1_PIN
- Search for HAS_TRINAMIC_CONFIG (UART TMC driver):
- Set #define X_CURRENT, X_CURRENT and X_CURRENT equals to 750
- Click Compile button and wait till SUCCESSFUL completion
- Go to .pio / build / LPC1768 folder inside out Marlin root folder, copy firmware.bin file to the SD Card and reboot the board/printer. The firmware will be automatically loaded.
Step 4: HARDWARE WIRING AND SETUP
- Using UART drivers, such as TM2208 we need to put a jumper on the pins for this connection on each driver we use and Remove all the jumpers under all the drivers (see red pins below)
- Modify JST connector for X and Y endstops and use only 2 pins into board connectors as in the picture below.
- See following picture for wiring all devices to the board
Step 5: CALIBRATION: EXTRUDER STEPS
- Send M503 command to retrieve current steps/mm for each motors
- Find and copy M92 line, looks like the following echo: M92 X80.00 Y80.00 Z400.00 E95.00
- Extrude 10 mm of material from your machine UI (using prontface, octoprint or so on)
- Use the following formula to calculate new step/mm value:
(length you expected / length you got) * current step value
example: 10 / 8,9 * 95 = 106.8
- Send M92 E command to set new value, for example M92 E106.8
- Send M500 to store new value to EPROM
Step 6: CALIBRATION: AUTOPID TEMPERATURE
- Use M303 command to start autopid tune procedure, send M303 E0 S220 C6 to run 6 cycle of tuning for E0 at 220 temperature degrees (use 220 or the temperature you are used to print)
- The printer will start to heat the hotend and turn off it 6 times (pay attention to the hotend is hot!!!), at the end you will receive automatically the new values for Kp, Ki e Kd:
For example:
Recv: #define DEFAULT_Kp 19.40
Recv: #define DEFAULT_Ki 1.45
Recv: #define DEFAULT_Kd 64.99
- Send M301 command replacing P=Kp, I = Ki, D = Kd, for example M301 P19.40 I1.45 D64.99
- Send M500 command to store new values into EPROM memory
Step 7: MOD FOR STANDALONE CR10
I also made my CR10 more easy to move and space saver removing the external case for the electronics, if you are interested, fowllowing the link to all printed parts.
https://www.thingiverse.com/thing:4721812