diff options
Diffstat (limited to 'electrical-specifications.typ')
| -rw-r--r-- | electrical-specifications.typ | 266 |
1 files changed, 10 insertions, 256 deletions
diff --git a/electrical-specifications.typ b/electrical-specifications.typ index 2a9ec15..743c643 100644 --- a/electrical-specifications.typ +++ b/electrical-specifications.typ @@ -1,5 +1,4 @@ #import "lib/unify.typ": qty, qtyrange -#import "@preview/cetz:0.5.2" = Electrical specifications <electrical-specifications> @@ -60,20 +59,7 @@ While all inputs must accept bipolar signals, some mathematical functions do not accept the full range (e.g. logarithm, division, etc.). In that case, the module must include an out-of-domain handling strategy, and document it: -#figure( - table( - columns: 3, - table.header([Strategy], [Description], [Example use cases]), - [Clamp], [Output held at boundary], [Logarithm], - [Hold], [Freeze last valid output], [Integrator], - [Fold], [Reflect at boundary], [Chaotic attractor], - [Wrap], [Wrap around range], [Phase accumulator], - [Oscillate], [Bounded, specified oscillation], [Implicit function solver], - [Zero], [Output $qty(0, "V")$], [Divider], - [Passthrough], [Input passes unchanged], [Signal conditioner], - ), - caption: [Out-of-domain handling stategies], -) <table-out-of-domain-handling-strategies> +#include "tables/out-of-domain-handling-strategies.typ" When such a case occurs, an error gate must be fired on a dedicated error jack output. On multiple channels modules, there should be one such error gate per @@ -96,17 +82,7 @@ worst-case single-connection loading error is 10ppm, compatible with Metrologic tier precision. When stacking multiple inputs on a single output via banana jacks, the parallel input impedance must be considered: -#figure( - table( - columns: 3, - table.header([Inputs stacked], [Parallel $Z_"in"$], [Loading error]), - [1], [$qty(1, "mega ohm")$], [$qty(10, "ppm")$], - [4], [$qty(250, "kilo ohm")$], [$qty(40, "ppm")$], - [10], [$qty(100, "kilo ohm")$], [$qty(100, "ppm")$], - [40], [$qty(25, "kilo ohm")$], [$qty(400, "ppm")$], - ), - caption: [Loading error per inputs stacked], -) <table-loading-error> +#include "tables/loading-error.typ" Module designers should document expected fan-out in module specifications. For typical patches ($lt.eq 10$ connections per output), loading error remains a @@ -126,18 +102,7 @@ error type per channel. Space constraints may force the module designer to aggregate multiple error gates (OR operator). In that case, out-of-domain and internal errors must never be aggregated. -#figure( - table( - columns: 2, - table.header([Source], [Category]), - [Clipping], [Internal], - [PWAM Soft Saturation], [Internal], - [Domain Violation], [Out-of-Domain], - [Passthrough Active], [Out-of-Domain], - [Servo Unlock], [Internal], - ), - caption: [Examples of error gates], -) <table-examples-of-error-gates> +#include "tables/examples-of-error-gates.typ" === Bandwidth <bandwidth> @@ -294,34 +259,7 @@ are met. ===== Summary <precision-measurements-conditions-summary> -#figure( - table( - columns: 3, - table.header([Parameter], [Range], [Variation]), - [Temperature], [$plus qty(15, "dC") "to" plus qty(30, "dC")$], [$plus.minus qty(2, "celsius per hour")$], - - [Relative humidity], [$qtyrange(30, 79, "percent") "RH"$], [$plus.minus qty(5, "percent") "RH"$], - - [Atmospheric pressure], [$qtyrange(800, 1100, "hPa")$], [$plus.minus qty(50, "hecto pascal per day")$], - - [RF immunity], [$qty(3, "volt per meter"), qtyrange(80, 1000, "MHz")$], [N/A], - - [Magnetic field (DC)], [$lt qty(1, "ampere per meter")$], [N/A], - - [Magnetic field (AC)], [$lt qty(0.3, "ampere per meter")$], [N/A], - - [Vibration], [$lt qty(0.5, "g"), qtyrange(5, 500, "Hz")$], [N/A], - - [Shock], [$lt qty(5, "g"), qty(11, "ms")$], [N/A], - - [Air quality], [Indoor, filtered], [N/A], - - [Lighting], [No direct sunlight], [N/A], - - [Background radiation], [$lt qty(1, "micro sievert per hour")$], [N/A], - ), - caption: [Summary of the precision measurements conditions], -) <table-precision-measurements-conditions-summary> +#include "tables/precision-measurements-conditions-summary.typ" Note that electrical supply requirements will be discussed in @power-distribution. @@ -363,27 +301,7 @@ $qty(0.014, "ppm per hour")$. We recommend daily calibration verification. === Summary <precision-tiers-summary> -#figure( - table( - columns: 4, - table.header([Parameter], [Educational], [Industrial], [Metrologic]), - [Precision], - [$qty(0.1, "percent") (qty(1000, "ppm"))$], - [$qty(0.01, "percent") (qty(100, "ppm"))$], - [$qty(0.00, "percent")% (qty(10, "ppm"))$], - - [SNR], [$qty(70, "dB")$], [$qty(80, "dB")$], [$qty(90, "dB")$], - - [Result validity], [$plus.minus qty(0.1, "V")$], [$plus.minus qty(10, "mV")$], [$plus.minus qty(1, "mV")$], - - [Maximum drift rate], [$qty(60, "ppm per hour")$], [$qty(0.6, "ppm per hour")$], [$qty(0.014, "ppm per hour")$], - - [Drift-free computation], [$approx qty(16, "h")$], [$approx qty(7, "day")$], [$approx qty(30, "day")$], - - [Calibration verification], [Before each session], [Daily], [Daily], - ), - caption: [Precision tiers summary], -) <table-precision-tiers-summary> +#include "tables/precision-tiers-summary.typ" ==== Drift rate derivation <drift-rate-derivation> @@ -391,18 +309,7 @@ The drift rates are calculated such that total accumulated drift over the drift-free computation period consumes approximately $qty(100, "percent")$ of the precision budget. -#figure( - table( - columns: 4, - table.header([Tier], [Precision], [Drift rate], [Time to drift $qty(100, "percent")$ of budget]), - [*Educational*], [$qty(1000, "ppm")$], [$qty(60, "ppm per hour")$], [$approx qty(16, "h")$], - - [*Industrial*], [$qty(100, "ppm")$], [$qty(0.6, "ppm per hour")$], [$approx qty(7, "day")$], - - [*Metrologic*], [$qty(10, "ppm")$], [$qty(0.014, "ppm per hour")$], [$approx qty(30, "day")$], - ), - caption: [Drift rate derivations], -) <table-drift-rate-derivation> +#include "tables/drift-rate-derivation.typ" == Power distribution <power-distribution> @@ -552,18 +459,7 @@ an ovenized crystal oscillator, the front panel must provide a standby switch, to shut down the unit while maintaining the diode at temperature. The standby mode power consumption should not exceed 200mA. -#figure( - [``` - Calibration Coarse: Position X - Calibration Fine: Position Y - +15.00V DIP: 0bXXXXXXXX - -15.00V DIP: 0bXXXXXXXX - Ambient Temperature: XX°C - Date: YYYY-MM-DD - Reference DMM: [model, cal date] - ```], - caption: "Example of calibration log", -) <example-calibration-log> +#include "listings/example-calibration-log.typ" === Backplane connector <backplane-connector> @@ -573,151 +469,9 @@ power distribution board, a short DB-25 male to male cable is used to connect the cassette to the power distribution board. D-sub connectors are ubiquitous, sturdy and shielded. -#figure( - cetz.canvas({ - import cetz.draw: * - - let dx = 1.0 - let top-y = 0.55 - let bot-y = -0.55 - - // Outer mounting flange / metal ears - rect( - (-2.0, -1.4), - (14.0, 1.4), - rx: 0.2, - fill: luma(245), - stroke: 1pt + luma(100), - ) - - // Left and right chassis mounting screw holes - circle((-1.3, 0), radius: 0.35, fill: luma(220), stroke: 1pt + luma(120)) - circle((-1.3, 0), radius: 0.20, fill: white, stroke: 0.8pt + luma(100)) - circle((13.3, 0), radius: 0.35, fill: luma(220), stroke: 1pt + luma(120)) - circle((13.3, 0), radius: 0.20, fill: white, stroke: 0.8pt + luma(100)) - - // D-Sub trapezoidal shroud outline - line( - (-0.7, 1.15), - (12.7, 1.15), - (12.2, -1.15), - (-0.2, -1.15), - close: true, - fill: luma(230), - stroke: 1.5pt + black, - ) - - // Shell Earth ground connection reference - line((-0.45, -1.15), (-0.45, -2.0), stroke: ( - paint: luma(120), - thickness: 0.7pt, - dash: "dashed", - )) - content( - (-0.45, -2.05), - text(size: 7.5pt, weight: "bold")[Shell: Chassis Earth], - angle: -50deg, - anchor: "north-west", - ) - - // Top row pins (Pins 1 to 13) - let top-pins = ( - ("1", [$plus qty(15.00, "V")$]), - ("2", [$plus qty(15.00, "V")$]), - ("3", [$qty(-15.00, "V")$]), - ("4", [$qty(-15.00, "V")$]), - ("5", [AGND]), - ("6", [AGND]), - ("7", [AGND]), - ("8", [$plus qty(10.0000, "V")$ Force]), - ("9", [$plus qty(10.0000, "V")$ Sense]), - ("10", [$qty(-10.0000, "V")$ Force]), - ("11", [$qty(-10.0000, "V")$ Sense]), - ("12", [AGND]), - ("13", [AGND]), - ) - - // Bottom row pins (Pins 14 to 25) - let bot-pins = ( - ("14", [AGND]), - ("15", [AGND]), - ("16", [AGND]), - ("17", [DGND]), - ("18", [DGND]), - ("19", [$plus qty(5.0, "VD")$]), - ("20", [$qty(-5.0, "VD")$]), - ("21", [Stagger]), - ("22", [_Reserved_]), - ("23", [_Reserved_]), - ("24", [_Reserved_]), - ("25", [Chassis Earth]), - ) - - // Draw Top Pins (1-13) - for (i, p) in top-pins.enumerate() { - let x = i * dx - let p-num = p.at(0) - let p-sig = p.at(1) - - circle((x, top-y), radius: 0.26, fill: white, stroke: 1pt + black) - content((x, top-y), text(size: 7pt, weight: "bold")[#p-num]) - - line((x, top-y + 0.26), (x, 1.8), stroke: ( - paint: luma(120), - thickness: 0.6pt, - )) - content( - (x, 1.85), - text(size: 7.5pt)[#p-sig], - angle: 50deg, - anchor: "south-west", - ) - } - - // Draw Bottom Pins (14-25) - for (j, p) in bot-pins.enumerate() { - let x = (j + 0.5) * dx - let p-num = p.at(0) - let p-sig = p.at(1) - - circle((x, bot-y), radius: 0.26, fill: white, stroke: 1pt + black) - content((x, bot-y), text(size: 7pt, weight: "bold")[#p-num]) - - line((x, bot-y - 0.26), (x, -1.8), stroke: ( - paint: luma(120), - thickness: 0.6pt, - )) - content( - (x, -1.85), - text(size: 7.5pt)[#p-sig], - angle: -50deg, - anchor: "north-west", - ) - } - }), - caption: [DB-25 backplane connector physical pinout and signal allocation diagram.], -) <figure-backplane-connector-diagram> - -#figure( - table( - columns: 4, - table.header([Pin], [Signal], [Pin], [Signal]), - [1], [$plus qty(15.00, "V")$], [14], [AGND], - [2], [$plus qty(15.00, "V")$], [15], [AGND], - [3], [$qty(-15.00, "V")$], [16], [AGND], - [4], [$qty(-15.00, "V")$], [17], [DGND], - [5], [AGND], [18], [DGND], - [6], [AGND], [19], [$plus qty(5.0, "VD")$], - [7], [AGND], [20], [$qty(-5.0, "VD")$], - [8], [$plus qty(10.0000, "V")$ Force], [21], [Stagger], - [9], [$plus qty(10.0000, "V")$ Sense], [22], [_Reserved_], - [10], [$qty(-10.0000, "V")$ Force], [23], [_Reserved_], - [11], [$qty(-10.0000, "V")$ Sense], [24], [_Reserved_], - [12], [AGND], [25], [Chassis Earth], - [13], [AGND], [Shell], [Chassis Earth], - ), - caption: "DB-25 backplane connector pin allocation", -) <table-backplane-connector> +#include "diagrams/backplane-connector-diagram.typ" + +#include "tables/backplane-connector.typ" The $qty(10, "MHz")$ Master Oscillator is distributed via a dedicated rear-panel BNC connector, not through the DB-25 backplane connector. |
