歡迎使用帶有 Matlab 的測量計算設(shè)備。今天我將使用USB-1608GX -2A0 讀取輸入信號并計算其幅度譜。
讓我們開始……啟動一個新的腳本文件來保存 命令
我將首先定義一些變量。這些在我的顯示例程中使用,有助于使代碼更清晰。
>>計數(shù) = 256;
這是我要讀取的樣本數(shù);
>>率= 256;
這是讀取樣本的頻率。
>>范圍= 5.0;
我的設(shè)備支持 1、2、5 和 10 的電壓范圍。對于這個例子,我想要 5 伏
現(xiàn)在我需要獲取包含采集設(shè)置的模擬輸入對象。
>>ai = 模擬輸入('mcc', 0);
字符串“mcc”是驅(qū)動程序標識符,0 是 InstaCal 程序分配的板號。
現(xiàn)在向模擬輸入添加一個通道
>>ch = addchannel( ai, 0 );
其中零是通道號
設(shè)置輸入范圍
>>ch.InputRange = [-范圍范圍];
設(shè)置采樣率
>>ai.SampleRate = 率;
設(shè)置要讀取的樣本數(shù)
>>ai.SamplesPerTrigger = 計數(shù);
和觸發(fā)方法
>>ai.TriggerType = '立即';
start 命令將啟動采集運行
>>開始(ai);
并使用 getdata 函數(shù)讀取電壓數(shù)據(jù)
>>y = getdata(ai);
使用 FFT 函數(shù)將數(shù)據(jù)更改為頻率
>>yy = fft( y ) / 計數(shù);
并且幅度譜是FFT絕對值的兩倍
>>yyy = 2* abs( yy );
最后,我將命名我的腳本 FetchData。
現(xiàn)在我需要一個輸入信號,為此我有一個 Generator 例程,可以在模擬輸出線上輸出一個復(fù)雜的波形。為了完成電氣連接,我在輸出和輸入之間連接了一根電線。為了顯示數(shù)據(jù),我有另一個名為 Plot 的例程,它將繪制電壓和頻率數(shù)據(jù)。
現(xiàn)在讓我們測試
>>gen; 獲取數(shù)據(jù);繪圖數(shù)據(jù);
這里的所有都是它的!感謝收看!請訪問我們的網(wǎng)站,了解有關(guān)數(shù)據(jù)采集設(shè)備及其控制軟件的更多信息。
有關(guān)此視頻中使用的所有三個腳本的列表,請參閱抄本。
模擬輸入腳本
% 以 2 的冪獲取的樣本數(shù)(即 64,128,256,512 等)
計數(shù) = 256;
% 采樣率
率 = 256;
%輸入電壓范圍
范圍 = 5.0;
%獲取模擬輸入對象
ai = 模擬輸入('mcc',0);
% 將頻道添加到 ai 對象
ch = addchannel(ai,0);
%設(shè)置通道的輸入范圍
ch.InputRange = [-范圍范圍];
%設(shè)置采樣率
ai.SampleRate = 率;
%設(shè)置要獲取的樣本數(shù)
ai.SamplesPerTrigger = 計數(shù);
%set 采集開始類型
ai.TriggerType = '立即';
%開始采集
開始(愛);
%讀取數(shù)據(jù)
y = 獲取數(shù)據(jù)(ai);
%計算復(fù)譜
yy = fft(y)/計數(shù);
%計算幅度譜
yyy = 2* abs(yy);
模擬輸出腳本
%波形長度
cnt = 1024;
%波形更新率
fs = 4096;
%重復(fù)循環(huán)次數(shù)
周期 = 50;
%計算復(fù)雜波形
角度 = 2*pi/cnt;
x = (0:cnt-1) * 角度;
y = sin(x * 2) + .5 * sin(x * 4) + 2 * sin(x * 8);
%獲取模擬輸出對象
ao = 模擬輸出('mcc',0);
陳 = addchannel(ao,0);
%set 模擬輸出參數(shù)
set(ao,'SampleRate',fs);
set(ao,'RepeatOutput',cycles);
ai = 模擬輸入('mcc',0);
ch = addchannel( ai, 0 );
%使用轉(zhuǎn)置函數(shù),將數(shù)據(jù)發(fā)送給ao
putdata(ao,transpose(y));
%開始波形
開始(奧);
繪圖腳本
%create 用于顯示繪圖的窗口
h = 數(shù)字;
% 為時間數(shù)據(jù)創(chuàng)建一個 x 軸
x = transpose((0:count-1) * 1 / rate);
%create x 軸頻率數(shù)據(jù)
xx = transpose((0:count-1) * rate / count);
%繪制時間數(shù)據(jù)
subplot(2,1,1), plot(x(1:count),y(1:count));
%比例和標簽圖顯示
axis([0.0 (count * 1/rate) -range range ]);
title('電壓波形');
xlabel('時間');
ylabel('伏特');
%繪制頻率數(shù)據(jù)
n = 計數(shù) / 2;
subplot(2,1,2),plot(xx(1:n),yyy(1:n));
%比例和標簽圖顯示
軸([0.0(速率/2)0范圍/2]);
title('幅度譜');
xlabel('頻率(Hz)');
ylabel('伏特');