Live demo — data resets daily at 03:00 UTC. Nothing you enter is saved. Server UI →

ESH10000590 - Precision ADC/DAC Module

Overview

The ESH10000590 is a precision analog I/O module providing high-accuracy analog-to-digital conversion (ADC) and digital-to-analog conversion (DAC) capabilities for Accordion instruments.

Description

The Precision ADC/DAC module offers 12 analog input channels and 8 analog output channels with built-in calibration support. The module uses Texas Instruments ADS124S08 ADC chips for input and Analog Devices AD5675R DAC chips for output, providing industrial-grade precision measurement and signal generation.

Key Features:

  • 12 Analog Input Channels (ADC): High-precision voltage measurement

    • 24-bit resolution
    • Configurable gain and offset
    • Supports numeric result acquisition with configurable sample rates
    • Can be configured as pseudo-digital inputs with programmable VL/VH thresholds
  • 8 Analog Output Channels (DAC): Precision voltage output

    • 16-bit resolution
    • Configurable gain and offset
    • Can be configured as pseudo-digital outputs with programmable VL/VH thresholds
  • Calibration Support: Per-channel gain and offset calibration

    • Persistent calibration storage by product ID, revision, and serial number
    • Calibration data accessible via dedicated calibration channel
    • Automatic application of calibration factors on module reset
  • Flexible Channel Configuration:

    • Analog mode: Direct voltage measurement/output with gain/offset
    • Pseudo-digital mode: Logic level interpretation with user-defined VL/VH thresholds
    • Numeric result mode: High-speed multi-sample data acquisition with optional data reduction

Hardware Details

ADC Subsystem:

  • Chip: Texas Instruments ADS124S08
  • Channels: 12 single-ended inputs
  • Resolution: 24-bit
  • Communication: SPI bus

DAC Subsystem:

  • Chip: Analog Devices AD5675R
  • Channels: 8 outputs
  • Resolution: 16-bit
  • I²C Address: 0x0C
  • Communication: I²C bus

GPIO Expander:

  • Chip: NXP PI4IOE5V6416
  • Purpose: Internal routing control, chip select management, status LEDs
  • I²C Address: 0x20
  • Not user-accessible (system control only)

Channel Naming Convention

All channels follow the naming pattern: {ModuleIndex}.ESH10000590.{ChannelName}

Where:

  • {ModuleIndex} is the position of the module in the system (e.g., 0, 1, 2...)
  • ESH10000590 is the module type identifier
  • {ChannelName} is the specific channel name from the table below

Example: Module at position 0, ADC channel 5 would be: 0.ESH10000590.ADC05

User-Accessible Channels

Channel Name Type Direction Usage Description
ADC00 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 0 (ADS124S08 CH0)
ADC01 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 1 (ADS124S08 CH1)
ADC02 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 2 (ADS124S08 CH2)
ADC03 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 3 (ADS124S08 CH3)
ADC04 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 4 (ADS124S08 CH4)
ADC05 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 5 (ADS124S08 CH5)
ADC06 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 6 (ADS124S08 CH6)
ADC07 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 7 (ADS124S08 CH7)
ADC08 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 8 (ADS124S08 CH8)
ADC09 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 9 (ADS124S08 CH9)
ADC10 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 10 (ADS124S08 CH10)
ADC11 Analog / Pseudo-Digital IN UserAllocatable Analog input channel 11 (ADS124S08 CH11)
DAC00 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 0 (AD5675R CH0)
DAC01 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 1 (AD5675R CH1)
DAC02 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 2 (AD5675R CH2)
DAC03 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 3 (AD5675R CH3)
DAC04 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 4 (AD5675R CH4)
DAC05 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 5 (AD5675R CH5)
DAC06 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 6 (AD5675R CH6)
DAC07 Analog / Pseudo-Digital OUT UserAllocatable Analog output channel 7 (AD5675R CH7)
CALIBRATION Calibration Data N/A UserAllocatable Module calibration table (gain/offset for all channels)

Channel Configuration

Analog Mode

Channels operate as precision voltage measurement (ADC) or generation (DAC) with configurable parameters:

  • Gain: Multiplicative calibration factor
  • Offset: Additive calibration offset
  • Resolution: Measurement resolution (3-24 bits for ADC, configurable)
  • Value: Measured or output voltage

Pseudo-Digital Mode

Analog channels can be configured as digital I/O with voltage threshold interpretation:

  • VL (Voltage Low): Maximum voltage considered logic LOW (default: 0.5V)
  • VH (Voltage High): Minimum voltage considered logic HIGH (default: 1.5V)
  • MinIoVoltage: Minimum allowable voltage (0V)
  • MaxIoVoltage: Maximum allowable voltage (5V)
  • Value: Boolean state (true/false)
  • RawValue: Underlying analog voltage (read-only for inputs)

Constraints:

  • VL >= MinIoVoltage (typically 0V)
  • VH <= MaxIoVoltage (typically 5V)
  • VH > VL (high threshold must exceed low threshold)
  • Hysteresis: Values between VL and VH retain previous state

Numeric Result Mode (ADC Only)

High-speed data acquisition mode for capturing multiple samples:

  • NumberOfSamples: Number of samples to acquire
  • SampleRate: Acquisition rate (samples per second)
  • TargetNetName: Comma-separated list of channels to acquire
  • ReducedSet: Enable statistical data reduction (min/max/avg/stddev)
  • MultiChannel: Enable multi-channel synchronized acquisition
  • Base64String: Acquired data encoded as Base64 (output)

Calibration Channel

The CALIBRATION channel provides access to the module's calibration table:

  • Read: Returns current calibration data for all channels as Base64-encoded CalibrationTable
  • Write: Updates calibration gains and offsets for specified channels
  • Storage: Persistent storage by module identity (ProductID, Revision, SerialNumber)
  • Format: Base64-encoded CalibrationTable containing per-channel gain/offset pairs

Calibration Table Structure:

// Each channel has:
- NetName: Full channel identifier
- Gain: Multiplicative correction factor
- Offset: Additive correction offset

Usage Example:

  1. Read calibration data: GetValue("0.ESH10000590.CALIBRATION")
  2. Modify gains/offsets in returned CalibrationTable
  3. Write updated data: SetValue("0.ESH10000590.CALIBRATION", modifiedBase64Data)
  4. Module automatically applies new calibration factors to hardware

Internal Channels (Not User-Accessible)

The following channels are used for internal system control and are hidden from users:

  • GPIO Expander Signals (all HiddenSystemControl):
    • SYNC0-SYNC3: ADC chip select control
    • DACEN0-DACEN2: DAC chip enable control
    • SPI_EN: SPI bus enable
    • GAIN: Global gain control
    • SYNC: Synchronization input
    • BOARD_ID_0 to BOARD_ID_2: Hardware identification
    • LED_STATUS_R/G/B: Status LED control

Data Bus Integration

The module provides a data bus with 96 signals (12 groups × 8 signals):

  • Signal Type: Analog
  • NetName Pattern: {ModuleIndex}.ESH10000590.MPIO{00-95}
  • Purpose: Internal signal routing and cross-module connectivity
  • Note: MPIO signals are system-level infrastructure, not directly user-accessible

Programming Interface

Channel Configuration:

// Example: Configure ADC00 as analog input
ConfigureChannels(new[] {
    new AnalogChannel {
        NetName = "0.ESH10000590.ADC00",
        Enabled = true,
        Direction = DirectionTypes.IN,
        Gain = 1.0,
        Offset = 0.0,
        Resolution = 24
    }
});

// Example: Configure ADC01 as pseudo-digital input
ConfigureChannels(new[] {
    new PseudoDigitalChannel {
        NetName = "0.ESH10000590.ADC01",
        Enabled = true,
        Direction = DirectionTypes.IN,
        VL = 0.8,   // Logic LOW threshold
        VH = 2.0    // Logic HIGH threshold
    }
});

Reading Values:

// Read single channel
string[] values = GetValues(new[] { "0.ESH10000590.ADC00" });
double voltage = double.Parse(values[0]);

// Read multiple channels
string[] values = GetValues(new[] { 
    "0.ESH10000590.ADC00",
    "0.ESH10000590.ADC01" 
});

Setting Output Values:

// Set DAC output voltage
SetValues(
    new[] { "0.ESH10000590.DAC00" },
    new[] { "2.5" }  // 2.5V output
);

// Set pseudo-digital output
SetValues(
    new[] { "0.ESH10000590.DAC01" },
    new[] { "true" }  // Logic HIGH (will output VH voltage)
);

Numeric Results Acquisition:

// Configure numeric result channel
ConfigureChannels(new[] {
    new NumericResultChannel {
        NetName = "0.ESH10000590.RESULT01",
        Enabled = true,
        NumberOfSamples = 1000,
        SampleRate = 10000,  // 10 kHz
        TargetNetName = "0.ESH10000590.ADC00,0.ESH10000590.ADC01",
        ReducedSet = false,
        MultiChannel = true
    }
});

// Read acquired data
string[] result = GetValues(new[] { "0.ESH10000590.RESULT01" });
List<NumericResult> data = NumericResult.FromBase64(result[0]);

Error Handling

The module validates channel configuration and provides detailed error messages:

  • Invalid NetName: Throws exception if channel does not exist
  • Invalid VL/VH: Validates voltage thresholds are within MinIoVoltage/MaxIoVoltage range
  • Invalid VH <= VL: Ensures high threshold exceeds low threshold
  • Direction Mismatch: Prevents output operations on input channels and vice versa
  • Disabled Channel Operations: Allows GetValue on disabled channels, skips SetValue for disabled outputs

Best Practices

  1. Always enable channels before use: Set Enabled = true in ConfigureChannels()
  2. Apply appropriate calibration: Load and verify calibration data after module reset
  3. Use pseudo-digital mode judiciously: Provides simple digital I/O but sacrifices ADC precision
  4. Configure VL/VH with margin: Leave hysteresis gap to avoid state oscillation at threshold
  5. Batch operations: Use multi-channel GetValues/SetValues for better performance
  6. Numeric results for high-speed: Use NumericResultChannel for acquisition > 100 samples
  7. Verify calibration: Check calibration table after updates to ensure expected values applied

Module Initialization Sequence

On Reset(), the module performs the following initialization:

  1. Clear existing channel list
  2. Setup GPIO expander (PI4IOE5V6416) for internal control
  3. Create 12 ADC input channels (ADC00-ADC11)
  4. Create 8 DAC output channels (DAC00-DAC07)
  5. Load calibration table from persistent storage (or create defaults)
  6. Apply calibration factors to all ADC and DAC channels
  7. Add CALIBRATION channel for user access to calibration data

Revision History

  • ESH10000590: Current production version
    • 12 ADC channels (ADS124S08)
    • 8 DAC channels (AD5675R)
    • Full calibration support
    • Pseudo-digital mode support
    • Numeric results acquisition support
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.