Open 3D Printer Config
Around the beginning of quarantine, I decided to get a new 3D printer to replace my aging 2012-era Solidoodle 2. I chose the Creality Ender 3 Pro, a ~$200 completely open-source printer. Choosing a 3D printer this inexpensive has a couple downsides, so I decided to strategically update the most important components.
Of course, the software makes as large a difference as the hardware. With some careful configuration tweaks, I've made the printer significantly more useful.
- Enabling the BLTouch(opens new window) , which required patching the board support files to correct the pinout of the E3 DIP
- Switching to no-endstop homing (using the upgraded steppers' stall detection), and optimizing the homing procedure to reduce strain on the timing belts but run faster (including tuning the homing sensitivity)
- Patching the build configuration to use the hidden extra 256k of flash storage on the SKR Mini E3 DIP
- Switching to software PWM to reduce fan noise
- Switching to an improved Z-leveling interface, which greatly simplifies bed leveling
- Removing arc support, an unused GCODE feature only rarely relevant for other CNC machines. This frees up flash storage for more important things, like...
- Enabling several onscreen games hidden inside the menus
- Restoring powerloss recovery, which required patching a malformed ternary operator in Marlin
- Increasing the max allowed acceleration (since vibration is less of an issue with TMC2209 drivers)
- Switching to S-curve acceleration, which allows higher print speeds with the same print quality
- Silencing all beeps
- Improving pause behavior, and linking the onscreen controls to the networked Octoprint interface
- Parsing print ETA and time to completion from GCode files and displaying live stats, accurate to within seconds
- Adding support for individual-object cancellation (when printing many objects and one fails, this allows you to cancel just that object in realtime)
- Enabling USB SD support (so you can browse the printer's internal SD card as a USB mass storage device)
- As a consequence of this, enabling completely wireless firmware flashing over the local network
- Modifying the automatic bed leveling to leave room for clips at the edge of the build plate
- Significantly improving the speed and reliability of the automatic bed leveling
- Adding a "You Wouldn't Download a Car" image bootscreen
You can see my final firmware build(opens new window) continuously updating as I merge new features.