100 mA の電流が 100 Ω の抵抗器を流れると、消費電力は 1 W であり、1 mW ではありません。たとえこの単位換算が正しかったとしても、「定格の2倍の電力を選べばよい」という理由だけで選定を終えてはいけません:環境温度、パッドによる放熱、持続電圧、およびパルス負荷がそれぞれ制限要因となる可能性があります。本稿では、理想的な抵抗値から実際の素子へと拡張し、分圧、プルアップ、および電流検出を用いて、各パラメータが結果にどのように影響するかを解説します。
行うべき作業 最初に確認すべき事項 参照箇所
素子の表記を読む 色環、数字コード、単位 公称値と符号化
測定精度を維持する 初期誤差、温度係数、比追従性 精度は誤差予算である
定格条件を超えないようにする 電力デレーティング、電圧およびパルス 電力だけが上限ではない
信頼性の高いデフォルト電位を設定する ソース電流、リーク電流、RC立ち上がり プルアップ値には上下の境界がある
電流を測定する 電圧降下、損失、オフセット、およびサンプリング位置 ショント抵抗とケルビン接続
理想的な抵抗と実際の抵抗器
理想的な正の抵抗は u = Ri を満たし、受動符号規約に従って電力 p = i²R を吸収し、正味のエネルギーを蓄積しません。実際の抵抗器は、抵抗膜、金属合金、または抵抗線を用いて導電経路を形成し、電気エネルギーは主に熱に変換されます。さらに、リード/端子のインダクタンス、分布静電容量、および温度依存性を備えています。
したがって、「10 kΩ」という表記は、規定条件下での抵抗値を指すものであり、任意の周波数、温度、電圧下で厳密に成立するインピーダンスを意味するものではありません。高周波域では寄生パラメータが動作に影響を与える可能性があり、巻線構造については一概に「低インダクタンス」とは言えません。低インダクタンス巻線は特定の設計であり、型番を確認する必要があります。
技術またはパッケージ形式 一般的な注目点 名称から推定すべきではない特性
厚膜チップ 汎用コスト、パルス耐性シリーズ、抵抗値範囲 すべての型番が同じ TCR やノイズ特性を持つわけではない
薄膜、金属膜 精度、安定性、低過剰ノイズの必要性 電力やサージ耐性は個別に確認が必要
金属箔、金属合金分流器 低抵抗値、温度係数、サンプリング構造 低抵抗だからといって任意の電流を流せるわけではない
巻線 電力、パルスエネルギーおよび昇温 自動的に低インダクタンスになるわけではない
抵抗ネットワーク/レジスタパック 多抵抗値の集積、比および温度係数の追従性 必ずしも全抵抗値が同一であるわけでも、共用端子があるわけでもない
公称値と符号化
4色環のカラーコードでは、第1環と第2環が有効数字、第3環が倍率、第4環が許容誤差を表します。5色環では、通常、第1〜3環が有効数字、第4環が倍率、第5環が許容誤差となります。読み取り方向を最初に確認してください。許容誤差環は他の環と間隔を空けていることが多く、リード線に近い側だけで判断してはいけません。
色 数字 倍率 一般的な許容誤差の意味
黒、茶、赤 0、1、2 ×1、×10、×100 茶 ±1%、赤 ±2%
橙、黄 3、4 ×10³、×10⁴ 対応する符号化規格または素子資料で確認
緑、青、紫 5、6、7 ×10⁵、×10⁶、×10⁷ ±0.5%、±0.25%、±0.1%
灰、白 8、9 ×10⁸、×10⁹ 灰は一般的に ±0.05%
金、銀 有効数字として使用しない ×0.1、×0.01 ±5%、±10%
例えば、茶-黒-赤-金は 10×100 = 1 kΩ ±5%、黄-紫-橙-金は 47×1000 = 47 kΩ ±5% です。小パッケージには文字が全く記載されていない場合があり、空白だからといって 0 Ω と判断してはいけません。
一般的な3桁チップの数字コード 103 は 10×10³ = 10 kΩ を、4桁コード 1002 は 100×10² = 10 kΩ を表します。4R7 は R を小数点として使用し、4.7 Ω を意味します。EIA-96 の2桁加アルファベットのコードは表を参照して読み取る必要があり、通常の3桁コードのように単純に分解して読むことはできません。特殊シリーズの表記はメーカー定義によります。
Eシリーズは優先公称値を整理するために使用されます。E12 は10倍の区間に12個の値(例:10、12、15、18、22、27、33、39、47、56、68、82)を持ち、これに10の整数乗を掛けます。シリーズ番号だけで素子の許容誤差を証明することはできません。実際の購入可能な仕様において、抵抗値と許容誤差の両方を同時に確認する必要があります。
精度は誤差予算である
許容誤差は、規定された参照条件下での実抵抗値が公称値に対して許容される偏差を示すものであり、「測定精度」の完全な保証ではありません。近似的に線形な温度領域では、R(T) ≈ R(T₀)[1+α(T−T₀)] と表せ、α は TCR(温度係数)です。50 ppm/°C は、1°C あたり約 50×10⁻⁶ の相対変化を意味し、温度差 60°C では約 0.3% の変化に対応し、その方向は係数の符号によって決まります。
温度については、室温だけでなく、自己発熱を含む抵抗の実動作温度に注目する必要があります。初期許容誤差、温度係数、長期ドリフト、および電圧係数は異なる指標です。1回の室温測定でその後の全ての変化を排除することはできません。
分圧精度は比に依存する
上下の抵抗器がともに公称 10 kΩ、許容誤差 ±1%、入力が理想的な 10 V、負荷が無視できると仮定します。出力電圧は、上側抵抗が 9.9 kΩ、下側抵抗が 10.1 kΩ のときに最大となり、5.05 V を得ます。最小値は 4.95 V となり、公称値 5 V に対して ±1% です。ここでは、2つの抵抗値の絶対的な変化が単純に ±2% の出力誤差に足し合わされるわけではありません。
2つの抵抗が温度に対して同じ比率で変化する場合、分圧比は一定に保たれますが、総電流は変化します。したがって、精密抵抗ネットワークでは、比許容誤差や追従 TCR が、単一の絶対 TCR よりも重要になる場合があります。一方で、上側と下側の抵抗で発熱が異なり、配置による温度差が生じると、公称 TCR が同じであっても比ドリフトが発生する可能性があります。
熱ノイズ電圧の二乗平均値は、古典的な近似において 4k_BTRB です。ここで T は絶対温度、B は観測帯域幅です。同じ R、T、帯域幅であれば、このノイズは「金属膜」に交換したからといって消滅しません。材料や構造は、バイアス印加後の過剰ノイズなどの特性にも影響を与えます。「ある種類のノイズが低い」ことを「ノイズがない」としてはいけません。
電力だけが上限ではない
最悪の動作点を計算し、データシートの条件に対応します。定電流 0.1 A が 100 Ω を流れる場合、P = 0.1²×100 = 1 W です。電流と抵抗値の両方が変動する場合、I²R の最大値となるケースを探す必要があります。定格電力は、規定された環境または端子温度および実装条件に依存し、温度が上昇すると曲線に従ってデレーティングされます。基板の銅面積、近傍の熱源、およびパッケージは実際の昇温に影響を与えます。Vishay:固定抵抗の基本
制約条件 確認方法 他の指標で代替できない理由
連続電力 現在の温度における許容放散電力と比較 公称ワット数が実際の放熱に適しているとは限らない
連続動作電圧 √(P許容·R) および素子の電圧制限と個別に比較 高抵抗素子では電圧制限先に先に到達する可能性がある
単発または繰り返しパルス パルス幅、繰り返し周期、ピーク値およびエネルギー曲線を参照 同じ平均電力でも、局所的な熱応力が異なる場合がある
過負荷後の安定性 許容される抵抗値の変化および試験条件を参照 焼損していないからといって、精度を満たすわけではない
例えば、ある 1 MΩ の素子が連続消費電力 0.1 W を許容すると仮定します。純粋に電力のみで計算すると約 316 V となりますが、その最大動作電圧が 100 V の場合、実際にはまず 100 V で制限されます。ここでの数値は制約関係を示すための例であり、特定の素子推奨に対応するものではありません。
1 W、1 ms の矩形パルスエネルギーは 1 mJ ですが、エネルギーが同じだからといって任意のパルス幅が同等であるわけではありません。薄膜の局所温度、最大パルス電圧、および繰り返しによる蓄熱を確認する必要があります。「電力を2倍選ぶ」ことはプロジェクトのマージンの一部となり得ますが、これらの条件に代わるものではありません。Vishay:パルス負荷能力
パッケージ名称にも体系の明記が必要です。一般的に言われる英制 0402 は、公制では約 1005、約 1.0×0.5 mm です。公制の 0402 は約 0.4×0.2 mm です。同じサイズでもシリーズが異なれば、定格電力や耐圧が異なる場合もあります。
プルアップ値には上下の境界がある
プルアップ抵抗は、高インピーダンス状態のノードを電源電位に近づけます。オープドレイン出力がローレベルにプルダウンされるとき、抵抗は出力トランジスタに流入する電流を制限します。これは、ローレベル電流が許容可能であることを確保しつつ、解放後の立ち上がりが十分速くなるようにする必要があり、「よく使われる 4.7 kΩ」という理由だけで選定してはいけません。
以下は、明確なパラメータを持つ教育的な計算例です:VDD = 3.3 V、素子は 3 mA のソース電流で VOL ≤ 0.4 V を保証、バス容量 100 pF、30% から 70% への立ち上がり時間が 300 ns 以内であることを要求します。これらの境界を使用する典型的な計算は以下の通りです:
下限 R_min = (3.3−0.4)/0.003 ≈ 967 Ω;
上限 R_max = 300 ns/(0.8473×100 pF) ≈ 3.54 kΩ。
係数 0.8473 は、指数充電曲線が 30% から 70% までにかかる時間の差 ln(0.7/0.3)RC に由来するものであり、すべての立ち上がり時間の定義に通用する定数ではありません。TI:I²C プルアップ抵抗の計算
実行可能な範囲(本計算例) 約 0.967 kΩ 約 3.541 kΩ 小さすぎる:ローレベル電流が大きすぎる 大きすぎる:立ち上がりが遅すぎる 抵抗誤差、電源変動、および実際の総容量を境界に組み込む必要がある プルアップ抵抗の選択可能な範囲:下限はソース電流によって決定され、上限は立 ち上がり時間によって決定される VDD = 3.3 V、VOL 上限 0.4 V、IOL = 3 mA、C = 100 pF、tr ≤ 300 ns。
2.2 kΩ はこの公称範囲内に収まり、予想される立ち上がり時間は約 186 ns です。最終的な判断には、電源、抵抗、および容量の最悪偏差、および対応する素子とプロトコルの保証条件を使用する必要があります。もし R_min が R_max よりも大きい場合、現在の駆動、容量、およびタイミング要件に対して実行可能な抵抗値が存在しないことを意味し、中途半端な中間値を選ぶことで解決できる問題ではありません。
通常の静的入力では、リーク電流も確認する必要があります。例えば、10 μA が 100 kΩ を流れると 1 V のオフセットが生じ、ハイレベルマージンに影響を与える可能性があります。プルダウンも同様ですが、方向が逆になります。複数のデバイスがプルアップを内蔵している場合、それらは並列接続となり、総抵抗は単一の値よりもはるかに小さくなる可能性があります。
プルアップの許容範囲は消える?
水平線は 30% と 70% を定義し、ゼロから電源までの時間ではない。容量を増すと Rmax が縮む。範囲が消えたら容量、駆動能力、時間条件を見直す。境界の等号は許容する。
t 30 → 70 = RC ln 0.3 0.7 , R min ≤ R ≤ R ma x
図を準備しています 再読み込み
プルアップの許容範囲は消える? R を増やすと低レベル電流は減るが立上りは遅くなる。境界が逆転すると両条件を満たす抵抗はない。
{"id":"pullup-feasible-window","title":"プルアップの許容範囲は消える?","summary":"R を増やすと低レベル電流は減るが立上りは遅くなる。境界が逆転すると両条件を満たす抵抗はない。","height":1000,"html":"<h2 data-i18n=\"heading\"></h2><p class=\"intro\" data-i18n=\"intro\"></p><div class=\"control\"><label for=\"c\" data-i18n=\"c\"></label><output for=\"c\" id=\"c-value\"></output><input id=\"c\" type=\"range\" min=\"50\" max=\"500\" value=\"100\" step=\"10\"></div><div class=\"control\"><label for=\"r\" data-i18n=\"r\"></label><output for=\"r\" id=\"r-value\"></output><input id=\"r\" type=\"range\" min=\"0.5\" max=\"10\" value=\"2.2\" step=\"0.1\"></div><div class=\"chart-wrap\"><div class=\"chart-label\" data-i18n=\"plot\"></div><svg id=\"plot\" class=\"curve\" viewBox=\"0 0 360 210\" role=\"img\" data-i18n-label=\"plot\"></svg></div><div class=\"metrics\"><div><span data-i18n=\"rise\"></span><strong id=\"rise\"></strong></div><div><span data-i18n=\"window\"></span><strong id=\"window\"></strong></div><div><span data-i18n=\"status\"></span><strong id=\"status\"></strong></div></div><p id=\"eq\" class=\"formula\"></p><details class=\"scope\"><summary data-i18n=\"scopeLabel\"></summary><p data-i18n=\"scope\"></p></details>","css":".intro{margin:8px 0 18px;color:var(--muted);font-size:14px}.caption,.hint{font-size:12px;color:var(--muted);margin-top:12px}.control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;margin:14px 0;font-size:13px}.control label{font-size:13px}.control output{color:var(--accent);min-width:5em;text-align:right;font-variant-numeric:tabular-nums}.control input{grid-column:1/-1;width:100%;margin:0}.presets{display:flex;gap:4px;align-items:stretch}.presets button{flex:1 1 0;min-width:0;overflow-wrap:anywhere;font-size:13px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.actions button{flex:1;min-width:0;font-size:13px;min-height:42px}.copy{display:grid;font-size:14px;margin:16px 0}.copy>*{grid-area:1/1;margin:0}.reserve{visibility:hidden}.scope{margin-top:14px;color:var(--muted);font-size:12px}.scope summary{padding:8px 0;cursor:pointer}.scope p{margin-top:10px}.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.card{border:1px solid var(--rule);border-radius:9px;padding:14px;min-width:0}.card header{font-size:14px;font-weight:600;margin-bottom:10px}.card button{font-size:12px;width:100%;min-width:0}.card small{display:block;font-size:12px;color:var(--muted)}.card code{font-size:12px;overflow-wrap:anywhere}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.metrics>div{border-left:2px solid var(--accent);padding-left:10px;min-width:0}.metrics span{display:block;min-height:3.2em;color:var(--muted);font-size:12px}.metrics strong{font-size:23px;display:block;font-weight:550;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.formula{border-top:1px solid var(--rule);padding-top:12px;margin-top:14px;font-size:13px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.value{font:550 20px ui-monospace,monospace}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted);margin:12px 0}.legend span:before{content:'';display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--accent);margin-right:6px}.legend .second:before{background:var(--second)}.check{display:flex;align-items:center;gap:8px;font-size:13px;margin:12px 0}.check input{width:16px;height:16px;flex-shrink:0;accent-color:var(--accent)}select,input[type=text],input[type=number]{background:var(--paper);color:var(--ink);font:inherit;font-size:13px;padding:10px;border:1px solid var(--rule);border-radius:7px;max-width:100%;min-width:0}select{width:100%;min-height:42px}.band{height:20px;display:flex;background:var(--surface);border-radius:4px;overflow:hidden}.band i{height:100%;display:block;background:var(--accent);transition:width .25s}.band i.second{background:var(--second)}button:disabled{cursor:default}.status{font-size:13px;min-height:4.8em}.mono{font-family:ui-monospace,monospace;font-variant-numeric:tabular-nums}.muted{color:var(--muted)}\n@media(max-width:480px){.two{gap:8px}.card{padding:12px 9px}.actions button,.presets button{font-size:12px}.metrics strong{font-size:20px}.metrics{gap:8px}}\n@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}\n.track-row{margin:16px 0}.track-row>span{display:block;font-size:12px;color:var(--muted);margin-bottom:7px}.track{display:flex;gap:5px;min-width:0}.cell{flex:1;min-width:0;min-height:48px;border:1px solid var(--rule);border-radius:5px;background:var(--surface);display:flex;align-items:center;justify-content:center;text-align:center;padding:5px 3px;font-size:12px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.cell.on{background:var(--accent-soft);border-color:var(--accent)}.cell.gold{background:var(--second-soft);border-color:var(--second)}.cell.empty{border-style:dashed;color:var(--muted)}.cell.error{border-color:var(--second);text-decoration:line-through}.choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:14px 0}.choices button{min-width:0;padding:10px 4px;font-size:12px;overflow-wrap:anywhere}.choices button[aria-current=true]{border-color:var(--accent);background:var(--accent-soft)}.relation{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);align-items:center;gap:6px;margin:12px 0}.relation .cell{min-height:72px}.relation>i{text-align:center;font-style:normal;color:var(--accent)}.readout{font-size:13px;white-space:pre-line;min-height:6.4em;overflow-wrap:anywhere}.plot{position:relative;border-left:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:8px 0;margin:18px 0}.plot-row{height:28px;position:relative;margin:4px 0;background:var(--surface)}.plot-row i{position:absolute;inset-block:5px;background:var(--accent);min-width:2px;transition:width .2s,left .2s}.plot-row b{position:relative;padding:4px 6px;font:11px/28px ui-monospace,monospace;background:var(--paper);border-radius:3px}.axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}\n\n/* Action labels must remain readable across locales and narrow embeds. */\n.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}\n.actions button{overflow-wrap:anywhere;white-space:normal;min-height:58px;padding:8px}\nbutton{overflow-wrap:anywhere}\n@media(min-width:640px){.actions{grid-template-columns:repeat(3,minmax(0,1fr))}}\n\n.metrics span{overflow-wrap:anywhere}\n.panel{border:1px solid var(--rule);border-radius:9px;padding:12px;margin:14px 0;min-width:0}.panel h3{font-size:13px;margin:0 0 10px;color:var(--muted)}.source{font:13px/1.8 ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0}.source mark{background:var(--accent-soft);color:var(--ink);border-bottom:2px solid var(--accent)}.source .fault{background:var(--second-soft);border-color:var(--second)}.diagram{display:block;width:100%;height:auto;max-height:320px;margin:14px 0;overflow:visible}.diagram text{fill:var(--ink);font:12px ui-monospace,monospace}.diagram .edge{stroke:var(--muted);stroke-width:1.5;fill:none}.diagram .edge.on{stroke:var(--accent);stroke-width:3}.diagram .node{fill:var(--surface);stroke:var(--rule);stroke-width:1.5}.diagram .node.on{fill:var(--accent-soft);stroke:var(--accent)}.diagram .node.gold{fill:var(--second-soft);stroke:var(--second)}.log{font:12px/1.8 ui-monospace,monospace;white-space:pre-line;overflow-wrap:anywhere;min-height:7.2em}.table{display:grid;gap:5px;margin:14px 0}.table .tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.table .tr>*{padding:8px 5px;background:var(--surface);border-radius:4px;min-width:0;overflow-wrap:anywhere;font-size:12px}.table .tr .on{background:var(--accent-soft)}.table .tr .gold{background:var(--second-soft)}.choices button{min-height:44px}.metrics strong{min-height:1.6em}.code-line{display:block}.code-line.on{background:var(--accent-soft);border-left:2px solid var(--accent);padding-left:6px}.status-badge{font-size:12px;color:var(--accent)}.tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.tile-grid .cell{min-height:40px}.actions button{min-height:48px}.form-field{display:grid;gap:8px;margin:14px 0;font-size:13px}.form-field input{width:100%;font-family:ui-monospace,monospace}.metrics.three{grid-template-columns:repeat(3,minmax(0,1fr))}.formula{min-height:3.2em}.presets{flex-wrap:wrap}.presets button{flex-basis:25%;min-height:44px}\n\n.budget{display:flex;height:28px;margin:16px 0;background:var(--surface);border-radius:5px;overflow:hidden}.budget i{display:block;background:var(--accent);transition:width .2s}.budget i.gold{background:var(--second)}.intervals{margin:16px 0}.interval{position:relative;height:36px;background:var(--surface);margin:6px 0;border-radius:4px;overflow:hidden}.interval i{position:absolute;height:100%;background:var(--accent-soft);border-left:2px solid var(--accent)}.interval i.gold{background:var(--second-soft);border-color:var(--second)}.interval span{position:relative;z-index:1;font:12px/36px ui-monospace,monospace;padding-left:7px}.table .tr>*{min-height:4.8em}.formula{white-space:pre-line;min-height:7.2em}.actions:has(>button:only-child){grid-template-columns:1fr}.metrics strong{min-height:3.2em}.rangegrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:3px;margin:14px 0}.rangegrid .cell{min-height:30px;padding:3px 1px;font-size:10px}.message{min-height:7.2em;white-space:pre-line;font:13px/1.8 ui-monospace,monospace;overflow-wrap:anywhere}\n/* Allow CJK hanging punctuation without overflowing a metric's border box. */\n.metrics>div{padding-right:4px}.metrics span{line-break:anywhere}\n\n.chart-wrap{margin:18px 0}.chart-label{font-size:12px;color:var(--muted);min-height:3.2em}.curve{display:block;width:100%;height:auto;max-height:320px;overflow:visible}.curve text{font:11px ui-monospace,monospace;fill:var(--muted)}.gridline{stroke:var(--rule);stroke-width:1}.metrics strong{font-size:20px;min-height:3.2em}.formula{font:12px/1.8 ui-monospace,monospace;min-height:9em}.readout{min-height:8em}.presets button{flex-basis:30%}.scope p{overflow-wrap:anywhere} .unit-note{font-size:12px;color:var(--muted);margin:10px 0}\n\n.metrics span{word-break:break-all;line-break:strict}.metrics>div{padding-right:6px}\n\n#status{min-height:7em}","js":"const $=s=>document.querySelector(s);const set=(id,v)=>$('#'+id).textContent=v;const t=k=>viz.t(k);function cells(id,values){$('#'+id).replaceChildren(...values.map(v=>{const e=document.createElement('div');e.className='cell '+(v.cls||'');e.textContent=v.text;e.title=v.title||v.text;return e;}));}function pressed(mode){document.querySelectorAll('[data-mode]').forEach(e=>e.setAttribute('aria-pressed',String(e.dataset.mode===mode)));}const esc=s=>String(s).replace(/[&<>\"']/g,c=>({'&':'&','<':'<','>':'>','\"':'"',\"'\":'''}[c]));const fmt=s=>'{'+[...s].sort().join(', ')+'}';function graph(id,nodes,edges){const el=$('#'+id);el.setAttribute('viewBox','0 0 360 200');el.innerHTML='<defs><marker id=\"arrow-'+id+'\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"5\" markerHeight=\"5\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"var(--muted)\"/></marker></defs>'+edges.map(e=>{const a=nodes[e[0]],b=nodes[e[1]],dx=b.x-a.x,dy=b.y-a.y,d=Math.hypot(dx,dy)||1;if(edges.some(r=>r[0]===e[1]&&r[1]===e[0])){const nx=-dy/d,ny=dx/d;return '<path class=\"edge '+(e[2]?'on':'')+'\" d=\"M '+(a.x+dx/d*22+nx*12)+' '+(a.y+dy/d*22+ny*12)+' Q '+((a.x+b.x)/2+nx*38)+' '+((a.y+b.y)/2+ny*38)+' '+(b.x-dx/d*25+nx*12)+' '+(b.y-dy/d*25+ny*12)+'\" marker-end=\"url(#arrow-'+id+')\"/>';}return '<line class=\"edge '+(e[2]?'on':'')+'\" x1=\"'+(a.x+dx/d*25)+'\" y1=\"'+(a.y+dy/d*25)+'\" x2=\"'+(b.x-dx/d*28)+'\" y2=\"'+(b.y-dy/d*28)+'\" marker-end=\"url(#arrow-'+id+')\"/>';}).join('')+nodes.map(n=>'<g><circle class=\"node '+(n.cls||'')+'\" cx=\"'+n.x+'\" cy=\"'+n.y+'\" r=\"25\"/><text x=\"'+n.x+'\" y=\"'+(n.y+4)+'\" text-anchor=\"middle\">'+esc(n.name)+'</text>'+(n.sub?'<text x=\"'+n.x+'\" y=\"'+(n.y+43)+'\" text-anchor=\"middle\">'+esc(n.sub)+'</text>':'')+'</g>').join('');}function table(id,rows){$('#'+id).classList.add('table');$('#'+id).replaceChildren(...rows.map(r=>{const row=document.createElement('div');row.className='tr';row.style.gridTemplateColumns='repeat('+r.length+',minmax(0,1fr))';r.forEach(x=>{const c=document.createElement('div');if(typeof x==='object'){c.textContent=x.text;c.className=x.cls||'';}else c.textContent=x;row.append(c)});return row;}));}function band(id,parts,total){$('#'+id).replaceChildren(...parts.map((p,i)=>{const e=document.createElement('i');e.style.width=(100*p.value/total)+'%';e.className=i%2?'gold':'on';e.title=p.name+': '+p.value;return e}));}function intervals(id,items,total){$('#'+id).replaceChildren(...items.map(p=>{const row=document.createElement('div');row.className='interval';const bar=document.createElement('i');bar.style.left=(100*p.start/total)+'%';bar.style.width=(100*(p.end-p.start)/total)+'%';bar.className=p.cls||'';const label=document.createElement('span');label.textContent=p.label;row.append(bar,label);return row;}));}function plot(id,series,xr,yr,opts={}){const e=$('#'+id),X=x=>42+(x-xr[0])/(xr[1]-xr[0])*298,Y=y=>175-(y-yr[0])/(yr[1]-yr[0])*148;let out='<defs><clipPath id=\"clip-'+id+'\"><rect x=\"42\" y=\"27\" width=\"298\" height=\"148\"/></clipPath></defs>';for(let i=0;i<3;i++){let x=xr[0]+i*(xr[1]-xr[0])/2,y=yr[0]+i*(yr[1]-yr[0])/2;out+='<path class=\"gridline\" d=\"M '+X(x)+' 27V175M42 '+Y(y)+'H340\"/><text x=\"'+X(x)+'\" y=\"194\" text-anchor=\"middle\">'+esc(opts.xfmt?opts.xfmt(x):Number(x.toFixed(2)))+'</text><text x=\"36\" y=\"'+(Y(y)+4)+'\" text-anchor=\"end\">'+esc(opts.yfmt?opts.yfmt(y):Number(y.toFixed(2)))+'</text>';}out+='<g clip-path=\"url(#clip-'+id+')\">';for(const s of series){out+='<path fill=\"none\" stroke=\"'+(s.color||'var(--accent)')+'\" stroke-width=\"2.5\" '+(s.dash?'stroke-dasharray=\"5 4\"':'')+' d=\"'+s.pts.map((p,i)=>(i?'L':'M')+X(p[0]).toFixed(2)+','+Y(p[1]).toFixed(2)).join(' ')+'\"/>';}for(const p of opts.points||[])out+='<circle cx=\"'+X(p[0])+'\" cy=\"'+Y(p[1])+'\" r=\"4\" fill=\"var(--second)\" stroke=\"var(--paper)\" stroke-width=\"1.5\"/>';if(opts.cursor!==undefined)out+='<path d=\"M'+X(opts.cursor)+' 27V175\" stroke=\"var(--muted)\" stroke-dasharray=\"3 3\"/>';e.innerHTML=out+'</g>';e.dataset.curves=JSON.stringify(series.map(s=>s.pts));}const curve=(fn,lo,hi,n=120)=>Array.from({length:n+1},(_,i)=>{const x=lo+(hi-lo)*i/n;return[x,fn(x)]});function inputs(draw){document.querySelectorAll('input,select').forEach(e=>{e.addEventListener('input',draw);e.addEventListener('change',draw)});draw()}const n=id=>+$('#'+id).value;const show=(id,v,d=3)=>set(id,Number(v.toFixed(d)));function draw(){let c=n('c'),r=n('r'),tau=r*c,lo=2.9/3,hi=300/(Math.log(7/3)*c),rise=Math.log(7/3)*tau,status=lo>hi?'empty':r<lo?'current':r>hi?'slow':'ok';show('c-value',c);show('r-value',r);plot('plot',[{pts:curve(x=>3.3*(1-Math.exp(-x/tau)),0,1500)},{pts:[[0,.99],[1500,.99]],dash:true,color:'var(--second)'},{pts:[[0,2.31],[1500,2.31]],dash:true,color:'var(--second)'}],[0,1500],[0,3.3]);show('rise',rise,1);set('window',lo.toFixed(3)+'–'+hi.toFixed(3));set('status',t(status));$('#status').dataset.state=status;set('eq','t30 = −RC ln(0.7)\\nt70 = −RC ln(0.3)\\ntr = RC ln(7/3) = '+rise.toFixed(1)+' ns\\nRmin = (3.3 − 0.4) / 3 = '+lo.toFixed(3)+' kΩ');}inputs(draw);","audio":false,"strings":{"c":"バス容量(pF)","current":"シンク電流条件違反","empty":"許容範囲なし","heading":"プルアップの許容範囲は消える?","intro":"バス容量と抵抗を変え、立上り時間とシンク電流制約を見る。","ok":"両方を満たす","plot":"横軸 ns、縦軸 V、金:30% と 70%","r":"プルアップ抵抗(kΩ)","reset":"リセット","rise":"30–70% 時間(ns)","scope":"3.3 V、3 mA で VOL≤0.4 V、30–70% 立上り≤300 ns。公称値、許容差は省略。","scopeLabel":"モデルの範囲と前提","slow":"立上りが遅い","status":"境界確認","window":"許容 R(kΩ)"}}
ショント抵抗とケルビン接続
ショント抵抗は測定対象の電流パスに直列に挿入され、V_sense = IR によって電流を推定します。5 A が 10 mΩ を流れると 50 mV となり、0.25 W を消費します。これを 1 mΩ に変更すると、5 mV、25 mW となり、損失は減少しますが、同じ測定オフセットの占める割合は顕著に増大します。
増幅器の入力オフセットが 50 μV と仮定すると、この項目のみで、50 mV の信号では約 0.1%、5 mV の信号では約 1% を占めます。さらに小さな抵抗を使用すると、配線抵抗や熱起電力の影響がより顕著になるため、「R が小さいほど良い」という主張は、測定分解能と誤差条件を欠いています。
R_shunt = 10 mΩ 負荷 I = 5 A 差動測定入力 理想的な読み取り値:50 mV 大電流配線 測定線は共有電圧降下を回避する ショント抵抗は電流パスに直列に挿入する必要があります。測定線は規定されたサ ンプリング点から引き出されます 図はケルビンサンプリングの原則を示しています。実際のパッドとサンプリング位置は、特定の素子のレイアウト要件に 従って設計されます。
目標抵抗が 10 mΩ であるにもかかわらず、追加の 2 mΩ の大電流配線による電圧降下も読み取り値に含まれると、推定電流は約 20% 過大になります。ケルビン接続は、電流用配線と電圧サンプリング線を分離し、測定への共有導体電圧降下の混入を軽減します。これは、抵抗自体の許容誤差や自己発熱による温度ドリフトを除去するものではなく、誤ったコモンモード範囲を補うものでもありません。4端子素子と2端子素子の推奨サンプリング位置は、それぞれデータシートのレイアウトに従うべきです。
ハイサイド検出では、電源電位に近いコモンモード電圧に直面し、ローサイド検出では負荷のグランドが浮く可能性があります。位置の選択時には、増幅器の入力範囲、負荷参照グランド、および故障の観測可能性を一緒に考慮する必要があり、単に抵抗損失だけではありません。
from math import log , isclose
assert isclose ( . 1* * 2 * 100 , 1. 0 )
ratio_low = 9900 / ( 10100 + 9900 )
ratio_high = 10100 / ( 9900 + 10100 )
assert ( ratio_low , ratio_high ) == ( . 495, . 505)
rmin = ( 3. 3 - . 4) / . 003
rmax = 300e-9 / ( log ( . 7/ . 3) * 100e-12 )
assert rmin < 2200 < rmax
for resistance , expected in [ ( . 01, . 001) , ( . 001, . 01) ] :
signal = 5 * resistance
assert isclose ( 50e-6 / signal , expected )
print ( f " 消費電力 1 W;プルアップ公称範囲 { rmin :.1f } – { rmax :.1f } Ω;サンプリングオフセット比率について確認済み" )
可変および非線形抵抗の境界
素子 基本的な動作 使用時に確認すべき事項
ポテンショメータ 2つの固定端子と1つの可動端子で可変分圧を構成 可動端子の負荷、接触変化、および局所的な許容電流
NTC 一般的な温度域では温度上昇とともに抵抗値が低下 測定による自己発熱、温度曲線、および応答時間
PTC 対応する温度域では温度上昇とともに抵抗値が増加 異なる温度検出/保護材料の曲線は同一ではない
光敏抵抗 一般的な材料では光量増加とともに抵抗値が低下 分光応答、暗抵抗、応答速度、および素子間の差異
MOV 強い非線形電流-電圧特性を持つサージ吸収素子 クランプ電圧、パルスエネルギー、経年劣化、および保護回路の整合
NTC には、一般的な簡易 B パラメータモデル R(T) = R₂₅·exp[B(1/T−1/298.15)] が使用されます。ここで T はケルビン単位でなければなりません。これは有限の温度域における近似であり、1つの B 値がすべての温度を正確にカバーできることを意味するものではありません。測定電流による I²R の自己発熱により、センサーの温度が測定対象環境からずれる可能性があります。
これらの素子を一律に固定 R の線形解析に代入することはできません。MOV も、ある電圧を超えると理想的な短絡になるわけではありません。保護素子の整合については、後の保護回路の章で展開します。次に コンデンサ を読み、エネルギー蓄積、インピーダンス、および実際のデカップリングネットワークについて理解を深めてください。