diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index fc7ffc67..6d546505 100755 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -39,7 +39,9 @@ #define CONFIGURATION_H_VERSION 020005 #define KNUTWURST_MEGAS -//#define KNUTWURST_TMC +#define KNUTWURST_TMC +//#define KNUTWURST_BLTOUCH +//#define KNUTWURST_DEBUG //#define POWER_OUTAGE_TEST //=========================================================================== @@ -76,6 +78,7 @@ // Author info of this build printed to the host during boot and M115 #define STRING_CONFIG_H_AUTHOR "(knutwurst)" // Who made the changes. +//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) /** * *** VENDORS PLEASE READ *** @@ -909,7 +912,9 @@ * - normally-open switches to 5V and D32. * */ -//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default +#if ENABLED(KNUTWURST_BLTOUCH) +#define Z_MIN_PROBE_PIN 2 // Pin 32 is the RAMPS default +#endif /** * Probe Type @@ -923,7 +928,10 @@ * Use G29 repeatedly, adjusting the Z height at each point with movement commands * or (with LCD_BED_LEVELING) the LCD controller. */ +#if DISABLED(KNUTWURST_BLTOUCH) #define PROBE_MANUALLY +#endif + //#define MANUAL_PROBE_START_Z 0.2 /** @@ -947,7 +955,9 @@ /** * The BLTouch probe uses a Hall effect sensor and emulates a servo. */ -//#define BLTOUCH +#if ENABLED(KNUTWURST_BLTOUCH) +#define BLTOUCH +#endif /** * Touch-MI Probe by hotends.fr @@ -1019,14 +1029,20 @@ * * Specify a Probe position as { X, Y, Z } */ +#if ENABLED(KNUTWURST_BLTOUCH) +#define NOZZLE_TO_PROBE_OFFSET { 29, -15, 0 } +#endif + +#if DISABLED(KNUTWURST_BLTOUCH) #define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } +#endif // Most probes should stay away from the edges of the bed, but // with NOZZLE_AS_PROBE this can be negative for a wider probing area. #define MIN_PROBE_EDGE 10 // X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 +#define XY_PROBE_SPEED 3600 // Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2) #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z @@ -1065,14 +1081,23 @@ #define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes //#define Z_AFTER_PROBING 5 // Z position after probing is done +#if ENABLED(KNUTWURST_BLTOUCH) +#define Z_PROBE_LOW_POINT -5 // Farthest distance below the trigger-point to go before stopping +#endif + +#if DISABLED(KNUTWURST_BLTOUCH) #define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping +#endif + // For M851 give a range for adjusting the Z probe offset #define Z_PROBE_OFFSET_RANGE_MIN -20 #define Z_PROBE_OFFSET_RANGE_MAX 20 // Enable the M48 repeatability test to test probe accuracy -//#define Z_MIN_PROBE_REPEATABILITY_TEST +#if ENABLED(KNUTWURST_BLTOUCH) +#define Z_MIN_PROBE_REPEATABILITY_TEST +#endif // Before deploy/stow pause for user confirmation //#define PAUSE_BEFORE_DEPLOY_STOW @@ -1286,11 +1311,21 @@ * leveling in steps so you can manually adjust the Z height at each grid-point. * With an LCD controller the process is guided step-by-step. */ +#if ENABLED(KNUTWURST_BLTOUCH) +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +#define AUTO_BED_LEVELING_BILINEAR +//#define AUTO_BED_LEVELING_UBL +//#define MESH_BED_LEVELING +#endif + +#if DISABLED(KNUTWURST_BLTOUCH) //#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR //#define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL #define MESH_BED_LEVELING +#endif /** * Normally G28 leaves leveling disabled on completion. Enable @@ -1303,7 +1338,9 @@ * Turn on with the command 'M111 S32'. * NOTE: Requires a lot of PROGMEM! */ -//#define DEBUG_LEVELING_FEATURE +#if ENABLED(KNUTWURST_DEBUG) +#define DEBUG_LEVELING_FEATURE +#endif #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL) // Gradually reduce leveling correction until a set height is reached, @@ -1335,7 +1372,7 @@ #if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. - #define GRID_MAX_POINTS_X 3 + #define GRID_MAX_POINTS_X 5 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X // Probe along the Y axis, advancing X after each column @@ -1839,7 +1876,7 @@ // // Short 2KHz beep when endstops are hit // -#define ENDSTOP_BEEP +//#define ENDSTOP_BEEP // // The duration and frequency for the UI feedback sound. diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index aa07801a..ad0d2c8b 100755 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1471,7 +1471,9 @@ * * Warning: Does not respect endstops! */ -//#define BABYSTEPPING +#if ENABLED(KNUTWURST_BLTOUCH) +#define BABYSTEPPING +#endif #if ENABLED(BABYSTEPPING) //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR //#define BABYSTEP_WITHOUT_HOMING @@ -1520,6 +1522,7 @@ */ #define LIN_ADVANCE #if ENABLED(LIN_ADVANCE) + //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants #define LIN_ADVANCE_K 0 // Unit: mm compression per 1mm/s extruder speed //#define LA_DEBUG // If enabled, this will generate debug information output over USB. #endif @@ -1556,12 +1559,23 @@ * probe points will follow. This prevents any change from causing * the probe to be unable to reach any points. */ +#if ENABLED(KNUTWURST_BLTOUCH) +#if PROBE_SELECTED && !IS_KINEMATIC + #define MIN_PROBE_EDGE_LEFT 10 + #define MIN_PROBE_EDGE_RIGHT 10 + #define MIN_PROBE_EDGE_FRONT 10 + #define MIN_PROBE_EDGE_BACK 10 +#endif +#endif + +#if DISABLED(KNUTWURST_BLTOUCH) #if PROBE_SELECTED && !IS_KINEMATIC //#define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE //#define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE //#define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE //#define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE #endif +#endif #if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) // Override the mesh area if the automatic (max) area is too large diff --git a/Marlin/Version.h b/Marlin/Version.h index b4e51841..1f65f4d4 100755 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -28,7 +28,7 @@ /** * Marlin release version identifier */ -//#define SHORT_BUILD_VERSION "2.0.5.3" +//#define SHORT_BUILD_VERSION "2.0.5.4" /** * Verbose version identifier which should contain a reference to the location @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2020-01-31" +//#define STRING_DISTRIBUTION_DATE "2020-07-09" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 1212eb5b..6bcd4bd4 100755 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -347,14 +347,14 @@ struct XYZval { FI XYZval operator* (const XYZEval &rs) { XYZval ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; } FI XYZval operator/ (const XYZEval &rs) const { XYZval ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; } FI XYZval operator/ (const XYZEval &rs) { XYZval ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; } - FI XYZval operator* (const float &v) const { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } - FI XYZval operator* (const float &v) { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } - FI XYZval operator* (const int &v) const { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } - FI XYZval operator* (const int &v) { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } - FI XYZval operator/ (const float &v) const { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } - FI XYZval operator/ (const float &v) { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } - FI XYZval operator/ (const int &v) const { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } - FI XYZval operator/ (const int &v) { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } + FI XYZval operator* (const float &v) const { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; } + FI XYZval operator* (const float &v) { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; } + FI XYZval operator* (const int &v) const { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; } + FI XYZval operator* (const int &v) { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; } + FI XYZval operator/ (const float &v) const { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; } + FI XYZval operator/ (const float &v) { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; } + FI XYZval operator/ (const int &v) const { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; } + FI XYZval operator/ (const int &v) { XYZval ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; } FI XYZval operator>>(const int &v) const { XYZval ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; } FI XYZval operator>>(const int &v) { XYZval ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; } FI XYZval operator<<(const int &v) const { XYZval ls = *this; _LS(ls.x); _LS(ls.y); _LS(ls.z); return ls; } diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index ad38ba4e..ffe3d8da 100755 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -25,23 +25,26 @@ * Release version. Leave the Marlin version or apply a custom scheme. */ #ifndef SHORT_BUILD_VERSION - #define SHORT_BUILD_VERSION "2.0.5.3" + #define SHORT_BUILD_VERSION "2.0.5.4" #endif - /** - * Verbose version identifier which should contain a reference to the location - * from where the binary was downloaded or the source code was compiled. - */ +/** + * Verbose version identifier containing a unique identifier, such as the + * vendor name, download location, GitHub account, etc. + */ +#ifndef DETAILED_BUILD_VERSION #define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (knutwurst, Github)" +#endif /** - * Defines the version of the Marlin build. Not to be confused with - * Marlin's own build number, e.g. 2.0.x. + * The STRING_DISTRIBUTION_DATE represents when the binary file was built, + * here we define this default string as the date where the latest release + * version was tagged. */ - #define CUSTOM_BUILD_VERSION "1.0.5" + #define CUSTOM_BUILD_VERSION "1.0.7-prerelese" #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2020-03-31" + #define STRING_DISTRIBUTION_DATE "2020-07-09" #endif /** @@ -68,18 +71,21 @@ #define PROTOCOL_VERSION "1.0" #endif - /** - * Defines a generic printer name to be output to the LCD after booting Marlin. - */ +/** + * Define a generic printer name to be output to the LCD after booting Marlin. + */ +#ifndef MACHINE_NAME #define MACHINE_NAME "Knutwurst's Anycubic i3 MEGA" +#endif - /** - * The SOURCE_CODE_URL is the location where users will find the Marlin Source - * Code which is installed on the device. In most cases —unless the manufacturer - * has a distinct Github fork— the Source Code URL should just be the main - * Marlin repository. - */ +/** + * Website where users can find Marlin source code for the binary installed on the + * device. Override this if you provide public source code download. (GPLv3 requires + * providing the source code to your customers.) + */ +#ifndef SOURCE_CODE_URL #define SOURCE_CODE_URL "https://github.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S" +#endif /** * Default generic printer UUID. diff --git a/Marlin/src/lcd/anycubic_touchscreen.cpp b/Marlin/src/lcd/anycubic_touchscreen.cpp index b92ef338..ea9e302e 100755 --- a/Marlin/src/lcd/anycubic_touchscreen.cpp +++ b/Marlin/src/lcd/anycubic_touchscreen.cpp @@ -305,19 +305,21 @@ void AnycubicTouchscreenClass::PausePrint() TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ; } -void AnycubicTouchscreenClass::StopPrint() +inline void AnycubicTouchscreenClass::StopPrint() { // stop print, disable heaters wait_for_user = false; wait_for_heatup = false; - card.endFilePrint(); - card.closefile(); -#ifdef ANYCUBIC_TFT_DEBUGANYCUBIC_TFT_STATE_SDSTOP_REQ + IsParked = false; + if(card.isFileOpen) { + card.endFilePrint(); + card.closefile(); + } +#ifdef ANYCUBIC_TFT_DEBUG SERIAL_ECHOLNPGM("DEBUG: Stopped and cleared"); #endif print_job_timer.stop(); thermalManager.disable_all_heaters(); - IsParked = false; ai3m_pause_state = 0; #ifdef ANYCUBIC_TFT_DEBUG SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); @@ -413,8 +415,8 @@ void AnycubicTouchscreenClass::ParkAfterStop() SERIAL_ECHOLNPGM("DEBUG: SDSTOP: Park XY"); #endif } - queue.inject_P(PSTR("M84")); // disable stepper motors - queue.inject_P(PSTR("M27")); // force report of SD status + queue.enqueue_now_P(PSTR("M84")); // disable stepper motors + queue.enqueue_now_P(PSTR("M27")); // force report of SD status ai3m_pause_state = 0; #ifdef ANYCUBIC_TFT_DEBUG SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); @@ -523,6 +525,13 @@ void AnycubicTouchscreenClass::HandleSpecialMenu() queue.inject_P(PSTR("G28\nG29")); } #endif + #if ENABLED(KNUTWURST_BLTOUCH) + else if (strcasestr(currentTouchscreenSelection, "") != NULL) + { + SERIAL_ECHOLNPGM("Special Menu: BLTouch Leveling"); + queue.inject_P(PSTR("G28\nG29")); + } + #endif else if (strcasestr(currentTouchscreenSelection, "") != NULL) { SERIAL_ECHOLNPGM("Special Menu: Fil. Change Pause"); @@ -584,6 +593,7 @@ void AnycubicTouchscreenClass::PrintList() HARDWARE_SERIAL_PROTOCOLLNPGM(""); break; +#if DISABLED(KNUTWURST_BLTOUCH) case 4: // Page 2 HARDWARE_SERIAL_PROTOCOLLNPGM(""); HARDWARE_SERIAL_PROTOCOLLNPGM(""); @@ -625,6 +635,30 @@ void AnycubicTouchscreenClass::PrintList() HARDWARE_SERIAL_PROTOCOLLNPGM(""); HARDWARE_SERIAL_PROTOCOLLNPGM(""); break; +#endif +#if ENABLED(KNUTWURST_BLTOUCH) + case 4: // Page 2 + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + break; + + case 8: // Page 3 + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + break; + #endif default: break; @@ -710,12 +744,10 @@ void AnycubicTouchscreenClass::PrintList() if (card.flag.filenameIsDir) { - HARDWARE_SERIAL_PROTOCOLPGM("/"); - HARDWARE_SERIAL_PROTOCOL(card.filename); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gco"); - HARDWARE_SERIAL_PROTOCOLPGM("DIR_"); - HARDWARE_SERIAL_PROTOCOL(outputString); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + HARDWARE_SERIAL_PROTOCOL("/"); + HARDWARE_SERIAL_PROTOCOLLN(card.filename); + HARDWARE_SERIAL_PROTOCOL("/"); + HARDWARE_SERIAL_PROTOCOLLN(buffer); SERIAL_ECHO(count); SERIAL_ECHOPGM(": /"); SERIAL_ECHOLN(outputString); @@ -731,6 +763,11 @@ void AnycubicTouchscreenClass::PrintList() } } } +#endif + else + { + // Do nothing? + } } void AnycubicTouchscreenClass::CheckSDCardChange() @@ -895,7 +932,7 @@ void AnycubicTouchscreenClass::StateHandler() // did we park the hotend already? if ((!IsParked) && (!card.isPrinting()) && (!planner.movesplanned())) { - queue.inject_P(PSTR("G91\nG1 E-1 F1800\nG90")); //retract + queue.enqueue_now_P(PSTR("G91\nG1 E-1 F1800\nG90")); //retract ParkAfterStop(); IsParked = true; } diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index f2915d75..7b2f4df6 100755 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -835,7 +835,7 @@ void Temperature::min_temp_error(const heater_ind_t heater) { #if HOTENDS #if ENABLED(PID_DEBUG) - extern bool PID_Debug_Flag; + extern bool pid_debug_flag; #endif float Temperature::get_pid_output_hotend(const uint8_t E_NAME) { @@ -918,7 +918,7 @@ void Temperature::min_temp_error(const heater_ind_t heater) { #endif // PID_OPENLOOP #if ENABLED(PID_DEBUG) - if (ee == active_extruder && PID_Debug_Flag) { + if (ee == active_extruder && pid_debug_flag) { SERIAL_ECHO_START(); SERIAL_ECHOPAIR(STR_PID_DEBUG, ee, STR_PID_DEBUG_INPUT, temp_hotend[ee].celsius, STR_PID_DEBUG_OUTPUT, pid_output); #if DISABLED(PID_OPENLOOP) diff --git a/README.md b/README.md index db01ecd5..92ebe329 100755 --- a/README.md +++ b/README.md @@ -1,12 +1,15 @@ -# Knutwurst's i3 MEGA S Firmware (based on Marlin 2.0.5.3) +# Knutwurst's i3 MEGA S Firmware (based on Marlin 2.0.5.4) (BITTE GENAU DURCHLESEN! / PLEASE READ CAREFULLY!) +### Wenn dir gefällt, was ich mache, kannst du mir hier einen Kaffee spendieren*: [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/oliverkoester) +*Es muss jetzt keine großzügige Spende sein. Ein paar Cent reichen um mir zu zeigen, wer überhaupt Interesse daran hat und wem die Weiterentwicklung wichtig ist. So bleibt die Motivation da und ich weiß einfach, dass ich nicht für die Tonne programmiere ;) + ## Readme - German (english below) Diese Firmwarekonfiguration aktiviert viele neue erweitere Funktionen der Marlin Firmware: - * Mesh-Bed Kalibrierung + * Mesh-Bed Kalibrierung / Autokalibrierung mit BLTouch (WiP) * S-Kurven Beschleunigung * "Juction Deviation" statt des klassischen "Jerk" * "Linear Pressure Control v1.5" aktiviert (kann mit M900 konfiguriert werden) @@ -14,12 +17,13 @@ Diese Firmwarekonfiguration aktiviert viele neue erweitere Funktionen der Marlin * Bilinear Bed Leveling (BBL) * Manuelles Editieren der Messpunkte * Volle Anycubic Touchscreen Unterstützung - * Spannung vom Bauteillüfter von 8V auf 12V + * Bauteilkühler läuft nun auf 100% statt maximal 70% * Pause & Filamentwechselfunktion * Automatische EEPROM Initialisierung * Filament Runout Sensor kann im Menü deaktiviert werden * Wiederaufnahme des Drucks nach Stromausfall (WiP) * Druckbettgröße erweitert auf 220 x 225 x 210 mm + * Automatischer 'Slowdown', falls Daten nicht schnell genug fließen Besser im Vergleich zu anderen Firmwares (Bugfixes): * Aufgeräumtes Special-Menü @@ -44,6 +48,14 @@ Bekannte Bugs: Weil ich bisher keine gesehen habe, die nicht die blöden Bugs enthält, wie z.B. dass sie abstürzt, wenn man Dateien mit Sonderzeichen auf der SD Karte hat. +>Ist es richtig, dass du mehr Wert auf den Druck von SD-Karte legst und andere eher auf USB? + +ich lege nicht "mehr Wert auf SD", sondern habe einfach die zahlreichen Bugs dahingehend gefixed. Die kleinen Anpassungen mit dem USB Puffer etc sind sowieso drin. Die sind aber in meinen Augen so uninteressant, dass ich es nicht erwähne, denn das wirklich komplizierte ist es, das proprietäre Display und den Cardreader korrekt anzusteuern. Alles andere ist Pillepalle. + +>Was ist dieser "Slowdown"? + +Der automatische Slowdown wird aktiv, falls der Drucker nicht schnell genug Daten bekommt. Dann fährt er automatisch mit der Geschwindigkeit auf 50% runter, satt unbehelligt weiterzumachen und dann zu ruckeln und Blobs zu verursachen. + >Wieso ist mein Drucker plötzlich lauter als vorher? Dein Bauteillüfter läuft jetzt mit voller Drehzahl, was er vorher nicht tat. Stelle im Slicer (z.B. Cura) die Geschwindigkeit einfach auf 70% und schon hast du die alte Lautstärke wieder. Diese Modifikation ist notwendig, falls man den Lüfter tauschen möchte und viele Lüfter mit den originalen 8V nicht oder nur unzureichend laufen. @@ -88,13 +100,25 @@ Bei diesem Mapping ist man eben darauf angewiesen, dass die Funktionen, die man --- -### Bilder +### Bilder - Special Menu -![Manual Mesh Bed Leveling](images/Mesh_Level.jpg) +![SpecialMenu](images/SpecialMenu.jpg) -![Ultra Fine mesh tuning](images/Fine_Tuning.jpg) +### Bilder - Manual Mesh Beld Leveling -![Enable or Disable Filament Runout Sensor](images/Filament_Sensor_on_off.jpg) +![Seite 1](images/MN_Page1.jpg) + +![Seite 2](images/MN_Page2.jpg) + +![Seite 3](images/MN_Page3.jpg) + +![Seite 4](images/MN_Page4.jpg) + +### Bilder - BLTouch Beld Leveling + +![Seite 1](images/BL_Page1.jpg) + +![Seite 2](images/BL_Page2.jpg) --- @@ -113,13 +137,14 @@ Du kannst die fertigen Binärdateien hier herunterladen: https://github.com/knut --- +### If you like what I do you can buy me a coffee: [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/oliverkoester) +*It doesn't have to be a generous donation. A few cents are enough to show me who is interested in further development. So the motivation stays and I just know that I am not programming for the bin ;) + ## Readme - English - - This firmware configuration activates many new features of the Marlin firmware: - * Mesh bed calibration + * Mesh bed calibration / Auto calibration with BLTouch (WiP) * S-curve acceleration * "Juction Deviation" instead of the classic "Jerk" * "Linear Pressure Control v1.5" enabled (can be configured with M900) @@ -127,11 +152,13 @@ This firmware configuration activates many new features of the Marlin firmware: * Bilinear Bed Leveling (BBL) * Manual editing of the measuring points * Full Anycubic touchscreen support + * Part cooling fan now runs at 100% instead of 70% * Pause & filament change function * Automatic EEPROM initialization * Filament Runout Sensor can be deactivated in the menu * Power outage support * Print bed size enlarged to 220 x 225 x 210 mm + * Automatic slowdown in if the data is not received fast enough What's better in coparison to other firmwares (bug fixes): * Tidy special menu @@ -156,6 +183,14 @@ Known bugs: Because I've never seen one that doesn't contain the stupid bugs like the crashes when you have files with special characters on the SD card. +> Is it correct that you put more emphasis on printing from SD card and others more on USB? + +I don't put "more emphasis on SD", but just fixed the numerous bugs. The small adjustments with the USB buffer etc are included anyway. But they are so uninteresting in my eyes that I don't mention it, because the really complicated thing is to control the proprietary display and the card reader correctly. Everything else is easy-peasy. + +> What is this "slowdown"? + +The automatic slowdown is activated if the printer does not receive data quickly enough (e.g. via USB). Then it automatically goes down to 50%. This prevents stuttering and eliminated blobs. + >Why is my printer so much louder than before? Your component fan is now running at full speed, which it did no before. Simply set the speed to 70% in the slicer (e.g. Cura) and you will have the old speed again. This modification is necessary if you want to replace the fan. Many aftermarket fans do not run properly or at all with the original 8V. @@ -200,13 +235,26 @@ With this mapping, you have to rely on the fact that the functions you want to u --- -### Pictures +### Pictures - Special Menu -![Manual Mesh Bed Leveling](images/Mesh_Level.jpg) +![SpecialMenu](images/SpecialMenu.jpg) -![Ultra Fine mesh tuning](images/Fine_Tuning.jpg) +### Pictures - Manual Mesh Beld Leveling + +![Page 1](images/MN_Page1.jpg) + +![Page 2](images/MN_Page2.jpg) + +![Page 3](images/MN_Page3.jpg) + +![Page 4](images/MN_Page4.jpg) + +### Pictures - BLTouch Beld Leveling + +![Page 1](images/BL_Page1.jpg) + +![Page 2](images/BL_Page2.jpg) -![Enable or Disable Filament Runout Sensor](images/Filament_Sensor_on_off.jpg) --- diff --git a/images/BL_Page1.jpg b/images/BL_Page1.jpg new file mode 100644 index 00000000..eeccdfb0 Binary files /dev/null and b/images/BL_Page1.jpg differ diff --git a/images/BL_Page2.jpg b/images/BL_Page2.jpg new file mode 100644 index 00000000..d56f17f9 Binary files /dev/null and b/images/BL_Page2.jpg differ diff --git a/images/MN_Page1.jpg b/images/MN_Page1.jpg new file mode 100644 index 00000000..69e0d3ee Binary files /dev/null and b/images/MN_Page1.jpg differ diff --git a/images/MN_Page2.jpg b/images/MN_Page2.jpg new file mode 100644 index 00000000..d03988ee Binary files /dev/null and b/images/MN_Page2.jpg differ diff --git a/images/MN_Page3.jpg b/images/MN_Page3.jpg new file mode 100644 index 00000000..1bc97f80 Binary files /dev/null and b/images/MN_Page3.jpg differ diff --git a/images/MN_Page4.jpg b/images/MN_Page4.jpg new file mode 100644 index 00000000..e4d40d88 Binary files /dev/null and b/images/MN_Page4.jpg differ diff --git a/images/MenuHome.jpg b/images/MenuHome.jpg new file mode 100644 index 00000000..40aa9773 Binary files /dev/null and b/images/MenuHome.jpg differ diff --git a/images/SpecialMenu.jpg b/images/SpecialMenu.jpg new file mode 100644 index 00000000..a1daad27 Binary files /dev/null and b/images/SpecialMenu.jpg differ diff --git a/platformio.ini b/platformio.ini index f578ff86..702f52db 100755 --- a/platformio.ini +++ b/platformio.ini @@ -25,16 +25,16 @@ default_src_filter = + - - + extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py build_flags = -fmax-errors=5 -g -D__MARLIN_FIRMWARE__ -fmerge-all-constants lib_deps = - LiquidCrystal - TMCStepper@>=0.6.2,<1.0.0 - Adafruit NeoPixel - U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip - Adafruit_MAX31865=https://github.com/adafruit/Adafruit_MAX31865/archive/master.zip - LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip - Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/0.8.0.zip + LiquidCrystal@1.5.0 + TMCStepper@~0.7.1 + Adafruit NeoPixel@1.5.0 + U8glib-HAL@0.4.1 + Adafruit MAX31865 library@~1.1.0 + LiquidTWI2@1.2.7 + Arduino-L6470@0.8.0 + SlowSoftI2CMaster SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip SailfishRGB_LED=https://github.com/mikeshub/SailfishRGB_LED/archive/master.zip - SlowSoftI2CMaster=https://github.com/mikeshub/SlowSoftI2CMaster/archive/master.zip # Globally defined properties # inherited by all environments @@ -221,10 +221,10 @@ lib_compat_mode = strict extra_scripts = Marlin/src/HAL/LPC1768/upload_extra_script.py src_filter = ${common.default_src_filter} + lib_deps = Servo - LiquidCrystal - U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip - TMCStepper@>=0.6.1,<1.0.0 - Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/release.zip + LiquidCrystal@1.0.0 + U8glib-HAL@0.4.1 + TMCStepper@~0.7.1 + Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip [env:LPC1769] @@ -239,17 +239,17 @@ lib_compat_mode = strict extra_scripts = Marlin/src/HAL/LPC1768/upload_extra_script.py src_filter = ${common.default_src_filter} + lib_deps = Servo - LiquidCrystal - U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip - TMCStepper@>=0.6.1,<1.0.0 - Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/release.zip + LiquidCrystal@1.0.0 + U8glib-HAL@0.4.1 + TMCStepper@~0.7.1 + Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip # # STM32F103RC # [env:STM32F103RC] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -265,7 +265,7 @@ monitor_speed = 115200 # STM32F103RC_fysetc # [env:STM32F103RC_fysetc] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC #board_build.core = maple platform_packages = tool-stm32duino @@ -291,7 +291,7 @@ upload_protocol = serial # [env:STM32F103RC_btt] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -306,7 +306,7 @@ lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 [env:STM32F103RC_btt_USB] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -321,7 +321,7 @@ lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 [env:STM32F103RC_btt_512K] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC board_upload.maximum_size=524288 platform_packages = tool-stm32duino @@ -337,7 +337,7 @@ lib_ignore = Adafruit NeoPixel, SPI monitor_speed = 115200 [env:STM32F103RC_btt_512K_USB] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC board_upload.maximum_size=524288 platform_packages = tool-stm32duino @@ -356,7 +356,7 @@ monitor_speed = 115200 # STM32F103RE # [env:STM32F103RE] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RE platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -373,7 +373,7 @@ monitor_speed = 115200 # STM32F103RE_btt_USB ......... RET6 (USB mass storage) # [env:STM32F103RE_btt] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RE platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -389,7 +389,7 @@ upload_protocol = stlink monitor_speed = 115200 [env:STM32F103RE_btt_USB] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RE platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -408,7 +408,7 @@ monitor_speed = 115200 # STM32F4 with STM32GENERIC # [env:STM32F4] -platform = ststm32 +platform = ststm32@<6.2.0 board = disco_f407vg build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F4 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED lib_ignore = Adafruit NeoPixel, TMCStepper @@ -418,7 +418,7 @@ src_filter = ${common.default_src_filter} + - - # Geeetech GTM32 (STM32F103VET6) # [env:STM32F103VE_GTM32] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103VE build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=DEBUG_NONE -std=gnu++14 -MMD -ffunction-sections -fdata-sections -nostdlib @@ -456,7 +456,7 @@ upload_protocol = serial # Longer 3D board in Alfawise U20 (STM32F103VET6) # [env:STM32F103VE_longer] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103VE build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -USERIAL_USB @@ -470,7 +470,7 @@ lib_ignore = Adafruit NeoPixel, LiquidTWI2, SPI # MKS Robin Mini (STM32F103VET6) # [env:mks_robin_mini] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103VE build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 @@ -483,7 +483,7 @@ lib_ignore = Adafruit NeoPixel, SPI # MKS Robin Nano (STM32F103VET6) # [env:mks_robin_nano] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103VE platform_packages = tool-stm32duino build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -499,7 +499,7 @@ lib_ignore = Adafruit NeoPixel, SPI # MKS Robin (STM32F103ZET6) # [env:mks_robin] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103ZE build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_XL_DENSITY @@ -514,7 +514,7 @@ lib_ignore = Adafruit NeoPixel, SPI # MKS Robin Pro (STM32F103ZET6) # [env:mks_robin_pro] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103ZE extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_pro.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -528,7 +528,7 @@ lib_ignore = Adafruit NeoPixel, SPI, TMCStepper # MKS Robin Lite/Lite2 (STM32F103RCT6) # [env:mks_robin_lite] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 @@ -541,7 +541,7 @@ lib_ignore = Adafruit NeoPixel, SPI # MKS ROBIN LITE3 (STM32F103RCT6) # [env:mks_robin_lite3] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103RC extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_lite3.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py @@ -555,7 +555,7 @@ lib_ignore = Adafruit NeoPixel, SPI # JGAurora A5S A1 (STM32F103ZET6) # [env:jgaurora_a5s_a1] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103ZE build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY @@ -568,7 +568,7 @@ lib_ignore = Adafruit NeoPixel, SPI # Malyan M200 (STM32F103CB) # [env:STM32F103CB_malyan] -platform = ststm32 +platform = ststm32@<6.2.0 board = malyanM200 build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1 -std=c++1y -D MOTHERBOARD="BOARD_MALYAN_M200" -DSERIAL_USB -ffunction-sections -fdata-sections -Wl,--gc-sections -DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__ @@ -579,7 +579,7 @@ lib_ignore = Adafruit NeoPixel, LiquidCrystal, LiquidTWI2, TMCStepper, U8glib-H # Chitu boards like Tronxy X5s (STM32F103ZET6) # [env:chitu_f103] -platform = ststm32 +platform = ststm32@<6.2.0 board = genericSTM32F103ZE build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY @@ -593,7 +593,7 @@ lib_ignore = Adafruit NeoPixel # 'STEVAL-3DP001V1' STM32F401VE board - https://www.st.com/en/evaluation-tools/steval-3dp001v1.html # [env:STM32F401VE_STEVAL] -platform = ststm32 +platform = ststm32@<6.2.0 board = STEVAL_STM32F401VE platform_packages = framework-arduinoststm32@>=3.107,<4 build_flags = ${common.build_flags} @@ -611,7 +611,7 @@ src_filter = ${common.default_src_filter} + # FLYF407ZG # [env:FLYF407ZG] -platform = ststm32 +platform = ststm32@<6.2.0 board = FLYF407ZG platform_packages = framework-arduinoststm32@>=3.107,<4 build_flags = ${common.build_flags} @@ -628,7 +628,7 @@ src_filter = ${common.default_src_filter} + # FYSETC S6 (STM32F446VET6 ARM Cortex-M4) # [env:FYSETC_S6] -platform = ststm32 +platform = ststm32@<6.2.0 board = fysetc_s6 platform_packages = tool-stm32duino @@ -651,7 +651,7 @@ upload_protocol = serial # Shield - https://github.com/jmz52/Hardware # [env:STM32F407VE_black] -platform = ststm32 +platform = ststm32@<6.2.0 board = blackSTM32F407VET6 platform_packages = framework-arduinoststm32@>=3.107,<4 build_flags = ${common.build_flags} @@ -667,7 +667,7 @@ src_filter = ${common.default_src_filter} + # BigTreeTech SKR Pro (STM32F407ZGT6 ARM Cortex-M4) # [env:BIGTREE_SKR_PRO] -platform = ststm32 +platform = ststm32@<6.2.0 board = BigTree_SKR_Pro platform_packages = framework-arduinoststm32@>=3.107,<4 build_flags = ${common.build_flags} @@ -687,7 +687,7 @@ debug_init_break = # Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4) # [env:BIGTREE_GTR_V1_0] -platform = ststm32@>=5.7.0 +platform = ststm32@>=5.7.0,<6.2.0 framework = arduino platform_packages = framework-arduinoststm32@>=3.107,<4 board = BigTree_SKR_Pro @@ -697,12 +697,12 @@ build_flags = ${common.build_flags} -DTARGET_STM32F4 -DSTM32F407IX -DVECT_TAB_OFFSET=0x8000 -IMarlin/src/HAL/STM32 lib_deps = - U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip - LiquidCrystal - TMCStepper@>=0.5.2,<1.0.0 - Adafruit NeoPixel - LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip - Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/0.7.0.zip + U8glib-HAL@0.4.1 + LiquidCrystal@1.5.0 + TMCStepper@~0.7.1 + Adafruit NeoPixel@1.5.0 + LiquidTWI2@1.2.7 + Arduino-L6470@0.8.0 lib_ignore = SoftwareSerial, SoftwareSerialM src_filter = ${common.default_src_filter} + monitor_speed = 250000 @@ -799,7 +799,7 @@ debug_tool = jlink # RUMBA32 # [env:rumba32_f446ve] -platform = ststm32 +platform = ststm32@<6.2.0 board = rumba32_f446ve build_flags = ${common.build_flags} -DSTM32F4xx @@ -825,7 +825,7 @@ upload_protocol = dfu # MKS RUMBA32 (adds TMC2208/2209 UART interface and AUX-1) # [env:rumba32_mks] -platform = ststm32 +platform = ststm32@<6.2.0 board = rumba32_f446ve build_flags = ${common.build_flags} -DSTM32F4xx -DARDUINO_RUMBA32_F446VE -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"RUMBA32_F446VE\""