Embedded Systems, Internet of Things and Prototyping Help

Ender 3 Build Pro: SKR v1.4 Turbo w/ TMC2209 and BMG (work in progress)

21 Jan 2020

Table of Contents


My Ender 3 Pro arrived last week and I figured I could give an electrical engineer’s persective of assemblying and customizing a 3D printer while being able to provide a great resource for people with zero embedded systems experience; so here you go internet. Recently an opportunity arose where I needed to add a 3D printer to my collection of hardware prototyping tools. I scoured reddit and found that the Ender 3 was a great entry level printer that wouldn’t break the bank. So I ended up purchasing an Ender 3 Pro, a SKR v1.4 Turbo w/ TCM2209 stepper motor drivers, a clone of the BMG Extruder, a sprint steel bed with a PEI sheet on it, orange bed springs, and a BLTouch for auto bed leveling.

Ender 3 Initial Build

The build was pretty straight forward using the intructions provided by the manufacture. There’s really not too much to say about this part of the build, I’m sure there are plenty of tutorials online for anyone who has issues putting the physical hardware together, but I figured I should mention the one issue I ran into. I wanted to make sure the printer was very tight and I found the alluminium pretty soft to the point I completely stripped one of the two holes that connects the x-axis motor bracket to the cross-member. The screw went into the back side of the circled hole. I left it stripped and haven’t replaced it with a longer screw that would thread through the other side of the extruded alluminium cross-member, but this is on the todo list for sure. Other than that, I was able to build the printer, power it up, and start my first build within 1 hour.

First Print

I chose a baby yoda as my first print using the recommended slicing settings, but completely did not see that I needed to turn on supports, so baby yoda’s right hand is pretty jacked but the print came out far above my expectations. It took about 10 hours and 45 minutes on a completely stock Ender 3 Pro… and yes I left my printer running all night on the first print, but I slept next to it and my dog usually barks at fires I start in the house.

BMG Bracket

The next evening I looked at all the parts that had arrived and figured the BMG extruder looked like an easy install. After fiddling with the bracket location and not being able to get the extruder to fit properly, I hopped on over to amazon and the reviews mentioned needing a bracket to avoid having to file the extruder, so I printed this bracket. The stock Ender 3 Pro prints pretty nicely. It’s fairly easy to install the bracket, I just used some M3 hardware I had laying around from my quadcopter builds.

SKR v1.4 Turbo Software

The software aspect of this project has been very straight forward for me as I am familiar with arduino, C, C++, and VS code. I know that it can be a very daunting task for someone who has not compiled microcontroller firmware before, but if you stick to the instructions and help from reddit and the appropriate githubs you can definitely make it work. I found the BIGTREETECH-SKR-V1.3 repo and saw there was a folder for Marlin-2.0.x-SKR-V1.4-Turbo. I did some diffs between the BIGTREETECH-SKR-V1.3/BTT SKR V1.4/Firmware/Marlin-2.0.x-SKR-V1.4-Turbo/config/default/Configuration.h and BIGTREETECH-SKR-V1.3/BTT SKR V1.4/Firmware/Marlin-2.0.x-SKR-V1.4-Turbo/config/default/Configuration_adv.h and the BIGTREETECH-SKR-V1.3/BTT SKR V1.4/Firmware/Marlin-2.0.x-SKR-V1.4-Turbo/config/examples/Creality/Ender-3/Configuration.h and BIGTREETECH-SKR-V1.3/BTT SKR V1.4/Firmware/Marlin-2.0.x-SKR-V1.4-Turbo/config/examples/Creality/Ender-3/Configuration_adv.h files and chose which #define’s to keep from the Ender 3 Pro file and the SKR files based on if the parameter seemed associated with a physical component of the Ender 3 Pro or if it appeared to be a controller based parameter. About 30 minutes later I had the basis for the configurations that I’m running right now I type this. I have tweaked a couple of parameters related to speed/acceleration, the BMG extrusion rate, and the SDCard (it would not let me mount it from the LCD so I enabled the SDCard being mounted at all times, which broke the USB interface being available to my PC, but it’s been working and I wanted to get it up and running ASAP). I’ve got my entire configuration available on my fork the the BIGTREETECH repo. If you have never compiled firmware before, the location of configurations that is actually compiled is at BIGTREETECH-SKR-V1.3/BTT SKR V1.4/Firmware/Marlin-2.0.x-SKR-V1.4-Turbo/Marlin/. I am using the extenstion within VS code to compile Marlin. Just use the tutorial on the Marlin github. There documentation needs to be updated though, after cloning the project in step 3, you’ll want to go back to the tab on the left and then the PIO Home tab on the top. Then chose Import Arduino Project, this will actually enable you to have the Build option in the left side bar like their step 4 shows.

SKR v1.4 Turbo Hardware

Alright, on to the hardware! Did I mention I love getting to play around with new hardware? So just a disclaimer, I only used the wiring diagram below and a multimeter to get everything connected. These are all the connections that I ended up using on the board starrting in the top left hand corner and rotating clock wise around the board:

Results and Calibration Prints