Back in 2016, I got a 3d printer, the moniprice maker select v2.1. But not until years later did I realize that the firmware on the stock "Melzi" board did not have thermal runaway protection. This meant that if the thermistor in the hotend ever died, it would report 0 degrees, and the hotend would get hotter and hotter until it would very likely catch fire. I set out to fix it before I printed anything else.
New Firmware
I decided to install the marlin firmware found here, and while it was not built exactly for my printer, it only took a few modifications (shown below) till it was ready to be uploaded.
Line 122: #define MOTHERBOARD BOARD_MELZI
Line 140: #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
Line ~290:
#define TEMP_SENSOR_0 1 |
#define TEMP_SENSOR_1 0 |
#define TEMP_SENSOR_2 0 | I only have one thermister, so we only need SENSOR_0
#define TEMP_SENSOR_3 0 |
#define TEMP_SENSOR_4 0 |
#define TEMP_SENSOR_BED 1 |
Line ~517:
#define X_MIN_ENDSTOP_INVERTING true // true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true
#define Z_MIN_ENDSTOP_INVERTING true
#define X_MAX_ENDSTOP_INVERTING false // false, this one was fine
#define Y_MAX_ENDSTOP_INVERTING false
#define Z_MAX_ENDSTOP_INVERTING false
#define Z_MIN_PROBE_ENDSTOP_INVERTING // I don't have a probe for my printer.
Line ~550:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 94 } //settings found in my printer documentation
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
#define DEFAULT_MAX_ACCELERATION { 1500, 1500, 100, 10000 }
#define DEFAULT_ACCELERATION 700
#define DEFAULT_RETRACT_ACCELERATION 2000 // I wanted it relatively slow to avoid extrusion problems.
#define DEFAULT_TRAVEL_ACCELERATION 700 // Slow to avoid ghosting.
#define DEFAULT_XJERK 8.0
#define DEFAULT_YJERK 8.0
#define DEFAULT_ZJERK 0.4
#define DEFAULT_EJERK 5.0
Line ~773:
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
#define INVERT_E0_DIR true
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
#define INVERT_E4_DIR false
Line ~814: #define Z_MAX_POS 190 //with z supports reducing my z height, 190 is my new max height
Unfortunately, the Melzi board does not have a bootloader, and therefore you cannot simply flash any firmware you want.
Bootloader
The Melzi board seems to be a derivative of the sanguino, which makes it pretty easy to use an arduino uno as a middle man using this library to flash a firmware to the Melzi.
Here is a picture of the main board. You can see the heatsinks for the stepper drivers across the top. I have plans to replace the drivers with TMC2226 stepper drivers in the future as I've wanted to mess with those for a while. That's something for another post though.