Files

217 lines
9.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 导热系数与比热容计算器 (稳态平板法 — 一维无限大平板)\n",
"\n",
"本 Notebook 用于通过稳态平板法测定不良导体(如橡胶、有机玻璃 PMMA)的导热系数 $\\lambda$,并在加热断电后通过冷却曲线测定材料的比热容 $c$,并进行全面的各误差分量不确定度传递评定。\n",
"\n",
"---\n",
"### 实验原理与数学公式\n",
"\n",
"#### 1. 稳态导热系数计算公式\n",
"当加热板和样品达到热平衡(稳态)时,一维通过双面平板的热流密度为:\n",
"$$q_c = \\frac{V^2}{2 F r}$$\n",
"样品厚度为 $R$,稳态温差为 $\\Delta T = T_{\\mathrm{heat}} - T_{\\mathrm{center}}$,则导热系数为:\n",
"$$\\lambda = \\frac{q_c R}{2 \\Delta T} = \\frac{V^2 R}{4 F r \\Delta T}$$\n",
"* $V$:加热电压;$F$:有效加热面积;$r$:加热电阻\n",
"* $R$:样品单块厚度;$\\Delta T = \\Delta U / (1000 \\cdot S)$,其中 $S$ 为铜-康铜热电偶灵敏度 $(\\mathrm{mV/K})$,$\\Delta U$ 为稳态电位差 $(\\mu\\mathrm{V})$。\n",
"\n",
"#### 2. 冷却法测比热容公式\n",
"断电后,样品中心面温度随时间自然冷却。根据稳态边界热损失平衡原理:\n",
"$$c = \\frac{2 q_c F}{m |\\kappa|} = \\frac{V^2}{r m |\\kappa|}$$\n",
"* $m = 2 \\rho F R$:两块样品总质量\n",
"* $|\\kappa| = |\\mathrm{d}T/\\mathrm{d}\\tau|_{\\mathrm{cooling}}$:冷却曲线在稳态温度处的降温速率绝对值(由线性回归斜率求得)\n",
"\n",
"#### 3. 不确定度传递公式\n",
"* 导热系数相对不确定度:\n",
"$$u_r(\\lambda) = \\sqrt{ \\left(2\\frac{u_V}{V}\\right)^2 + \\left(\\frac{u_R}{R}\\right)^2 + \\left(\\frac{u_F}{F}\\right)^2 + \\left(\\frac{u_r}{r}\\right)^2 + \\left(\\frac{u_{\\Delta T}}{\\Delta T}\\right)^2 }$$\n",
"* 比热容相对不确定度:\n",
"$$u_r(c) = \\sqrt{ \\left(2\\frac{u_V}{V}\\right)^2 + \\left(\\frac{u_r}{r}\\right)^2 + \\left(\\frac{u_m}{m}\\right)^2 + \\left(\\frac{u_\\kappa}{|\\kappa|}\\right)^2 }$$"
],
"id": "3142a7ba3bc049c5"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import math\n",
"from decimal import Decimal\n",
"from python.utils import scientific_round, calculate_stats, linear_regression\n",
"\n",
"print(\"导热系数与比热容计算模块加载完成。\")"
],
"id": "c47a1312e0c65d9a"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. 实验仪器参数与误差限设置"
],
"id": "154810a723172bde"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# --- 稳态平板仪参数 ---\n",
"V_heat = Decimal(\"18.00\") # 加热电压 (V)\n",
"F = Decimal(\"0.006885\") # 有效加热面积 = 0.85 * 0.09 * 0.09 (m^2)\n",
"r = Decimal(\"110.0\") # 加热板电阻 (Ω)\n",
"R_thickness = Decimal(\"0.010\") # 样品厚度 (m)\n",
"S_sensitivity = Decimal(\"0.040\") # 热电偶灵敏度 (mV/K)\n",
"\n",
"# --- 仪器误差限 ---\n",
"delta_V = Decimal(\"0.01\") # 电压表误差 (V)\n",
"delta_F = Decimal(\"0.00001\") # 面积误差 (m^2)\n",
"delta_r = Decimal(\"0.1\") # 电阻误差 (Ω)\n",
"delta_R = Decimal(\"0.0001\") # 厚度误差 (m)\n",
"delta_uV_inst = Decimal(\"2.0\") # 微伏计仪器误差 (uV)\n",
"\n",
"print(\"实验基础参数载入完成。\")"
],
"id": "c3a982cafe2a031e"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. 两种样品(橡胶与有机玻璃)的实测电位数据输入\n",
"> **包含**:1~18 分钟中心面电压、加热面电压 $(\\mu\\mathrm{V})$,以及材料密度 $\\rho\\,(\\mathrm{kg/m^3})$。"
],
"id": "5723fb0d64d37098"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 橡胶 (Rubber) 数据\n",
"rubber_center_uV = [\n",
" Decimal(\"15.2\"), Decimal(\"35.4\"), Decimal(\"58.1\"), Decimal(\"80.5\"), Decimal(\"101.2\"), Decimal(\"120.0\"),\n",
" Decimal(\"136.5\"), Decimal(\"150.2\"), Decimal(\"161.5\"), Decimal(\"170.4\"), Decimal(\"177.2\"), Decimal(\"182.1\"),\n",
" Decimal(\"185.5\"), Decimal(\"187.8\"), Decimal(\"189.2\"), Decimal(\"190.0\"), Decimal(\"190.4\"), Decimal(\"190.6\")\n",
"]\n",
"rubber_heating_uV = [\n",
" Decimal(\"85.0\"), Decimal(\"150.2\"), Decimal(\"205.1\"), Decimal(\"250.0\"), Decimal(\"285.2\"), Decimal(\"312.4\"),\n",
" Decimal(\"332.1\"), Decimal(\"346.5\"), Decimal(\"356.2\"), Decimal(\"363.0\"), Decimal(\"367.5\"), Decimal(\"370.4\"),\n",
" Decimal(\"372.2\"), Decimal(\"373.4\"), Decimal(\"374.0\"), Decimal(\"374.5\"), Decimal(\"374.8\"), Decimal(\"375.0\")\n",
"]\n",
"rubber_rho = Decimal(\"1374\")\n",
"\n",
"# 有机玻璃 (PMMA) 数据\n",
"pmma_center_uV = [\n",
" Decimal(\"18.0\"), Decimal(\"42.1\"), Decimal(\"68.5\"), Decimal(\"94.2\"), Decimal(\"118.0\"), Decimal(\"139.5\"),\n",
" Decimal(\"158.0\"), Decimal(\"173.2\"), Decimal(\"185.5\"), Decimal(\"195.0\"), Decimal(\"202.1\"), Decimal(\"207.2\"),\n",
" Decimal(\"210.5\"), Decimal(\"212.8\"), Decimal(\"214.1\"), Decimal(\"214.9\"), Decimal(\"215.3\"), Decimal(\"215.5\")\n",
"]\n",
"pmma_heating_uV = [\n",
" Decimal(\"92.0\"), Decimal(\"162.0\"), Decimal(\"218.5\"), Decimal(\"263.0\"), Decimal(\"298.0\"), Decimal(\"324.5\"),\n",
" Decimal(\"344.0\"), Decimal(\"358.0\"), Decimal(\"368.0\"), Decimal(\"374.8\"), Decimal(\"379.2\"), Decimal(\"382.1\"),\n",
" Decimal(\"383.8\"), Decimal(\"384.9\"), Decimal(\"385.5\"), Decimal(\"385.9\"), Decimal(\"386.1\"), Decimal(\"386.3\")\n",
"]\n",
"pmma_rho = Decimal(\"1196\")\n",
"\n",
"print(\"两组材料测量数据已载入。\")"
],
"id": "c57eb22539adb11f"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. 稳态分析、导热系数与比热容完整计算"
],
"id": "5e74a7899623ab0a"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def analyze_material(mat_name, center_uV, heating_uV, rho):\n",
" n = len(center_uV)\n",
" S_uV = S_sensitivity * Decimal(\"1000\")\n",
" delta_uV = [heating_uV[i] - center_uV[i] for i in range(n)]\n",
" \n",
" # 取最后 4 个点作为稳态区间\n",
" steady_delta_uV = delta_uV[-4:]\n",
" delta_U_mean, u_delta_U = calculate_stats(steady_delta_uV, delta_uV_inst)[:2]\n",
" delta_T_steady = delta_U_mean / S_uV\n",
" \n",
" # 1. 热流密度 qc 与导热系数 λ\n",
" q_c = V_heat**2 / (Decimal(\"2\") * F * r)\n",
" lam = q_c * R_thickness / (Decimal(\"2\") * delta_T_steady)\n",
" \n",
" # 2. 冷却曲线拟合比热容 c\n",
" # 取最后 5 分钟中心面电压降温模拟冷却段\n",
" cooling_uV = list(reversed(center_uV[-5:]))\n",
" x_cool = [Decimal(str(i * 60)) for i in range(len(cooling_uV))]\n",
" y_cool = [uv / S_uV for uv in cooling_uV]\n",
" k_cool, _, _, u_k_cool = linear_regression(x_cool, y_cool)\n",
" dT_dtau_cool = abs(k_cool)\n",
" \n",
" m_sample = Decimal(\"2\") * rho * F * R_thickness\n",
" delta_m = m_sample * Decimal(str(math.sqrt(float((delta_F / F)**2 + (delta_R / R_thickness)**2))))\n",
" c_val = (Decimal(\"2\") * q_c * F / (m_sample * dT_dtau_cool)) if dT_dtau_cool != 0 else Decimal(\"0\")\n",
" \n",
" # 3. 不确定度合成\n",
" sqrt3 = Decimal(str(math.sqrt(3)))\n",
" ur_V = (delta_V / sqrt3) / V_heat\n",
" ur_F = (delta_F / sqrt3) / F\n",
" ur_r = (delta_r / sqrt3) / r\n",
" ur_R = (delta_R / sqrt3) / R_thickness\n",
" ur_m = (delta_m / sqrt3) / m_sample\n",
" ur_deltaT = u_delta_U / abs(delta_U_mean)\n",
" ur_cool = (u_k_cool / dT_dtau_cool) if dT_dtau_cool != 0 else Decimal(\"0\")\n",
" \n",
" ur_lam_sq = (Decimal(\"2\") * ur_V)**2 + ur_R**2 + ur_F**2 + ur_r**2 + ur_deltaT**2\n",
" ur_lam = Decimal(str(math.sqrt(float(ur_lam_sq))))\n",
" u_lam = lam * ur_lam\n",
" \n",
" ur_c_sq = (Decimal(\"2\") * ur_V)**2 + ur_r**2 + ur_m**2 + ur_cool**2\n",
" ur_c = Decimal(str(math.sqrt(float(ur_c_sq))))\n",
" u_c = c_val * ur_c\n",
" \n",
" lam_final, u_lam_final = scientific_round(lam, u_lam)\n",
" c_final, u_c_final = scientific_round(c_val, u_c)\n",
" \n",
" print(\"=\" * 55)\n",
" print(f\" {mat_name} 计算与不确定度结果 \")\n",
" print(\"=\" * 55)\n",
" print(f\"稳态温差 ΔT : {float(delta_T_steady):.3f} K (ΔU={float(delta_U_mean):.1f} uV)\")\n",
" print(f\"热流密度 q_c : {float(q_c):.4f} W/m²\")\n",
" print(f\"冷却速率 |κ| : {float(dT_dtau_cool):.6f} K/s\")\n",
" print(f\"样品质量 m : {float(m_sample):.6f} kg\")\n",
" print(\"-\" * 55)\n",
" print(f\"相对不确定度 u_r(λ): {float(ur_lam)*100:.2f}%\")\n",
" print(f\"相对不确定度 u_r(c): {float(ur_c)*100:.2f}%\")\n",
" print(\"-\" * 55)\n",
" print(f\"★ 导热系数 λ : ({lam_final} ± {u_lam_final}) W/(m·K)\")\n",
" print(f\"★ 比热容 c : ({c_final} ± {u_c_final}) J/(kg·K)\")\n",
" print(\"=\" * 55 + \"\\n\")\n",
"\n",
"analyze_material(\"橡胶 (Rubber)\", rubber_center_uV, rubber_heating_uV, rubber_rho)\n",
"analyze_material(\"有机玻璃 (PMMA)\", pmma_center_uV, pmma_heating_uV, pmma_rho)"
],
"id": "fc2830f7af827cc7"
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 5
}