100 mA 流过 100 Ω,功耗是 1 W,不是 1 mW。即使这个单位换算正确,也不能仅凭“选两倍功率”就结束选型:环境温度、焊盘散热、持续电压和脉冲负荷可能分别成为限制。本篇从理想阻值扩展到实际器件,并用分压、上拉和电流检测解释各参数如何影响结果。
| 要做的事情 | 先核对什么 | 阅读位置 |
| 读器件标识 | 色环、数字码与单位 | 标称值与编码 |
| 让测量保持准确 | 初始误差、温漂、比值跟踪 | 精度是一份误差预算 |
| 防止超出额定条件 | 功率降额、电压与脉冲 | 功率不是唯一上限 |
| 设置可靠默认电平 | 灌电流、漏电和 RC 上升 | 上拉值有上下边界 |
| 测量电流 | 压降、损耗、失调和取样位置 | 分流电阻与 Kelvin 连接 |
理想电阻与实际电阻器
理想正电阻满足 u = Ri,按被动符号约定吸收功率 p = i²R,不储存净能量。实际电阻器用电阻膜、金属合金或电阻丝形成导电路径,电能主要转化成热;还带有引线/端头电感、分布电容和温度依赖。
因此“10 kΩ”描述的是规定条件下的电阻值,不是任意频率、温度和电压下都严格成立的阻抗。高频时寄生参数可能影响行为,绕线结构尤其不能笼统说成低电感;低感绕法是特定设计,需要看型号。
| 技术或封装形式 | 常见关注点 | 不应据名称推定的属性 |
| 厚膜贴片 | 通用成本、耐脉冲系列、阻值范围 | 不是所有型号都同一 TCR 或噪声 |
| 薄膜、金属膜 | 精度、稳定性、低过剩噪声需求 | 功率或浪涌能力仍需单独确认 |
| 金属箔、金属合金分流器 | 低阻值、温漂、取样结构 | 低阻不代表可以任意增大电流 |
| 绕线 | 功率、脉冲能量与温升 | 不自动等于低电感 |
| 电阻网络/排阻 | 多阻值集成、比值与温漂跟踪 | 不一定全是相同阻值或共用端点 |
标称值与编码
四环色码的前两环是有效数字,第三环是倍率,第四环是容差;五环一般使用前三环有效数字、第四环倍率、第五环容差。先确认读数方向,容差环常与其他环留有间隔,不能只凭离引线近的一侧判断。
| 颜色 | 数字 | 倍率 | 常见容差含义 |
| 黑、棕、红 | 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%。小封装可能完全没有字样,不能凭空白判断为零欧姆。
常见三位贴片数字码 103 表示 10×10³ = 10 kΩ,四位码 1002 表示 100×10² = 10 kΩ;4R7 使用 R 作为小数点,表示 4.7 Ω。EIA-96 的两位数字加字母是查表编码,不能按普通三位码直接拆读。特殊系列的标识以制造商定义为准。
E 系列用于组织优选标称值:E12 每十倍区间有 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 表示每摄氏度约 50×10⁻⁶ 的相对变化;温差 60°C 对应约 0.3%,方向取决于系数符号。
温度应关注电阻实际工作温度,包含自热,不只是房间温度。初始容差、温漂、长期漂移和电压系数也不是同一个指标;不能用一次室温测量消除所有后续变化。
分压精度取决于比值
设上下两只电阻均为标称 10 kΩ、各 ±1%,输入理想 10 V、负载可忽略。输出最高发生在上臂 9.9 kΩ、下臂 10.1 kΩ,得到 5.05 V;最低为 4.95 V,相对于名义 5 V 是 ±1%。这里两只阻值的绝对变化不是简单相加成 ±2% 输出误差。
若两只电阻随温度按同一比例变化,分压比保持不变,但总电流会改变。精密电阻网络的比值容差与跟踪 TCR 因此可能比单只绝对 TCR 更重要。另一方面,上臂与下臂发热不同、布局造成温差时,即使名义 TCR 相同,也可能发生比值漂移。
热噪声电压均方值在经典近似下为 4k_BTRB,其中 T 为绝对温度、B 为观察带宽。相同 R、T 和带宽下,这部分噪声不会因为换成“金属膜”就消失;材料与结构还会影响加偏压后的过剩噪声等特性。不能把“某类型噪声低”当成没有噪声。
功率不是唯一上限
先算最坏工作点,再对应数据手册条件。恒定电流 0.1 A 经过 100 Ω,P = 0.1²×100 = 1 W;若电流和阻值都有变化,需要找乘积 I²R 的最大情形。额定功率通常依赖规定环境或端子温度和安装条件,温度升高后按曲线降额。板上铜面积、邻近热源和封装影响实际温升。Vishay:固定电阻基础
| 约束 | 检查方式 | 为什么不能被其他指标代替 |
| 连续功率 | P 与当前温度下允许耗散比较 | 标称瓦数不一定适用于实际散热 |
| 连续工作电压 | 与 √(P允许·R) 和器件电压限制分别比较 | 高阻器件可能先碰到电压限制 |
| 单次或重复脉冲 | 查脉宽、重复周期、峰值及能量曲线 | 相同平均功率可能有不同局部热应力 |
| 过载后的稳定性 | 查允许阻值变化与试验条件 | 没有烧断不代表仍满足精度 |
例如假设某 1 MΩ 器件允许连续功耗 0.1 W,纯功率式给出约 316 V;若其最大工作电压是 100 V,实际首先受 100 V 限制。这里的数值只是展示约束关系,不对应具体器件推荐。
1 W、1 ms 的矩形脉冲能量是 1 mJ,但能量相同不代表任意脉宽都等效。薄膜局部温度、最高脉冲电压与重复累积发热都要检查。“功率选两倍”可以是项目裕量的一部分,不能替代这些条件。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 上拉电阻计算
2.2 kΩ 落在这个名义区间内,预计上升时间约 186 ns;最终判断还要使用供电、电阻和电容的最坏偏差,以及相应器件和协议的保证条件。若 R_min 大于 R_max,说明当前驱动、电容和时序要求没有可行阻值,不能通过随意选中间值解决。
普通静态输入还要检查漏电:例如 10 μA 流过 100 kΩ 会产生 1 V 偏移,可能影响高电平裕量。下拉同理,只是方向反过来。多个设备自带上拉时,它们会并联,总电阻可能比单只值小很多。
上拉电阻的可行区间会消失吗?
两条水平线定义的是 30% 与 70%,不是从零到电源电压的时间。逐渐增加电容,观察 Rmax 缩小;到可行区间消失时,应改变电容、驱动能力或时序条件。读数在精确边界处按“允许等于”判断。
t30→70=RCln0.30.7,Rmin≤R≤Rmax
正在呈现知识画面
上拉电阻的可行区间会消失吗?增大 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、VOL≤0.4 V at 3 mA,30–70% 上升≤300 ns;名义边界,不包含容差。","scopeLabel":"模型范围与约定","slow":"上升过慢","status":"边界检查","window":"允许阻值(kΩ)"}}
分流电阻与 Kelvin 连接
分流电阻串在被测电流路径中,通过 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 越小越好”缺少测量分辨率和误差条件。
若目标电阻是 10 mΩ,却把额外 2 mΩ 大电流走线压降也算入读数,推算电流会偏大约 20%。Kelvin 连接把电流引线与电压取样线分开,减少共享导体压降进入测量;它不能消除电阻自身容差和自热温漂,也不能补救错误的共模范围。四端器件与两端器件的推荐取样位置应分别按数据手册布局。
高侧检测会面对接近电源电位的共模电压,低侧检测则可能抬高负载地。选择位置时要一起考虑放大器输入范围、负载参考地和故障可观测性,而不仅是电阻损耗。
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} Ω;采样失调比例通过")
可变与非线性电阻的边界
| 元件 | 基本行为 | 使用时还要检查 |
| 电位器 | 两固定端与一个滑动端构成可变分压 | 滑动端负载、接触变化与局部允许电流 |
| NTC | 常用温区内温度升高、阻值降低 | 测量自热、温度曲线与响应时间 |
| PTC | 在相应温区温度升高、阻值增大 | 不同温度检测/保护材料的曲线并不相同 |
| 光敏电阻 | 常见材料中光照增强、阻值降低 | 光谱响应、暗阻、响应速度与器件差异 |
| MOV | 具有强非线性伏安关系的浪涌吸收器件 | 钳位电压、脉冲能量、老化及配套保护 |
NTC 常用简化 B 参数模型 R(T) = R₂₅·exp[B(1/T−1/298.15)],T 必须以 K 为单位。它是有限温区的近似,不意味着一个 B 值能精确覆盖所有温度。测量电流带来的 I²R 自热会让传感器温度偏离被测环境。
这些器件不能统一代入固定 R 的线性分析,MOV 也不是跨过某个电压就理想短路。保护器件的配合在后续保护电路章节展开。接下来阅读 电容,理解储能、阻抗和实际去耦网络。