Load-cell virtual qualification

Executed thermal/load corners, contaminated-calibration rejection, correlated uncertainty, aliasing and zero-tracking fault cases using synthetic data.

Methods and declared inputs

The original 10 kg bridge, 100 Hz sample rate and 25-sample moving average are retained. The corner study adds temperature changes of -10, 0 and +10 C, masses 0/2/5/10 kg, both hysteresis directions and 1.2 g of accumulated drift at 60 s.

The corner criterion is an explicitly selected +/-5 g screen: the empirical 95th percentile of absolute error must be <=5 g. It is not a legal metrology class or a promise of device accuracy. Each corner contains 20,000 generated observations; the first 100 filtered samples are discarded.

Selected synthetic operating envelope: temperature remains within +/-2 C of calibration, zero is established at most 30 s before the reading, and the 25-sample filter is allowed 0.25 s to settle. Sixteen independent-seed load/temperature/direction corners meet the same 5 g screen. Exact extrema of the assumed sinusoidal systematic-error curve, plus 1.96 filtered-noise standard deviations, also bound the entire 0-10 kg interval below 5 g for this generated calibration. The wider +/-10 C, 60 s cases are rejected where they exceed it.

The calibration diagnostic checks mean residual at each mass, rejecting a group exceeding 2 g. This is a completed synthetic acceptance gate for the declared dataset, not a universal detector of bad calibration. Common-mode reference-mass error or a perfectly linear span error can pass residual tests.

The shared-temperature study gives 1.913 g standard uncertainty and 3.826 g expanded uncertainty at k=2 and 5 kg. It uses a separate generated calibration and analytical filter noise. The uncertainty experiment draws 50,000 independent synthetic realizations of all budget terms. Zero and span temperature terms share one rectangular random variable, so their covariance is explicit. k=2 coverage is reported empirically for this assumed error distribution only.

The aliasing example is a 20 g-amplitude, 93 Hz interference tone sampled at 100 Hz. A hypothetical analog filter has two identical 10 Hz first-order poles. Its exact complex response is applied before sampling. Digital averaging acts after aliasing and cannot identify the original frequency.

Executed cases

mass_gtemperature_change_cdirectiondrift_at_60_s_gsystematic_mean_error_gabsolute_error_95th_gmeets_reference_5_g
0.0-10.0unloading1.2-0.97615826145510351.622741236104428True
0.0-10.0loading1.21.04874846630840861.7358560259156148True
0.00.0unloading1.20.53974506526237381.1783282776240036True
0.00.0loading1.22.5278189669384223.145889574464258True
0.010.0unloading1.22.0456776997003352.7056271559036227True
0.010.0loading1.24.0278121896098484.67251153373407True
2000.0-10.0unloading1.2-0.117289831078117570.844244317780317True
2000.0-10.0loading1.21.87277357366875592.52052309574226True
2000.00.0unloading1.21.55057600374462012.196353872977204True
2000.00.0loading1.23.575639908159934.229981779982301True
2000.010.0unloading1.23.2592364105753873.9348566432641174True
2000.010.0loading1.25.2654326143866615.916931490457034False
5000.0-10.0unloading1.20.229855557920161520.9046311273572427True
5000.0-10.0loading1.22.22542222371688242.885594820451888True
5000.00.0unloading1.22.21864898970777122.8722116484677827True
5000.00.0loading1.24.2076785031317924.850492865785054True
5000.010.0unloading1.24.2066679970180384.871812276205719True
5000.010.0loading1.26.2333185685480726.891987950223165False
10000.0-10.0unloading1.2-2.5714942366857283.2496212384493446True
10000.0-10.0loading1.2-0.60214331518951191.2738572862406725True
10000.00.0unloading1.2-0.068485504303091850.7776960418234921True
10000.00.0loading1.21.9073955488520182.5799869811869938True
10000.010.0unloading1.22.43394475605830563.0853332956624397True
10000.010.0loading1.24.4058130139476555.034144054444914False

Acceptance checks

iddescriptionexpectedobservedpassedmethod
thermal-countAll declared thermal/load/direction corners executed2424True4 masses x 3 temperatures x 2 loading directions
thermal-failuresAligned thermal/systematic error can exceed 5 gAt least one adverse corner3TrueDeclared +/-5 g screening criterion on 95th absolute error; failures retained
selected-envelopeSelected temperature/time envelope meets the error screenAll 16 corners <= 5 g4.701848058270707TrueIndependent seed; +/-2 C since calibration and <=30 s drift; both hysteresis directions
continuous-envelopeSelected mass range satisfies a continuous theoretical boundConservative 95% absolute-error bound <= 5 g{'worst_systematic': {'mass_g': 4788.088588382688, 'temperature_change_c': 2.0, 'direction': 1, 'mean_error_g': 4.027639087022941}, 'filtered_noise_std_g': 0.39981535588755024, 'conservative_95pct_absolute_error_g': 4.811262785028603}TrueSolve exact extrema of the declared sinusoidal error curve; add 1.96 filtered-noise standard deviations
calibration-validUncontaminated batch passes residual gateTrueTrueTrue2 g maximum mean residual at each calibration mass
calibration-corruptBiased mass group is rejectedBoth 10 g and 50 g injected biases rejected[False, False]TrueInject group-wide offset into 30 readings at 8 kg; fit with original OLS implementation
covarianceShared temperature source increases varianceCorrelated budget greater than independent{'independent_g': 1.777736266947072, 'correlated_g': 1.9132031347504401}TrueAdd 2*u_zero*u_span for the shared rectangular temperature variable
monte-carloSynthetic correlated uncertainty agrees with analytic varianceStandard deviation difference < 2%5.582826424710419e-06True50000 seeded draws; all bounds and correlation explicit
alias-frequencySampled 93 Hz tone aliases to 7 HzDominant discrete frequency 7 Hz7.0True100 Hz acquisition, frequency folding f_alias = abs(93 - 100)
analog-suppressionDeclared analog filter reduces the aliased amplitudeRMS ratio agrees with transfer magnitude within 1e-80.011429877700308608TrueH(f)=(1+j*f/10)^-2; two identical 10 Hz RC poles
zero-confirmationCorrect empty-pan gate preserves a real 2 g load0.00.0True300 updates with empty confirmation false
wrong-confirmationFalse empty confirmation absorbs a real loadOffset exceeds 1.9 g1.9953349886640968TrueSame updates with deliberately incorrect external empty indication; adverse result

Scope of the evidence

This completes the theoretical and synthetic qualification run-through. No real bridge, ADC, temperature chamber, weights or calibration certificate was used.

The analog filter is an ideal transfer function, not a released circuit. ADC common-mode limits, reference tracking, component tolerances, EMI and physical overload survival are not established by this model.

Systematic effects can align rather than cancel. The failed thermal corners remain visible; a small white-noise standard deviation does not guarantee a small total error.

Zero tracking still depends on a trustworthy external empty-pan indication. The simulation shows why a false confirmation can remove a genuine small load.

Reproduce

python -m pip install -r requirements.txt
python run.py

Acceptance matrix · Evidence record and source hashes · Original analysis

Selected measurement envelope

16 verified selected-envelope corners

Thermal screening and synthetic interference after sampling
Thermal screening and synthetic interference after sampling

All 24 temperature/load corners

Calibration contamination cases

Correlated uncertainty calculation

Analog filtering and aliasing

Synthetic interference trace