Устраняем раздражающие моменты Marlin

Подписаться на 3Dtoday
StasBronchukov
Идет загрузка
Загрузка
23.03.19
4752
25
печатает на Ender 3
Техничка
63
Добрый день, товарищи!
Сразу хочу предупредить - то о чем пойдет речь возможно когда то и кем то рассматривалось и решалось, но я почему то это упустил, так что если что не пинайте. В любом случае повторить не будет лишним.
Собственно к теме.
Принтер у меня где то полгода. Печатаю не очень часто, но уже изрядно выбешивает один, на первый взгляд пустяковый, аспект - отсутствие элементарного пункта в меню принтера "Плохой старт" (забегая вперед, я его так назвал).
Запуская печать иногда происходит [нужное вставить] и нужно прекратить печать что бы быстренько исправить что нужно и запустить печать повторно, но в реальности эта спокойная, на первый взгляд, операция превращается в раздражитель нервов.
Отмена печати => Возврат домой => Исправление => Запуск повторной печати => Ожидание - время всего этого можно сократить парой строчек кода.

В данной теме мы допилим Marlin 1.1.9 , но то же самое можно проделать и со старшими версиями, код если и будет отличаться, то незначительно.
Для начала зайдем в language_en.h и добавим имя для пункта

Вставить можно в любое место списка, я вставил после 659 строчки:

#ifndef BAD_START
  #define BAD_START                           _UxGT("Bad start")
#endif

dc04dc74e4137832f7728834b15a6faa.png
Если пользуетесь только английским языком то пропускайте следующий пункт, если нет смотрим дальше.
В language_ru.h или любом другом добавляем:

#define BAD_START                           _UxGT("Плохой старт")

6a634c098295c336bc9484f26f52ce9d.png
Теперь основное. В ultralcd.cpp после 864 строки добавляем новую функцию:

    void bad_start_stop() {
      wait_for_heatup = wait_for_user = false;
      card.stopSDPrint(
          #if SD_RESORT
            true
          #endif
                       );
      enqueue_and_echo_commands_P(PSTR("G91\n G1 F1800 E-5\n G1 F3000 Z10\n G90\n G0 Y220\n G28 X0\n M84 "));
      lcd_setstatusPGM(PSTR(MSG_PRINT_ABORTED), -1);
      lcd_return_to_status();
    }

295bbda14cd102f4fc4ac7122a12c6ca.png
Которая останавливает только печать, а не завершает все процессы. Выполняет последовательность команд (подчеркнуты) которые вы можете задать сами. Пишите что хотите, но я советую в конце всегда дописывать M84 (если кому будет интересно напишу в коменты почему). И выводит статус о завершении печати.
Теперь собственно осталось только добавить еще один пункт к меню.
После 1122 строки добавляем:

if (axis_known_position&&card.sdprinting) MENU_ITEM(function, BAD_START, bad_start_stop);

b33efbcdbeb95a670ae4c50851a651bd.png
Проверяем что известны координаты (что бы не выйти за границы) и то что идет печать. Все - пункт будет появляться в меню только когда идет непосредственно печать.

При желании можете добавить такую же последовательность действий при полной отмене печати - допишите:

enqueue_and_echo_commands_P(PSTR("G91\n G1 F1800 E-5\n G1 F3000 Z10\n G90\n G0 Y220\n G28 X0\n M84 "));

В функцию lcd_sdcard_stop()

    void lcd_sdcard_stop() {
      wait_for_heatup = wait_for_user = false;
      abort_sd_printing = true;
  enqueue_and_echo_commands_P(PSTR("G91\n G1 F1800 E-5\n G1 F3000 Z10\n G90\n G0 Y220\n G28 X0\n M84 "));
      lcd_setstatusPGM(PSTR(MSG_PRINT_ABORTED), -1);
      lcd_return_to_status();
    }

f7512bde331baf35a09143798c15fd63.png
Все! В подобном виде прошивкой пользуюсь где то полгода и каждый раз когда нужно прервать печать хвалю себя!
4d6478f94d0c988bcc3d67f608c17d55.jpg
Пользуйтесь!
Подписаться на 3Dtoday
63
Комментарии к статье

Комментарии

23.03.19 в 07:28
0
Спасибо.
Пригодиться точно.
23.03.19 в 08:17
0
Спасибо!
23.03.19 в 10:19
1
У меня тоже ender 3, на оригинальной плате с марлином ставил на паузу, голова уезжала домой, вносил правки и далее продолжал печать или отменял и запускал заново. Сейчас плата letdge x и стало еще проще - все кнопки на сенсорном экране и на первой же странице, вообще без напрягов :)

f8faa34590337b23a042dcd646af37b4.jpg
23.03.19 в 10:59
0
Тоже бы хотелось поставить плату по мощнее, но здравое рассуждение охлаждает детское хочу - объективно принтер справляется со всеми задачами, да и лишние деньги тратить не хочется. Возможно если что то сгорит то задумаюсь. Кстати lerdge x легко поставить на эндер и есть ли какие-нибудь замечания? Никогда просто не касался темы замены платы
23.03.19 в 11:31
0
У меня в стадии интеграции, провода не уложены, сложного ничего нет. Тут самый ценный ресурс это время на установку. Много мелочей типа корпуса, проводов, калибровок и прочего. Преимущества lerdge x в том, что все настройки через дисплей, даже настройки прошивки. Не нужно ковырять конфиги как например в marlin. До этого ставил MKS SBase 1.3, тоже понравилось, но лердж выделяется на этом фоне. Плата ender 3, тоже норм, ей только обдува добавить да bltouch. Ну и экран выкинуть и raspberry pi воткнуть для удаленного управления. Сейчас смотрю в сторону платы big tree tech 1.3, недавно вышла. Цена просто копейки и 32 бита. Вот отличная замена на бюджетный принтер.

Ниже пример интеграции sbase с тач экраном на ender 3.

42a3a1ce8178a706343e645d86353cdc.jpg
5dc66108c65592a4271811e4007c08fd.jpg

18ba6330adf46c5efa6d9e88e377c7a3.jpg
23.03.19 в 10:29
0
Для начала зайдем в language_en.h
А это где???
В Пуск\меню\ программы\ - ???
23.03.19 в 10:46
2
Это конфигурационные фаилы Mrlin. Посмотрите любое видео о настройке Marlin и сразу разберетесь. Я все менял в Notepad++ , но все то же самое можно проделать в Arduino IDE. Могу посоветовать канал Sergey Irbis, у него есть видео о настройке Marlin и ее загрузки.
23.03.19 в 10:54
5
Только сейчас, перечитав статью, понял что возможно кто то не поймет основной смысл задуманного. С лишним нажатием в меню для отмены и автодома я бы смерился, но вот в повторном ожидании нагрева экструдера и стола - нет. В данной модификации при использовании нового пункта меню стол и экструдер не выключаются, а так же исправно держат температуру
23.03.19 в 11:21
1
В данной модификации при использовании нового пункта меню стол и экструдер не выключаются, а так же исправно держат температуру
Вот именно это и важно!
23.03.19 в 14:42
0
... возможно кто то не поймет основной смысл задуманного ...
... и этим кто-то был конечно-же я.

Благодарю, что разъяснили.

У меня остаётся ещё один вопрос, на который я такого-же просто го ответа пока не получил:

В чём отличие предложенного Вами "БэдСтарта" от режима "Пауза"?

Всегда считал что при "Паузе" - нагреватели по-прежнему греют.
23.03.19 в 15:03
1
... и этим кто-то был конечно-же я.
И я…
Нажимаем "Пауза" - каретка отъезжает от модели. Температура стола и сопла поддерживается на заданном уровне.
Делаем то, ради чего останавливали печать.
Ну а дальше есть выбор - либо продолжение печати, либо рестарт.
Отмена печати => Возврат домой => Исправление => Запуск повторной печати => Ожидание
"Возврат домой" и "Ожидание" откуда берутся?
23.03.19 в 15:14
1
"Возврат домой" и "Ожидание" откуда берутся?
При отмене печати , печать тупо останавливается те сопло не отъезжает, а остается там же. Что бы нормально убрать то что уже есть на столе необходимо опять же лезть в меню и вызывать возврат домой. Ожидание- ожидание это ожидание нагрева стола и экструдера тк после завершения печати стол и экструдер скидываются в 0. А после повторного запуска они бывают изрядно остывают, особенно стол если он был на 110
23.03.19 в 17:24
0
Ну так зачем нажимать "отмена", если можно нажать "пауза"?
Хотя Ваше решение тоже интересно.
23.03.19 в 20:07
0
У меня при отмене температура держится. Домой вроде не едет, но двигатели отключены, так что можно спокойно отодвинуть все.
23.03.19 в 15:08
1
В том что пауза она на то и пауза что бы после нее печать продолжилась. Насколько я понимаю пауза нужна для замены филамента, если он кончается тк после возобновления происходит протяжка пластика.А нам то нужно запустить печать с начала
23.03.19 в 15:35
1
А нам то нужно запустить печать с начала
Ok, уже понятнее.

"Bad Start"...

Я бы предложил "ФальCтарт"...

А то непонятно, что там "Bad" - может произойти... хочется думать о хорошем а не о плохом...

839987f7dce722778dd5a29557b0f37f.jpg


d8dd356bc1e2458636507ac47d1a8e35.jpg
25.03.19 в 05:42
0
Присоединяюсь к армии все еще не понимающих))
При отмене печати принтер почему-то каждый раз ведет себя рандомно. Тоже бывает, что просто замирает, но в 2/3 случаев уходит домой по X/Y. По части остывания пока не замечал чего-то раздражающего. Проблема скорее в долгом остывании стола. Печатаю АБС на соке и ПЛА на ПВА, так при свежих слоях покрытия, пока температура высокая, деталь вообще никак не отрывается от стола. Тогда при косяке печати приходится скорее ждать пока стол остынет. Сопло греется достаточно быстро. Стол всегда ставлю на преднагрев пока настройки слайсера ковыряю. В случаях с несвежим покрытием и довольно легким отдиранием детали от стола, просто после печати кликаю преднагрев и пока решаю проблему все держится горячим.
23.03.19 в 17:52
0
Благодаря таким решениям мир 3д печати становится капельку лучше! Спасибо за идею! Сегодня же у себя реализую в KLIPPER меню.
24.03.19 в 12:31
0
Поделится не забудьте)
28.03.19 в 17:00
0
спасибо, нужная штука.

а не подскажете где подправить, чтобы скорость вентилятор изменять не на одну единицу (меняется от 0 до 255), а скажем на 10 единиц? а то бывает надо сильно обдув поменять, а меняется медленно да и точность такая не нужна.
29.03.19 в 20:18
0
Возможно в филе конфигурации есть настраиваемые параметры энкодера. Конкретно под кулер скорее всего не получится изменить шаг каким то простым способом, тк это меню является объектом и оно для всех подобных параметров одинаковое. Но для быстрого увеличения у энкодера есть ускорение, его можно сделать более отзывчивым. В ultralcd.cpp найдите поиском encoderStepRate
В строках можно разделить этот параметр тем самым уменьшить скорость при котором срабатывает ускорение
Примерно вот так

if (encoderStepRate/1.5 >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100; else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10;

Лично этого не делал, попробуйте - потом расскажите
29.03.19 в 21:59
0
Спасибо :)
Но у меня кнопки, энкодера нет :(
Сделал ваш bad_start, работает, но только надо будет сделать чтобы включено в меню всегда было, т.к. если запустить печать с ПК, то не появляется этот пункт меню.
30.03.19 в 15:47
0
так при печати с компьютера данная модификация не остановит печать
30.03.19 в 15:43
0
А никто не подскажет, как изменить step кнопок с 1 на 5. Сильно раздражает установка температуры с шагом 1, такая точность мне не нужна.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Ремонт детских ножниц.

Anycubic 4max Pro первые впечатления

Применение полимерной глины в 3D печатных изделиях. Краткости пост.

Строим лазерный гравер 20х30 см на валах 10 мм, с лазерным модулем 2,5 ватта

3DMALL: Все для 3D-печати и 3D-сканирования

Немного в поддержку одного start-up'а. Пост не рекламы, но рекомендую обратить внимание.