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

Устранение ошибок TMC

Технический контекст

Драйверы TMC (Trinamic) сообщают о состоянии и ошибках через специальные регистры. Понимание этих регистров помогает быстро диагностировать проблемы:

  • Регистр IFCNT: Счетчик кадров связи, используется для проверки нормальной связи между основным контроллером и драйвером.
  • Регистр GSTAT: Регистр глобального состояния, содержит информацию о глобальном состоянии, такую как сброс, ошибки драйвера и т.д.
  • Регистр DRV_STATUS: Регистр состояния драйвера, предоставляет подробную информацию о рабочем состоянии драйвера, включая предупреждения о температуре, короткое замыкание, обрыв цепи и другие неисправности.

Когда Klipper сообщает об ошибке TMC, обычно отображаются конкретные значения регистров и флаги неисправности. Ошибка драйвера TMC означает, что микросхема драйвера обнаружила проблему и отключилась в целях самозащиты. Klipper переходит в состояние shutdown, обнаружив отключение драйвера.

Отключение питания

Перед проверкой перемычек, модулей драйверов, проводов двигателей, распиновки SPI/UART или клеммных колодок полностью выключите принтер и отключите его от источника питания. Запрещается подключать или отключать модули драйверов или провода шаговых двигателей под напряжением. Режим измерения сопротивления мультиметра можно использовать только при отключенном питании.

Нет связи с драйвером (Ошибка связи IFCNT)

Сообщение об ошибке: Unable to read tmc uart 'stepper_x' register IFCNT или Unable to read tmc spi 'stepper_x' register IFCNT.

Loading...

Причина ошибки: Сбой связи между драйвером TMC (режим UART/SPI) и основным контроллером, что приводит к невозможности чтения значения регистра IFCNT. Обычно возникает из-за неустановленной перемычки UART, аномального питания платы драйвера или неправильной конфигурации выводов UART/SPI.

Методы решения:

  1. После отключения питания проверьте правильность установки перемычки UART для соответствующего драйвера.
  2. Убедитесь, что uart_pin (или spi_bus / spi_software_*_pin) в конфигурации TMC в printer.cfg соответствует фактическому подключению.
  3. Сначала проверьте состояние питания по светодиодному индикатору и направлению установки модуля драйвера. Если индикатор в норме, а модуль установлен правильно, но проблема остается, замените кабель на заведомо исправный или проведите перекрестную проверку (переставьте драйвер на другой порт). Электрические проверки оголенных клемм 24V следует доверить службе поддержки или квалифицированному специалисту.
  4. Если ошибка возникает сразу после первой прошивки Klipper, выключите принтер на несколько секунд (одновременно отключив USB и основное питание), затем снова включите, чтобы очистить остаточное состояние драйвера.
  5. После отключения питания попробуйте заменить плату драйвера или переключить порт драйвера для тестирования.
  6. При использовании драйверов не от FLY, проверьте определение контакта UART (у драйверов FLY контакт UART обычно является четвертым контактом слева сверху вниз).
Loading...

Для особых случаев, когда контакт UART приобретенного драйвера находится на пятом выводе, можно решить проблему с помощью следующих действий с перемычкой:

Loading...
  1. Проверьте соответствие uart_address аппаратной перемычке платы драйвера.
  2. Проверьте целостность кабеля данных, отсутствие разрывов или плохого контакта.

Перегрев драйвера (OvertempError / OvertempWarning)

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... ot=1(OvertempError!) или otpw=1(OvertempWarning!).

Loading...

Причина ошибки: Температура микросхемы драйвера TMC превысила безопасный порог, сработала защита. Обратите внимание: это перегрев драйвера, а не двигателя!

  • OvertempWarning (otpw): Превышение порога предупреждения около 120°C, драйвер все еще может работать, но рекомендуется провести диагностику.
  • OvertempError (ot): Превышение порога отключения около 150°C, драйвер автоматически отключается.

Методы решения:

  1. Уменьшите рабочий ток двигателя (run_current), рекомендуется сначала снизить на 20-30%.
  2. Если установлен ток удержания (hold_current), можно уменьшить его или полностью отключить.
  3. Проверьте, хорошо ли прилегает радиатор драйвера и достаточно ли термопасты.
  4. Установите вентилятор охлаждения драйвера, обеспечьте циркуляцию воздуха.
  5. Убедитесь, что значение токоизмерительного резистора (sense resistor) платы драйвера настроено правильно.
  6. Уменьшите stealthchop_threshold или переключитесь в режим spreadCycle.
  7. Проверьте, не замкнуто ли пространство установки драйвера, что может приводить к накоплению тепла. Избегайте длительной работы в условиях высокой температуры.

Ошибка короткого замыкания (ShortToGND / ShortToSupply)

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... s2vsa=1(ShortToSupply_A!) или s2ga=1(ShortToGND_A!).

Причина ошибки: Драйвер обнаружил чрезвычайно высокий ток. Возможные причины: ослабление или короткое замыкание проводов двигателя, повреждение изоляции обмотки двигателя, или перегрузка по току из-за неточного прогнозирования нагрузки в режиме stealthChop.

Методы решения:

  1. Сначала отключите питание. Проверьте, не ослаблены ли и не повреждены ли провода соответствующего двигателя. Измерьте сопротивление катушек двигателя мультиметром в режиме измерения сопротивления (нормальное значение около 1,5–3 Ом).
  2. После отключения питания проверьте надежность разъемов двигателя.
  3. При необходимости заземления корпуса двигателя используйте точку заземления, предоставленную производителем, или обратитесь в службу поддержки. Не изменяйте самостоятельно провод заземления питания или оголенные клеммы.
  4. Попробуйте отключить stealthChop для теста: SET_TMC_FIELD STEPPER=stepper_x FIELD=en_spreadCycle VALUE=1
  5. Если после переключения ошибка исчезла, это проблема прогнозирования stealthChop; в противном случае, вероятно, реальное аппаратное короткое замыкание.

Ошибка обрыва цепи (OpenLoad)

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... ola=1(OpenLoad_A!) или olb=1(OpenLoad_B!).

Причина ошибки: Драйвер обнаружил, что одна из фаз обмотки двигателя не образует эффективную нагрузку. Обычно это указывает на обрыв провода двигателя, ослабление разъема, неправильное подключение катушек, или ложное срабатывание при низком токе/в режиме stealthChop.

Методы решения:

  1. После отключения питания переподключите провода двигателя, убедитесь в надежности обжима клемм.
  2. Сначала отключите питание. Измерьте сопротивление катушек фаз A и B мультиметром. Значения должны быть близки и не должны указывать на обрыв.
  3. После отключения питания проверьте распиновку проводов двигателя, убедитесь, что два провода фазы A находятся в одной группе, а два провода фазы B — в другой.
  4. Временно отключите stealthChop: установите в конфигурации stealthchop_threshold: 0 и протестируйте.
  5. Увеличьте run_current для теста. Если ошибка появляется только при очень низком токе, это может быть ложное срабатывание.
  6. После отключения питания замените провода двигателя или сам двигатель для перекрестной проверки и определите, связана ли проблема с проводкой, двигателем или портом драйвера.

Комбинированная ошибка короткого замыкания и обрыва (Короткое замыкание фазы A, обрыв фазы B)

Сообщение об ошибке: TMC 'extruder' reports error: DRV_STATUS: ... s2vsa=1(ShortToSupply_A!) csactual=31 ola=1(OpenLoad_A!) olb=1(OpenLoad_B!).

Причина ошибки: Биты диагностики неисправности драйвера TMC указывают на аппаратную проблему: s2vsa=1 указывает на короткое замыкание фазы A на питание, ola=1 — на обрыв фазы A, olb=1 — на обрыв фазы B, csactual=31 — возможно, слишком высокое значение установленного тока. Эти неисправности часто возникают вместе и указывают на серьезные аппаратные проблемы двигателя или драйвера.

Методы решения:

  1. Сначала отключите питание. Измерьте мультиметром сопротивление катушек фаз A и B шагового двигателя, они должны быть одинаковыми (обычно 1-2 Ом и значения должны быть близки).
  2. После отключения питания тщательно проверьте жгуты проводов шагового двигателя и разъемы на наличие ослабления, короткого замыкания или плохого контакта.
  3. Проверьте соответствие настройки тока драйвера TMC, слишком высокий ток может вызвать эти проблемы.
  4. Попробуйте отключить режим stealthChop для теста: установите в конфигурации stealthchop_threshold: 0.

Комбинированная ошибка короткого замыкания и обрыва (Короткое замыкание фазы B, обрыв фазы A)

Сообщение об ошибке: TMC 'extruder' reports error: DRV_STATUS: ... s2vsb=1(ShortToSupply_B!) ola=1(OpenLoad_A!) cs_actual=25.

Loading...

Причина ошибки: Биты диагностики неисправности драйвера TMC указывают: s2vsb=1 — короткое замыкание фазы B на питание, ola=1 — обрыв фазы A, cs_actual=25 — значение установленного тока. Обычно вызывается: неправильным подключением двигателя (перепутаны или замкнуты фазы A/B), неисправностью самого двигателя (обрыв обмотки) или аппаратной проблемой платы драйвера.

Методы решения:

  1. Сначала отключите питание. Измерьте мультиметром сопротивление катушек фаз A и B шагового двигателя, они должны быть одинаковыми (в норме должны быть близки).
  2. После отключения питания убедитесь в правильности распиновки двигателя; обычно левая группа — фаза A, правая группа — фаза B.
  3. После отключения питания проверьте, все ли клеммные соединения надежны, нет ли ослабления или плохого контакта.
  4. Если возможно, после отключения питания подключите двигатель к другому заведомо исправному порту драйвера для тестирования.

Сброс драйвера (Reset)

Сообщение об ошибке: TMC 'stepper_x' reports error: GSTAT: 00000001 reset=1(Reset).

Loading...

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

Методы решения:

  1. После полного отключения питания проверьте, не ослаблены ли, не почернели ли и не обгорели ли кабель питания 24V, модуль драйвера и гнездо материнской платы.
  2. Замените на заведомо исправный блок питания, модуль драйвера или жгут проводов для перекрестной проверки.
  3. Проверьте охлаждение и вентилятор драйвера.
  4. Проверьте, не проложены ли провода двигателя параллельно проводам нагревателя или нагревательного стола на большом расстоянии. При необходимости после отключения питания переложите трассу проводов.
  5. Сначала отключите питание. Проверьте провода двигателя на наличие разрывов, внутренних переломов жил или плохого контакта в клеммах, вызывающих прерывистое соединение. Длительное движение в кабель-канале может привести к усталостному разрушению проводов, особое внимание уделите местам изгиба кабель-канала и обжима клемм.
  6. Не рекомендуется самостоятельно изменять входные цепи питания драйвера, добавлять электронные компоненты или изменять заземление; такие операции должны выполняться специалистами или службой поддержки.

Защита от пониженного напряжения (Undervoltage)

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... uv_cp=1(Undervoltage!).

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

Методы решения:

  1. После полного отключения питания проверьте внешний вид проводов питания, разъемов питания материнской платы и клемм на наличие ослабления, потемнения или обгорания.
  2. Убедитесь, что спецификации источника питания соответствуют общей потребляемой мощности драйверов и нагревателей.
  3. Проведите замену на заведомо исправный блок питания или жгут проводов для проверки.
  4. Электрические проверки оголенных клемм 24V следует доверить службе поддержки или квалифицированному специалисту, не пытайтесь выполнять их самостоятельно.

Ошибка связи SPI (DRV_STATUS: ffffffff)

Сообщение об ошибке: Unable to write tmc spi 'stepper_x' register ..., TMC reports error: DRV_STATUS: ffffffff ... или READRSP@RDSEL2: 00000000 ....

Причина ошибки: Невозможность связи с драйвером TMC в режиме SPI (tmc2130/tmc5160/tmc2660). Обычно это связано с ошибкой подключения SPI, наличием не сконфигурированного устройства на шине SPI или сбросом/неисправностью самого драйвера TMC.

Методы решения:

  1. После отключения питания проверьте правильность порядка подключения SPI (MOSI, MISO, SCK, CS).
  2. Если шина SPI используется совместно несколькими устройствами, убедитесь, что каждое устройство полностью сконфигурировано в Klipper.
  3. После отключения питания оставьте на материнской плате только один драйвер для отдельного тестирования, чтобы исключить взаимные помехи на общей шине.
  4. Убедитесь, что питание драйвера в норме. При необходимости выключите питание на несколько секунд, затем снова включите.
  5. Если ошибка сопровождается reset=1, uv_cp=1 или случайными ffffffff, в первую очередь проверьте питание и контакт драйвера.

Отдельное тестирование драйвера: Для изолированной проверки работоспособности драйвера обратитесь к разделу Тестирование периферии и драйверов для получения метода отдельного тестирования SPI-драйвера.

Ошибка конфигурации цепочки TMC SPI

Сообщение об ошибке: TMC SPI chain must have same length, TMC SPI chain can not have duplicate position.

Причина ошибки: При использовании нескольких драйверов TMC в режиме последовательной цепочки SPI, значения chain_position, chain_length или конфигурация выбора кристалла (CS) для разных драйверов несовместимы, что мешает Klipper определить положение каждого драйвера в цепочке SPI.

Методы решения:

  1. Если материнская плата не имеет конструкции последовательной цепочки SPI, не добавляйте произвольно параметры chain_position и chain_length.
  2. Сравните с шаблоном конфигурации производителя материнской платы или платы драйвера и убедитесь, что chain_length для каждого драйвера TMC полностью совпадает.
  3. Убедитесь, что chain_position для каждого драйвера уникален и не повторяется.
  4. Если используется обычная структура шины SPI с несколькими сигналами выбора кристалла (CS), следует отдельно настраивать cs_pin для каждого драйвера, а не использовать формат записи цепочки SPI.
  5. После сохранения выполните RESTART, затем проверьте связь с каждым драйвером по отдельности с помощью DUMP_TMC STEPPER=<stepper>.

Timeout on wait for 'tmcuart_response'

Сообщение об ошибке: Timeout on wait for 'tmcuart_response' response, в логе может также присутствовать Unable to read tmc uart 'stepper_x' register DRV_STATUS.

Распространенные причины:

  • Плохая пайка, обрыв или плохой контакт в проводке UART TMC, особенно внутренний разрыв проводов в кабель-канале после многократных изгибов.
  • Неправильная конфигурация uart_pin или неправильная установка перемычки UART на материнской плате.
  • Недостаточное питание драйвера или колебания напряжения, вызывающие сброс микросхемы TMC в момент связи.
  • Конфликт адресов или перегрузка шины при использовании одним UART-интерфейсом нескольких драйверов.
  • Занятость пина UART материнской платы другими функциями (например, Bluetooth, отладочный последовательный порт).

Методы решения:

Отключение питания

Перед проверкой платы драйвера, проводки UART или перемычек полностью выключите принтер и отключите его от источника питания.

  1. После отключения питания проверьте надежность подключения UART для драйвера, на который указывает ошибка, наличие явных изгибов, повреждений или плохой пайки проводов.
  2. Убедитесь, что uart_pin соответствует фактическому подключению к материнской плате, и проверьте, установлена ли перемычка UART на материнской плате правильно.
  3. Если несколько драйверов используют одну шину UART, убедитесь, что uart_address каждого драйвера не повторяется.
  4. Проверьте нормальность питания драйвера, особенно модулей преобразования 12/24V и предохранителей.
  5. Попробуйте поменять местами драйвер, на который указывает ошибка, с драйвером соседней оси, чтобы определить, проблема в драйвере или в гнезде/жгуте проводов материнской платы.
  6. Если ошибка появляется только во время печати, а в простое все нормально, проверьте, не натягивается ли жгут проводов во время движения.

Связь с ошибкой IFCNT: Timeout on wait for 'tmcuart_response' и Unable to read tmc uart register IFCNT по сути одинаковы, оба указывают на тайм-аут связи UART. Первая чаще возникает во время печати, вторая — на этапе начальной инициализации. Методы устранения совпадают, подробнее см. Ошибка связи IFCNT.

Loading...