aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Chevalier <perso@denischevalier.fr>2026-08-11 10:41:03 +0200
committerDenis Chevalier <perso@denischevalier.fr>2026-08-11 10:41:10 +0200
commit40f281203b9a51bf98d6a2ffaac7275d1b6408de (patch)
tree9cea8e7c7b2c92882d403849f136bf7bd4e13249
parent09f9750fc49f94ad524669c7cda26f3154b88c47 (diff)
downloadsame-40f281203b9a51bf98d6a2ffaac7275d1b6408de.tar.gz
same-40f281203b9a51bf98d6a2ffaac7275d1b6408de.tar.bz2
same-40f281203b9a51bf98d6a2ffaac7275d1b6408de.zip
add resistor-tempco (start drift sources)
-rw-r--r--module-design.typ116
-rw-r--r--tables/resistor-tempco-typical-magnitude.typ37
2 files changed, 149 insertions, 4 deletions
diff --git a/module-design.typ b/module-design.typ
index 5fcb363..4234f3d 100644
--- a/module-design.typ
+++ b/module-design.typ
@@ -2068,10 +2068,118 @@ dynamic and independent. Mitigation requires strict structural and layout rule:
==== Drift sources <drift-sources>
-Drift sources contribute to the systematic error budget over time. Unlike noise,
-drift is deterministic: it has identifiable physical causes and can be
-compensated through appropriate topologies. Drift determines the useful
-computation duration before recalibration is required.
+Drift sources contribute to the systematic error budget over time
+($dv(epsilon, t)$). Unlike random noise, drift is deterministic: it has
+identifiable physical causes and can be compensated through appropriate
+topologies. Drift determines the useful maximum duration of continuous
+computation before recalibration or zero-nulling is required.
+
+===== Resistor temperature coefficient <resistor-temperature-coefficient>
+
+====== Physical mechanism <resistor-tempco-physical-mechanism>
+
+The resistance of a conductor changes with temperature due to two competing
+atomic effects:
+
+/ Lattice scattering: In pure metals and alloys, increased thermal vibration of
+ the crystal lattice impedes electron-phonon collisions, impeding charge flow
+ and raising resistance with temperature (positive temperature coefficient,
+ PTC),
+/ Carrier concentration: In semiconductors and certain metal oxides, thermal
+ energy liberates additional charge carriers into the conduction band,
+ decreasing resistance with temperature (negative temperature coefficient,
+ NTC).
+
+Precision resistors utilize carefully controlled foil or thin-film alloys
+(typically nickel-chromium / NiCr) where these effects partially cancel,
+yielding exceptionally low net temperature coefficients.
+
+====== Mathematical model <resistor-tempco-mathematical-model>
+
+The resistance $R(T)$ as a function o temperature $T$ is modeled via a Taylor
+expansion around reference temperature $T_0$ (typically $qty(25, "dC")$):
+
+$ R(T) = R_0 dot [1 + alpha_1 (T - T_0) + alpha_2 (T - T_0)^2 + ...] $
+
+Where:
+- $R_0$ is the nominal resistance at reference temperature $T_0$,
+- $alpha_n$ is the $n$th-order temperature coefficient ($(unit("ppm per celsius"))^n$).
+
+Over normal operating temperature ranges, the linear term dominates:
+
+$ (Delta R) / R_0 approx alpha_1 dot Delta T $
+
+====== Typical magnitude <resistor-tempco-typical-magnitude>
+
+#include "tables/resistor-tempco-typical-magnitude.typ"
+
+For SAME environmental specification ($plus.minus qty(2, "celsius per hour")$
+variation), an uncompensated discrete $qty(25, "ppm per celsius")$ resistor
+contributes:
+
+#let delta_r_r0 = 25 * 2
+#assert.eq(delta_r_r0, 50)
+$ (Delta R)/R_0 = 25 times 2 = qty(50, "ppm per hour") $
+
+This single drift component alone exceeds the Metrologic drift budget
+($qty(0.014, "ppm per hour")$) by a factor of $approx 3570$.
+
+====== Where it enters <resistor-tempco-where-it-enters>
+
+/ Gain-setting resistor ratios: A operational amplifier stages, closed-loop gain
+ is $G = (-R_f)/R_"in"$. Drift in either resistor directly alters stage gain
+ unless ratios are matched and coupled,
+/ Absolute voltage references: A resistor divider scaling the
+ $plus.minus qty(10.0000, "V")$ reference experience output drift proportional
+ to the tempco of the individual resistors,
+/ Integrator time constants: The integration rate $1 / tau = 1 /(R C)$ depends on
+ absolute resistance; resistor drift directly alters state trajectory
+ integration speed.
+
+====== The ratio stability principle <resistor-tempco-ratio-stability-principle>
+
+/ Critical insight: In many analog computing topologies, mathematical operations
+ predominantly depend on resistor _ratios_ ($R_A / R_B$) rather than absolute
+ resistance values.
+
+for two resistors with tempcos $alpha_A$ and $alpha_B$:
+
+$
+ (R_A (T)) / (R_B (T)) = (R_(A 0) (1 + alpha_a Delta T)) / (R_(B 0) (1 + alpha_B Delta T)) approx (R_(A 0))/(R_(B 0) [ 1 + (alpha_A - alpha_B) Delta T])
+$
+
+The net ratio tempco is the tracking mistmatch $Delta alpha = alpha_A - alpha_B$.
+When matched resistors from the same batch are placed in close thermal
+proximity on the PCB, their tracking mismatch drops be $lt qty(1, "ppm per celsius")$
+even if individual tempcos are $qty(25, "ppm per celsius").$
+
+Furthermore, monolithic thin-film resistor networks (multiple laser-trimmed
+resistors on a single ceramic substrate) achieve ratio tracking tempcos
+$lt qty(0.2, "ppm per celsius")$ ($qty(200, "ppb per celsius")$).
+
+====== Scaling law <resistor-tempco-scaling-law>
+
+- Absolute single-ended resistance drift scales linearly with temperature
+ variation $Delta T$ and absolute tempco $alpha_1$.
+- In ratiometric feedback configurations, effective gain drift scales with the
+ tracking mismatch $Delta alpha_upright("TC") = |alpha_A - alpha_B|$, reducing
+ thermal drift sensitivity by $25 times$ to $100 times$ relative to uncoupled
+ discrete resistors.
+- Cumulative drift accumulates linearly with time during monotonic ambient
+ temperature ramps.
+
+====== Compensation strategy <resistor-tempco-compensation-strategy>
+
+- Use monolithic matched resistor networks (e.g. LT5400 series or thin-film
+ networks) for all critical gain-setting and attenuator ratios,
+- Isothermal layout: Place critical matched discrete pairs physically adjacent,
+ in identical physical orientation, on common ground plane copper away from
+ localized heat sources,
+- DC servo loops: Implement active offset/gain servos to continuously null drift
+ below the computational frequency band,
+- Auto-calibration against $plus.minus qty(10.0000, "V")$ reference:
+ Periodically correct baseline gains against the system reference standard,
+ which is ovenized to eliminate reference tempco effects.
== Error compensation strategies <error-compensation-strategies>
diff --git a/tables/resistor-tempco-typical-magnitude.typ b/tables/resistor-tempco-typical-magnitude.typ
new file mode 100644
index 0000000..bc94803
--- /dev/null
+++ b/tables/resistor-tempco-typical-magnitude.typ
@@ -0,0 +1,37 @@
+// SAME Analog Modular Ecosystem
+//
+// / SPDX-FileCopyrightText: 2026 Denis Chevalier <perso@denischevalier.fr>
+// / SPDX-License-Identifier: CC-BY-SA-4.0
+// / SPDX-License-Identifier: CERN-OHL-S-2.0+
+// / SPDX-License-Identifier: GPL-3.0-or-later
+//
+// The prose, explanatory text, rendered figures, tables, and mathematical
+// content of this specification are licensed under CC BY-SA 4.0. If a later
+// version of CC BY-SA is published, the author grants permission to distribute
+// this work under that later version as well.
+//
+// Hardware designs contained herein (schematics, PCB layouts, mechanical
+// drawings, and CAD models) are licensed under CERN-OHL-S-2.0+.
+//
+// All executable code, helper libraries (`lib/*`), metrology assertions, and
+// embedded verification scripts throughout the source documents are licensed
+// under the GNU General Public License v3.0 or later (GPL-3.0-or-later).
+
+#import "../lib/unify.typ": qtyrange
+
+#figure(
+ table(
+ columns: 3,
+ table.header([Resistor type], [Tempco ($alpha_1$)], [Notes]),
+ [Carbon film], [$plus.minus qtyrange(200, 500, "ppm per celsius")$], [Unsuitable for precision],
+
+ [Metal film (standard)], [$plus.minus qtyrange(50, 100, "ppm per celsius")$], [Educational tier],
+
+ [Metal film (precision)], [$plus.minus qtyrange(15, 25, "ppm per celsius")$], [Industrial tier],
+
+ [Thin film], [$plus.minus qtyrange(5, 10, "ppm per celsius")$], [Metrologic tier],
+
+ [Bulk metal foil (Vishay)], [$plus.minus qtyrange(0.2, 2, "ppm per celsius")$], [Reference circuits],
+ ),
+ caption: [Resistor temperature coefficient typical magnitudes],
+) <table-resistor-tempco-typical-magnitude>