编写传感器输入设计审查报告
目标
使用 Python 标准库计算分压器输入,并验证负载、公差、时间、ADC 和故障假设。本实验使用的是明确给定的电阻和一阶 RC 模型,而不是 SPICE 或真实电路板。
为什么这很重要
仅让某一个电压值正确并不足够。只有检查连接负载后的电流、功耗、公差极限值以及采集时点,才能解释测量值为何发生变化。区分实际测量与合成观测,也是验证工作的一部分。
步骤
- 计算由无负载 5 V 电源和两个 10 kΩ 电阻构成的电路,并保存到
/root/circuit-review/01-unloaded.json。 - 添加 10 kΩ 负载,并将电压、电流和下降比例保存到
/root/circuit-review/02-loaded.json。 - 将三项功耗和电源供给功率以 W 为单位保存到
/root/circuit-review/03-power.json。 - 比较电源 ±5%、三个电阻各自 ±1% 时的 16 种极限值组合,并将组合数量和范围保存到
/root/circuit-review/04-corners.json。 - 在标称电路中添加 100 nF,并将时间常数、1 ms 时的电压和达到 1% 稳定范围所需时间保存到
/root/circuit-review/05-settling.json。 - 根据步骤卡片中的虚拟 ADC 规则,将两个编码值和输入有效性保存到
/root/circuit-review/06-adc.json。 - 对比 2.49±0.02 V 的合成观测与三个故障候选,并将预测、候选和下一项检查保存到
/root/circuit-review/07-diagnosis.json。
参考
所有字段名称都列在步骤卡片中。JSON 数值不能写成字符串,也不允许 NaN 或无穷大。数值容差取相对 0.00001 与绝对 0.00000001 中较大的一个。虚拟 ADC 编码必须是整数。只使用标准库 json、math、itertools,无需额外安装。如果你刚开始接触 shell 和 Python,请先学习 Linux 基础课程。请在会话结束前复制并保存产物。不要连接设备、进行焊接或施加实际电压。
连接测量仪器之前
计算无负载模型的 vout_v 和 current_a:理想 5 V 电源与上方 10 kΩ 电阻、下方 10 kΩ 电阻串联。
串联电流由两个电阻之和决定。输出是下方电阻两端的电压。
负载成为电路的一部分
在同一电路的输出与地之间连接 10 kΩ 负载。计算 vout_v、上方电流 top_a、下方电阻电流与负载电流之和 return_a,以及相对于无负载电压的下降比例 drop_fraction。
下方电阻与负载并联。还要单独确认电流之和是否正确。
核对功率账目
在第 02 步的负载电路中,以 W 为单位计算上方电阻功耗 top_w、下方电阻功耗 bottom_w、负载功耗 load_w,以及电源供给功率 supply_w。三项消耗功率之和必须与供给功率一致。
每个电阻两端的电压不同。请避免直接将输出电压代入上方电阻的计算。
寻找公差的最坏组合
计算电源 5 V ±5%、三个电阻各自 10 kΩ ±1% 时的全部 16 种极限值组合。记录 case_count、min_v、max_v。各项误差相互独立,不假设任何统计分布。
四个变量各有两个极限值,因此共有 2⁴ 种组合。将所有电阻同时增大,并不一定构成最坏条件。
1 ms 后仍在变化
在第 02 步标称电路的输出端与地之间连接 100 nF。使用理想一阶模型:初始电压为 0 V,t=0 时将电源升至 5 V。求 tau_s、1 ms 时的 v_at_1ms,以及首次达到相对最终值误差不超过 1% 时的 t_1pct_s。
将电压源设为 0 V 后,三个电阻并联。最终值是带负载时的输出电压,剩余误差比例为 exp(-t/τ)。
编码饱和并不代表输入安全
虚拟 12 位 ADC 的规则为 code=min(4095,max(0,floor(v/3.3*4096)))。正常范围定义为 0~3.3 V。记录第 02 步稳态输出的 code_loaded、5 V 输入的显示值 code_overrange,以及 5 V 是否位于正常输入范围内的 input_valid。
不要将编码计算规则与除以 4095 的修正式混为一谈。返回饱和编码并不意味着物理引脚能够承受过压。
区分故障候选与下一次测量
教学用合成观测为 2.49 V ±0.02 V(并非实际测量)。只使用标称元件,并将候选限制为 normal、bottom_open(仅下方电阻断路)、load_short(仅负载理想短路)三个。请在 predicted_v 中写入各候选对应的电压,在 consistent 中写入落在观测区间内的候选名称列表。下一项检查 next_check 记录为 power_off_isolated_resistance,表示断电后将下方电阻隔离并检查其阻值。
即使下方电阻断路,10 kΩ 负载仍然存在。只剩一个候选,并不等于证明了现实中的所有故障原因。