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 は現在の電流設定値が高すぎる可能性を示します。これらの故障は通常同時に発生し、モーターまたはドライバーに深刻なハードウェア問題があることを示します。
解決方法:
- 先に電源を切ってから操作してください。マルチメータでステッピングモーターの AB 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 ドライバー単独テスト方法を参照してください。
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>で1つずつ通信を確認します。
Timeout on wait for '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 ピンが他の機能(Bluetooth、シリアルデバッグなど)に占有されている。
解決方法:
ドライバーボード、UART 配線、またはジャンパーピンを確認する前に、プリンターの電源を完全に切り、電源を遮断してください。
- 電源を切った後、エラーを報告しているドライバーの UART 配線がしっかりと接続されているか、ケーブルに明らかな屈曲、損傷、または半田不良がないか確認します。
uart_pinがマザーボードの実際の配線と一致していること、およびマザーボード上の UART ジャンパーピンが正しく装着されていることを確認します。- 複数のドライバーが1本の UART バスを共有している場合は、各ドライバーの
uart_addressが重複していないことを確認します。 - ドライバーへの電源供給、特に 12V/24V 変換モジュールとヒューズが正常か確認します。
- エラーを報告しているドライバーを隣接軸のドライバーと交換し、問題がドライバーにあるのか、マザーボードのソケット/ケーブルにあるのかを確認します。
- アイドル時には正常で印刷中にのみ発生する場合は、動作中にケーブルが引っ張られていないか確認します。
IFCNT エラーとの関係:
Timeout on wait for 'tmcuart_response'とUnable to read tmc uart register IFCNTは本質的に同じで、どちらも UART 通信タイムアウトです。前者は印刷中に発生することが多く、後者は起動初期化時に発生することが多いです。調査方法は同じです。詳細は IFCNT 通信失敗 を参照してください。