先前在版上詢問過關於NIDAQ卡的問題,後來陸陸續續有版友寫信問我,
有鑑於此,以下內容是查詢MATLAB內help和自行摸索整理出來的,
在這跟大家分享,並希望可以讓後來的人方便使用。
一、Measurement&Automation Explorer
察看NI-DAQmx Devices內你的卡所屬的位置,
因為我用過兩張卡USB-9233和DAQCard-6062E接過電腦,
就會出現NI-9233:”Dev1” 和NI DAQCard-6062E:”Dev4”
Dev4是名稱可以改變 只要用滑鼠左鍵在名稱上點兩下即可,
但需注意的地方是程式和裝置號必須一致。
二、測試裝置
1.測試裝置是否準備妥當,使用Test Panels,測試訊號的in&out
2.對於USB-9233來說Matlab內建的Data Acquisition Toolbox最低版本2.8,
而NI-DAQmx最低版本是8.3,但是DAQ-6062E的話就要8.7版本,
NI-DAQmx部份可至Laview官網免費下載最新版本,
版本問題不確定的話,可以詢問NI應用工程部
三、在Matlab中偵測卡
(以下是接DAQCard-6062E的情況下,在Matlab鍵入指令)
->daqhwinfo
ans=
ToolboxName: ’Data Acquisition Toolbox’
ToolboxVersion: ’2.10(R2007a)’
MATLABVersion: ’7.4(R2007a)’
InstalledAdaptors: {3x1 cell}
關於daq卡的資訊可用
->ans. InstalledAdaptors
ans= ’nidaq’
‘parallel’
‘winsound’
(此步驟等同於打開workspace內的ans數值)
可以看到偵測到的幾張卡
再來就可以進入正題了
->daqhwinfo(‘nidaq’)
ans=
AdaptorDIIName: [1x68 char]
AdaptorDIIVersion: ’2.10(R2007a)’
AdaptorName: ’nidaq’
BoardNames: {‘DAQCard-6062E’ ‘DAQCard-6062E’}
InstalledBoardIds: {‘Dev4’ ‘1’}
ObjectConstructorName: {2x3 cell}
接著用滑鼠打開workspace內的ans數值,有六格
就可以看到每個卡可以用的輸出和輸入功能,
像在這Dev4就可以做類比輸入跟輸出,還可以做數位的。
analoginput('nidaq','Dev4')
analogoutput('nidaq','Dev4')
digitalio('nidaq','Dev4')
analoginput('nidaq','1')
analogoutput('nidaq','1')
digitalio('nidaq','1')
要看每個功能的詳細資料可以使用以下方法
->ai= analoginput(‘nidaq’,’Dev4’)
->daqhwinfo(ai)
四、驅動的副程式範例
因為我是做聲音的,所以分別是用麥克風擷取訊號和喇叭放出訊號:
(先前控制過電腦內建音效卡程式較簡化)
function [voicedata,fs]=microphone(duration,fs)
ai= analoginput('nidaq','Dev4');
addchannel(ai,0);
ai.Channel.InputRange = [-10 10];
set(ai,'SampleRate',fs)
ActualRate = get(ai,'SampleRate');
set(ai,'SamplesPerTrigger',duration*ActualRate)
set(ai,'TriggerType','Manual')
blocksize = get(ai,'SamplesPerTrigger');
fs = ActualRate;
start(ai)
trigger(ai)
voicedata = (getdata(ai))';
delete(ai)
function speaker(signal,fs)
ao=analogoutput('nidaq','Dev4');
ch=addchannel(ao,0);
set(ao,'SampleRate',fs)
putdata(ao,signal')
start(ao)
※ 編輯: justones 來自: 140.112.26.71 (11/18 17:09)
推
11/18 19:38, , 1F
11/18 19:38, 1F
推
11/19 19:12, , 2F
11/19 19:12, 2F
推
11/20 16:16, , 3F
11/20 16:16, 3F