Analog Front-End and Calibration Interface
Between raw sensor and digital sample sits the analog front end; its interface defines conditioning, ADC quantization, and the calibration chain.
Turning volts into trusted numbers
Every physical interface ultimately produces a voltage that must be conditioned, digitized, and calibrated before any layer trusts it. The analog front end (AFE) sets gain, filtering, and anti-alias limits; the ADC sets resolution and dynamic range; the calibration chain makes the number traceable. This is the interface that decides a reading's noise floor and its truth.
The chain
# raw voltage -> engineering unit (per channel)
v_cond = afe_gain[ch]*(v_raw - offset[ch]) # condition
v_filt = antialias_filter(v_cond, f_cut[ch]) # before sampling
code = adc_sample(v_filt, bits[ch]) # quantize
value = calib_poly[ch](code) * unit[ch] # traceable EU
value = drift_correct(value, cal_epoch[ch]) # apply latest cal
Two design choices dominate: the anti-alias filter must sit below the Nyquist limit for the channel's sample rate, and the ADC dynamic range must cover both quiescent noise and the largest transient without clipping. A channel that clips during a disruption is worse than useless because it corrupts the reconstruction.
Calibration and drift
- Per-channel calibration polynomial with an epoch and uncertainty.
- Drift tracking: readings tagged with the age of their last calibration.
- Health: dead-sensor and out-of-range detection before ingestion.
- Feeds the calibration provenance record.
Owner: L2 for the AFE/ADC and calibration store. Every downstream layer consumes engineering-unit values that carry their calibration provenance, so the twin and copilots never reason on an uncalibrated or stale number. Design-and-simulation specification, applied identically across both machines' 60+ port channels.