Найти тему
Михаил Девятков

Управление питанием 3D принтера с Klipper, Moonraker и FluiddPi

Ранее я рассмотрел вопросы установки и настройки Klipper, об этом можно почитать по ссылкам:

Установка Klipper, Moonraker и FluiddPi

Настройка printer.cfg и калибровка Klipper

Подключение по UART к Raspberry

Настройка MCU HOST и подключение ADXL345

Подключение и прошивка BIGTREETECH EBB 36/42

Подключение 3D touch (BL touch)

Что бы отключать основное питание принтера по окончанию печати или при возникновении ошибок многие успешно используют твердотельное реле. Я пошёл другим путем, собрал управление на симисторе. По сути тоже твердотельное реле, только самодельное. Самое главное не покупать симистор на всем известной китайской площадке, присылают что то поддельное, не выдерживает двух включений. Схема устройства ниже, по сути типовое подключение и парочка светодиодов. Один горит когда есть питание на плате, второй когда симистор открыт. Ссылка на схему и плату. Плата выполнена точно по размерам платы управления питанием Lerdge, что бы не сверлить новых отверстий.

Схема
Схема
Вид
Вид

Raspberry Pi при этом запитано от своего источника 5В, устройство подключено тремя проводами (земля, 5В, управление). Питание на принтер подается когда на управляющем высокий уровень.

У меня подключено так:

Подключение
Подключение

Теперь нужно дописать в moonraker.conf в раздел [power Printer] следующие строки:

[power Printer]

type: gpio # тип устройства

pin: gpio4 # номер GPIO к которому подключено реле

off_when_shutdown: True #  выключение питания при ошибках

restart_klipper_when_powered: True # выполнение "FIRMWARE_RESTART" при включении питания

restart_delay: 1 # задержка в секундах перед "FIRMWARE_RESTART"

initial_state: off # исходное состояние при загрузке Raspberry

Комментарии в moonraker.conf не копировать!

Это добавит выключатель в меню

Что бы можно было выполнить выключение и перезагрузку g-кодом в Klipper, нужно добавить следующие строки в printer.cfg:

[gcode_macro SHUTDOWN]

gcode:

{action_call_remote_method("shutdown_machine")}

[gcode_macro REBOOT]

gcode:

{action_call_remote_method("reboot_machine")}

От себя я еще добавил:

[gcode_macro M81]

gcode:

{action_call_remote_method("shutdown_machine")}

Что бы можно было выполнить выключение принтера по завершению печати.

FluiddPi
FluiddPi

Я использую PrusaSlicer. Для выключения принтера по окончанию печати идем в настройки принтера - пользовательский G-код, и добавляем строки в завершающий G-код:

M109 S50; ждем остывания до 50 градусов

M81; выключаем принтер
PrusaSlicer
PrusaSlicer

Для личного удобства, что бы знать температуру внутри закрытого принтера я добавил дополнительный термистор. Подключил его на место термистора второго экструдера и добавил строки в printer.cfg:

[temperature_sensor Box]

sensor_type: Generic 3950

sensor_pin: P0.23

Спасибо, что дочитали до конца.

Про особенности настройки управления с GIPO OrangePi можно почитать тут.

Если кому нужно, у меня осталось пару реле рассчитанных на работу с одноплатниками, можно посмотреть тут.

Также что б ни чего не пропустить подписывайтесь на мое сообщество ВК и канал Telegram

https://vk.com/cncand3d

https://t.me/cncand3d