Тестирование периферии и драйверов
Данная статья предназначена для проверки работоспособности таких периферийных модулей, как шаговые драйверы, платы CAN-инструментов и т.д. Методика тестирования аналогична базовому тестированию ввода/вывода: используется минимальная конфигурация Klipper для изоляции отдельного аппаратного компонента.
Если требуется проверить подключение MCU, датчики температуры, выходы вентиляторов или входные порты, сначала обратитесь к Методам аппаратного тестирования.
Тестирование драйвера
Цель тестирования
Проверить с помощью простейшей конфигурации Klipper, может ли отдельный TMC-драйвер (в режиме UART или SPI) нормально обмениваться данными с материнской платой, и подтвердить, что двигатель управляется корректно.
Предварительные условия
Перед выполнением следующих операций полностью выключите принтер и отключите его от источника питания. Запрещается подключать или отключать модули драйверов или провода шаговых двигателей под напряжением.
- Принтер полностью обесточен.
- Тестируемый TMC-драйвер правильно вставлен в соответствующий разъем материнской платы, ориентация верна.
- Для драйверов в режиме UART (например, TMC2209) убедитесь, что перемычка UART на соответствующем порте драйвера установлена.
- Подключите только один шаговый двигатель к тестируемому порту драйвера, остальные порты драйверов пока оставьте пустыми.
- Сделайте резервную копию исходного полного конфигурационного файла и подготовьте временный
printer.cfg, содержащий только базовую минимальную конфигурацию и фрагмент для тестируемого драйвера.
Минимальная конфигурация для одного драйвера
Сначала запишите базовую минимальную конфигурацию, затем добавьте к ней тестовый фрагмент, соответствующий текущему режиму драйвера. [manual_stepper] все еще требует простейшего раздела [printer] (kinematics: none), что проще, чем конфигурация кинематики, и подходит для чисто аппаратной проверки.
Базовая минимальная конфигурация
[printer]
kinematics: none
max_velocity: 200.00
max_accel: 40000.00
[mcu]
serial: /dev/serial/by-id/usb-Klipper_xxxxxxxxxxx
Фрагмент конфигурации для тестирования драйвера
Ниже показан только добавляемый фрагмент для тестирования драйвера. Не добавляйте второй раздел [printer] или [mcu].
- Режим UART (TMC2209 / TMC2240 и т.д.)
- Режим SPI (TMC5160 / TMC2130 и т.д.)
[manual_stepper Drive0]
# Измените следующие три пункта в соответствии с реальными выводами материнской платы
step_pin: PE2
dir_pin: PC5
enable_pin: !PF11
# Следующие параметры изменять не нужно
microsteps: 16
rotation_distance: 40
velocity: 500
accel: 10000
position_min: 0
position_max: 1000
[tmc2209 manual_stepper Drive0]
# Измените uart_pin в соответствии с реальным выводом материнской платы
# Измените sense_resistor в соответствии с документацией производителя драйвера
uart_pin: PC4
interpolate: False
run_current: 0.8
sense_resistor: <driver_sense_resistor>
stealthchop_threshold: 0
[manual_stepper Drive0]
# Измените следующие три пункта в соответствии с реальными выводами материнской платы
step_pin: PE2
dir_pin: PC5
enable_pin: !PF11
# Следующие параметры изменять не нужно
microsteps: 16
rotation_distance: 40
velocity: 500
accel: 10000
position_min: 0
position_max: 1000
[tmc5160 manual_stepper Drive0]
# Измените cs_pin и spi_bus в соответствии с реальными выводами материнской платы
# Измените sense_resistor в соответствии с документацией производителя драйвера
cs_pin: PC4
spi_bus: spi1a
run_current: 0.8
sense_resistor: <driver_sense_resistor>
stealthchop_threshold: 0
serial: Замените на фактический ID последовательного порта материнской платы (можно посмотреть с помощьюls /dev/serial/by-id/). Указывается только один раз в базовой минимальной конфигурации.step_pin/dir_pin/enable_pin: Замените на выводы материнской платы, соответствующие тестируемому порту драйвера.uart_pin(режим UART) /cs_pin+spi_bus(режим SPI): Замените на фактические выводы и номер шины SPI.sense_resistor: Обязательно укажите значение согласно документации производителя драйвера, не угадывайте только по модели чипа. Для разных плат TMC5160 это может быть0.075,0.033,0.022или другое значение; параметры измерения тока для TMC2240 и других драйверов также могут отличаться. Если в документации производителя значение не указано, сначала обратитесь к нему или используйте его официальный пример конфигурации.- Конфигурация не содержит нагревателей или вентиляторов, предназначена только для проверки связи с драйвером.
Метод тестирования нескольких драйверов
Если необходимо последовательно проверить несколько портов драйверов на одной плате, используйте в конфигурации имена Drive0, Drive1, Drive2:
[manual_stepper Drive1]
step_pin: PE3
dir_pin: PF13
enable_pin: !PF14
microsteps: 16
rotation_distance: 40
velocity: 500
accel: 10000
position_min: 0
position_max: 1000
[tmc2209 manual_stepper Drive1]
uart_pin: PF12
interpolate: False
run_current: 0.8
sense_resistor: <driver_sense_resistor>
stealthchop_threshold: 0
Во время тестирования подключайте двигатель только к текущему проверяемому порту. После подтверждения работоспособности одного порта выключите питание и переходите к следующему.
Этапы тестирования
-
Сохраните базовую минимальную конфигурацию и текущий фрагмент для тестирования драйвера как
printer.cfg. -
Убедившись, что двигатель и драйвер подключены правильно, включите питание и запустите Klipper.
-
В консоли Mainsail / Fluidd введите следующие команды, чтобы включить двигатель и установить текущую позицию в
0:MANUAL_STEPPER STEPPER=Drive0 ENABLE=1MANUAL_STEPPER STEPPER=Drive0 SET_POSITION=0- Если после включения на валу двигателя появился удерживающий момент, значит
enable_pinв основном работает. - Если двигатель по-прежнему свободно вращается, после отключения питания проверьте
enable_pin, направление драйвера, перемычки и питание.
- Если после включения на валу двигателя появился удерживающий момент, значит
-
Выполните тест ручного перемещения:
MANUAL_STEPPER STEPPER=Drive0 MOVE=100 SPEED=100MANUAL_STEPPER STEPPER=Drive0 MOVE=0 SPEED=100MOVE=— это целевая позиция, а не относительное смещение. После выполненияMOVE=100выполнитеMOVE=0, двигатель вернется в исходную точку.- Если двигатель все еще подключен к механизму перемещения станка, при первом тесте рекомендуется изменить команду на
MOVE=10 SPEED=5, чтобы убедиться в безопасности направления и хода, после чего увеличить скорость. - Если двигатель вращается плавно, без рывков, значит драйвер, двигатель и выводы импульсов/направления в основном исправны.
- Если двигатель не реагирует, только вибрирует или направление вращения неверное, после отключения питания проверьте конфигурацию выводов, порядок подключения обмоток двигателя, направление драйвера и перемычки.
-
Проверьте состояние связи TMC:
DUMP_TMC STEPPER=Drive0Если информация о регистрах возвращается нормально, связь UART/SPI в основном исправна. Если появляется сообщение о невозможности чтения регистров, обратитесь к разделу Поиск и устранение ошибок TMC.
-
После завершения теста отключите питание драйвера:
MANUAL_STEPPER STEPPER=Drive0 ENABLE=0
Ожидаемые результаты
| Тест | Нормальный результат | Аномальное проявление |
|---|---|---|
| Ручное перемещение | Двигатель движется вперед и назад по команде | Не движется, вибрирует, заедает или направление неверное |
| Связь TMC | DUMP_TMC возвращает информацию о регистрах | Невозможно прочитать регистры UART/SPI |
| Удерживающий момент | Вал двигателя невозможно свободно вращать при ENABLE=1 | Вал легко вращается (не включен) |
Если все три пункта в норме, значит, связь драйвера с материнской платой и подключение двигателя исправны. Можно восстановить исходный printer.cfg и продолжить диагностику других аппаратных компонентов.
Минимальное тестирование CAN-платы инструмента
Цель тестирования
Убедиться, что CAN-плата инструмента распознана Klipper, и проверить работу датчика температуры, вентилятора, акселерометра или входных портов на ней.
Минимальная конфигурация
Сначала сохраните базовую минимальную конфигурацию, затем добавьте к ней следующий фрагмент для тестирования CAN-платы инструмента. Если тестируется только CAN-плата, также оставьте раздел [mcu] для материнской платы, чтобы Klipper мог нормально запуститься и отобразить состояние подключения материнской платы.
[mcu tool]
canbus_uuid: xxxxxxxxxxxx
[temperature_sensor ToolBoard]
sensor_type: temperature_mcu
sensor_mcu: tool
[output_pin tool_FAN0]
pin: tool:gpio13
pwm: True
cycle_time: 0.010
value: 0
shutdown_value: 0
Этапы тестирования
- Следуя инструкции Настройка CAN-сети и поиск ID, найдите и укажите
canbus_uuid. - После перезапуска Klipper проверьте, нормально ли отображается температура
ToolBoard. - Используйте команду
SET_PIN PIN=tool_FAN0 VALUE=1для проверки работы низковольтного вентилятора на плате инструмента. После теста выполнитеSET_PIN PIN=tool_FAN0 VALUE=0. - Для тестирования акселерометра или входных портов на плате инструмента добавьте соответствующую конфигурацию, как описано в соответствующих разделах выше.
Все операции с линиями CANH/CANL, оконечными резисторами, перемычками и жгутами проводов должны выполняться только при выключенном питании. Не подключайте и не отключайте CAN-линии и не изменяйте оконечные резисторы под напряжением.
Распространенные неисправности и дальнейшие действия
| Аномальное проявление | Ключевые слова в klippy.log | Приоритетная проверка | Дальнейшие действия |
|---|---|---|---|
| Klipper не может подключиться к MCU | Unable to connect, Connect error, Serial connection closed | serial / canbus_uuid, прошивка, USB/CAN-подключение | Общий обзор ошибок |
| Аномальное отображение температуры | ADC out of range, temperature, not heating | sensor_type, sensor_pin, разъем термистора | Ошибки температуры, нагрева и экструзии |
| Аварийное отключение нагревателя или стола | Verify heater, not heating at expected rate | Контакт термистора, PID, мощность нагревателя, SSR | Ошибки температуры, нагрева и экструзии |
| Вентилятор не вращается | Ошибок нет (выходные порты не генерируют логи) | pin, спецификация напряжения вентилятора, совместимость PWM | Замена вентилятора или порта для перекрестной проверки |
| Состояние входа не меняется | Ошибок нет (входные порты не генерируют логи) | Подтяжка ^, порядок проводов, тип переключателя | Проверка разъема и порта при выключенном питании |
| Нет данных с акселерометра | Invalid adxl345 id, Invalid lis2dw id, timeout | cs_pin, spi_bus, жгут проводов, модель модуля | Тестирование и калибровка акселерометра |
| Ошибка теста резонанса | No data, Insufficient axis data, Frequency range | Крепление датчика, натяжение ремня, вибрация вентилятора | Тестирование и калибровка акселерометра |
| Двигатель не движется | Unable to read tmc uart, Unable to write tmc spi | step_pin, dir_pin, enable_pin, конфигурация TMC | Поиск и устранение ошибок TMC |
| Невозможно прочитать регистры TMC | DRV_STATUS, read register, GSTAT | Выводы UART/SPI, перемычки, питание драйвера, модель драйвера | Поиск и устранение ошибок TMC |
| CAN-плата инструмента офлайн | bytes_invalid, Network is down, No buffer space, Timer too close | Порядок проводов CAN, оконечный резистор, питание, UUID | Настройка CAN-сети и поиск ID |
| Случайные задержки/потери во время печати | Stepper too far in past, Rescheduled timer, Lost communication | Нагрузка на хост, помехи в линии связи, скорость/ускорение | Ошибки системы, производительности и служб |
| Невозможно сохранить конфигурацию | Unable to write, Option conflict, CRC does not match | Права доступа к файлу, конфликт в зоне автосохранения, FIRMWARE_RESTART | Ошибки конфигурации |
Справочные фрагменты конфигурации
При составлении тестовой конфигурации можно извлекать фрагменты из соответствующих шаблонов для материнских плат/плат инструментов в зависимости от типа аппаратного обеспечения:
- Тестирование материнской платы:
temperature_sensor,manual_stepper DriveN,tmcXXXX manual_stepper DriveN,output_pin FANx,gcode_button IOx. - Тестирование платы инструмента:
temperature_sensor,adxl345/lis2dw,manual_stepper Drive0,output_pin FANx,gcode_button. - Тестирование нескольких драйверов: используйте имена
Drive0,Drive1,Drive2.STEPPER=в командах тестирования должен соответствовать имени раздела конфигурации. - Тестирование низковольтного выхода: предпочтительно выбирать низковольтные нагрузки, такие как вентиляторы, RGB-светодиоды, зуммеры. Не используйте нагревательные стержни или столы в качестве обычного
output_pinдля тестирования.
Если какой-либо модуль не проходит вышеуказанное минимальное тестирование, сначала восстановите исходную конфигурацию, а затем обратитесь к соответствующей странице FAQ с учетом конкретной ошибки для дальнейшей диагностики.