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 체인 구성 오류
오류 메시지 : 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 체인 방식으로 구성하지 마십시오. - 저장 후
RESTART를 실행하고DUMP_TMC STEPPER=<stepper>로 각각의 통신을 확인합니다.