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
오류 원인: TMC 드라이버(UART/SPI 모드)와 메인 컨트롤러 간의 통신이 실패하여 IFCNT 레지스터 값을 읽을 수 없습니다. 일반적으로 UART 점퍼 핀이 설치되지 않았거나, 드라이버 보드 전원 공급이 비정상적이거나, UART/SPI 핀 구성이 잘못된 경우에 발생합니다.
해결 방법:
- 전원을 차단한 후 해당 드라이브의 UART 점퍼 핀이 올바르게 설치되었는지 확인합니다.
printer.cfg의 TMC 설정에서uart_pin(또는spi_bus/spi_software_*_pin)이 실제 배선과 일치하는지 확인합니다.- 먼저 전원 표시등과 드라이버 모듈 설치 방향을 통해 전원 공급 상태를 대략적으로 확인합니다. 표시등이 정상이고 모듈 방향이 올바른데도 문제가 지속되면 완성된 케이블 어셈블리로 교체하거나 교차 테스트(다른 포트에 드라이버 연결)를 수행합니다. 노출된 24V 단자의 전기적 검사는 애프터 서비스 또는 전문가에게 문의하십시오.
- Klipper를 처음 플래시한 후 즉시 오류가 발생하는 경우, 전체 프린터의 전원을 몇 초간 차단(USB와 메인 전원 모두 분리)한 후 다시 전원을 켜서 드라이버의 잔류 상태를 지웁니다.
- 전원을 차단한 후 드라이버 보드를 교체하거나 드라이버 포트를 전환하여 테스트해 보십시오.
- FLY 브랜드가 아닌 드라이버를 사용하는 경우, UART 핀 정의를 확인하십시오(FLY 드라이버의 UART 핀은 일반적으로 왼쪽 위에서 네 번째 핀입니다).
특수한 경우, 구매한 드라이버의 UART 핀이 다섯 번째 핀에 있는 경우 아래 점퍼 방법으로 해결할 수 있습니다.
uart_address가 드라이버 보드의 하드웨어 점퍼와 일치하는지 확인합니다.- 데이터 케이블이 손상되지 않고, 끊어지거나 접촉 불량이 없는지 확인합니다.
드라이버 과열 (OvertempError / OvertempWarning)
오류 메시지: TMC 'stepper_x' reports error: DRV_STATUS: ... ot=1(OvertempError!) 또는 otpw=1(OvertempWarning!)
오류 원인: TMC 드라이버 칩의 온도가 안전 임계값을 초과하여 보호 기능이 활성화되었습니다. 참고: 이는 모터 과열이 아닌 드라이버 과열입니다!
OvertempWarning(otpw): 약 120°C 경고 임계값 초과. 드라이버는 여전히 작동할 수 있지만 원인을 조사하는 것이 좋습니다.OvertempError(ot): 약 150°C 차단 임계값 초과. 드라이버가 자동으로 비활성화됩니다.
해결 방법:
- 모터 작동 전류(
run_current)를 낮춥니다. 먼저 20-30% 낮추는 것을 권장합니다. - 유지 전류(
hold_current)가 설정된 경우 적절히 낮추거나 완전히 비활성화합니다. - 드라이버 방열판이 잘 밀착되어 있는지, 열 전달 실리콘이 충분한지 확인합니다.
- 드라이버 냉각 팬을 추가하고 공기 순환이 잘 되는지 확인합니다.
- 드라이버 보드의 감지 저항(sense resistor) 값이 올바르게 구성되었는지 확인합니다.
stealthchop_threshold를 낮추거나 spreadCycle 모드로 전환합니다.- 드라이버 설치 환경이 밀폐되어 열이 축적되는지 확인하고, 고온 환경에서 장시간 작동을 피합니다.
단락 장애 (ShortToGND / ShortToSupply)
오류 메시지: TMC 'stepper_x' reports error: DRV_STATUS: ... s2vsa=1(ShortToSupply_A!) 또는 s2ga=1(ShortToGND_A!)
오류 원인: 드라이버가 매우 높은 전류를 감지했습니다. 모터 케이블 단락, 모터 권선 절연 파손, 또는 stealthChop 모드에서 예측 부하가 부정확하여 과전류가 발생했을 수 있습니다.
해결 방법:
- 먼저 전원을 차단한 후 작업하십시오. 해당 모터 케이블이 느슨하거나 손상되었는지 확인하고, 멀티미터 저항 모드를 사용하여 모터 코일 저항(일반적으로 약 1.5~3Ω)을 측정합니다.
- 전원을 차단한 후 모터 커넥터가 단단히 고정되었는지 확인합니다.
- 모터 하우징 접지가 필요한 경우, 제조사가 제공하는 접지점을 사용하거나 애프터 서비스에 문의하십시오. 전원 접지선이나 노출된 단자를 직접 개조하지 마십시오.
- stealthChop 비활성화 테스트:
SET_TMC_FIELD STEPPER=stepper_x FIELD=en_spreadCycle VALUE=1 - 전환 후 오류가 사라지면 stealthChop 예측 문제입니다. 그렇지 않으면 실제 하드웨어 단락일 수 있습니다.
개방 장애 (OpenLoad)
오류 메시지: TMC 'stepper_x' reports error: DRV_STATUS: ... ola=1(OpenLoad_A!) 또는 olb=1(OpenLoad_B!)
오류 원인: 드라이버가 특정 상의 모터 권선에 유효한 부하가 형성되지 않았음을 감지했습니다. 일반적으로 모터 케이블 단선, 플러그 느슨함, 코일 잘못 연결, 또는 낮은 전류/stealthChop 상태에서의 잘못된 판단을 의미합니다.
해결 방법:
- 전원을 차단한 후 모터 케이블을 다시 연결하고, 단자 압착이 견고한지 확인합니다.
- 먼저 전원을 차단한 후 작업하십시오. 멀티미터로 A/B 두 코일 그룹의 저항을 측정합니다. 두 그룹의 값이 비슷해야 하며 개방되어서는 안 됩니다.
- 전원을 차단한 후 모터 배선 순서를 확인합니다. A상 두 선이 같은 그룹에 있고, B상 두 선이 다른 그룹에 있는지 확인합니다.
- 일시적으로 stealthChop 비활성화: 설정에서
stealthchop_threshold: 0으로 설정한 후 테스트합니다. run_current를 적절히 높여 테스트합니다. 매우 낮은 전류에서만 발생하는 경우 잘못된 판단일 수 있습니다.- 전원을 차단한 후 모터 케이블이나 모터를 교체하여 교차 테스트를 수행하고, 케이블 어셈블리, 모터 또는 드라이버 포트 중 어느 쪽에 문제가 있는지 파악합니다.
단락 + 개방 조합 장애 (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은 현재 전류 설정값이 너무 높을 수 있음을 의미합니다. 이러한 장애는 일반적으로 동시에 발생하며, 모터 또는 드라이버에 심각한 하드웨어 문제가 있음을 나타냅니다.
해결 방법:
- 먼저 전원을 차단한 후 작업하십시오. 멀티미터를 사용하여 스테핑 모터의 AB 두 코일 그룹 저항이 일치하는지 측정합니다(일반적으로 1-2Ω이며 두 그룹 값이 비슷해야 함).
- 전원을 차단한 후 스테핑 모터 케이블 어셈블리와 커넥터에 느슨함, 단락 또는 접촉 불량이 있는지 주의 깊게 확인합니다.
- TMC 드라이버의 전류 설정이 적절한지 확인하십시오. 너무 높은 전류는 이러한 문제를 유발할 수 있습니다.
- stealthChop 모드를 비활성화하여 테스트합니다. 설정에서
stealthchop_threshold: 0으로 설정합니다.
단락 + 개방 조합 장애 (B상 단락 A상 개방)
오류 메시지: TMC 'extruder' reports error: DRV_STATUS: ... s2vsb=1(ShortToSupply_B!) ola=1(OpenLoad_A!) cs_actual=25
오류 원인: TMC 드라이버 장애 진단 비트가 s2vsb=1 B상 전원 단락, ola=1 A상 개방, cs_actual=25 현재 전류 설정값을 나타냅니다. 일반적으로 모터 배선 오류(A/B상 반대 연결 또는 단락), 모터 자체 장애(권선 개방) 또는 드라이버 보드 하드웨어 문제로 인해 발생합니다.
해결 방법:
- 먼저 전원을 차단한 후 작업하십시오. 멀티미터를 사용하여 스테핑 모터의 A, B 두 코일 그룹 저항이 일치하는지 측정합니다(정상적으로는 비슷해야 함).
- 전원을 차단한 후 모터 배선 순서가 올바른지 확인합니다. 일반적으로 왼쪽 그룹(A상), 오른쪽 그룹(B상)이어야 합니다.
- 전원을 차단한 후 모든 배선 단자가 견고하게 고정되었는지, 느슨하거나 접촉 불량이 없는지 확인합니다.
- 가능하다면 전원을 차단한 후 모터를 다른 알려진 정상 드라이버 포트에 연결하여 테스트합니다.
드라이버 리셋 (Reset)
오류 메시지: TMC 'stepper_x' reports error: GSTAT: 00000001 reset=1(Reset)
오류 원인: 전원 불안정 또는 외부 간섭으로 인해 드라이버가 자동으로 리셋됩니다. 일반적으로 전원 공급 전압 변동, 배선 접촉 불량 또는 전자기 간섭으로 인해 발생합니다.
해결 방법:
- 완전히 전원을 차단한 후 24V 전원 케이블, 드라이버 모듈 및 마더보드 소켓이 느슨하거나, 검게 변했거나, 침식되었는지 확인합니다.
- 알려진 정상적인 전원 공급 장치, 드라이버 모듈 또는 케이블 어셈블리로 교체하여 교차 테스트를 수행합니다.
- 드라이버 냉각 및 팬이 정상적으로 작동하는지 확인합니다.
- 모터 케이블이 히터 또는 히트베드 케이블과 장거리 병렬로 배선되지 않았는지 확인하고, 필요한 경우 전원을 차단한 후 배선을 재정리합니다.
- 먼저 전원을 차단한 후 작업하십시오. 모터 케이블에 끊어짐, 내부 단선 또는 단자 접촉 불량으로 인한 간헐적 연결 문제가 있는지 확인합니다. 케이블 체인의 장기간 움직임으로 인해 케이블이 피로 파손될 수 있으므로, 케이블 체인 굽힘 지점과 단자 압착 부분을 집중적으로 확인합니다.
- 고객이 드라이버 전원 입력을 직접 개조하거나, 전자 부품을 추가하거나, 접지를 변경하는 것은 권장되지 않습니다. 이러한 작업은 전문가 또는 애프터 서비스에 문의하십시오.
저전압 보호 (Undervoltage)
오류 메시지: TMC 'stepper_x' reports error: DRV_STATUS: ... uv_cp=1(Undervoltage!)
오류 원인: 드라이버가 공급 전압 부족 이벤트를 감지했습니다. 일반적으로 전원 공급 장치 고장, 배선 느슨함 또는 공급 전력 부족으로 인해 발생합니다.
해결 방법:
- 완전히 전원을 차단한 후 전원 케이블, 마더보드 전원 플러그 및 단자 외관이 느슨하거나, 검게 변했거나, 침식되었는지 확인합니다.
- 전원 사양이 드라이버 및 히터의 총 전력 요구 사항을 충족하는지 확인합니다.
- 알려진 정상적인 전원 공급 장치 또는 케이블 어셈블리로 교체 테스트를 수행합니다.
- 노출된 24V 단자의 전기적 검사는 애프터 서비스 또는 전문가에게 문의하고, 직접 처리하지 마십시오.
SPI 통신 오류 (DRV_STATUS: ffffffff)
오류 메시지: Unable to write tmc spi 'stepper_x' register ..., TMC reports error: DRV_STATUS: ffffffff ... 또는 READRSP@RDSEL2: 00000000 ...
오류 원인: SPI 모드에서 TMC 드라이버(tmc2130/tmc5160/tmc2660)와 통신할 수 없습니다. 일반적으로 SPI 배선 오류, SPI 버스에 구성되지 않은 장치 존재, 또는 TMC 드라이버 자체 리셋/장애로 인해 발생합니다.
해결 방법:
- 전원을 차단한 후 SPI 배선(MOSI, MISO, SCK, CS) 순서가 올바른지 확인합니다.
- SPI 버스를 여러 장치가 공유하는 경우, 각 장치가 Klipper에 완전히 구성되었는지 확인합니다.
- 전원을 차단한 후 마더보드에 드라이버 하나만 연결하여 단독 테스트를 수행하여 공유 버스의 상호 간섭을 배제합니다.
- 드라이버 전원 공급이 정상인지 확인하고, 필요한 경우 전원을 몇 초간 차단한 후 다시 켭니다.
- 오류와 함께
reset=1,uv_cp=1또는 무작위ffffffff가 발생하면 전원 공급 및 드라이버 접촉을 우선 확인하십시오.
단독 드라이버 테스트: 드라이버가 정상인지 확인하기 위해 격리 테스트가 필요한 경우, 주변 장치 및 드라이버 테스트의 SPI 드라이버 단독 테스트 방법을 참조하십시오.
TMC SPI chain 구성 오류
오류 메시지: TMC SPI chain must have same length, TMC SPI chain can not have duplicate position
오류 원인: SPI 직렬 체인을 사용하는 TMC 드라이버에서 여러 드라이버의 chain_position, chain_length 또는 칩 선택 구성이 일관되지 않아 Klipper가 SPI 체인에서 각 드라이버의 위치를 확인할 수 없습니다.
해결 방법:
- 마더보드가 SPI 직렬 체인 설계가 아닌 경우,
chain_position및chain_length를 임의로 추가하지 마십시오. - 마더보드 또는 드라이버 보드 제조사의 구성 템플릿을 참조하여 각 TMC 드라이버의
chain_length가 완전히 동일한지 확인합니다. - 각 드라이버의
chain_position이 고유하며 중복되지 않는지 확인합니다. - 일반적인 SPI 버스 다중 CS 칩 선택 구조인 경우, 각 드라이버의
cs_pin을 개별적으로 구성하고 SPI chain 방식으로 구성하지 마십시오. - 저장 후
RESTART를 실행하고,DUMP_TMC STEPPER=<stepper>를 사용하여 통신을 개별적으로 확인합니다.
'tmcuart_response' 대기 시간 초과
오류 메시지: Timeout on wait for 'tmcuart_response' response, 로그에 Unable to read tmc uart 'stepper_x' register DRV_STATUS가 함께 나타날 수 있음
일반적인 원인:
- TMC UART 배선의 가상 납땜, 단선 또는 접촉 불량. 특히 케이블 체인 내에서 반복적으로 구부러지면서 내부 단선 발생.
uart_pin구성 오류, 또는 마더보드의 UART 점퍼 핀이 올바르게 설치되지 않음.- 드라이버 전원 공급 부족 또는 전원 변동으로 인해 TMC 칩이 통신 순간에 리셋됨.
- 여러 드라이버가 동일한 UART 버스를 공유할 때 주소 충돌 또는 버스 과부하.
- 마더보드 UART 핀이 다른 기능(예: 블루투스, 시리얼 디버그)에 의해 점유됨.
해결 방법:
드라이버 보드, UART 배선 또는 점퍼 핀을 확인하기 전에 프린터를 완전히 종료하고 전원 공급 장치를 차단하십시오.
- 전원을 차단한 후 오류가 보고된 드라이브의 UART 배선이 견고한지, 케이블에 눈에 띄는 굽힘, 손상 또는 가상 납땜이 있는지 확인합니다.
uart_pin이 마더보드의 실제 배선과 일치하는지 확인하고, 마더보드의 UART 점퍼 핀이 제자리에 제대로 설치되었는지 확인합니다.- 여러 드라이버가 하나의 UART 버스를 공유하는 경우, 각 드라이버의
uart_address가 중복되지 않는지 확인합니다. - 드라이버 전원 공급, 특히 12V/24V 변환 모듈과 퓨즈가 정상인지 확인합니다.
- 오류가 보고된 드라이버를 인접 축 드라이버와 위치를 바꾸어 드라이버 문제인지, 마더보드 소켓/케이블 문제인지 확인합니다.
- 인쇄 중에만 오류가 발생하고 유휴 상태에서는 정상인 경우, 케이블이 움직일 때 잡아당겨지지 않는지 확인합니다.
IFCNT 오류와의 관계:
Timeout on wait for 'tmcuart_response'와Unable to read tmc uart register IFCNT는 본질적으로 동일한 UART 통신 시간 초과 오류입니다. 전자는 인쇄 과정에서 자주 발생하고 후자는 시작 초기화 단계에서 자주 발생합니다. 진단 방법은 동일하므로 IFCNT 통신 실패를 참조하십시오.