Re: [問題] DAQ (USB 6211) 讀取值 (已解決)
※ 引述《hwwwh (Jong)》之銘言:
: 先簡要說明我的目的
: 我要把電腦連接到元件上 輸出不同值會使得該元件反射的光強不同
: 希望利用DAQ連接到Power meter上讀取其光的強度
: (我使用的DAQ是NI的USB 6211)
: 再簡而言之:
: 從電腦輸出一個值
: 而隨著該值的強度變化(ex 0~100)
: power meter上所測到的強度也改變
: 所以我寫了一個迴圈(主要有問題的部分)
: for i=1:100;
: G=i; %輸出的強度
: pause(1); %怕跳得太快來不及讀到值又進入下一個i (或許可略)
: .
: .
: .
: .
: end
: 想在中間...部分加入DAQ的指令
: 從DAQ中記錄下power meter上的值
: 但是我是要在迴圈中每次(每一個i)只紀錄一個值
: 應該要使用什麼指令呢
: 希望有經驗或是有任何想法的人能提供一些意見和指教 麻煩大家了
自己試了一陣子 找到解決的辦法
PO上來分享一下 如果有人要用的話可以參考
因為用的是USB6211 就以我的經驗當作例子
我是先用Labview確定USB6211正常運作
雖然要讀取的是power meter所偵測到的數值
但我必須讀取的是DAQ中的電壓值再自行做轉換(下面會說明)
其電壓和真實顯示的值中轉換的概念
是將power meter所定的最大量測值視作最大電壓
比如說你現在的量測最大值是100mW 而你定義的電壓範圍是[-1 1]
這表示當power meter顯示50mW時 會讀到0.5
但是量測的最大值是可以隨使用者改變的(你可以是10mW 1mW 或者其他)
所以有改過就要記得將擷取的data做一個乘上比率的處理
以下是我擷取部分的coding
daqhwinfo('nidaq');
ai=analoginput('nidaq','Dev1');
ai.InputType=('SingleEnded');
%這非常重要 它內建的設定並不是這個選項 可以打開ai去看裡面的參數設定
%一開始就是因為這個設定沒有改成這個選項 怎麼讀到讀到浮動的值
%最後在精神挫敗之下自暴自棄想說打開ai的參數設定隨便亂改
%沒想到一看到這一行字 還沒試就有一見鍾情的感覺 覺得改了一定有用
%不過詳細原因我不清楚 但我猜是告訴DAQ讀取值的時候要看A0和接地間的電壓差吧
addchannel(ai,0);
%這個0(由於我插在A0)是對應到你將你的訊號線正端插在DAQ上的哪一個孔
ai.Channel.InputRange = [-1 1];
start(ai);
d=getdata(ai);
a=sum(d)/1000;
%這只是我為了抓個平均所做的數學處理而已
ratio=75.85;
%因為我設定最大的power meter讀取值是75.85mW
data=a*ratio;
%如上所述 最後得到的值要乘上這個ratio
delete(ai);
%取得data後要刪除這個ai 免得下次讀取時會發生問題
以上是我的程式部分 硬體的部分就是把BNC接頭一端插在power meter上
一端裝上一個轉接頭 再伸出兩條電線正的接AI 負的接地
在這個版受過很多前輩的幫助
而由於DAQ大家在使用時大部分都是用Labview
因此自己查的時候相關的matlab資訊很少
終於成功了便決定一定要po上來
希望給用到DAQ且遇到跟我一樣問題的人一些幫助
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.198.173
推
04/08 23:54, , 1F
04/08 23:54, 1F