AnsweredAssumed Answered

Matlab and Simulink with Analog Discovery

Question asked by Deiv on Jun 23, 2013

Support for the Analog Discovery to be used as a Data Acquisition device with the Mathwork's Matlab is provided via a support package downloadable at the link below.

http://www.mathworks.in/hardware-support/digilent-analog-discovery.html

 

Here below is an example of how to use the Matlab with the Sessions-Based Interface.

http://www.mathworks.in/help/daq/examples/using-the-session-based-interface-with-digilent-analog-discovery-hardware.html

 

But support for continuous sampling is not available !

 

My target was to continually sample a channel at low (8kHz) sample rate continually, make a real time digital signal processing with Simulink and send it to the AWG outputs.

 

1. Can someone help on how a low frequency continual sampling is possible?

2. Also how to use it in conjunction with the Simulink?

 

I tried out some code as below... This code continually updates the data samples every 100ms. It has flexible voltage ranging and also sampling.

 

% Repetitive data acquisition from Analog Discovery - Analog input Channel 1

 

time = 0.1;

rate = 32e3/time;

if rate > 1e6

    rate = 1e6;

    time = 32e3/rate;

end

 

xmin = 0;

xmax = time;

 

% Acquiring Code

ch1 = daq.createSession('digilent');

ch1.addAnalogInputChannel('AD1', 1, 'Voltage');

ch1.Rate = rate;

ch1.Channels.Range = [-25 25];

ch1.DurationInSeconds = xmax;

 

%[data, timestamps, triggerTime] = ch1.startForeground;

while true

    pause(0.1);

    [data, timestamps, triggerTime] = ch1.startForeground;

       

    ymax = max(data);

    ymin = min(data);

   

    if(max(abs(ymax), abs(ymin)) <= 2.5)

        ch1.Channels.Range = [-2.5 2.5];

    else

        ch1.Channels.Range = [-25 25];

    end

   

    plot(timestamps, data, 'g');

    axis([xmin xmax ymin ymax]);

end

 

If this question is not to be addressed here, please advise if Mathworks or Digilent can help. Thanks.

 

- Deiv

Outcomes