TMC エラー調査
技術背景
TMC(Trinamic)ドライバーは専用レジスターを介して状態やエラー情報を報告します。これらのレジスターを理解することで、問題の迅速な診断が可能になります:
- IFCNT レジスター:通信フレームカウンター。メインコントローラーとドライバー間の通信が正常かどうかを検証するために使用します。
- GSTAT レジスター:グローバル状態レジスター。リセットやドライバーエラーなどのグローバル状態情報を含みます。
- DRV_STATUS レジスター:ドライバー状態レジスター。温度警告、短絡、断線などの障害情報を含む詳細なドライバーの動作状態を提供します。
Klipper が TMC エラーを報告する場合、通常は具体的なレジスター値と障害フラグが表示されます。TMC ドライバーエラーは、ドライバーチップが問題を検出して自己保護のために無効になったことを示し、Klipper はドライバーが無効になったことを検出するとシャットダウン状態になります。
ジャンパーピン、ドライバーモジュール、モーターケーブル、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 ピンは通常、左側の上から 4 番目のピンです)。
特殊なケースとして、購入したドライバーの UART ピンが 5 番目のピンにある場合は、以下のジャンパー方法で解決できます:
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)が設定されている場合は、適切に減らすか、完全に無効にします。 - ドライバーのヒートシンクが適切に密着しているか、熱伝導シリコングリスが十分にあるか確認します。
- ドライバー冷却用ファンを追加し、空気の流れを確保します。
- ドライバーボードのセンス抵抗値の設定が正しいか確認します。
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 2 組のコイル抵抗値を測定します。2 組の値は近く、断線があってはなりません。
- 電源を切り、モーターの配線順序を確認します。A 相の 2 本の線が同じグループに、B 相の 2 本の線が別のグループにあることを確認します。
- 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 は現在の電流設定値が高すぎる可能性があります。これらの障害は通常同時に発生し、モーターまたはドライバーに深刻なハードウェア問題があることを示します。
解決方法:
- まず電源を切ってから作業してください。マルチメータを使用してステッピングモーターの A、B 2 組のコイルの抵抗値が一致しているか確認します(通常は 1~2Ω で 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 2 組のコイルの抵抗値が一致しているか確認します(通常は近いはずです)。
- 電源を切り、モーターの配線順序が正しいか確認します。通常は左側が 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 で完全に設定されていることを確認します。
- 電源を切り、マザーボードにドライバーを1つだけ接続して単独テストし、共有バスによる相互干渉を排除します。
- ドライバーの電源供給が正常か確認します。必要に応じて、数秒間電源を切り、再投入します。
- エラーに
reset=1、uv_cp=1、またはランダムなffffffffが伴う場合は、優先的に電源供給とドライバーの接触を確認します。
単独ドライバーテスト:ドライバーの正常性を分離して検証する必要がある場合は、周辺機器とドライバーのテスト の SPI ドライバー単独テスト方法を参照してください。