Перейти к основному содержанию

Настройка светодиодного сигнального светильника

Светодиодный сигнальный светильник (трехцветный сигнальный светильник) используется для наглядного отображения состояния работы принтера. В данной статье описывается метод его подключения и настройка в Klipper.

Информация о напряжении

Светодиодный сигнальный светильник имеет различные спецификации входного напряжения. В данной статье в качестве примера используется версия 24V. Пожалуйста, убедитесь, что напряжение соответствует вашей модели.

Описание подключения

Определение цветов проводов

ЦветФункцияМесто подключения
СерыйОбщий положительныйПодключить к положительному полюсу источника питания 24 В (например, 24 В от питания вентилятора)
КрасныйУправление красным светомПодключить к контакту сигнала управления вентилятором материнской платы
ЗеленыйУправление зеленым светомПодключить к контакту сигнала управления вентилятором материнской платы
ЖелтыйУправление желтым светомПодключить к контакту сигнала управления вентилятором материнской платы

Полярность управления

Материнские платы FLY по умолчанию используют управление по отрицательному полюсу:

  • Положительный провод (серый) светодиодного сигнального светильника подключается к источнику питания 24 В.
  • Провода управления (красный/зеленый/желтый) светодиодного сигнального светильника подключаются к контактам GPIO материнской платы.
  • Когда материнская плата выдает низкий уровень, соответствующий цвет загорается.
Loading...

Конфигурация Klipper

[output_pin led_red]
pin: PD12 # Контакт управления красным светом
pwm: False
value: 0 # По умолчанию выключен
shutdown_value: 1 # При ошибке Klipper автоматически загорается красный свет

[output_pin led_green]
pin: PD13 # Контакт управления зеленым светом
pwm: False
value: 0

[output_pin led_yellow]
pin: PD14 # Контакт управления желтым светом
pwm: False
value: 0
Примечание о контактах

Вышеуказанные PD12, PD13, PD14 используются в качестве примеров. Пожалуйста, измените их в соответствии с доступными GPIO вашей материнской платы.

Механизм безопасности красного света при ошибке

Красный свет реализует механизм безопасности через shutdown_value: 1:

  • Нормальная работа: Красный свет управляется макросом и в нормальном состоянии остается выключенным.
  • Ошибка/отключение: При переходе Klipper в состояние Shutdown красный свет автоматически включается без участия каких-либо макросов.
  • Это аппаратный механизм безопасности, который гарантирует, что красный свет правильно укажет на неисправность, даже если логика макроса нарушена.

Макрос состояния

[gcode_macro LED_STATUS]
description: Установка состояния светодиодного сигнального светильника
gcode:
{% set STATUS = params.STATUS|default("idle")|lower %}

# Сначала выключить все светильники
SET_PIN PIN=led_red VALUE=0
SET_PIN PIN=led_green VALUE=0
SET_PIN PIN=led_yellow VALUE=0

# Установить цвет в зависимости от состояния (низкий уровень активен: VALUE=1 означает, что контакт выдает низкий уровень, свет горит)
{% if STATUS == "printing" %}
SET_PIN PIN=led_green VALUE=1
SET_PIN PIN=led_yellow VALUE=1
{% elif STATUS == "ready" %}
SET_PIN PIN=led_green VALUE=1
{% elif STATUS == "warning" %}
SET_PIN PIN=led_yellow VALUE=1
{% elif STATUS == "error" %}
SET_PIN PIN=led_red VALUE=1
{% endif %}

Описание состояний

Параметр состоянияСветовой эффектСценарий использования
printingЗеленый + желтый светИдет печать
readyЗеленый светKlipper подключен, принтер готов
warningЖелтый светСостояние предупреждения (например, аномальная температура, но не ошибка)
errorКрасный светПроизошла ошибка, требуется вмешательство
idleВсе выключеныСостояние простоя (по умолчанию)

Пример вызова: LED_STATUS STATUS=printing

Интеграция с макросами печати

Добавьте управление светодиодами в макросы начала и окончания печати для автоматического переключения состояния.

Макрос начала печати

[gcode_macro PRINT_START]
description: Макрос начала печати
gcode:
# ... Другая логика начала ...

# Установить LED в состояние "печать"
LED_STATUS STATUS=printing

# ... Нагрев, возврат в ноль и т.д. ...

Макрос окончания печати

[gcode_macro PRINT_END]
description: Макрос окончания печати
gcode:
# ... Другая логика окончания ...

# Установить LED в состояние "простой"
LED_STATUS STATUS=idle

Автоматическое определение состояния (опционально)

Если требуется автоматически определять состояние Klipper без изменения макросов печати, используйте следующую конфигурацию.

# Макрос переменной состояния (для записи последнего состояния, чтобы избежать мерцания при повторных обновлениях)
[gcode_macro _LED_STATE]
variable_last_status: "unknown"
gcode:
# Этот макрос только хранит переменную, никаких действий не выполняет

# Автоматическое определение состояния
[delayed_gcode LED_AUTO_UPDATE]
initial_duration: 1
gcode:
{% set idle = printer.idle_timeout.state|string|upper %}
{% set printing = printer.print_stats.state|string|upper %}
{% set current = "unknown" %}

# Определить текущее состояние
{% if printing == "PRINTING" or printing == "PAUSED" %}
{% set current = "printing" %}
{% elif idle == "READY" or idle == "IDLE" %}
{% set current = "ready" %}
{% endif %}

# Обновлять LED только при изменении состояния, чтобы избежать мерцания
{% set last = printer["gcode_macro _LED_STATE"].last_status %}
{% if current != last %}
SET_GCODE_VARIABLE MACRO=_LED_STATE VARIABLE=last_status VALUE='"{current}"'
LED_STATUS STATUS={current}
{% endif %}

# Продолжить опрос
UPDATE_DELAYED_GCODE ID=LED_AUTO_UPDATE DURATION=1

Логика определения состояния

Состояние KlipperУсловие определенияЭффект LED
Выполняется печатьprint_stats.state = printing/pausedЗеленый + желтый свет
Подключенidle_timeout.state = ready/idleЗеленый свет
ОшибкаKlipper перешел в ShutdownКрасный свет (автоматически обрабатывается shutdown_value)
ДругоеУказанные выше состояния не обнаруженыВсе выключены

Принцип работы

  1. Макрос _LED_STATE сохраняет последнее состояние для сравнения.
  2. LED_AUTO_UPDATE каждую секунду проверяет состояние Klipper.
  3. LED_STATUS вызывается только при изменении состояния для обновления света, предотвращая мерцание.
  4. Когда Klipper переходит в Shutdown из-за ошибки, shutdown_value автоматически берет на себя управление красным светом.
Loading...