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 相)であることを確認します。
- 電源を切った後、すべての配線端子がしっかりと固定されており、緩みや接触不良がないか確認します。
- 可能であれば、電源を切った後にモーターを他の正常と分かっているドライバーポートに接続してテストします。
TMC ドライバー GSTAT エラー(低電圧/リセット)
エラーメッセージ:TMC 'xxx' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)、およびその後に発生する TMC 'xxx' reports error: GSTAT: 80000000(40000000 など、最上位ビットのみが 1 の読み値の場合もあります)。
意味:GSTAT は TMC ドライバーのグローバルステータスレジスタであり、下位 3 ビットのみが定義されています:
reset=1(bit0):ドライバーでリセットが発生した(電源投入時や低電圧による電源断後の自動リセットなど)。drv_err=1(bit1):ドライバー内部エラー。通常は DRV_STATUS 内の具体的な故障フラグを伴います。uv_cp=1(bit2):チャージポンプ低電圧。ドライバー側のモーター電源(VM、通常 24V)に低電圧または瞬断が発生し、ドライバーが正常に動作できなくなっていることを示します。
80000000、40000000 のような上位ビットの読み値は新しい故障コードではなく、ドライバーの電源断リセット後に SPI で読み戻された無効なデータです。reset、uv_cp などの具体的なフラグをデコードできること自体が、SPI 通信そのものは正常であることを示しており、問題はドライバーの電源供給経路にあり、通信ではありません。各ドライバーの読み値が長期間にわたり意味のない文字化け(ランダムに変化する ffffffff など)である場合にのみ、SPI 配線の確認が必要です(SPI 通信エラー 参照)。
よくある原因:
- 24V 電源経路の接触不良:電源端子の圧着不良、線径が細すぎる、ヒューズホルダーの接触不良、メインボード内部の VM 分配端子の緩み。
- 電源の負荷能力不足、または負荷時に瞬間的な電圧降下:複数モーターの同時有効化(
G28ホーミング時の Z 軸複数モーター同時通電など)の瞬間電流が最大となり、低電圧が最も発生しやすいタイミングです。電源の出力が十分に見えても(例:600W/24V)、まず端子とケーブル経路を確認してください。 - モーター相線の短絡またはモーターケーブルの破損:短絡は瞬時に VM を引き下げ、同じ電源経路下の複数ドライバーが同時に低電圧を報告します。
- 同じ VM 経路下の複数ドライバー(z/z1/z2/z3 など)がほぼ同時に GSTAT 異常を報告する場合、個々のドライバーの故障はほぼ除外でき、共用電源経路を集中的に確認すべきです。
解決方法:
電源端子、ケーブル、ヒューズ、モーターケーブルを確認する前に、プリンターの電源を完全に切り、電源供給を遮断してください。通電状態でケーブルの抜き差しや端子への接触を行わないでください。
- 電源断後、PSU からメインボードへの 24V 入力端子を確認する:圧着が確実で、緩み、黒ずみ、焼損痕がないことを確認する。複数入力のメインボードでは、各路がすべて接続されていることを確認する。
- 電源断後、24V ケーブルの線径が電流需要を満たしているか確認し、ヒューズホルダー(ある場合)の接触が良好か、ヒューズの規格が正しいかを確認する。
- 電源断後、テスターの抵抗/導通モードでモーターケーブルとモーターを確認する:モーターケーブルに被覆破れや相間短絡がないこと、A/B 两组コイルの抵抗値が正常かつ近い値であることを確認する(参考値:約 1~3Ω、実測には誤差があり、2 つの読み値が一致していることを判断の重点とする)。
- 電源の負荷能力を計算する:モーター、ヒーター、ベッドが同時に動作する際の総電力を算出し、余裕を確保する。電力が十分でも再現する場合は、手順 1、2 に従い端子とケーブルを重点的に確認する。
- 低電圧測定が可能な場合、再通電後にメインボードの 24V 入力端子電圧を測定し、複数モーター同時有効化時(
G28実行時など)に電圧が明らかに降下しないか観察する(参考値:24V 付近で安定しているべき。実測には誤差があり、変化の傾向を判断の重点とする)。測定時はプローブで隣接ピンを短絡させず、二次短絡を避けること。 - クロスチェック:電源断後、エラー軸のモーターを他のドライバーポートに交換する、または完成品のモーターケーブルに交換してテストし、ケーブル/モーターの問題か電源経路の問題かを切り分ける。
- 露出端子のさらなる電気的検査および電源本体の問題については、アフターサービスまたは専門家に連絡してください。電源を独自に分解しないでください。
関連設定参考:
マルチ Z モーターマシンでは、各 Z 軸ドライバーに個別に run_current を設定する必要があります。電流を適切に下げることで同時有効化時の瞬時電圧降下を軽減できます(数値はマシンの実情に合わせて調整が必要であり、電源経路の確認の代替にはなりません):
[tmc5160 stepper_z]
run_current: 1.2
[tmc5160 stepper_z1]
run_current: 1.2
確認期間中は DUMP_TMC STEPPER=xxx でドライバーの全レジスタを読み取り、GSTAT と DRV_STATUS のリアルタイム状態を確認できます。
関連セクション:リセットフラグのみの場合の確認は ドライバーリセット(Reset)、DRV_STATUS 内の低電圧保護は 低電圧保護(Undervoltage) を参照してください。
低電圧保護(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 通信失敗 を参照してください。
'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 通信失敗 を参照してください。