188 lines
8.1 KiB
Plaintext
188 lines
8.1 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 电桥法测量电阻计算器 (Wheatstone Bridge)\n",
|
||
"\n",
|
||
"本 Notebook 用于通过**惠斯通电桥(单臂电桥)**测量未知电阻值 $R_x$。包含不同比例臂($1:1, 1:10, 10:1$ 等)下的平衡电阻统计、电桥灵敏度 $S$ 测定、仪器误差限 $\\Delta_{\\mathrm{inst}}$ 评估、不确定度合成及各比例臂对比汇总。\n",
|
||
"\n",
|
||
"---\n",
|
||
"### 实验原理与数学公式\n",
|
||
"\n",
|
||
"#### 1. 惠斯通电桥平衡条件\n",
|
||
"当检流计指针示数为零时,电桥达到平衡:\n",
|
||
"$$R_x = R_0 \\cdot \\frac{R_1}{R_2} = R_0 \\cdot C$$\n",
|
||
"* $R_x$:待测电阻\n",
|
||
"* $R_0$:比较臂标准电阻箱读数\n",
|
||
"* $C = R_1 / R_2$:比例臂倍率(如 $1, 0.1, 10$)\n",
|
||
"\n",
|
||
"#### 2. 电桥灵敏度 $S$ 与仪器误差限 $\\Delta_{\\mathrm{inst}}$\n",
|
||
"平衡后微调比较臂电阻使检流计偏转 $\\Delta n$ 格(通常取 5 格),记偏调后的读数为 $R_0'$:\n",
|
||
"$$\\Delta R_0 = |R_0' - R_0|, \\quad S = \\frac{\\Delta n}{\\Delta R_0 / R_0} = \\frac{\\Delta n \\cdot R_0}{\\Delta R_0}$$\n",
|
||
"电桥所能分辨的最小电阻改变量(即由灵敏度决定的仪器误差限)为:\n",
|
||
"$$\\Delta_{\\mathrm{inst}} = \\frac{R_0}{S} = \\frac{\\Delta R_0}{\\Delta n}$$\n",
|
||
"\n",
|
||
"#### 3. 不确定度传递与合成公式\n",
|
||
"比例臂 $C$ 由精密标准电阻构成,其不确定度可忽略,则:\n",
|
||
"* $R_0$ 的合成不确定度:\n",
|
||
"$$u(R_0) = \\sqrt{ u_A^2(R_0) + u_B^2(R_0) }, \\quad u_A(R_0) = \\frac{s(R_0)}{\\sqrt{n}}, \\quad u_B(R_0) = \\frac{\\Delta_{\\mathrm{inst}}}{\\sqrt{3}}$$\n",
|
||
"* 待测电阻 $R_x$ 的不确定度:\n",
|
||
"$$u(R_x) = C \\cdot u(R_0), \\quad u_r(R_x) = \\frac{u(R_x)}{R_x} = \\frac{u(R_0)}{R_0}$$\n",
|
||
"* 结果按照“四舍六入五凑偶”保留一位有效数字,末位对齐。"
|
||
],
|
||
"id": "aae827c35ef68a9f"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"\n",
|
||
"from decimal import Decimal\n",
|
||
"from python.utils import scientific_round, calculate_stats\n",
|
||
"\n",
|
||
"print(\"电桥法计算模块加载完成。\")"
|
||
],
|
||
"id": "c7d75a2788fc0cac"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1. 测量实验数据配置 (支持多组标称值与比例臂)\n",
|
||
"> **提示**:可以在 `calibration_data` 列表中增减测试组。每组包含:标称值、比例臂标签、比例因子 $C$、5次平衡读数 $R_0$ 列表,以及偏转 5 格时的读数 $R_0'$。"
|
||
],
|
||
"id": "44f6b780972c58ad"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 实验测量数据配置列表\n",
|
||
"# 结构: dict(R_nominal, ratio_label, C, R0_list, R0_prime)\n",
|
||
"calibration_data = [\n",
|
||
" {\n",
|
||
" \"R_nominal\": \"10000\", \"ratio_label\": \"1:1\", \"C\": Decimal(\"1\"),\n",
|
||
" \"R0_list\": [Decimal(\"9985.2\"), Decimal(\"9985.0\"), Decimal(\"9985.3\"), Decimal(\"9985.1\"), Decimal(\"9985.2\")],\n",
|
||
" \"R0_prime\": Decimal(\"9995.2\")\n",
|
||
" },\n",
|
||
" {\n",
|
||
" \"R_nominal\": \"10000\", \"ratio_label\": \"10:1\", \"C\": Decimal(\"10\"),\n",
|
||
" \"R0_list\": [Decimal(\"998.5\"), Decimal(\"998.4\"), Decimal(\"998.6\"), Decimal(\"998.5\"), Decimal(\"998.5\")],\n",
|
||
" \"R0_prime\": Decimal(\"1002.5\")\n",
|
||
" },\n",
|
||
" {\n",
|
||
" \"R_nominal\": \"2000\", \"ratio_label\": \"1:1\", \"C\": Decimal(\"1\"),\n",
|
||
" \"R0_list\": [Decimal(\"1996.8\"), Decimal(\"1996.9\"), Decimal(\"1996.7\"), Decimal(\"1996.8\"), Decimal(\"1996.8\")],\n",
|
||
" \"R0_prime\": Decimal(\"2002.8\")\n",
|
||
" },\n",
|
||
" {\n",
|
||
" \"R_nominal\": \"2000\", \"ratio_label\": \"10:1\", \"C\": Decimal(\"10\"),\n",
|
||
" \"R0_list\": [Decimal(\"199.7\"), Decimal(\"199.6\"), Decimal(\"199.7\"), Decimal(\"199.8\"), Decimal(\"199.7\")],\n",
|
||
" \"R0_prime\": Decimal(\"201.2\")\n",
|
||
" },\n",
|
||
" {\n",
|
||
" \"R_nominal\": \"200\", \"ratio_label\": \"1:1\", \"C\": Decimal(\"1\"),\n",
|
||
" \"R0_list\": [Decimal(\"199.65\"), Decimal(\"199.62\"), Decimal(\"199.68\"), Decimal(\"199.64\"), Decimal(\"199.65\")],\n",
|
||
" \"R0_prime\": Decimal(\"201.15\")\n",
|
||
" },\n",
|
||
" {\n",
|
||
" \"R_nominal\": \"200\", \"ratio_label\": \"1:10\", \"C\": Decimal(\"0.1\"),\n",
|
||
" \"R0_list\": [Decimal(\"1996.4\"), Decimal(\"1996.2\"), Decimal(\"1996.5\"), Decimal(\"1996.4\"), Decimal(\"1996.3\")],\n",
|
||
" \"R0_prime\": Decimal(\"2005.4\")\n",
|
||
" },\n",
|
||
" {\n",
|
||
" \"R_nominal\": \"200\", \"ratio_label\": \"10:1\", \"C\": Decimal(\"10\"),\n",
|
||
" \"R0_list\": [Decimal(\"19.96\"), Decimal(\"19.95\"), Decimal(\"19.97\"), Decimal(\"19.96\"), Decimal(\"19.96\")],\n",
|
||
" \"R0_prime\": Decimal(\"20.36\")\n",
|
||
" }\n",
|
||
"]\n",
|
||
"\n",
|
||
"print(f\"成功载入 {len(calibration_data)} 组电桥测量方案。\")"
|
||
],
|
||
"id": "c3bfc04680149d32"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 2. 批量计算、灵敏度分析与不确定度评定"
|
||
],
|
||
"id": "254400fffad68f9"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"delta_n = Decimal(\"5\") # 偏转格数\n",
|
||
"results = []\n",
|
||
"\n",
|
||
"for item in calibration_data:\n",
|
||
" R_nom = item[\"R_nominal\"]\n",
|
||
" ratio = item[\"ratio_label\"]\n",
|
||
" C = item[\"C\"]\n",
|
||
" R0_data = item[\"R0_list\"]\n",
|
||
" R0_prime = item[\"R0_prime\"]\n",
|
||
" \n",
|
||
" R0_mean_temp = sum(R0_data) / Decimal(len(R0_data))\n",
|
||
" delta_R0 = abs(R0_prime - R0_mean_temp)\n",
|
||
" \n",
|
||
" if delta_R0 == 0:\n",
|
||
" S = Decimal(\"Infinity\")\n",
|
||
" delta_inst = Decimal(\"0\")\n",
|
||
" else:\n",
|
||
" S = delta_n * R0_mean_temp / delta_R0\n",
|
||
" delta_inst = R0_mean_temp / S\n",
|
||
" \n",
|
||
" R0_mean, u_R0, u_a_R0, u_b_R0, _ = calculate_stats(R0_data, str(delta_inst))\n",
|
||
" \n",
|
||
" Rx_mean = C * R0_mean\n",
|
||
" u_Rx = C * u_R0\n",
|
||
" u_r_Rx = u_Rx / Rx_mean if Rx_mean != 0 else Decimal(\"0\")\n",
|
||
" Rx_final, u_Rx_final = scientific_round(Rx_mean, u_Rx)\n",
|
||
" \n",
|
||
" results.append({\n",
|
||
" \"R_nominal\": R_nom, \"ratio_label\": ratio, \"C\": C,\n",
|
||
" \"R0_mean\": R0_mean, \"S\": S, \"delta_inst\": delta_inst,\n",
|
||
" \"Rx_mean\": Rx_mean, \"u_Rx\": u_Rx, \"u_r_Rx\": u_r_Rx,\n",
|
||
" \"Rx_final\": Rx_final, \"u_Rx_final\": u_Rx_final\n",
|
||
" })\n",
|
||
"\n",
|
||
"print(\"=\" * 85)\n",
|
||
"print(\" 测 量 结 果 汇 总 表 \")\n",
|
||
"print(\"=\" * 85)\n",
|
||
"header = f\"{'标定电阻':>8} {'比例臂':>8} {'R0均值(Ω)':>12} {'灵敏度S':>10} {'Δ_inst(Ω)':>12} {'Rx(Ω)':>12} {'u(Rx)(Ω)':>10} {'相对不确定度':>10}\"\n",
|
||
"print(header)\n",
|
||
"print(\"-\" * 85)\n",
|
||
"for res in results:\n",
|
||
" S_str = f\"{res['S']:.1f}\" if res['S'] != Decimal(\"Infinity\") else \"∞\"\n",
|
||
" print(f\"{res['R_nominal'] + ' Ω':>8} {res['ratio_label']:>8} {res['R0_mean']:>12.4f} {S_str:>10} \"\n",
|
||
" f\"{res['delta_inst']:>12.4f} {res['Rx_mean']:>12.4f} {res['u_Rx']:>10.4f} {res['u_r_Rx']*100:>9.2f}%\")\n",
|
||
"print(\"=\" * 85)\n",
|
||
"\n",
|
||
"print(\"\\n\" + \"*\" * 55)\n",
|
||
"print(\" 最 终 规 范 修 约 结 果 \")\n",
|
||
"print(\"*\" * 55)\n",
|
||
"for res in results:\n",
|
||
" print(f\"标定 {res['R_nominal']:>5} Ω (比例臂 {res['ratio_label']:>4}) : Rx = {res['Rx_final']} ± {res['u_Rx_final']} Ω\")\n",
|
||
"print(\"*\" * 55)"
|
||
],
|
||
"id": "9a88f538183e4b0c"
|
||
}
|
||
],
|
||
"metadata": {
|
||
"language_info": {
|
||
"name": "python"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|