文章目录
- 前言
- 一、现有例程
- 1、前面板
- 2、程序框图
- 二、采集测试
- 1、单通道采集
- 2、多通道采集
- ①、错误的做法
- ②、正确的做法
- 1)前面板
- 2)程序框图
- 3)运行测试
- 总结
前言
折腾一块 USB-6361 采集卡很久了,之前都是单通道采集模拟信号,突然接到要使用双通道采集模拟信号,本想着就新增加一路 Analog Input task 即可,但事情总没有想象的那么简单,因此记录一下解决的方法。
一、现有例程
其实官方给我们提供了很多范例方便我们对 NI 板卡进行开发,我这里要用到的是 电压-连续输入例程,相关范例路径在:帮助 -> 查找范例 -> 硬件输入与输出 -> DAQmx -> 模拟输入 -> 电压-连续输入
注:这里有 DAQmx 的前提是你已经安装了 DAQmx 的驱动,具体安装方法这里不赘述,去 NI 官网可以找得到
1、前面板
2、程序框图
二、采集测试
1、单通道采集
这里我使用测试面板输出幅值为3V的正弦波,使用射频线将AO1和AI0进行连接,单通道采集没问题
2、多通道采集
①、错误的做法
将程序框图再复制一份,改个输入通道,这里使用AI0和AI1同步采集,运行时出现如下报错:
问题原因:USB-6361同时只能支持1个Analog Input task。这个方式来采集已经属于2个Analog Input tasks,所以出现报错。
在 NI 官网经验贴看到了类似的问题,受限于硬件,每个设备的模拟输入和模拟输出任务数只有1个
②、正确的做法
使用 channel expansion 方式,在同一个 Analog Input task 使用多个通道来采集。
1)前面板
将之前的 Dev/ai0 改成 Dev/ai0:1
2)程序框图
其他位置不做修改,DAQmx 读取这里稍作修改,模式改成模拟1D波形N通道N采样,并将输出的内容使用索引数组控件将 Dev/ai0 和 Dev/ai1 分开,这里索引0对应 Dev/ai0,索引1对应 Dev/ai1
3)运行测试
虽然不报错了,但是还存在一个问题,此图是仅仅将 Dev/ai0 接入了信号,Dev/ai1 保持浮空的状态呢,但是可以看到出现了信号串扰的问题,也就是 Dev/ai1 受到了 Dev/ai0 的干扰。
针对串扰问题的解决方案可以参考以下相关资料:
<1>、如何消除测量和数据采集时出现的鬼影效应?
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000YHy6CAG&l=zh-CN
<2>、NI does not specify what voltage a device will read when there is no signal connected.
Since an open or unconnected channel is not being actively driven to any specific voltage you cannot expect a specific voltage to appear on the channel. To see zero volts on a given channel, there will need to be a zero voltage signal applied across the + and - terminals of the channel, which is the same as grounding the channel. To pull down the signal to zero, you can use a pull-down resistor. See Can I Use Pull-Down Resistors for Analog Inputs? for more details.
Incorrect Readings on Unconnected or Open Channels of DAQ Device
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P6TeSAK&l=zh-CN
其实完全不必理会这个串扰问题,当我把 Dev/ai1 不浮空,而是接入到设备中,或者连接示波器也好,那么串扰问题就不存在了。
因此解决串扰问题可以按照如下两种方案尝试:
<1>、方案1:在输入端增加一个下拉电阻
<2>、方案2:不让通道保持悬空,使其连接任意设备
总结
以上就是全部内容,本文实现了多通道模拟输入同时采集的功能,对其中的串扰问题进行了介绍以及给出了解决方法。
我的qq:2442391036,欢迎交流!