{ "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 }