Тестирование периферии и драйверов
Эта статья предназначена для проверки работоспособности шаговых драйверов, CAN-инструментальных плат и других периферийных модулей. Метод тестирования аналогичен базовому I/O-тестированию: используется минимальная конфигурация Klipper для изоляции отдельного аппаратного компонента.
Если необходимо проверить подключение MCU, датчики температуры, выходы вентиляторов или входы, сначала обратитесь к Методам аппаратного тестирования.
Тестирование драйвера
Цель тестирования
Проверить способность одного TMC-драйвера (в режиме UART или SPI) нормально обмениваться данными с материнской платой с помощью простейшей конфигурации Klipper и убедиться, что двигатель может управляться.
Предварительные условия
Пожалуйста, полностью выключите принтер и отключите источник питания перед выполнением следующих операций. Запрещается подключать или отключать модули драйверов или провода шаговых двигателей под напряжением.
- Принтер полностью обесточен.
- Проверяемый TMC-драйвер правильно установлен в соответствующий разъем материнской платы, направление установки верное.
- Для драйвера в режиме UART (например, TMC2209) убедитесь, что перемычка UART для соответствующего порта драйвера установлена.
- Подключите только один шаговый двигатель к проверяемому порту драйвера, остальные порты временно оставьте пустыми.
- Подготовьте файл
printer.cfgминимальной конфигурации, содержащий только проверяемый драйвер. Рекомендуется предварительно создать резервную копию полного файла конфигурации.
Минимальная конфигурация для одного драйвера
Замените printer.cfg на следующую минимальную конфигурацию, оставив только разделы [printer], [mcu], [manual_stepper Drive0] для проверяемого драйвера и соответствующий раздел [tmcXXXX manual_stepper Drive0]. Раздел [manual_stepper] по-прежнему требует минимального раздела [printer] (kinematics: none), что проще конфигурации осей движения и подходит для чисто аппаратной проверки.
- Режим UART (TMC2209 / TMC2240 и т.д.)
- Режим SPI (TMC5160 / TMC2130 и т.д.)
[printer]
kinematics: none
max_velocity: 200.00
max_accel: 40000.00
[mcu]
serial: /dev/serial/by-id/usb-Klipper_xxxxxxxxxxx
[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
[printer]
kinematics: none
max_velocity: 200.00
max_accel: 40000.00
[mcu]
serial: /dev/serial/by-id/usb-Klipper_xxxxxxxxxxx
[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: Замените на фактический идентификатор последовательного порта материнской платы (можно посмотреть через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, и проверить работу датчика температуры, вентилятора, акселерометра или входов на инструментальной плате.
Минимальная конфигурация
[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 для дальнейшего устранения неисправностей, используя конкретную ошибку.