KREMEN Реклама
KREMEN Реклама

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

ArtDesignEngineering
Идет загрузка
Загрузка
17.08.2025
1084
7
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8

    Итак, в первой части мы подключали аську к Максу, теперь займемся настройкой.

    Изначально реверс-инжинирингом ACE Pro занимался широко известный в узких кругах УткаБобр, автор первых кастомных прошивок для принтеров Anycubic. Все его наработки, опубликованные в свободном доступе, легли в основу нескольких проектов по подключению аськи.

    На данный момент как мы уже упомянули ранее существуют две версии драйверов управления аськой:

    Далее я буду рассматривать настройку и конфигурирование варианта Bunny ACE, т.к. использовал в работе именно его. И еще раз повторюсь – мы ставим всё это на Creality K1Max, с другими принтерами процедура может незначительно отличаться.

• Установка Creality Helper script

Тут все просто и многим знакомо, думаю не стоит описывать подробно. От helper script нам нужен доступ в консоль принтера, возможность правки файлов, интерфейс Mainsail и GuppyScreen с удалением всех сервисов Creality.

• Обновление PySerial

Подключаемся через ssh и выполняем команду /usr/share/klippy-env/pip3 install pyserial==3.5

• Комментирование старого сенсора филамента в конфиге

Поскольку штатный сенсор филамента мы больше не будем использовать – комментируем всю секцию [filament_switch_sensor filament_sensor] конфигурационного файла printer.cfg, описывающую его. Сам сенсор тоже можно снять, т.к. он нам больше не понадобится.

• Правка файла /etc/udev/rules.d/60-serial.rules (актуально только для Creality):

Эта правка нужна для учета специфики реализации usb-serial. И да, первая строка напоминает нам, что в случае обновления прошивки это действие надо будет повторить.

Заменяем содержимое файла /etc/udev/rules.d/60-serial.rules на это:

# do not edit this file, it will be overwritten on update
ACTION=="remove", GOTO="serial_remove"

SUBSYSTEM!="tty", GOTO="serial_end"

SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}"

SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"

# /dev/serial/by-path/, /dev/serial/by-id/ for USB devices

KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="serial_end"

SUBSYSTEMS=="usb-serial", ENV{.ID_PORT}="$attr{port_number}"

 for ai laser

KERNEL=="ttyACM[0-9]*", SYMLINK+="serial/by-id/creality-laser"

IMPORT{builtin}="path_id"

ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="serial/by-path/$env{ID_PATH}"

ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-path/$env{ID_PATH}-port$env{.ID_PORT}"

IMPORT{builtin}="usb_id"

ENV{ID_SERIAL}=="", GOTO="serial_end"

SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACE_NUM}="$attr{bInterfaceNumber}"

ENV{ID_USB_INTERFACE_NUM}=="", GOTO="serial_end"

ENV{.ID_PORT}=="", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}"

ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}-port$env{.ID_PORT}"

GOTO="serial_end"

LABEL="serial_remove"

KERNEL!="ttyACM[0-9]*", GOTO="serial_end"

#ENV{DEVLINKS}=="/dev/serial/by-id/creality-laser*", RUN+="/usr/bin/laser_status.sh"

LABEL="serial_end"

• Добавление ace.cfg и ace.py и настройка ace.cfg

    Собственно, сам драйвер состоит из двух файлов – ace.py (модуль на питоне) и ace.cfg (пользовательский конфигурационный файл).

    Важно! На данный момент в мастер-ветке на гитхабе лежит первоначальная версия драйвера. Текущая актуальная версия располагается в ветке development: https://github.com/BlackFrogKok/BunnyACE/tree/development

    Описание процедуры установки есть на странице проекта, по итогу у нас файлы ace.py и ace.cfg должны быть в каталогах ${KLIPPER_HOME}/klippy/extras/ace.py и ${KLIPPER_CONFIG_HOME}/ace.cfg соответственно.

    Также необходимо в каталоге с ace.cfg создать файл mmu.cfg содержащий необходимые для работы переменные (на него будет ссылка в файле ace.cfg далее):

[Variables]
ace__revision = 21

ace_current_index = -1

ace_filament_pos = 'nozzle'

ace_gate_color = ['000000', '800080', '', '000000']

ace_gate_temp = [205, 205, 0, 0]

ace_gate_type = ['PLA', 'TPU', '', 'PLA']

ace_endless_spool = 1

name = [1, 2, 3]

    В файле основных настроек printer.cfg подключаем ace.cfg: [include ace.cfg]

    Следующим шагом надо прописать все параметры в конфигурационном файле ace.cfg (я привожу содержимое моего конфига для К1Макс с комментариями):

# Please check that [save_variables] is above [ace] if you're using different config
[save_variables]
filename: ~/../usr/data/printer_data/config/mmu.cfg #путь к созданному файлу с переменными

[respond]

[ace]

serial: /dev/serial/by-id/usb-ANYCUBIC_ACE_0-if00

baud: 115200

# Extruder_sensor_pin

extruder_sensor_pin: !nozzle_mcu:PA10 #пин подключения первого сенсора филамента

# Toolhead_sensor_pin

toolhead_sensor_pin: !nozzle_mcu:PA8 # пин подключения первого сенсора филамента, может быть пустой в случае если у вас его нет (как в варианте с новым экструдером Creality из кита cfs)

# Default feeding speed, 10-25 in stock, скорость подачи, можно поэкспериментировать с этой величиной

feed_speed: 80

# Default retraction speed, 10-25 in stock, скорость ретракта, тоже можно поэкспериментировать с этой величиной

retract_speed: 80

# Length of the retract to make for toolchange, важный параметр – на сколько надо произвести ретракт после отрезания, чтобы освободить трассу для подачи следующего филамента. Т.е. это длина от входного сенсора филамента головы до безопасного положения кончика филамента за буфером подачи

toolchange_retract_length: 540

toolhead_sensor_to_nozzle: 0 # TUNE ME Distance from toolhead sensor to nozzle, если не используете второй сенсор – настройте длину филамента от первого сенсора до ноззла, именно на неё будет осуществляться подача филамента без использования второго датчика

poop_macros: POOP #наименование макроса очистки 

cut_macros: CUT_TIP #наименование макроса отрезания филамента

# Max dryer temperature, максимальная температура сушилки. В стоке 55 градусов, проверяли до 70, но есть риски оплавления корпуса и колпака. На самих грелках внутри стоит модуль защиты (термореле) на 90 градусов. 

max_dryer_temperature: 55

[gcode_macro POOP] #макрос очистки, все движения в процессе прочистки экструдера

gcode:

  G91

  G0 Z26 F600

  G90

  G0 X185 Y287 F9000

  SET_PIN PIN=fan0 VALUE=70

  G0 X185 Y302 F700

  G1 E90 F300

  SET_PIN PIN=fan0 VALUE=255

  G91

  G1 E-1 F900

  G4 P3000

  G90

  G0 Y302 F4000

  G0 X209 F4000

  G0 Y302 F4000

  G0 Y297 F4000

  G0 Y302 F4000

  G0 Y297 F4000

  G0 Y302 F4000

  G0 Y297 F4000

  G0 Y304 F4000

  G0 X224 F4000 

  G0 Y290 F4000 

  SET_PIN PIN=fan0 VALUE=0

  G91

  G0 Z-26 F600

[gcode_macro CUT_TIP] #макрос обрезания прутка, учитывающий особенности вашей реализации ножа

gcode:

    {% if "xyz" not in printer.toolhead.homed_axes %}

        G28

    {% endif %}

    G90

    G0 E-23 F500

    G0 X20 Y285 F8000

    G0 X20 Y299 F300

    G0 X20 Y287 F300

    G0 E22 F500

    G1 E-51 F500

[gcode_macro _ACE_PRE_TOOLCHANGE] 

variable_purge_temp_min: 230

gcode:

    M117 PRE

    {% if "xyz" not in printer.toolhead.homed_axes %}

        G28

    {% endif %}

    {% if printer.extruder.temperature < purge_temp_min %}

          M109 S{purge_temp_min}

    {% endif %}

    SAVE_GCODE_STATE NAME=TOOLCHANGE

    {% if printer.gcode_move.gcode_position.z < 30 %}

      G91

      G0 Z30 F600

    {% endif %}

[gcode_macro _ACE_POST_TOOLCHANGE]

gcode:

    RESTORE_GCODE_STATE NAME=TOOLCHANGE MOVE=1 MOVE_SPEED=250

[gcode_macro _ACE_ON_EMPTY_ERROR]

gcode:

    {action_respond_info("Spool is empty")}

    {% if printer.idle_timeout.state == "Printing" %}

        PAUSE

    {% endif %}

[gcode_macro gg]

gcode:

    m117 {x}

[gcode_macro T0]

gcode:

    ACE_CHANGE_TOOL TOOL=0

[gcode_macro T1]

gcode:

    ACE_CHANGE_TOOL TOOL=1

[gcode_macro T2]

gcode:

    ACE_CHANGE_TOOL TOOL=2

[gcode_macro T3]

gcode:

    ACE_CHANGE_TOOL TOOL=3

 • Правка web-интерфейса Mainsail

    На данный момент реализация веб-интерфейса в разработке, но уже сейчас есть модуль для Mainsail, в котором можно управлять сушилкой, устанавливать цвет и тип филамента (а именно на основании этих данных работает функция «Бесконечная катушка»), загружать пластик по нажатию на соответствующий гейт.

    Для установки необходимо заменить содержимое каталога /usr/data/mainsail на содержимое из архива https://t.me/ERCFcrealityACEpro/21334/54658

    После чего выполнить в консоли команды:

chmod 755 -R /usr/data/mainsail

/etc/init.d/S50nginx restart

    После этого в Mainsail появится соответствующий раздел:

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

    Поскольку это пока еще не полноценный Filament Manager с возможностью сопоставления гейтов аськи и параметров из g-кода – приходится держать в уме и сопоставлять самостоятельно используемый номер филамента из слайсера с фактически загруженным пластиком. Т.е. если вы слайсили модель в Орке первым филаментом – печатать вы будете из первого гейта аськи, и соответствующий пластик надо будет грузить именно в него.

• Правки в Орке

    Добавление филаментов – здесь все просто, в слайсере мы должны добавить филаменты:

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

    Также в конфигурации мы должны указать, что работаем с одноэкструдерным мультиматериальным принтером:

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

Все параметры выставляем в 0.

    В секции «G-код принтера» следующее:

В «start gcode»: ACE_ENDLESS_SPOOL = 1 и T{current_extruder}

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

В «end gcode»: ACE_CHANGE_TOOL TOOL=-1

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

В «gcode перед сменой слоя»: ACE_ENABLE_FEED_ASSIST index={current_extruder}

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

    И, пожалуй, последнее, что стоит добавить в слайсере – область исключения на столе из-за добавления депрессора ножа и сброса отходов:

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

    На столе в слайсере запретные области выделены светлым оттенком:

Подключение Anycubic ACE Pro к Creality K1 Max - часть вторая (программная).

    Вот и все, после этого вы можете полноценно использовать аську с вашим принтером!

    Как это работает – можно посмотреть тут: https://www.youtube.com/watch?v=sxWu5P4a1kU

и вот тут: https://www.youtube.com/shorts/ryHxfTX_DA0

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Комментарии к статье
Lider 3D Реклама
Lider 3D Реклама