Academic Block

Logo of Academicblock.net

Data Acquisition Toolbox in MATLAB

The Data Acquisition Toolbox in MATLAB allows you to interact with data acquisition hardware, enabling you to acquire, generate, and analyze data in real-time. This section introduces the toolbox, its key features, and various use cases with examples.

Introduction

The toolbox provides support for a wide range of hardware devices, including National Instruments, Advantech, Measurement Computing, and more. Common applications include sensor data logging, signal generation, and control system implementation.

Key Features

Some of the essential functionalities provided by the Data Acquisition Toolbox are:

  • Acquisition of live data from sensors and instruments.
  • Generation of analog and digital signals.
  • Synchronization of multiple devices.
  • Real-time data analysis and visualization.

Common Operations with Examples

Below are examples of different operations using the Data Acquisition Toolbox:

1. Connecting to Hardware

% Create a data acquisition session
daqSession = daq.createSession('ni');
disp(daqSession);

Output:

    Data acquisition session using National Instruments hardware:
        No channels have been added.
    

2. Adding Analog Input Channels

% Add an analog input channel
addAnalogInputChannel(daqSession, 'Dev1', 'ai0', 'Voltage');
disp(daqSession);

Output:

    Data acquisition session using National Instruments hardware:

        Number of channels: 1

        Channels:

            index Type  Device Channel MeasurementType   Range      
            1     ai0   Dev1   ai0     Voltage          [-10,+10]  
    

3. Acquiring Data

% Acquire data from the input channel
data = startForeground(daqSession);
disp(data);

This will display the acquired data as a matrix of voltage values.

4. Generating Analog Output

% Add an analog output channel and generate a signal
addAnalogOutputChannel(daqSession, 'Dev1', 'ao0', 'Voltage');
outputSignal = linspace(-1, 1, 1000); % A simple ramp signal
queueOutputData(daqSession, outputSignal');
startForeground(daqSession);

5. Synchronizing Multiple Devices

% Add a digital channel and synchronize with an analog input
addDigitalChannel(daqSession, 'Dev2', 'Port0/Line0', 'InputOnly');
[data, timeStamps] = startForeground(daqSession);

6. Measuring Voltage from a Sensor

% Measure voltage for 10 seconds
s = daq.createSession('ni');
addAnalogInputChannel(s, 'Dev1', 'ai0', 'Voltage');
s.DurationInSeconds = 10;
s.Rate = 1000; % 1000 samples per second
data = startForeground(s);
disp(data);

This example reads voltage data from a sensor connected to channel 0 for 10 seconds.

7. Plotting Real-Time Temperature Data

% Plot real-time data from a temperature sensor
s = daq.createSession('ni');
addAnalogInputChannel(s, 'Dev1', 'ai1', 'Voltage');
lh = addlistener(s, 'DataAvailable', @(src, event) plot(event.TimeStamps, event.Data));
s.NotifyWhenDataAvailableExceeds = 100;
s.IsContinuous = true;
startBackground(s); % Run continuously in the background

Useful MATLAB Functions for Data Acquisition Toolbox

Function
Explanation
daq.createSession
Creates a data acquisition session object.
addAnalogInputChannel
Adds an analog input channel to the session.
addAnalogOutputChannel
Adds an analog output channel to the session.
startForeground
Starts the session and blocks MATLAB execution until the operation completes.
queueOutputData
Queues data for output on an analog output channel.
addDigitalChannel
Adds a digital input or output channel to the session.

Practice Questions

Test Yourself

1. Create a data acquisition session and add a voltage input channel.

2. Acquire 100 samples of data from a connected sensor and plot the results.

3. Generate a sine wave signal and output it through an analog output channel.

4. Synchronize analog and digital channels in a session and log their data simultaneously.