Calibration constants¶
The empirical constants that map drive register values to physical quantities. Both control codebases (code/adcl_winsoft/, code/wind_tunnel_control/) use these; keep them in sync when refreshing.
REF1 ↔ drive RPM¶
$$ \mathrm{REF1} = \mathrm{drive_RPM} \times 22.42 $$
- Source:
WT_MS_2/captures/ref1_sweep_20260513_143847.csvfromcode/wind_tunnel_control/ref1_sweep.ps1. - Date measured: 2026-05-13.
- Residual error: ±1 % across the range tested (0–800 RPM).
- Operating range: 0–880 RPM (motor nameplate).
- In code:
code/adcl_winsoft/src/adcl_winsoft/vfd/controller.py—REF1_PER_RPM = 22.42code/wind_tunnel_control/WindTunnelControl.ps1— the equivalent constant
- Theoretical reference: ABB nominal scaling is
REF1_max = 20000atdrive_RPM = nominal_speed. Withnominal_speed = 880 RPMwe expect20000 / 880 ≈ 22.73. Our empirical 22.42 is within 1.4 % — consistent with the motor running slightly above its nameplate slip estimate.
drive RPM ↔ wind speed¶
For drive_RPM > 300 (below this, the static-ring pressure transducer is in noise):
$$ \mathrm{wind_speed_{MPH}} \approx 0.0822 \times \mathrm{drive_RPM} - 13.14 $$
- Source:
WT_MS_2/captures/rpm_velocity_20260513_144742.csvfromcode/wind_tunnel_control/rpm_velocity_sweep.ps1. - Date measured: 2026-05-13.
- Residual error: ±1.1 MPH across the fitted range (400–800 RPM).
- Behaviour below 300 RPM: wind speed reads 0 because the differential pressure across the static ring falls below the transducer's sensitivity.
Conversion to m/s: m/s = MPH × 0.4470.
Per-channel DAQ calibration (slopes and offsets)¶
These live in code/adcl_winsoft/src/adcl_winsoft/daq/channel_map.py. Each cDAQ channel has a slope and offset that convert raw electrical units (mA, V, mV/V) to engineering units. They are not documented in this page because they change per-channel and per-transducer; the channel map is the source of truth.
PGB sting matrix calibration¶
The PGB sting force balance uses a 3×3 inverse matrix (N_C1_inv.csv) plus an optional secondary correction (N_C1_inv_C2.csv) to convert three bridge readings (mV/V) to three forces and a moment.
- Files (read-only, inherited from AeroWare):
E:\Wind_tunnel\AeroWare\Configs\N_C1_inv.csv,E:\Wind_tunnel\AeroWare\Configs\N_C1_inv_C2.csv. - Applied by:
code/adcl_winsoft/src/adcl_winsoft/daq/calibration.py.
These matrices are calibrated against known applied loads. Sanity-check by applying a calibration weight to each axis and verifying the calculated force matches.
Sutherland viscosity (for Reynolds number)¶
For air at lab temperatures (~20 °C), the dynamic viscosity is approximately 1.82 × 10⁻⁵ Pa·s and density is approximately 1.20 kg/m³. The code uses Sutherland's law for slightly better accuracy across the room temperature range; the implementation is in daq/calibration.py.
Reynolds number computation uses the operator-entered model characteristic length (asked for at first launch).
Refresh procedure¶
See Maintenance → Calibration refresh for the per-step procedure. The summary:
- Re-run
ref1_sweep.ps1andrpm_velocity_sweep.ps1. - Re-fit. Compare to existing constants.
- If different by more than thresholds (1 % for REF1 scaling, 5 % for velocity), update the constants in both code locations and on this page.
- Commit the change with a reference to the sweep CSVs.
- File the new sweep CSVs in a
WT_MS_<n>/captures/folder.
Change history¶
| Date | What | Value |
|---|---|---|
| 2026-05-13 | Initial calibration after Win11 migration | REF1 = RPM × 22.42 · MPH ≈ 0.0822·RPM − 13.14 |