LED 示例与 Measurement Studio






4.33/5 (9投票s)
描述软件和硬件设置的指南文章
(点击查看大图)。
引言
为了启动一小块硬件,我不得不快速编写一个实用程序来控制 LED 光源。我选择的工具是 C#、National Instrument Measurement Studio 和 USB-6008 输入/输出卡。在某个时候,我意识到像这样的文章可能对那些刚开始接触 Measurement Studio 的人有用。
硬件
该设置围绕 National Instruments USB-6008 多功能 I/O 设备构建。 我通过 USB 连接到笔记本电脑。 恒流 LED 驱动器和 LED 本身位于一个单独的板上(更详细的原理图)。
LED 输出与电流成正比。驱动电路的设计使 LED 电流与控制电压 V_SET_I
成正比,V_SET_I
由 USB-6008 上的一个模拟输出生成。 另一个数字控制信号用于打开和关闭 LED。
(我还上传了 恒流 LED 驱动器的原理图。)
软件
该软件的目的是提供一个简单的 GUI,允许用户使用滑块控制 LED 强度,并使用切换按钮打开/关闭 LED。
类图
DAQmx.Task
的子类负责访问硬件通道。 它们公开 public
方法和属性,同时隐藏通道涉及的物理指定的详细信息。 对于我们的任务,还创建了额外的写入器对象(AnalogSingleChannelWriter
和 DigitalSingleChannelWriter
)。
一个诱人的错误是尝试创建一个包含多种通道类型的任务。 例如,它可以是模拟输出通道 (AO) 和数字输出通道 (DO)。
this.AOChannels.CreateVoltageChannel
("Dev2/ao1", "LED brightness", 0, 5, AOVoltageUnits.Volts);
this.DOChannels.CreateChannel("Dev2/port0/line0", "LED on",
ChannelLineGrouping.OneChannelForEachLine); // an attempt to create the
// 2nd type of a channel will cause an exception
通过为要使用的每种通道类型创建一个单独的 DAQmx.Task
子类,可以很容易地解决这个问题(参见图 4)。
关于源代码
这个项目的代码是手写的。 同时,MStudio 有一个可以为任务生成代码的向导。 如果您想了解更多关于向导的信息,请查看 [4]。 项目的代码以最简单的风格编写:具有硬编码参数、没有健全性检查、没有错误处理。 这使得更容易看到对 MStudio 的调用。
关注点
让我们来看看 DAQmx.Task
的一个子类 - LEDOn
。 它的目的是切换一个数字输出。 简单的代码很小
class LEDOn : NationalInstruments.DAQmx.Task
{
private DigitalSingleChannelWriter m_dscwLEDon;
public void Init()
{
this.DOChannels.CreateChannel("Dev2/port0/line0", "LED on",
ChannelLineGrouping.OneChannelForEachLine); // create the channel,
// specify hardware
this.Control(TaskAction.Verify); // transition task to the verified state
m_dscwLEDon = new DigitalSingleChannelWriter(this.Stream); // create the
// stream writer
}
public bool On
{
set { m_dscwLEDon.WriteSingleSampleSingleLine(true, value); }
}
}
表单类实例化 LEDOn
类(和其他任务类),然后调用初始化,然后可以写入通道。
初始化
在使用通道之前,需要进行一个小初始化
- 在任务中创建一个通道。
- 任务经过验证。
- 创建适当的写入器并将其连接到任务的流。
所有这些都在 LEDOn.Init():
中完成:
写入通道
通过调用通道写入器对象的 WriteSingleSampleSingleLine()
方法来完成向通道的写入。 其他类型的通道有类似的 WriteX()
方法。 请注意,autoStart
设置为 true
。 任务短暂地进入 Running
状态,写入样本,然后返回到 Committed
状态。 MStudio 在线帮助中有一篇有用的文章“使用 Start Task function/VI”,其中详细说明了何时调用 Start()
和 Stop()
,以及 autoStart
的工作原理。
闭幕词
我计划添加一个更精细的这个项目版本,它具有健全性检查和错误处理。
一如既往,欢迎提出错误记录、建议、见解、评论、请求等!
参考文献
[1] National Instruments Measurement Studio 的官方主页
[2] Measurement Studio 论坛的 .NET 部分
[4] 演练:创建 MeasurementStudio NI-DAQmx 应用程序
[5] Measurement Studio .NET 类层次结构图
缩略语和简称
NI | 美国国家仪器 |
MStudio | NI 制造的 Measurement Studio |
DAQ | 数据采集 |
历史
- 初始草稿。 2010 年 9 月 26 日