Skip to content

付録E デバッグ:ヒントとコツ

たまにしか再現しない不安定動作や間欠不良を、絶対に見過ごしてはいけない。たとえば、基板のある箇所を触ると動いたり止まったりする、手をかざすだけで挙動が変わる、電源投入直後の一瞬だけ違う動作をする、といった現象がある。こうした観察結果を「たまたま起きた偶然」「些細なこと」として切り捨てたくなる気持ちはわかる。しかし、それが実際に起きたという事実には必ず説明があるはずだ。

具体例を挙げよう。基板を触ったら動作状態が変わった——どこを触ったか?どんな触り方をしたか?手に汗をかいていたか、乾いていたか?人体は、小さなキャパシタンスと大きな抵抗として機能する。そのため、信号をわずかに遅らせたり、接続されていないデジタル入力のような高インピーダンスのノードを放電させたりする。指で強く押した場合は基板をたわませることになり、クラックが入った配線や不良はんだ接合の電気的特性を変えてしまうこともある。

症状を原因と誤解してしまうケースは少なくない。焼き切れた配線や破損した部品は、通常は問題の「原因」ではなく「症状」だ。つまり、回路のどこかで起きた誤動作が部品の破損を引き起こしているのが普通であって、部品が突然単独で故障するケースは比較的まれだ。壊れたステレオをデバッグしているとしよう。焼けた臭いがして、黒焦げになった大きな抵抗器が見つかった。その抵抗器だけ交換しても、交換品がまた燃えるだけという可能性が高い。本当の原因はショートしたトランジスタや電源回路の損傷かもしれないが、焼けた抵抗器ほど目立たない。

もうひとつ強力な観察手法として、正常動作品との比較がある。壊れたデバイスをデバッグするなら、動作している同型品を見つけて、電圧やその他の動作特性を比較してみよう。自作回路のデバッグであれば、可能であれば回路のシミュレーションを作るか、似た設計の回路を探す。こうした「正常な基準」を使えば、異常な動作を素早く特定できる。さらに、コントロールされた方法で正常品に意図的に故障を誘発し、本当に根本原因を見つけられたかを確認することもできる。この手法は特にシミュレーション環境で有効だ。

よくあるバグ

自作プロジェクトにおけるハードウェアバグで最も多いのは、不良はんだ接合と、キャパシタ・ダイオード・IC・コネクタのような極性のある部品の実装ミスだ。コネクタは物理的な負荷が最もかかり、目視だけでは良否を判断しにくいため、特に故障の原因になりやすい。以下は、発生頻度が高いおおよその順に並べたよくあるバグのリストだ。

  1. 不良はんだ接合。 コールドジョイント、はんだブリッジ、接合忘れがこれに含まれる。丁寧な目視検査で多くの不良接合を発見できる。すべての接合部のはんだは滑らかで光沢があり、基板のランドや部品リードの上に「濡れたメニスカス」のような形で盛り上がっているはずだ。良い接合と悪い接合の写真は付録B「はんだ付けのテクニック」に掲載している。表面実装 (SMD) パッケージの不良接合は、ピンセットの先やゼムクリップのような硬い細い棒を、パッケージの長さ方向に沿ってピンの上をそっとなぞることで素早く発見できる。接触不良のピンは少し曲がる。基板をたわませても不良接合を発見しやすい。それでも見つからない場合は、オームメータで接合の品質を確認する必要がある(はんだ付け後に基板が汚れてしまった場合は、綿棒にイソプロピルアルコールなどの穏やかな溶剤を付けて拭き取ってから検査しよう)。最後に、「見ることが信じること」を忘れずに——拡大鏡を使って検査しよう。中程度の倍率のマイクロスコープが理想だが、ドラフター用ランプに付いているような固定式拡大鏡でも、宝石師が使うようなリングルーペでも大きく役立つ。

  2. 不適切な部品の値。 見た目が似ていて値が違う部品を誤って基板に実装してしまうと発生する。表面実装の受動部品はラベルがないか読みにくいことが多く、特に問題になりやすい。部品の値を正しくテストするには、基板から外してからでないと測れないことを覚えておこう。組み立て時に部品をはっきりラベル付けされた袋や箱に整理整頓しておけば、誤った部品の実装を防ぎやすい。

  3. 不良コネクタ。 逆向きに取り付けられたコネクタ、さらに悪い場合はピンの割り当て自体が間違って設計されたコネクタが含まれる。ピン1の位置と、コネクタが使う番号付け方式に注意しよう。ジグザグ方式を使うコネクタもあれば、円形方式を使うものもある。ワイヤーtoボードコネクタは手作業での製作が難しい。ワイヤーとコネクタ接点の接合部をすべて確認し、かしめ不良・絶縁被覆の残留・不良はんだ接合がないかチェックしよう。最終手段として、ボルトメータでコネクタの導通を確認する。

  4. データシートを読まないことによる設定ミス。 複雑なチップは、一連のピンをハイまたはローのロジックレベルに固定する「ストラップ」によって複数の動作モードを選択できることが多い。また、正常動作のためにピンの負荷やバイアスを設定する外部抵抗が必要なチップも多い。内部機能を安定させるためにキャパシタ・抵抗・インダクタのネットワークを要求するチップもある。使わない入力ピンも、正常動作のために固定電圧へのターミネーションが必要なことが多い。特定の機能を使わないからといって、データシートのその部分を読み飛ばしてはいけない。

  5. 設計上の問題または実装上の問題。 バグがそもそもの設計エラーから生じることもあれば、正しい回路図から基板レイアウトへの変換時に問題が起きることもある。変換ミスは、回路図のネット名を指定するときのタイプミスや、回路図シンボル上の暗黙の電源名によって生じることが多い。暗黙の電源名はデジタル部品では便宜上よく使われるが、複数の電源電圧を使う設計では大きな問題になりうる。このような問題は、付録Cで説明したヒューリスティックなネットリストチェックプログラムを使えば、レイアウト前に検出できる。高速設計ルールの違反も実装上の問題のひとつだ。25MHz以上で動作する回路や、エッジレートが5ns未満の高速回路では、電気的インピーダンスと伝送線路のターミネーションに特別な注意が必要だ。

  6. 電源が仕様外。 電源電圧は、できるだけ実際に使用する箇所に近い場所で測定しよう。配線によって実際に供給される電圧が低下することがある。回路に問題はなく、単に電源が設計を動かすのに十分な供給能力を持っていない場合もある。また、電源電圧の時間的な変動も確認しよう。電源への過剰なノイズが問題を引き起こすことがある。大量の高速CMOSロジックを使うシステムは電流消費の急激な変動があり、電源電圧に短いディップやスパイクを引き起こす可能性がある。

  7. PCBの配線の断裂・損傷。 手作業で基板を組み立て、部品の取り付けに苦労した場合に起きやすい。組み立て時の過熱によって配線が基板から剥がれることがある。使用する基板メーカーにも注意しよう。一部の基板メーカー(特に短納期の格安プロトタイプ専門業者)は、基板のネットリスト電気テストを完全には実施しない。エッチングが過剰で公差外に細くなった配線を探し、すべてのビアホールの周囲に銀色のアニュラスリングがあることを確認しよう。基板穿孔時にドリルビットがずれたり斜めに入ったりすることがあり、そのような穿孔ミスが電気的接続を断ってしまうことがある。

  8. ラッチアップまたは電源シーケンスの問題。 ラッチアップは、チップの基板(サブストレート)内部に電源とグランドの間の寄生的なショートが生じるという、潜在的に深刻な現象だ。電流がサブストレートに流れ込むことでラッチアップが引き起こされる。これは、チップの電源電圧より高い入力電圧が印加されるような混在電圧システムで起きうる。多くの場合、ラッチアップはチップの過熱を伴い、恒久的な損傷につながる。はじめてシステムに電源を投入するときに推奨される方法は、アンメータでシステムが消費している電流を監視しながら、すべての部品に触れて過度に熱くなっているものがないか確認することだ。ラッチアップが起きた場合、通常は数百ミリアンペアオーダーの過電流消費が観察される。

  9. 熱の問題。 主に線形電圧レギュレータや高電力デジタル回路で問題になる。すべての高電力部品に適切なヒートシンクが付いていること、そしてヒートシンクが電気的に活性なチップパッケージの部分に接触する場合は適切に絶縁されていることを確認しよう。

  10. 露出した銅へのショート。 コネクタやチップで、部品の底面に金属が露出しており、ビアのような基板の露出した銅部分にショートしてしまうケースがある。また、ネジで基板を固定している箇所でも問題になる。金属ネジの頭が、ネジ穴に近すぎる位置に配置されたビアと接触してしまうことがある。

  11. 基板の汚染。 はんだフラックスの残留物やその他のプロセス残留物が基板に残り、微小な漏れ電流経路を形成することで引き起こされる。フラックス残留物の中には無視できない抵抗値(1MΩ未満)を持つものがあり、高インピーダンス回路——たとえば時定数の大きなRC回路——では問題になることがある。

  12. 不良の試験機器。 中古や古い試験機器を使う場合に特に問題になる。テストプローブは時間とともにキンクが入ったり、校正がずれたりするため、オシロスコープで見えるひどい信号が、実は不良プローブや接地の取り方が悪いせいということがある。試験機器を正常な信号に対してキャリブレーションし、試験機器側の問題を除外しよう。

  13. 最も可能性が低いのは、チップ不良や部品の初期不良だ。 部品メーカーは、出荷する部品が機能していることを保証するために大変な努力をしている。シンプルから中程度の複雑さの部品では、典型的な故障率は百万分の一桁台で測定される。問題の原因がメーカーの不良チップにあると思いたがる気持ちはよくわかるが、それはほとんどの場合あてはまらない。不良品が見つかった場合、通常はその部品が製造プロセスの問題(粗雑な取り扱いや組み立てのトラブル)か、回路の別箇所の設計上の問題によって観察された故障を誘発されたことが多い。

剥がれた配線やランドからの復旧

PCBの銅箔配線が剥がれたり切れたりすることは、フライングワイヤーを使って改造を行おうとする人がよく遭遇する問題だ。この銅箔配線の剥離は、通常はんだごての過熱によって引き起こされる。もうひとつよくある原因は、配線を基板にはんだ付けした後で改造ワイヤーを引っ張ること——ワイヤーの端の絶縁被覆を剥くときにやりがちなことだ。幸い、この問題からの復旧は通常比較的簡単だ。

TIP

最善の対策は予防だ。基板作業に過剰なワット数のはんだごてを使わないこと。温度制御式のごてが理想だが、低ワット(15W)の安価なごても十分使える。はんだが基板にうまく乗らないと感じたら、熱を加えるのをやめること。そのかわり、基板とワイヤーに少量のフラックスを塗り、チップコンディショナーまたは蒸留水で湿らせたスポンジではんだごての先端を清潔にしよう(水道水にははんだごての先端を劣化させる化学物質が含まれている)。こうすることではんだ付け性が向上し、接続するのに必要な熱や力を減らせる。

配線やランドが基板から浮き始めたときにまずすべきことは「止まる!」ことだ。問題を悪化させてはいけない——ワイヤーを引っ張り続けて配線全体を剥いでしまうのが最悪の事態だ。ワイヤーがまだつながっている場合は、はんだごてを接合部にほんの少し触れさせてワイヤーが落ちるようにして外す。図E-1はそのような惨事の現場を示している。

Figure E-1: 左、はんだ付けしていた元のランドを矢印で示す。右、過剰な熱と力によってランドが引き剥がされた状態。

図E-1 左、はんだ付けしていた元のランドを矢印で示す。右、過剰な熱と力によってランドが引き剥がされた状態。

断線した配線を復旧するための戦略は、はんだレジスト(soldermask)を除去し、ジャンパーワイヤーで配線を修復し、配線をたどって近くの部品やビアに代替のはんだ付け点を探すことだ。

はんだレジストを除去すると、下にある銅の配線が露出する。この露出した配線に短いジャンパーワイヤーをはんだ付けすることで、引き剥がされた配線による断線を修復できる。露出した部分は、導通メータを使って代替のはんだ付け点を探す出発点としても役立つ。はんだレジストを除去するには、細かい番手(200番以上)のサンドペーパーか、鋭いホビーナイフで表面を削る。はんだレジストを除去する際は、剥がれた配線の断片を引っかけてさらに引き剥がさないように注意しよう。はんだレジストを除去したら、綿棒に消毒用アルコールなどの穏やかな溶剤を付けてその部分を清潔にする。次に、露出した配線に非常に薄いはんだフラックス層を塗り、清潔なはんだごての先端を露出した配線に沿って擦る。ごての先端に付いた少量のはんだが基板に吸われて配線をコーティングし、露出した銅の酸化を防ぐ。ごての先端が清潔すぎる場合は、少量のはんだを付けて、濡れたスポンジで先端を軽く拭いてからやり直してみよう。溶けたはんだのボールを先端に乗せて露出した配線をティンニングしようとしてはいけない——余分なはんだが積もってショートにつながる。(はんだフラックスは配線に均一で薄いはんだコーティングをするために不可欠だ。フラックスの塗布を省略しないこと。)図E-2は、ティンニング前後の配線の様子を示している。

Figure E-2: 左、細かい番手のサンドペーパーではんだレジストを除去した後の状態。右、ティンニング(はんだ付け処理)を施した後の状態。

図E-2 左、細かい番手のサンドペーパーではんだレジストを除去した後の状態。右、ティンニング(はんだ付けしやすくする処理)を施した後の状態。

この時点で、導通メータを使って改造ワイヤーを取り付ける代替点を探してもいい。ほとんどのボルトメータには音の出る導通メータ機能が付いており、プローブ間の抵抗が非常に低いときにボルトメータから音が出る。ビアや部品のリードはどちらも良い代替接続点になる。

ビアを使う場合は、改造ワイヤーを取り付ける前にはんだレジストを削り取り、ビアを処理する必要がある。図E-3は導通メータを使って代替のはんだ付け点を見つけているところを示している。

図E-3 導通メータを使って代替の接続点を探している様子。この場合、R7R10が良い代替点として見つかった。

(図E-3は上の画像(図E-2と同一ページ)を参照)

複数のビアをたどらないと最適な代替接続点が見つからない場合もあることを覚えておこう。

次のステップは、断線した配線の上に短いジャンパーワイヤーを取り付けることだ。断線した配線の周辺に、はんだフラックスをもう少し多めに塗る。問題の隙間とだいたい同じ長さの細いワイヤー(30ゲージ程度)を切る。フラックスの粘着性を利用してワイヤーを位置合わせしながら、隙間の上にワイヤーを置く。ピンセットでワイヤーを押さえ、両側が断線した配線の端にくっつくまではんだごてで熱を加える。ピンセットでそっと押してワイヤーが所定の位置にあるか確認しよう——ワイヤーが動いてはいけない。また、導通メータで隣接する配線へのショートがないか確認しよう。ショートが見つかった場合は、ジャンパーが外れるまで加熱してやり直せばいい。図E-4は修理後の配線の様子を示している。

最後に、先ほど導通メータで見つけた代替のはんだ付け点に改造ワイヤーを取り付ける。

Figure E-4: 左、破損した配線にジャンパーを設置した状態。右、代替のはんだ付け点に改造ワイヤーを取り付けた状態。

図E-4 左、破損した配線にジャンパーを設置した状態。右、代替のはんだ付け点に改造ワイヤーを取り付けた状態。

*原著*: *Hacking the Xbox: An Introduction to Reverse Engineering* © 2003 Xenatera LLC
*著者*: Andrew "bunnie" Huang | *出版*: No Starch Press
*日本語訳・レビュー*: ニコ技深圳コミュニティ / 高須正和(@tks) — [https://takasumasakazu.net](https://takasumasakazu.net) — CC BY-NC-SA 1.0
*注記*: 本翻訳は、原著の Creative Commons ライセンス条件に従って公開する翻訳コントリビューションであり、著者 bunnie からも歓迎のコメントをいただいています。出版社による公式日本語版ではありません。

ニコ技深圳コミュニティ / 高須正和(@tks)による日本語訳コントリビューションです。著者 bunnie からも歓迎のコメントをいただいています。原著は Andrew 'bunnie' Huang および No Starch Press に帰属します。