作者hwwwh (Jong)
看板MATLAB
标题Re: [问题] DAQ (USB 6211) 读取值 (已解决)
时间Thu Apr 4 00:28:03 2013
※ 引述《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
1F:推 shooe:推 04/08 23:54