# DAQ (Data Acquisition)

Data acquisition systems.

## Instrument and Abstract Driver

| [`InstroDAQ`](https://dev.nominal.io/instro/ref/instruments/instro.daq.InstroDAQ.md#instro.daq.InstroDAQ "instro.daq.InstroDAQ") | Initialize an InstroDAQ. |
| --- | --- |
| [`DAQDriverBase`](https://dev.nominal.io/instro/ref/instruments/instro.daq.DAQDriverBase.md#instro.daq.DAQDriverBase "instro.daq.DAQDriverBase") | Vendor DAQ driver contract. |
| [`HWTimestamper`](https://dev.nominal.io/instro/ref/instruments/instro.daq.drivers.HWTimestamper.md#instro.daq.drivers.HWTimestamper "instro.daq.drivers.HWTimestamper") | Contiguous nanosecond timestamps for hardware-timed DAQ batches. |

## Vendor Drivers

| Vendor | Model | Description |
| --- | --- | --- |
| Keysight | [`34980A`](https://dev.nominal.io/instro/ref/instruments/instro.daq.drivers.keysight_34980a.Keysight34980A.md#instro.daq.drivers.keysight_34980a.Keysight34980A "instro.daq.drivers.keysight_34980a.Keysight34980A") | Keysight 34980A Multifunction Switch/Measure Unit. |
| National Instruments | [`NI-DAQmx`](https://dev.nominal.io/instro/ref/instruments/instro.daq.drivers.ni.nidaq.NIDAQDriver.md#instro.daq.drivers.ni.nidaq.NIDAQDriver "instro.daq.drivers.ni.nidaq.NIDAQDriver") | NI-DAQmx DAQ driver. |
| LabJack | [`T-series`](https://dev.nominal.io/instro/ref/instruments/instro.daq.drivers.labjack.t_series.LabJackTSeriesDriver.md#instro.daq.drivers.labjack.t_series.LabJackTSeriesDriver "instro.daq.drivers.labjack.t_series.LabJackTSeriesDriver") | LabJack T-series DAQ driver (T4/T7/T8 via the LJM library). |
| Measurement Computing | [`USB-series`](https://dev.nominal.io/instro/ref/instruments/instro.daq.drivers.mcc.mccdaq.MCCDriver.md#instro.daq.drivers.mcc.mccdaq.MCCDriver "instro.daq.drivers.mcc.mccdaq.MCCDriver") | MCC (Universal Library / mcculw) DAQ driver. |
| Dewesoft | [`DewesoftX (unstable)`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.daq.drivers.dewesoftx.DewesoftX.md#instro.unstable.daq.drivers.dewesoftx.DewesoftX "instro.unstable.daq.drivers.dewesoftx.DewesoftX") | Streams live sync and async channels from a running DewesoftX instance over DCOM. |

## Types & Configuration

| [`DAQVendor`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.DAQVendor.md#instro.daq.types.DAQVendor "instro.daq.types.DAQVendor") |  |
| --- | --- |
| [`ChannelType`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.ChannelType.md#instro.daq.types.ChannelType "instro.daq.types.ChannelType") |  |
| [`Logic`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.Logic.md#instro.daq.types.Logic "instro.daq.types.Logic") |  |
| [`Direction`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.Direction.md#instro.daq.types.Direction "instro.daq.types.Direction") |  |
| [`TerminalConfig`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.TerminalConfig.md#instro.daq.types.TerminalConfig "instro.daq.types.TerminalConfig") |  |
| [`CJCSource`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.CJCSource.md#instro.daq.types.CJCSource "instro.daq.types.CJCSource") |  |
| [`HWTimingConfig`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.HWTimingConfig.md#instro.daq.types.HWTimingConfig "instro.daq.types.HWTimingConfig") |  |
| [`DAQChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.DAQChannel.md#instro.daq.types.DAQChannel "instro.daq.types.DAQChannel") |  |
| [`AnalogChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.AnalogChannel.md#instro.daq.types.AnalogChannel "instro.daq.types.AnalogChannel") |  |
| [`AnalogVoltageChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.AnalogVoltageChannel.md#instro.daq.types.AnalogVoltageChannel "instro.daq.types.AnalogVoltageChannel") |  |
| [`AnalogCurrentChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.AnalogCurrentChannel.md#instro.daq.types.AnalogCurrentChannel "instro.daq.types.AnalogCurrentChannel") |  |
| [`AnalogThermocoupleChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.AnalogThermocoupleChannel.md#instro.daq.types.AnalogThermocoupleChannel "instro.daq.types.AnalogThermocoupleChannel") |  |
| [`DigitalPortWidth`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.DigitalPortWidth.md#instro.daq.types.DigitalPortWidth "instro.daq.types.DigitalPortWidth") |  |
| [`DigitalChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.DigitalChannel.md#instro.daq.types.DigitalChannel "instro.daq.types.DigitalChannel") |  |
| [`DigitalPortChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.DigitalPortChannel.md#instro.daq.types.DigitalPortChannel "instro.daq.types.DigitalPortChannel") |  |
| [`DigitalLineChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.DigitalLineChannel.md#instro.daq.types.DigitalLineChannel "instro.daq.types.DigitalLineChannel") |  |
| [`RelayChannel`](https://dev.nominal.io/instro/ref/instruments/instro.daq.types.RelayChannel.md#instro.daq.types.RelayChannel "instro.daq.types.RelayChannel") | A relay channel routed via open/close. |

## Scaling

| [`Scaler`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.Scaler.md#instro.daq.scaling.Scaler "instro.daq.scaling.Scaler") | Convert a raw DAQ reading to a physical value and report the resulting units. |
| --- | --- |
| [`LinearScaler`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.LinearScaler.md#instro.daq.scaling.LinearScaler "instro.daq.scaling.LinearScaler") | `output = raw * gain + offset`. |
| [`ReverseLinearScaler`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.ReverseLinearScaler.md#instro.daq.scaling.ReverseLinearScaler "instro.daq.scaling.ReverseLinearScaler") | `output = (raw - offset) / gain` — inverse of `LinearScaler`, e.g. to back out a measurement amplifier. |
| [`ScalerPipeline`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.ScalerPipeline.md#instro.daq.scaling.ScalerPipeline "instro.daq.scaling.ScalerPipeline") | Apply scaler stages sequentially (e.g. voltage divider → thermocouple). |

### Thermocouple Scaling

| [`ThermocoupleSensor`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.thermocouple.ThermocoupleSensor.md#instro.daq.scaling.thermocouple.ThermocoupleSensor "instro.daq.scaling.thermocouple.ThermocoupleSensor") | Thermocouple voltage → °C with cold-junction compensation. |
| --- | --- |
| [`InverseThermocoupleSensor`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.thermocouple.InverseThermocoupleSensor.md#instro.daq.scaling.thermocouple.InverseThermocoupleSensor "instro.daq.scaling.thermocouple.InverseThermocoupleSensor") | Temperature (°C) → voltage with cold-junction compensation — inverse of `ThermocoupleSensor`. |
| [`TC_TYPE`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.thermocouple.TC_TYPE.md#instro.daq.scaling.thermocouple.TC_TYPE "instro.daq.scaling.thermocouple.TC_TYPE") |  |
| [`TC_UNIT`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.thermocouple.TC_UNIT.md#instro.daq.scaling.thermocouple.TC_UNIT "instro.daq.scaling.thermocouple.TC_UNIT") |  |
| [`kelvin_to_unit`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.thermocouple.kelvin_to_unit.md#instro.daq.scaling.thermocouple.kelvin_to_unit "instro.daq.scaling.thermocouple.kelvin_to_unit") | Convert a Kelvin temperature to `unit`. |
| [`unit_to_kelvin`](https://dev.nominal.io/instro/ref/instruments/instro.daq.scaling.thermocouple.unit_to_kelvin.md#instro.daq.scaling.thermocouple.unit_to_kelvin "instro.daq.scaling.thermocouple.unit_to_kelvin") | Convert a temperature in `unit` to Kelvin. |

---

Errors raised by these methods are documented in [Exceptions](https://dev.nominal.io/instro/ref/library/exceptions.md).
