QIDI Q2
QIDI Q2 - принтер во многом сырой и требующий приложения рук. Зато он является самым универсальным в своём ценовом сегменте. Обладая областью печати 270х270х256мм, он находится ближе к крупногабаритным, чем к среднегабаритным. При этом внешний габарит и цена принтера ближе к среднеразмерным. А, благодаря открытой прошивке и наличию доступа в систему, любые софтверные проблемы принтера можно легко исправить. Также открытый софт позволяет дорабатывать принтер как душе угодно.
В задачах художественной печати Q2 будет давать отличное качество т.к. механика мало рябит. Но при меньшей относительно конкурентов скорости печати ввиду слабого обдува печатаемой детали. В задачах печати эластомерами Q2 продемонстрировал возможность стабильно работать даже с самыми мягкими, и, следовательно, сложными из них. В задачах инженерной печати этот принтер выступает сильно лучше других за счёт целого ряда особенностей. Во-первых, хотэнд греется до 350°C, а стол до 120-125°C, чего достаточно для печати всеми распространёнными видами материалов. Во-вторых, уже с завода стоят калёные шестерни и сопло с кончиком из закалённой стали, что даёт возможность без вложения дополнительных средств печатать инженерными материалами. И, в-третьих, наличие активной термокамеры до 65°C (потенциально до 70°C после доработок) позволяет увеличить прочность деталей до полутора раз относительно открытых принтеров и принтеров с пассивной термокамерой.
Иными словами, если ваши задачи ограничиваются базовой печатью из простых материалов (PLA, PETG и т.п.), то лучше присмотреть другую, менее косячную модель. Если же в вашей практике часто встречаются задачи инжереной печати, задачи печати эластомерами, или вам просто хочется наиболее универсальный принтер, то придётся брать Q2 т.к. других моделей с таким же набором функций за сходные деньги на данный момент не известно.
Важно!
Выполняя действия из этой статьи, вы берёте всю ответственность за любые последствия на себя. Если не понимаете что делаете, то лучше остановитесь
Работа рекомендаций из статьи была проверена на прошивках 1.0.6-1.1.0. Работа на других версиях прошивки не гарантируется
Многие из описанных в этой статье действий будут отменены при обновлении или сбросе прошивки. Поэтому, единожды настроив принтер, рекомендуется не обновлять его прошивку. По крайней мере, если в новой версии нет каких-то очень полезных вещей
При возникновении проблем пишите в телеграм-чат K3D
Избавление от эхо
Описание проблемы
Штатно у Qidi Q2 есть сразу 2 проблемы с калибровкой Input Shaping'а:
Первая - для штатного акселерометра сильно занижена частота дискретизации (400гц вместо 1600гц), из-за чего тот снимает показания неправильно, с большим количеством артефактов. Из-за них автокалибровщик не может подобрать оптимальные шейперы, и рекомендует неоптимальные, при которых остаётся большое количество эхо.
Вторая - направляющие оси Y недостаточно жёсткие и прогибаются при движении каретки по оси Х. Это приводит к тому, что резонансная частота, которую должен гасить Input Shaping, меняется в зависимости от координаты по оси Y. Иными словами, даже если мы подберём оптимальный шейпер в центре стола, то он будет нормально работать только в центре. На деталях, части которых расположены вблизи краёв, будет сильное эхо.
Был придуман способ откалибровать Input Shaping таким образом, чтобы заниженная частота дискретизации слабо влияла на результат, а также можно было учесть данные с разных точек по оси Y. Но, к сожалению, тесты полученных шейперов показали, что они, хоть и дают достаточно большие максимальные ускорения, но гасят вибрации не полностью. То есть на деталях из глянцевых материалов эхо видно будет. Поэтому на данный момент эта методика не рекомендуется. Вместо этого предлагается просто установить достаточно "жирный" шейпер, который загасит все вибрации начиная примерно с 50Гц. С ним максимальные ускорения будут немного ниже, но зато не надо ничего калибровать и поверхность будет гладкая.
Рекомендуемый способ исправления
- Натяните ремни как сказано в инструкции к принтеру;
- В веб-интерфейсе принтера перейдите в раздел
Конфигурацияи откройтеprinter.cfg; - Промотайте в конец файла. Там будет много серых строк, начинающихся с
#*#. Среди них найдите раздел[input_shaper], который должен выглядеть примерно так:#*# [input_shaper] #*# shaper_type_x = zv #*# shaper_freq_x = 50.1 #*# shaper_type_y = zv #*# shaper_freq_y = 51.3 - Поменяйте значения на следующие:
#*# [input_shaper] #*# shaper_type_x = 2hump_ei #*# shaper_freq_x = 80 #*# shaper_type_y = 2hump_ei #*# shaper_freq_y = 80 - Найдите раздел
[printer]; - Поменяйте значение параметра
square_corner_velocityна 5; - Нажмите кнопку
Сохранить и перезагрузить
Всё, можете печатать с максимальными ускорениями до ~7200 мм/с^2.
Если небольшое эхо на деталях останется, то уменьшите частоты до 75 или 70Гц. Максимальные ускорения при этом составят ~6300 и ~5500 мм/с^2.
Ручной подбор шейперов по АЧХ
Этот метод не рекомендуется для рядового пользователя. Он оставлен в статье только для опытных пользователей, которые хотят попробовать настроить свой принтер получше, или проанализировать его работу
Подготовка
Qidi, пытаясь решить проблему с плохо калибрующимся Input Shaping'ом, внесли в прошивку несколько дёрти хаков. Они, к сожалению, проблему не исправляют, а только лишь немного маскируют. Но, если мы решим проблему, то эти хаки приведут к подбору неоптимальных шейперов, при которых может быть довольно высокий уровень остаточных вибраций. Чтобы такого не произошло, надо убрать это из прошивки, вернув её работу к штатной:
- В веб-интерфейсе принтера зайдите во вкладку
Конфигурацияи откройте файлprinter.cfg; - Найдите раздел
resonance_tester; - Закомментируйте строки
accel_per_hzиmax_smoothing; - Найдите раздел
printer; - Измените значение параметра
square_corner_velocityна 5; - Сохраните изменения и перезапустите прошивку.
Для правильной калибровки Input Shaping'а на Q2 придётся пользоваться штатным скриптом клиппера, под который в системе не установлены нужные зависимости. Поэтому необходимо будет их установить. Делается это один раз, потом можно будет генерировать графики сколько угодно раз, пока не переустановите прошивку.
- Откройте терминал на вашем компьютере. Например, на Windows можно воспользоваться встроенным в систему PowerShell;
- Подключитесь к принтеру по SSH. Для этого введите команду:
IP можно посмотреть прямо через экран принтера, он, обычно, имеет вид
ssh mks@ip_адрес_принтера192.168.xxx.xxx; - Спросит пароль. Введите
makerbase. Символы при этом не отображаются, но знаки вводятся; - Введите команду
pip install numpy matplotlib - Со всем соглашайтесь и ждите окончания установки. Если спросит пароль администратора, то введите
makerbase. После окончания установки дополнительных действий не требуется.
Получение данных калибровки
Из-за того, что направляющим оси Y не хватает жёсткости, частота шейпера по оси X будет зависеть от положения печатающей головы. К примеру, на моём принтере при голове в центре стола рекомендованный шейпер MZV 51hz, а при голове вблизи переднего края стола MZV 73hz. Если мы применим шейпер, снятый в центре стола, и попробуем с ним попечатать, то на мелких деталях, расположенных в центре стола, всё будет хорошо. Но на крупных деталях, стенки которых располагаются далеко от центра, будет эхо. Поэтому необходимо подобрать шейпер, который будет эффективно гасить вибрации и в центре стола, и вблизи края. Тогда эхо не будет нигде.
Второй проблемой являются артефакты из-за заниженной частоты дискретизации штатного акселерометра - те самые вибрации на низких и высоких частотах, которые на АЧХ есть, но на самом деле их нет. К счастью, от этих артефактов очень легко избавиться. Надо всего-лишь ограничить максимальную тестируемую частоту до 100Гц. В рамках данного гайда это делается внутри команд.
- Выполните автопарковку
G28; - Снимите данные по оси Х в трёх точках: по центру, на пол пути к краю, и около края:
TEST_RESONANCES AXIS=X FREQ_START=20 FREQ_END=100 OUTPUT=raw_data POINT=135,135,10TEST_RESONANCES AXIS=X FREQ_START=20 FREQ_END=100 OUTPUT=raw_data POINT=135,70,10TEST_RESONANCES AXIS=X FREQ_START=20 FREQ_END=100 OUTPUT=raw_data POINT=135,5,10 - Снимите данные по оси Y
TEST_RESONANCES AXIS=Y FREQ_START=20 FREQ_END=100 OUTPUT=raw_data POINT=135,135,10
Построение АЧХ
Теперь необходимо будет полученные "сырые" данные скормить скрипту, который строит амплитудно-частотные характеристики. Для этого:
- Подключитесь к принтеру по SSH
ssh mks@ip_адрес_принтера, парольmakerbase; - Создайте папку
shapers, в которой потом появятся файлы:mkdir ~/printer_data/config/shapers - Введите команду
~/klipper/scripts/calibrate_shaper.py /tmp/raw_data_x*.csv -o ~/printer_data/config/shapers/x.png - Введите команду
~/klipper/scripts/calibrate_shaper.py /tmp/raw_data_y*.csv -o ~/printer_data/config/shapers/y.png - Зайдите в веб-интерфейс принтера, в раздел
Конфигурация. Там должна появиться папкаshapers. В ней вы найдёте сгенерированные амплитудно-частотные характеристики. На них в правом-верхнем углу будут указаны подобранные автоподборщиком шейперы. Жирным выделен рекомендуемый шейпер; - Перейдите в раздел
Конфигурацияи откройтеprinter.cfg; - Промотайте в конец файла. Там будет много серых строк, начинающихся с
#*#. Среди них найдите раздел[input_shaper], который должен выглядеть примерно так:Поменяйте типы и частоты шейперов в этом разделе на рекомендованные в АЧХ;#*# [input_shaper] #*# shaper_type_x = zv #*# shaper_freq_x = 50.1 #*# shaper_type_y = zv #*# shaper_freq_y = 51.3 - Сохраните и перезагрузитесь
Адаптивная карта высот стола
Адаптивная карта высот стола позволяет снимать карту высот только в тех зонах, где будет идти печать. Это позволяет тратить меньше времени на подготовку к печати, а также улучшает первый слой. В штатной конфигурации QIDI отключили адаптивную карту высот стола, но её легко включить обратно:
- В веб-интерфейсе принтера зайдите во вкладку
Конфигурацияи откройте файлprinter.cfg; - Найдите строку
и замените её на
#[include KAMP_Settings.cfg][include KAMP/KAMP_Settings.cfg] - Сохраните изменения;
- Откройте файл
KAMP_Settings.cfgв папкеKAMP; - Добавьте строку в начало файла:
[include Adaptive_Meshing.cfg] - Убедитесь, что строка
#[include ./KAMP/Adaptive_Meshing.cfg]закомментирована. Если нет, то закомментируйте; - Сохраните изменения и перезагрузите прошивку.
Также можно включить адаптивную линию прочистки, которая точно не будет пересекаться с печатаемой деталью:
- В веб-интерфейсе принтера зайдите во вкладку
Конфигурация, и откройте файлKAMP/KAMP_Settings.cfg; - Добавьте строку в начало файла:
[include Line_Purge.cfg] - Убедитесь что строка
#[include ./KAMP/Line_Purge.cfg]закомментирована. Если нет, то закомментируйте; - Установите значение параметра
variable_mesh_marginна 10; - Установите значение параметра
variable_fuzz_amountна 2; - Нажмите кнопку
Сохранить и перезапустить.
Карта высот стола начнёт работать автоматически, никаких дополнительных действий и настроек не требуется. Адаптивная линия прочистки работать сама по себе не будет. Для неё надо будет еще исправить макрос старта печати, заменив вручную прописанную линию прочистки на макрос LINE_PURGE.
Макросы старта и окончания печати
Стоковые макросы старта и окончания печати составлены неоптимально, и имеют ряд проблем:
- Инициализация печати занимает очень много времени;
- Парковка, выравнивание стола и снятие карты высот происходят до окончательного прогрева стола, что приводит к дефектам первого слоя;
- Половина логики инициализации/окончания печати прописана в макросе, половина в стартовом скрипте. Это нивелирует плюсы что одного, что другого подхода;
- В стартовом скрипте происходит обрезание прутка. Мало того, что для принтеров без QIDI Box это бесполезно, так еще и изнашивает нож.
Поэтому я составил макросы старта и окончания печати, которые призваны решить эти проблемы.
Используя эти макросы, вы полностью берёте на себя ВСЕ риски
Эти макросы не подходят к принтерам с QIDI Box
Если вы использовали эти макросы, и они вам понравились, или у вас есть какие-то претензии, то напишите об этом в телеграм-чат K3D. Обратная связь поможет найти и устранить проблемы
Макросы
Скопируйте эти макросы в конец файла gcode_macro.cfg, после чего сохранитесь и перезгрузите прошивку.
[gcode_macro POEHALI]
gcode:
{% set target_bed = params.B|int %}
{% set target_extruder = params.H|int %}
{% set target_chamber = params.C|default("0")|int %}
SAVE_VARIABLE VARIABLE=qdc_ai_error_code VALUE='""'
DISABLE_ALL_SENSOR
CLEAR_PAUSE
M140 S{ target_bed }
M141 S{ target_chamber }
G28
M141 S{ target_chamber } # защита от багов. Не трогать
CLEAR_NOZZLE HOTEND={ target_extruder }
M190 S{ target_bed }
M191 S{ target_chamber }
G28
M141 S{ target_chamber } # защита от багов. Не трогать
Z_TILT_ADJUST
M141 S{ target_chamber } # защита от багов. Не трогать
BED_MESH_CALIBRATE
M191 S{ target_chamber } # защита от багов. Не трогать
M109 S{ target_extruder }
M220 S100
M221 S100
G90
M83
G92 E0
ENABLE_ALL_SENSOR
set_zoffset
LINE_PURGE
[gcode_macro HAROSH]
gcode:
M141 S0
M140 S0
M104 S0
DISABLE_ALL_SENSOR
G1 E-3 F1800
G91
G1 Z3 F600
G90
G1 X90 F18000
G1 Y270 F18000
{% if printer.toolhead.position.z < printer['gcode_macro PRINTER_PARAM'].max_z_position / 2 %}
G1 Z{ printer['gcode_macro PRINTER_PARAM'].max_z_position / 2 }
{% endif %}
M220 S100
G90
M83
Если вы не переустанавливали KAMP, то удалите из макроса POEHALI строку LINE_PURGE. Прочистку сопла в таком случае выполняйте с помощью печати юбки
Стартовый и конечный G-коды
- Откройте слайсер, которым планируете пользоваться. Макросы протестированы в PrusaSlicer и OrcaSlicer, но, возможно, будут работать и в других основанных на этих двух;
- Зайдите в профиль принтера, в раздел
G-код принтера; - Замените стартовый G-код на:
POEHALI H={first_layer_temperature[0]} B={first_layer_bed_temperature[0]} C={chamber_temperature[0]} - Замените завершающий G-код на:
HAROSH - Сохраните профиль
Задваивание Z-offset
Z-offset - это параметр, отвечающий за расстояние от сопла до стола при печати первого слоя. Штатно его значение сохраняется в z-offset датчика автоуровня. Но QIDI, вдобавок к штатному способу, написали еще и свой, который автоматически сохраняет значение в отдельный файл при отмене или окончании печати. В итоге, если вы сохраните значение Z-offset штатным способом, а потом выполните печать, то значение задвоится. Это может привести как к печати первого слоя "в воздухе", так и, что хуже, к тому, что принтер соплом повредит адгезивный лист и, возможно, даже само сопло.
Конечно, можно просто не пользоваться кнопкой сохранения Z-offset'а. Но это не гарантирует того, что в какой-то момент вы случайно на неё не нажмёте и не повредите стол своего принтера. Кроме того, если у вас нет чёткого понимания в какой именно момент происходит это сохранение, а также нет хорошего понимания порядка выполнения скриптов из слайсера, то есть риск вызвать задваивание Z-offset'а использованием каких-либо кастомных макросов или стартовых/конечных G-кодов принтера или материала. Например, G-кодов для установки индивидуальных значений Z-offset для разных типов филаментов. Поэтому рекомендуется отключить автоматическое сохранение Z-offset'а, и пользоваться штатным для klipper'а методом.
- Откройте файл
gcode_macro.cfg; - Найдите макросы
save_zoffsetиset_zoffsetи закомментируйте их содержимое:[gcode_macro save_zoffset] gcode: # {% if printer.gcode_move.homing_origin.z < 0.5 %} # SAVE_VARIABLE VARIABLE=z_offset VALUE={printer.gcode_move.homing_origin.z} # {% endif %} [gcode_macro set_zoffset] gcode: # {% set z = printer.save_variables.variables.z_offset|default(0) %} # SET_GCODE_OFFSET Z={z} MOVE=0 - Нажмите
Сохранить и перезапустить.
После этого любой вызов этих макросов из любых других не будет вызывать ошибку, но при этом и происходить ничего не будет. То есть другие макросы не поломаются, но работа прошивки вернётся к штатной для klipper'а.
Разный Z-offset для разных материалов
Так как Q2 может печатать очень разными материалами, требующими разные температуры хотэнда, стола и термокамеры, то, ввиду термического расширения хотэнда и деталей механики, для разных материалов нужен будет разный Z-offset. Проще всего прописать его в стартовый и конечный G-коды материала. Таким образом не придётся при каждой замене материала бегать к принтеру и руками подстраивать значение оффсета "на глаз".
- В слайсере зайдите в профиль материала -> пользовательский G-код (в OrcaSlicer - Дополнительно);
- В начало стартового скрипта допишите:
Где в пропуск впишите абсолютное значение вашего Z-offset. Оно написано в веб-интерфейсе или на экране принтера при ручной подстройке;
SET_GCODE_OFFSET Z=... MOVE=0 - В начало конечного скрипта допишите:
SET_GCODE_OFFSET Z=0 MOVE=0
Работа этих команд без отключения макросов save_zoffset и set_zoffset не протестирована
Отключение algo_app
За находку спасибо rsa
В стоковой прошивке принтера крутится сервис ИИ-фишек типа определения отлипания детали, нахождения посторонних объектов на столе и т.д. Этот сервис, даже будучи отключенным через меню принтера, отжирает очень большое количество ресурсов системы. Из-за этого та в некоторых ситуациях может работать нестабильно + SoC хоста сильно греется. Отключение этого сервиса приведёт к неработоспособности ИИ-фишек. Зато стабильность работы прошивки восстановится, а также снизится температура SoC. В свою очередь, это приведёт к возможности увеличения максимальной температуры термокамеры до 70°C, если захочется.
- Откройте терминал на вашем компьютере. Например, на Windows можно воспользоваться встроенным в систему PowerShell;
- Подключитесь к принтеру по SSH. Для этого введите команду:
IP можно посмотреть прямо через экран принтера, он, обычно, имеет вид
ssh mks@ip_адрес_принтера192.168.xxx.xxx. Парольmakerbase; - Остановите работу сервиса
algo_app:sudo systemctl stop algo_app - Отключите сервис
algo_app:sudo systemctl disable algo_app
В случае возникновения проблем
К сожалению, некоторые участники профильных чатов по принтерам Qidi испытывают колоссальные душевные страдания, когда к ним приходят с проблемами, касающимися моих инструкций. Поэтому, если вы пытались что-то сделать со своим принтером, и у вас не получилось, то лучше обратиться в мой телеграм-чат K3D. Таким образом можно будет убить сразу двух зайцев. Во-первых, я узнаю о наличии какой-то проблемы в инструкции и смогу её исправить. А, во-вторых, мы сохраним душевное спокойствие самых нежных из обитателей профильных чатов.

