From f292a6ca7ab532ae0f48f042a3ff26d31c301dd4 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Mon, 21 Jan 2019 21:39:38 +0100 Subject: [PATCH 01/12] Refactor filament sensor selftest call. --- Firmware/ultralcd.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 937ccd5a1..b96050649 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6418,21 +6418,25 @@ bool lcd_selftest() if (_result) { _progress = lcd_selftest_screen(8, _progress, 3, true, 2000); //bed ok -#ifdef FILAMENT_SENSOR - if (mmu_enabled == false) { - _progress = lcd_selftest_screen(9, _progress, 3, true, 2000); //check filaments sensor - _result = lcd_selftest_fsensor(); - } -#endif // FILAMENT_SENSOR } + +#ifdef FILAMENT_SENSOR + if (mmu_enabled == false) + { + if (_result) + { + _progress = lcd_selftest_screen(9, _progress, 3, true, 2000); //check filaments sensor + _result = lcd_selftest_fsensor(); + } + if (_result) + { + _progress = lcd_selftest_screen(10, _progress, 3, true, 2000); //fil sensor OK + } + } +#endif // FILAMENT_SENSOR + if (_result) { -#ifdef FILAMENT_SENSOR - if (mmu_enabled == false) - { - _progress = lcd_selftest_screen(10, _progress, 3, true, 2000); //fil sensor OK - } -#endif // FILAMENT_SENSOR _progress = lcd_selftest_screen(11, _progress, 3, true, 5000); //all correct } else From a92d9c782b0d3ba379aa78d3ef0ff5b456f98530 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 22 Jan 2019 10:56:07 +0100 Subject: [PATCH 02/12] Add IR sensor test. --- Firmware/mmu.cpp | 23 +++++++++------- Firmware/mmu.h | 8 ++++++ Firmware/ultralcd.cpp | 61 ++++++++++++++++++++++++++++++++++++++----- 3 files changed, 76 insertions(+), 16 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index c8ced41b2..ba80a7fd9 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -450,10 +450,11 @@ void mmu_command(uint8_t cmd) mmu_ready = false; } -void mmu_load_step() { +void mmu_load_step(bool synchronize) +{ current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder); - st_synchronize(); + if (synchronize) st_synchronize(); } bool mmu_get_response(uint8_t move) @@ -554,6 +555,14 @@ bool mmu_get_response(uint8_t move) return response;*/ } +void mmu_wait_for_heater_blocking() +{ + while ((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5) + { + delay_keep_alive(1000); + lcd_wait_for_heater(); + } +} void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move) { @@ -648,11 +657,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move) lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature...")); delay_keep_alive(3000); } - while ((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5) - { - delay_keep_alive(1000); - lcd_wait_for_heater(); - } + mmu_wait_for_heater_blocking(); } if (move_axes) { lcd_clear(); @@ -955,7 +960,7 @@ static const E_step ramming_sequence[] PROGMEM = }; //! @brief Unload sequence to optimize shape of the tip of the unloaded filament -static void filament_ramming() +void mmu_filament_ramming() { for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i) { @@ -987,7 +992,7 @@ void extr_unload() if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" "); else lcd_print(mmu_extruder + 1); - filament_ramming(); + mmu_filament_ramming(); mmu_command(MMU_CMD_U0); // get response diff --git a/Firmware/mmu.h b/Firmware/mmu.h index 1861be6dc..8f7f34a33 100644 --- a/Firmware/mmu.h +++ b/Firmware/mmu.h @@ -1,5 +1,8 @@ //! @file +#ifndef MMU_H +#define MMU_H + #include @@ -119,3 +122,8 @@ extern void mmu_eject_fil_2(); extern void mmu_eject_fil_3(); extern void mmu_eject_fil_4(); extern void mmu_continue_loading(); +extern void mmu_filament_ramming(); +extern void mmu_wait_for_heater_blocking(); +extern void mmu_load_step(bool synchronize = true); + +#endif //MMU_H diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b96050649..f9e5c6677 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -163,6 +163,7 @@ static void lcd_selftest_screen_step(int _row, int _col, int _state, const char static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite); static bool lcd_selftest_fan_dialog(int _fan); static bool lcd_selftest_fsensor(); +static bool selftest_irsensor(); static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); static void lcd_colorprint_change(); #ifdef SNMM @@ -6421,17 +6422,20 @@ bool lcd_selftest() } #ifdef FILAMENT_SENSOR - if (mmu_enabled == false) + if (_result) { - if (_result) + _progress = lcd_selftest_screen(9, _progress, 3, true, 2000); //check filaments sensor + if (mmu_enabled) + { + _result = selftest_irsensor(); + } else { - _progress = lcd_selftest_screen(9, _progress, 3, true, 2000); //check filaments sensor _result = lcd_selftest_fsensor(); } - if (_result) - { - _progress = lcd_selftest_screen(10, _progress, 3, true, 2000); //fil sensor OK - } + } + if (_result) + { + _progress = lcd_selftest_screen(10, _progress, 3, true, 2000); //fil sensor OK } #endif // FILAMENT_SENSOR @@ -6991,6 +6995,49 @@ static bool lcd_selftest_fsensor(void) } return (!fsensor_not_responding); } + +static bool selftest_irsensor() +{ + class TempBackup + { + public: + TempBackup(): + m_temp(degTargetHotend(active_extruder)), + m_extruder(active_extruder){} + ~TempBackup(){setTargetHotend(m_temp,m_extruder);} + private: + float m_temp; + uint8_t m_extruder; + }; + + TempBackup tempBackup; + setTargetHotend(PLA_PREHEAT_HOTEND_TEMP,active_extruder); + mmu_wait_for_heater_blocking(); + lcd_selftest_screen(9, 0, 3, true, 0); + mmu_filament_ramming(); + + for(uint_least8_t i = 0; i < 200; ++i) + { + mmu_load_step(false); + while (blocks_queued()) + { + if (PIN_GET(MMU_IDLER_SENSOR_PIN) == 0) return false; +#ifdef TMC2130 + manage_heater(); + // Vojtech: Don't disable motors inside the planner! + if (!tmc2130_update_sg()) + { + manage_inactivity(true); + } +#else //TMC2130 + manage_heater(); + // Vojtech: Don't disable motors inside the planner! + manage_inactivity(true); +#endif //TMC2130 + } + } + return true; +} #endif //FILAMENT_SENSOR static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite) From c371a5ea65679d03de2f54788efd2980c88ab722 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 22 Jan 2019 14:05:08 +0100 Subject: [PATCH 03/12] Document. --- Firmware/mmu.cpp | 8 ++++++++ Firmware/ultralcd.cpp | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index ba80a7fd9..1b1a234d1 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -450,6 +450,10 @@ void mmu_command(uint8_t cmd) mmu_ready = false; } +//! @brief Rotate extruder idler to catch filament +//! @par synchronize +//! * true blocking call +//! * false non-blocking call void mmu_load_step(bool synchronize) { current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1; @@ -555,6 +559,10 @@ bool mmu_get_response(uint8_t move) return response;*/ } +//! @brief Wait for active extruder to reach temperature set +//! +//! This function is blocking and showing lcd_wait_for_heater() screen +//! which is constantly updated with nozzle temperature. void mmu_wait_for_heater_blocking() { while ((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f9e5c6677..8f10c6cbf 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6996,6 +6996,17 @@ static bool lcd_selftest_fsensor(void) return (!fsensor_not_responding); } +//! @brief Self-test of infrared barrier filament sensor mounted on MK3S with MMUv2 printer +//! +//! Test whether sensor is not triggering filament presence when extruder idler is moving without filament. +//! +//! Steps: +//! * Backup current active extruder temperature +//! * Pre-heat to PLA extrude temperature. +//! * Unload filament possibly present. +//! +//! @retval true passed +//! @retval false failed static bool selftest_irsensor() { class TempBackup From 3ff8a7c740e6218e2d4ea82121faafbe2bf95d88 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 22 Jan 2019 14:54:06 +0100 Subject: [PATCH 04/12] Unload filament by MMU unit in selftest_irsensor(). Known limitation: If filament was not loaded to nozzle it is sticked completely out of MMU. To be fixed in MMU, as this problem can be reproduced also from printer menu - unload filament. --- Firmware/ultralcd.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 8f10c6cbf..895895dcf 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7004,6 +7004,9 @@ static bool lcd_selftest_fsensor(void) //! * Backup current active extruder temperature //! * Pre-heat to PLA extrude temperature. //! * Unload filament possibly present. +//! * Move extruder idler same way as during filament load +//! and sample MMU_IDLER_SENSOR_PIN. +//! * Check that pin doesn't go low. //! //! @retval true passed //! @retval false failed @@ -7026,6 +7029,8 @@ static bool selftest_irsensor() mmu_wait_for_heater_blocking(); lcd_selftest_screen(9, 0, 3, true, 0); mmu_filament_ramming(); + mmu_command(MMU_CMD_U0); + manage_response(false, false); for(uint_least8_t i = 0; i < 200; ++i) { From 9cda0b69b89d8af3cd945c7fc8a6472208976219 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 22 Jan 2019 18:03:03 +0100 Subject: [PATCH 05/12] Update IR sensor selftest progress bar. --- Firmware/ultralcd.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 895895dcf..6ad75b6e7 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7027,13 +7027,15 @@ static bool selftest_irsensor() TempBackup tempBackup; setTargetHotend(PLA_PREHEAT_HOTEND_TEMP,active_extruder); mmu_wait_for_heater_blocking(); - lcd_selftest_screen(9, 0, 3, true, 0); + uint8_t progress = lcd_selftest_screen(9, 0, 1, true, 0); mmu_filament_ramming(); mmu_command(MMU_CMD_U0); manage_response(false, false); for(uint_least8_t i = 0; i < 200; ++i) { + if (0 == (i % 50)) progress = lcd_selftest_screen(9, progress, 1, true, 0); + mmu_load_step(false); while (blocks_queued()) { From 97a46238001c0864752369c6171a08790c9b2fd4 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 22 Jan 2019 19:01:55 +0100 Subject: [PATCH 06/12] Fix lcd_selftest_screen for small _progress_scale. --- Firmware/ultralcd.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 6ad75b6e7..3d5d53421 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7218,7 +7218,7 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo lcd_update_enable(false); int _step_block = 0; - const char *_indicator = (_progress > _progress_scale) ? "-" : "|"; + const char *_indicator = (_progress >= _progress_scale) ? "-" : "|"; if (_clear) lcd_clear(); @@ -7281,7 +7281,7 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo if (_delay > 0) delay_keep_alive(_delay); _progress++; - return (_progress > _progress_scale * 2) ? 0 : _progress; + return (_progress >= _progress_scale * 2) ? 0 : _progress; } static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator) From 1d71c1a5d166eded1f3e516fb74aeac2828ba261 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 22 Jan 2019 19:02:42 +0100 Subject: [PATCH 07/12] Update IR sensor selftest progress bar more frequently. --- Firmware/ultralcd.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 3d5d53421..10d5e561e 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7029,12 +7029,13 @@ static bool selftest_irsensor() mmu_wait_for_heater_blocking(); uint8_t progress = lcd_selftest_screen(9, 0, 1, true, 0); mmu_filament_ramming(); + progress = lcd_selftest_screen(9, progress, 1, true, 0); mmu_command(MMU_CMD_U0); manage_response(false, false); for(uint_least8_t i = 0; i < 200; ++i) { - if (0 == (i % 50)) progress = lcd_selftest_screen(9, progress, 1, true, 0); + if (0 == (i % 32)) progress = lcd_selftest_screen(9, progress, 1, true, 0); mmu_load_step(false); while (blocks_queued()) From 22859800f090f033f15680eaea92205f2f1ebd41 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 24 Jan 2019 19:22:36 +0100 Subject: [PATCH 08/12] Rearrange tests. Move hot end test to the end, to spare time in IR sensor test. Known problems, hot end and bed is swapped. Bed progress indicator is painted to X axis test. --- Firmware/ultralcd.cpp | 61 +++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 10d5e561e..1efb814b4 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6324,28 +6324,24 @@ bool lcd_selftest() _result = true; #endif } - - if (_result) - { - _progress = lcd_selftest_screen(3, _progress, 3, true, 1000); - _result = lcd_selfcheck_check_heater(false); - } - if (_result) { //current_position[Z_AXIS] += 15; //move Z axis higher to avoid false triggering of Z end stop in case that we are very low - just above heatbed - _progress = lcd_selftest_screen(4, _progress, 3, true, 2000); + _progress = lcd_selftest_screen(3, _progress, 3, true, 2000); #ifdef TMC2130 - _result = lcd_selfcheck_axis_sg(X_AXIS); + _result = lcd_selfcheck_axis_sg(X_AXIS); #else - _result = lcd_selfcheck_axis(X_AXIS, X_MAX_POS); + _result = lcd_selfcheck_axis(X_AXIS, X_MAX_POS); #endif //TMC2130 } + + + if (_result) { - _progress = lcd_selftest_screen(4, _progress, 3, true, 0); + _progress = lcd_selftest_screen(3, _progress, 3, true, 0); #ifndef TMC2130 _result = lcd_selfcheck_pulleys(X_AXIS); @@ -6355,7 +6351,7 @@ bool lcd_selftest() if (_result) { - _progress = lcd_selftest_screen(5, _progress, 3, true, 1500); + _progress = lcd_selftest_screen(4, _progress, 3, true, 1500); #ifdef TMC2130 _result = lcd_selfcheck_axis_sg(Y_AXIS); #else @@ -6365,7 +6361,7 @@ bool lcd_selftest() if (_result) { - _progress = lcd_selftest_screen(5, _progress, 3, true, 0); + _progress = lcd_selftest_screen(4, _progress, 3, true, 0); #ifndef TMC2130 _result = lcd_selfcheck_pulleys(Y_AXIS); #endif // TMC2130 @@ -6386,7 +6382,7 @@ bool lcd_selftest() current_position[Z_AXIS] = current_position[Z_AXIS] + 10; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); st_synchronize(); - _progress = lcd_selftest_screen(6, _progress, 3, true, 1500); + _progress = lcd_selftest_screen(5, _progress, 3, true, 1500); _result = lcd_selfcheck_axis(2, Z_MAX_POS); if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) != 1) { enquecommand_P(PSTR("G28 W")); @@ -6413,12 +6409,18 @@ bool lcd_selftest() if (_result) { - _progress = lcd_selftest_screen(7, _progress, 3, true, 2000); //check bed - _result = lcd_selfcheck_check_heater(true); + _progress = lcd_selftest_screen(6, _progress, 3, true, 2000); //check bed + _result = lcd_selfcheck_check_heater(false); } + + if (_result) + { + _progress = lcd_selftest_screen(7, _progress, 3, true, 1000); //check nozzle + _result = lcd_selfcheck_check_heater(true); + } if (_result) { - _progress = lcd_selftest_screen(8, _progress, 3, true, 2000); //bed ok + _progress = lcd_selftest_screen(8, _progress, 3, true, 2000); //nozzle ok } #ifdef FILAMENT_SENSOR @@ -7230,12 +7232,12 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo if (_step == 0) lcd_puts_P(_T(MSG_SELFTEST_FAN)); if (_step == 1) lcd_puts_P(_T(MSG_SELFTEST_FAN)); if (_step == 2) lcd_puts_P(_i("Checking endstops"));////MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 - if (_step == 3) lcd_puts_P(_i("Checking hotend "));////MSG_SELFTEST_CHECK_HOTEND c=20 r=0 - if (_step == 4) lcd_puts_P(_i("Checking X axis "));////MSG_SELFTEST_CHECK_X c=20 r=0 - if (_step == 5) lcd_puts_P(_i("Checking Y axis "));////MSG_SELFTEST_CHECK_Y c=20 r=0 - if (_step == 6) lcd_puts_P(_i("Checking Z axis "));////MSG_SELFTEST_CHECK_Z c=20 r=0 - if (_step == 7) lcd_puts_P(_T(MSG_SELFTEST_CHECK_BED)); - if (_step == 8) lcd_puts_P(_T(MSG_SELFTEST_CHECK_BED)); + if (_step == 3) lcd_puts_P(_i("Checking X axis "));////MSG_SELFTEST_CHECK_X c=20 r=0 + if (_step == 4) lcd_puts_P(_i("Checking Y axis "));////MSG_SELFTEST_CHECK_Y c=20 r=0 + if (_step == 5) lcd_puts_P(_i("Checking Z axis "));////MSG_SELFTEST_CHECK_Z c=20 r=0 + if (_step == 6) lcd_puts_P(_T(MSG_SELFTEST_CHECK_BED)); + if (_step == 7 + || _step == 8) lcd_puts_P(_i("Checking hotend "));////MSG_SELFTEST_CHECK_HOTEND c=20 r=0 if (_step == 9) lcd_puts_P(_T(MSG_SELFTEST_CHECK_FSENSOR)); if (_step == 10) lcd_puts_P(_T(MSG_SELFTEST_CHECK_FSENSOR)); if (_step == 11) lcd_puts_P(_i("All correct "));////MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 @@ -7263,20 +7265,21 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo else if (_step < 9) { //SERIAL_ECHOLNPGM("Other tests"); - _step_block = 3; - lcd_selftest_screen_step(3, 9, ((_step == _step_block) ? 1 : (_step < _step_block) ? 0 : 2), "Hotend", _indicator); - _step_block = 4; + _step_block = 3; lcd_selftest_screen_step(2, 2, ((_step == _step_block) ? 1 : (_step < _step_block) ? 0 : 2), "X", _indicator); - _step_block = 5; + _step_block = 4; lcd_selftest_screen_step(2, 8, ((_step == _step_block) ? 1 : (_step < _step_block) ? 0 : 2), "Y", _indicator); - _step_block = 6; + _step_block = 5; lcd_selftest_screen_step(2, 14, ((_step == _step_block) ? 1 : (_step < _step_block) ? 0 : 2), "Z", _indicator); - _step_block = 7; + _step_block = 6; lcd_selftest_screen_step(3, 0, ((_step == _step_block) ? 1 : (_step < _step_block) ? 0 : 2), "Bed", _indicator); + + _step_block = 7; + lcd_selftest_screen_step(3, 9, ((_step == _step_block) ? 1 : (_step < _step_block) ? 0 : 2), "Hotend", _indicator); } if (_delay > 0) delay_keep_alive(_delay); From 305598d7f653cc1c33a55c117fff4233b10d847b Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 24 Jan 2019 20:03:37 +0100 Subject: [PATCH 09/12] Fix bed / nozzle test order and progress bar. Known limitation: Z progress shown in bed progress. --- Firmware/ultralcd.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 1efb814b4..85b899dc8 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6410,13 +6410,13 @@ bool lcd_selftest() if (_result) { _progress = lcd_selftest_screen(6, _progress, 3, true, 2000); //check bed - _result = lcd_selfcheck_check_heater(false); + _result = lcd_selfcheck_check_heater(true); } if (_result) { _progress = lcd_selftest_screen(7, _progress, 3, true, 1000); //check nozzle - _result = lcd_selfcheck_check_heater(true); + _result = lcd_selfcheck_check_heater(false); } if (_result) { @@ -6821,7 +6821,7 @@ static bool lcd_selfcheck_check_heater(bool _isbed) manage_heater(); manage_inactivity(true); - _progress = (_isbed) ? lcd_selftest_screen(7, _progress, 2, false, 400) : lcd_selftest_screen(3, _progress, 2, false, 400); + _progress = (_isbed) ? lcd_selftest_screen(6, _progress, 2, false, 400) : lcd_selftest_screen(7, _progress, 2, false, 400); /*if (_isbed) { MYSERIAL.print("Bed temp:"); MYSERIAL.println(degBed()); From 1c4f3259ea26d7ea8a1899bd6b1a40af3089e994 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 24 Jan 2019 21:02:04 +0100 Subject: [PATCH 10/12] Increase heater check minimum expected temperature rises. Bed increased from 3 to 10 K. Nozzle increased from 10 to 30 K. Measured rises with my MK3 printer: Bed 26K, Nozzle 73K. --- Firmware/ultralcd.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 85b899dc8..0253996c5 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6847,9 +6847,10 @@ static bool lcd_selfcheck_check_heater(bool _isbed) MYSERIAL.print("Opposite result:"); MYSERIAL.println(_opposite_result); */ - if (_opposite_result < ((_isbed) ? 10 : 3)) + + if (_opposite_result < ((_isbed) ? 30 : 9)) { - if (_checked_result >= ((_isbed) ? 3 : 10)) + if (_checked_result >= ((_isbed) ? 9 : 30)) { _stepresult = true; } From 68ffa95aa9651e7149756f064361b2638d3b9962 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 24 Jan 2019 21:06:03 +0100 Subject: [PATCH 11/12] Fix axis self-test progress visualization. --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0253996c5..ee97ff6e9 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6654,7 +6654,7 @@ static bool lcd_selfcheck_axis(int _axis, int _travel) } else { - _progress = lcd_selftest_screen(4 + _axis, _progress, 3, false, 0); + _progress = lcd_selftest_screen(3 + _axis, _progress, 3, false, 0); _lcd_refresh = 0; } From edc412697c56e09f3ea3a4d4eefc0a8d0cbea394 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 24 Jan 2019 21:24:46 +0100 Subject: [PATCH 12/12] Increase selftest_irsensor() filament nozzle unload temperature to ABS. Resume nozzle temperature immediately after unload. --- Firmware/ultralcd.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ee97ff6e9..64899d398 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7026,12 +7026,14 @@ static bool selftest_irsensor() float m_temp; uint8_t m_extruder; }; - - TempBackup tempBackup; - setTargetHotend(PLA_PREHEAT_HOTEND_TEMP,active_extruder); - mmu_wait_for_heater_blocking(); - uint8_t progress = lcd_selftest_screen(9, 0, 1, true, 0); - mmu_filament_ramming(); + uint8_t progress; + { + TempBackup tempBackup; + setTargetHotend(ABS_PREHEAT_HOTEND_TEMP,active_extruder); + mmu_wait_for_heater_blocking(); + progress = lcd_selftest_screen(9, 0, 1, true, 0); + mmu_filament_ramming(); + } progress = lcd_selftest_screen(9, progress, 1, true, 0); mmu_command(MMU_CMD_U0); manage_response(false, false);