Difference between revisions of "EGR 103/DAQ 2"

From PrattWiki
Jump to navigation Jump to search
Line 1: Line 1:
This page contains pictures and graphs related to DAQ 2 for [[EGR 103]].  It has been updated for Spring 2017.
+
This page contains pictures and graphs related to DAQ 2 for [[EGR 103]].  It has been updated for Spring 2018.
  
 
==Notes ==
 
==Notes ==
  
As before, if the system seems to not recognize Dev1, try Dev2 instead.
+
* As before, if the system seems to not recognize Dev1, try Dev2 instead.
 +
* Here is the web page for MATLAB default plot colors: [https://www.mathworks.com/help/matlab/graphics_transition/why-are-plot-lines-different-colors.html Link]
 +
* [[MATLAB:Flexible Programming]]
  
 
=== Pauses ===
 
=== Pauses ===
 
There are <code>pause</code> commands in the code which will cause the program to...pause - specifically when the program first runs to check the lights.  You will need to hit a key to un-pause the program.  The way to see if the program is paused is to look at the bottom left corner of your MATLAB window - it will tell you if it is paused.
 
There are <code>pause</code> commands in the code which will cause the program to...pause - specifically when the program first runs to check the lights.  You will need to hit a key to un-pause the program.  The way to see if the program is paused is to look at the bottom left corner of your MATLAB window - it will tell you if it is paused.
 
  
 
=== Graph Labels ===
 
=== Graph Labels ===
For this particular assignment, you do '''not''' need axis labels.  You need a title on each subplot, however.
+
For this assignment, you do not need labels or titles for graphsIn a later, you will add them.
  
 
== Circuit for BasicAOutput ==
 
== Circuit for BasicAOutput ==
Circuit layout for BasicAOutput.
+
Circuit layout for BasicAOutput - '''You only need the left-most circuit, however'''
 
<center>
 
<center>
 
[[Image:Circuit1.jpg|400px]]
 
[[Image:Circuit1.jpg|400px]]
 
</center>
 
</center>
 
== Circuit for BasicAIO ==
 
== Circuit for BasicAIO ==
Circuit layout for BasicAIO (two measurements).
+
Circuit layout for BasicAIO - '''You only need the left-most circuit, however'''
 
<center>
 
<center>
 
[[Image:Circuit2.jpg|400px]]
 
[[Image:Circuit2.jpg|400px]]
Line 24: Line 25:
  
 
== Graph from BasicAIO ==
 
== Graph from BasicAIO ==
Graph showing outputs when
+
Graph showing output when
 
<source lang="matlab">
 
<source lang="matlab">
Vout0 = 2.5+2.5*sin(2*pi*k/100);
+
Vout = 2.5+2.5*sin(2*pi*k/100);
Vout1 = 2.5+2.5*cos(2*pi*k/100);
 
 
</source>
 
</source>
 
That is,
 
That is,
Line 33: Line 33:
 
<math>
 
<math>
 
\begin{align}
 
\begin{align}
V_{out,\,0}=2.5+2.5\sin\left(\frac{2\pi k}{100}\right)\\
+
V_{out}=2.5+2.5\sin\left(\frac{2\pi k}{100}\right)
V_{out,\,1}=2.5+2.5\cos\left(\frac{2\pi k}{100}\right)
 
 
\end{align}
 
\end{align}
 
</math>
 
</math>
 
</center>
 
</center>
 
<center>
 
<center>
[[Image:Circuit2Plot.png|500px]]
+
[[Image:Circuit2PlotX.png|500px]]
 
</center>
 
</center>
  
 
== Circuit for AIO ==
 
== Circuit for AIO ==
Circuit layout for AIO (six measurements).
+
Circuit layout for AIO - '''You only need the left-most circuit, however'''
 
<center>
 
<center>
 
[[Image:Circuit3.jpg|400px]]
 
[[Image:Circuit3.jpg|400px]]
 
</center>
 
</center>
 
== Graph from AIO ==
 
== Graph from AIO ==
Graph showing outputs from six measurement channels.  Note at the far left that they all start at either exactly -1 V or 0 V!
+
Graph showing outputs from three measurement channels.  Note at the far left that they all start at either exactly -1 V or 0 V!
 
<center>
 
<center>
Old colors: Blue Green Red Cyan Magenta Yellow<br>
 
Cyan is on top of blue<br>
 
[[Image:VoltagesFigure.png|300 px]]<br>
 
 
New Colors: Blue Orange Yellow Purple Green Cyan<br>
 
New Colors: Blue Orange Yellow Purple Green Cyan<br>
Purple is on top of blue<br>
+
[[Image:VoltagesFigureRed.png|300 px]]<br>
[[Image:VoltagesFigure2.png|300 px]]<br>
 
 
</center>
 
</center>
  
Line 63: Line 58:
 
=== BasicAOutput.m===
 
=== BasicAOutput.m===
 
<source lang="matlab">
 
<source lang="matlab">
% Clear out workspace
+
% Initialize workspace and graph
clear
+
clear; format short e; figure(1); clf; daqreset;
 
 
% Clear out DAQ objects
 
delete(daqfind)
 
 
 
% Create Analog Output Object
 
AO = analogoutput('nidaq', 'Dev1');
 
 
 
% Change sample rate
 
set(AO, 'SampleRate', 500);
 
 
 
% View Analog Output Object
 
AO
 
 
 
% Add channels to Analog Output Object
 
addchannel(AO, [0 1])
 
 
 
 
 
 
 
  
 +
% Create a session
 +
s = daq.createSession('ni');
  
 +
% set sample rate
 +
SampleRate = 1000;
 +
s.Rate = SampleRate;
  
 +
% Add channel 0 to output
 +
chO = addAnalogOutputChannel(s,'Dev1',[0],'Voltage');
  
% Write values to output channels
+
% Review card information
putsample(AO, [5 5])
+
s
 +
chO
 +
 +
% Write values to output channel
 +
outputSingleScan(s, [5]);
 +
fprintf('Press return to continue\n');
 
pause
 
pause
putsample(AO, [0 0])
+
outputSingleScan(s, [0])
  
 
% Use loop to set several different voltages
 
% Use loop to set several different voltages
 
for k=1:300
 
for k=1:300
 
     % Calculate voltages for each channel
 
     % Calculate voltages for each channel
     Vout0 = 2.5+2.5*sin(2*pi*k/100);
+
     Vout = 2.5+2.5*sin(2*pi*k/100);
    Vout1 = 2.5+2.5*cos(2*pi*k/100);
+
     % Put voltage to output channel
     % Put voltages to each output channel
+
     outputSingleScan(s, [Vout])
     putsample(AO, [Vout0 Vout1])
 
    % leave line 31 blank for now
 
    % leave line 32 blank for now
 
 
     pause(0.02)
 
     pause(0.02)
 
end
 
end
  
 +
% Turn output off
 +
outputSingleScan(s, [0]); 
 +
</source>
  
 
 
 
 
 
 
% Turn all outputs off
 
putsample(AO, [0 0])
 
</source>
 
 
===BasicAIO.m===
 
===BasicAIO.m===
 
<source lang="matlab">
 
<source lang="matlab">
% Clear out workspace
+
% Initialize workspace and graph
clear
+
clear; format short e; figure(1); clf; daqreset;
  
% Clear out DAQ objects
+
% Create a session
delete(daqfind)
+
s = daq.createSession('ni');
  
% Create Analog Output Object
+
% set sample rate
AO = analogoutput('nidaq', 'Dev1');
+
SampleRate = 1000;
 +
s.Rate = SampleRate;
  
% Change sample rate
+
% Add channel 0 to output
set(AO, 'SampleRate', 500);
+
chO = addAnalogOutputChannel(s,'Dev1',[0],'Voltage');
 +
% Add channels 0-3 to input
 +
chI = addAnalogInputChannel(s,'Dev1',[0],'Voltage');
  
% View Analog Output Object
+
% Review card information
AO
+
s
 +
chO
 +
chI
  
% Add channels to Analog Output Object
+
% Write values to output channel
addchannel(AO, [0 1])
+
outputSingleScan(s, [5]);
 
+
fprintf('Press return to continue\n');
% Create Analog Input Object
 
AI = analoginput('nidaq', 'Dev1')
 
 
 
% Add channels to Analog Input Object
 
addchannel(AI, [0 4])
 
 
 
% Write values to output channels
 
putsample(AO, [5 5])
 
 
pause
 
pause
putsample(AO, [0 0])
+
outputSingleScan(s, [0])
  
 
% Use loop to set several different voltages
 
% Use loop to set several different voltages
 
for k=1:300
 
for k=1:300
 
     % Calculate voltages for each channel
 
     % Calculate voltages for each channel
     Vout0 = 2.5+2.5*sin(2*pi*k/100);
+
     Vout = 2.5+2.5*sin(2*pi*k/100);
    Vout1 = 2.5+2.5*cos(2*pi*k/100);
+
     % Put voltage to output channel
     % Put voltages to each output channel
+
     outputSingleScan(s, [Vout])
     putsample(AO, [Vout0 Vout1])
+
     % Read voltage from input channel
     % Read voltages from all input channels
+
     Voltages(k,:) = inputSingleScan(s);
     Voltages(k,:) = getsample(AI);
 
 
     pause(0.02)
 
     pause(0.02)
 
end
 
end
  
% Plot voltages versus index
+
% Turn output off
 +
outputSingleScan(s, [0]); 
 +
 
 +
% Plot voltage versus index
 
n = 1:k;
 
n = 1:k;
Vleft = Voltages(:,1);
+
Vtotal = Voltages(:,1);
Vright = Voltages(:,2);
+
plot(n, Vtotal, 'r')
plot(n, Vleft, 'g', n, Vright, 'r')
+
legend('Total Voltage', 'Location', 'Best')
legend('Green LED', 'Red LED', 'location', 'best')
 
  
% Turn all outputs off
 
putsample(AO, [0 0])
 
 
</source>
 
</source>
  
 +
<!--
 
=== Function to Plot Curves ===
 
=== Function to Plot Curves ===
 
<source lang="matlab">
 
<source lang="matlab">
Line 204: Line 181:
 
%% your code here
 
%% your code here
 
</source>
 
</source>
 +
-->
  
 
== Questions ==
 
== Questions ==

Revision as of 03:39, 21 March 2018

This page contains pictures and graphs related to DAQ 2 for EGR 103. It has been updated for Spring 2018.

Notes

  • As before, if the system seems to not recognize Dev1, try Dev2 instead.
  • Here is the web page for MATLAB default plot colors: Link
  • MATLAB:Flexible Programming

Pauses

There are pause commands in the code which will cause the program to...pause - specifically when the program first runs to check the lights. You will need to hit a key to un-pause the program. The way to see if the program is paused is to look at the bottom left corner of your MATLAB window - it will tell you if it is paused.

Graph Labels

For this assignment, you do not need labels or titles for graphs. In a later, you will add them.

Circuit for BasicAOutput

Circuit layout for BasicAOutput - You only need the left-most circuit, however

Circuit1.jpg

Circuit for BasicAIO

Circuit layout for BasicAIO - You only need the left-most circuit, however

Circuit2.jpg

Graph from BasicAIO

Graph showing output when

Vout = 2.5+2.5*sin(2*pi*k/100);

That is,

\( \begin{align} V_{out}=2.5+2.5\sin\left(\frac{2\pi k}{100}\right) \end{align} \)

Circuit2PlotX.png

Circuit for AIO

Circuit layout for AIO - You only need the left-most circuit, however

Circuit3.jpg

Graph from AIO

Graph showing outputs from three measurement channels. Note at the far left that they all start at either exactly -1 V or 0 V!

New Colors: Blue Orange Yellow Purple Green Cyan
VoltagesFigureRed.png

Codes

Pasting codes from PDF files is...a bad idea. Here are the text versions of some of the codes in the assignment.

BasicAOutput.m

% Initialize workspace and graph
clear; format short e; figure(1); clf; daqreset;

% Create a session
s = daq.createSession('ni');

% set sample rate
SampleRate = 1000;
s.Rate = SampleRate;

% Add channel 0 to output
chO = addAnalogOutputChannel(s,'Dev1',[0],'Voltage'); 

% Review card information
s
chO
 
% Write values to output channel
outputSingleScan(s, [5]); 
fprintf('Press return to continue\n');
pause
outputSingleScan(s, [0]);  

% Use loop to set several different voltages
for k=1:300
    % Calculate voltages for each channel
    Vout = 2.5+2.5*sin(2*pi*k/100);
    % Put voltage to output channel
    outputSingleScan(s, [Vout])
    pause(0.02)
end

% Turn output off
outputSingleScan(s, [0]);

BasicAIO.m

% Initialize workspace and graph
clear; format short e; figure(1); clf; daqreset;

% Create a session
s = daq.createSession('ni');

% set sample rate
SampleRate = 1000;
s.Rate = SampleRate;

% Add channel 0 to output
chO = addAnalogOutputChannel(s,'Dev1',[0],'Voltage'); 
% Add channels 0-3 to input
chI = addAnalogInputChannel(s,'Dev1',[0],'Voltage');

% Review card information
s
chO
chI

% Write values to output channel
outputSingleScan(s, [5]); 
fprintf('Press return to continue\n');
pause
outputSingleScan(s, [0]);  

% Use loop to set several different voltages
for k=1:300
    % Calculate voltages for each channel
    Vout = 2.5+2.5*sin(2*pi*k/100);
    % Put voltage to output channel
    outputSingleScan(s, [Vout])
    % Read voltage from input channel
    Voltages(k,:) = inputSingleScan(s);
    pause(0.02)
end

% Turn output off
outputSingleScan(s, [0]);  

% Plot voltage versus index
n = 1:k;
Vtotal  = Voltages(:,1);
plot(n, Vtotal, 'r')
legend('Total Voltage', 'Location', 'Best')


Questions

Post your questions by editing the discussion page of this article. Edit the page, then scroll to the bottom and add a question by putting in the characters *{{Q}}, followed by your question and finally your signature (with four tildes, i.e. ~~~~). Using the {{Q}} will automatically put the page in the category of pages with questions - other editors hoping to help out can then go to that category page to see where the questions are. See the page for Template:Q for details and examples.

External Links

References