-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Состояние проекта: стабильный Марлин2 с конфигурацией производителя UltiSteel.UART + альфа-версия нескольких оригинальных нововведений, обновлен 20/08/2020 к upstream = MarlinFirmware/Marlin/bugfix-2.0.x.
- Улучшения по работе с флешками:
-
При вставке внешней флешки сразу предлагает список файлов, самый свежий выделен. В один клик запускается на печать. Включается через
#define SD_SHOW_FILES_ON_MEDIA_INSERTED
-
Поддержана печать с внутренней флешки. Включается через
#define SDCARD_CONNECTION LCD_AND_ONBOARD
. При этом не закрыт механизм обновления ПО, а сама флешка доступна ПК как USB-диск со скоростью 12Мбит/с (во время печати диск исчезает, от греха подальше, потом возникает вновь). Внешней флешкой (в отличие от режима ONBOARD) тоже можно пользоваться - достаточно ее вставить, и принтер перейдет на работу с ней. -
Повтор последней успешной печати. Включается через
#define SD_REPRINT_LAST_SELECTED_FILE
. Предлагает в один клик напечатать еще раз или скрутить на другой файл. Если включить#define SD_MENU_MEDIA_SHOW_LAST_PRINT_DURATION
, то в первой строке списка файлов напишет, сколько длилась предыдущая печать. -
Показ длинных имен файлов SD-карты в кириллице. Включается через
#define CYRILLIC_FILENAMES
. Поддерживается не весь юникод, а только общее между 1251 и юникодом. Изменениями можно пользоваться как в меню принтера, так и в pronterface. Другим программам требуется перекодировка из 1251 в те кодировки, которыми они умеют пользоваться.
- Улучшения по работе с энкодером:
-
Двойное/долгое нажатие в окне статуса. Включается через
#define LONGCLICK_FOR_IDLE
. Исполняет файлlong_cli.g
или (если нет такого), запускает прогрев на первый материал. Подробный алгоритм см. по ссылке. -
Крутилка в окне статуса. Включается через
#define FEEDRATE_CHANGE_ONLY_WHILE_PRINT
. Если не идет печать, то крутить вправо - показ списка файлов (при отсутствии флешек - меню смены филамента), а влево - пользовательское меню. -
Редакторы: более простой доступ к дальним значениям. Включается через
#define LEVELING_FADE_HEIGHT_DEFAULT 10
и#define WRAP_EDITORS
.
-
Управление кулером обдува COLDEND. По умолчанию SUNON там запитан на выходе для нагревателя второй головы, ШИМ 200 из 255. Это шумно, и (вроде бы) чрезмерно. Можно уменьшить при помощи custom gcode (чтобы у каждого материала был свой вариант). Включать при помощи
#define EXTRUDER_AUTO_FAN_SPEED_CONFIGURABLE
. Появляется командаM106 P1 S100
, где 1 - это индекс первого незанятого в прошивке кулера (0 занят кулером обдува детали), а 100 - значение ШИМ. На этом значении я печатаю PLA FDPLAST, забивания экструдера не наблюдается, кулер же ощутимо тише шумит, чем на ШИМ 200. -
Сохранение режима MBL в EEPROM. Если выключить в меню или не настроить карту, высоту отмены - MBL включен не будет. Если включить, настроить и сохранить в EEPROM - будет работать, не требуя от слайсера команды
M420 S1
(в этом отличие от оригинального марлина - я бы оборвал тамошним программистам руки за такое неадекватное требование при наличии в меню опции включения и сохранения, но может они просто опытнее меня в этом вопросе). В режиме 12864 стол теперь тоже мигает при включенной коррекции. - Более аккуратная парковка после прерывания печати.
- Инверсия подсветки командой M355 T.
- Улучшения графического интерфейса пользователя:
-
12864: сохранение пользовательского цвета в EEPROM. Включается через
#define NEOPIXEL_EEPROM_STORE_HACK
. Также можно задать#define NEOPIXEL_SAVING_TIMEOUT 120
для перехода в режим энергосбережения после двухминутного таймаута (дисплей сам отключится при неактивности, обратно включится от энкодера). В режиме энергосбережения крайний светодиод дисплея будет мигать. M150 теперь принимает новый параметр с именем I (к августу 2020 его добавили и в оригинальный Марлин). Если его не указать, цвет подсветки дисплея меняться не будет (только остальных светодиодов). Если указать I без номера, то наоборот, будут меняться сразу все цвета светодиодов. Ну и наконец, указание 0...3 позволяет выбирать светодиод: 0-подсветка экрана, 1-левый светодиод энкодера, 2-правый светодиод энкодера, 3-псевдосветодиод (позволяет гасить предыдущие). -
Показ состояния концевиков в главном окне. Включается через
#define LCD_SHOW_ENDSTOPS_STATUS
. Если датчик сработал, то во второй строке главного окна буква его оси (xyz) будет в нижнем регистре. Сразу все видно, не нужно запускатьM119
. -
12864: Иконка SD-карты более информативная. Включается через
#define DOGM_SD_PRESENT
. Видно, вставлена ли карта (значок есть), куда вставлена (в материнку или в дисплейный модуль - размер и положение значка), смонтирована ли она принтером (значок не мигает), используется ли в данный момент для печати (внутри значка мигает полоска). -
12864: Заполнены пустоты экрана. Включается через
#define DOGM_SHOW_SPEED
,#define DOGM_SHOW_LAYER
,#define DOGM_SHOW_PERF
. Первый включает показ скорости, второй - номер слоя и количество слоёв (считанные с SD-карты, если есть) и третий показывает 2 прогресса: уровень заполнения буфера планировщика движений и диапазон загрузки процессора между перерисовками дисплея (первая половина индикатора - до 5 мс, вторая - до 30 мс на итерацию цикла idle). -
Ручная калибровка стола по 3 точкам. Включается через
#define LEVEL_CORNERS_3POINT
. В UserMenu также доступен ее аналог, построенный на чистом gcode. - 12864: Фирменная заставка ULTI. Анимированная с повышением яркости.
- PID стола - редактируется и запускается из меню. Искать там же, где и PID экструдеров. К августу 2020 в Марлине таки доработали меню.
Включил все возможности Марлина, которые я счел интересными и работающими. Список получился очень длинный, см. в запросах или прямо в истории изменения исходников. Если какие-то окажутся спорными, то их включение отнесу в свою личную конфигурацию.
- Порча памяти в меню "движение по Z". Кириллическая прошивка, повышенная точность перемещений приводят к переполнению буфера.
- Потеря точности вычислений при использовании датчика стола. К августу 2020 в Марлине изменили алгоритм и эта правка устарела.
- Занижены HEATER_*_MAXTEMP=240, BED_MAXTEMP=90. У меня резкое нежелание портить PTFE-трубку и магнитный коврик, а нейлоном я на другом принтере (закрытом) печатать буду.
- PID экструдера DEFAULT_K* у меня отличаются от значения в Марлин по умолчанию для Ultimaker, но для всех они вряд ли подойдут.
- PID стола DEFAULT_bedK* у меня отличаются от значений, рекомендованных разработчиком
- Предопределенные материалы и температуры. У меня PLA и SBS, с моими любимыми значениями.
- Настройки драйверов ШД отличаются от стокового изделия
- Включена поддержка длинных имен для Octoprint
- Включена поддержка датчика 3dtouch. Задействован пин Ymax. Его резервно дублирует стоковый датчик Zmin.
- Ручная калибровка стола по 3 точкам происходит на повышенной высоте (0.5), чтобы не задевать мягкий коврик, а использовать щуп.
Идеально было бы добавить имеющийся здесь функционал в основной репозиторий Марлина. От pull request меня удерживает понимание того факта, что универсальность моих изменений достаточна для меня, но недостаточна для всех (и будь я на месте разработчиков Марлина, я бы не был рад изменениям в том виде, как они представлены тут). Если кто-то проведет такую работу и в итоге мои наработки окажутся где-то еще, буду очень рад. А я лишь приведу перечень действий по упрощению переноса моих коммитов в Ваш форк (предполагается, что у Вас уже настроена рабочая копия и Вы уже делали commit и push в него при помощи консольного клиента git, статус рабочей копии = clean):
- Добавить мой репозиторий в список внешних источников (remotes) с именем ursoft (однократное действие):
git remote add ursoft https://github.com/ursoft/Marlin.git
команда ничего не должна выдать - Вытащить с гитхаба мои правки (если нужные не были получены ранее):
git fetch ursoft
- Найти идентификаторы всех моих коммитов, составляющих нужную функцию. Далее будем разбирать пример про кулер обдува колдэнда. Сходив в этот запрос, получаем список коммитов: { f959c57, d3a8ba5 }, отсортированный по дате. Выполняем для каждого git cherry-pick:
>git cherry-pick f959c57
error: could not apply f959c57... fix #2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
В моем случае случился конфликт - git не смог автоматически разрешить пару мест, решаю самостоятельно следующим образом: в Marlin\Configuration_adv.h место конфликта
<<<<<<< HEAD
#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
#define CHAMBER_AUTO_FAN_SPEED 255
=======
#define EXTRUDER_AUTO_FAN_SPEED 200 // 255 == full speed
#define EXTRUDER_AUTO_FAN_SPEED_CONFIGURABLE
//#define CHAMBER_AUTO_FAN_TEMPERATURE 30
//#define CHAMBER_AUTO_FAN_SPEED 255
>>>>>>> f959c57... fix #2
превращаю в
#define EXTRUDER_AUTO_FAN_SPEED 200 // 255 == full speed
#define EXTRUDER_AUTO_FAN_SPEED_CONFIGURABLE
//#define CHAMBER_AUTO_FAN_TEMPERATURE 30
//#define CHAMBER_AUTO_FAN_SPEED 255
а в Marlin\src\inc\SanityCheck.h место
<<<<<<< HEAD
#if HAS_AUTO_FAN && EXTRUDER_AUTO_FAN_SPEED != 255 && DISABLED(NO_COMPILE_TIME_PWM)
#define AF_ERR_SUFF "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255."
=======
#if HAS_AUTO_FAN && (EXTRUDER_AUTO_FAN_SPEED != 255 || ENABLED(EXTRUDER_AUTO_FAN_SPEED_CONFIGURABLE))
#define AF_ERR_SUFF "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255 and disable
EXTRUDER_AUTO_FAN_SPEED_CONFIGURABLE."
>>>>>>> f959c57... fix #2
превращаю в
#if HAS_AUTO_FAN && (EXTRUDER_AUTO_FAN_SPEED != 255 || ENABLED(EXTRUDER_AUTO_FAN_SPEED_CONFIGURABLE)) && DISABLED(NO_COMPILE_TIME_PWM)
#define AF_ERR_SUFF "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255 and disable EXTRUDER_AUTO_FAN_SPEED_CONFIGURABLE."
После git add Marlin\Configuration_adv.h
, git add Marlin\src\inc\SanityCheck.h
и git commit -m "ursoft#2 part1"
продолжаю git cherry-pick d3a8ba5
- без конфликтов, поэтому правки и коммит не нужны. В Вашем случае может не быть конфликтов вовсе, или они будут другими - для их исправления могут понадобиться знания истории изменения Марлина, Си++ итд.