用NI的数据采集卡实现简单电子测试之6——数字I/O及测试平台 [原创cnblogs.com/helesheng]

本文从本人的163博客搬迁至此。

前面几个例子介绍了NI数据采集卡的模拟输入和输出功能,本例则集中介绍USB-6009的数字输入输出功能。本例包括基本数字IO电路及在LabVIEW中控制USB-6009的数字IO的方法。作为"用NI的数据采集卡实现简单电子测试"系列的结束,本文最后还介绍了本系列博文的实验板/平台。

一、数字I/O电路

1、数字输入电路

为了形象的展示I/O口的输入功能,使用了图1a所示的电路,其中的DIP_SW是四位拨码开关(又称DIP开关或平拨开关),P1.0~P1.3被直接连接到USB-6009的数字输入端口。

       

图1a 数字输入电路图                         图1b四位拨码开关

四位拨码开关外形如图1b所示,向上拨动则开关导通,向下拨动则开关断开。为使开关向上拨时输出高电平,采用了图1a所示的电阻下拉电路。值得注意的是,如本系列第一篇所述,USB-6009的I/O口在即使在输入状态下也具有4.7K欧姆的上拉电阻,为使拨动开关断开时获得低电平输出,电路采用了1K欧姆的下拉电阻——与普通单片机电路不同。

2、数字输出电路

数字I/O的输出功能,可由数字输出I/O连接的LED的亮或灭得到展示。但当USB-6009的I/O口被配置为输出时,缺省状态下,为保证端口安全,采用了集电极开路(OC)的形式。即采集卡内输出级只有一个连接到地的NPN晶体管,其集电极被一个4.7K的电阻弱上拉到5V电源。让电流通这个4.7K欧姆的上拉电阻点亮一只普通的LED灯则不够明亮。如果反过来用USB-6009的灌电流来电量LED,则与学生"高电平亮,低电平灭"的思维习惯相左。因此我采用了图2所示的LED驱动电路。(当然也可以选择将USB-6009的I/O口配置为推挽输出模式,在该模式下USB-6009的输出可以获得足以点亮LED的拉电流和灌电流,但这需要在LabVIEW程序中使用属性节点来实现,具体代码参见图5b所示。且配置后USB-6009的数字I/O口输出的高电平将变为3.3V。)

 

图2 数字输出电路

 

二、测试程序

1、数字输入程序

数字输入程序框图如下图所示。 

 

图3 数字输入程序框图

输入的二进制值时以数组的形式从读取函数中输出的,采用"数组索引"函数将其分解为单个二进制值,最后再分别送到前面板显示控件,如下图所示。

图4 数字输入程序运行图

2、数字输出程序

数字输出控制程序框图如下图所示。 

 

图5a 数字输出控制程序  

image

 图5b 数字输出控制程序 (属性节点配置推挽输出模式)

(注意:其中配置输出模式的属性节点在"函数选板 -> 测量I/O -> DAQmx-数据采集 -> DAQmx通道属性节点",而“输出模式驱动类型”属性则只有在插入可用的数据采集卡时才会出现 )

其中"P0.0控制"、"P0.1控制"……"P0.7控制"为八个二进制开关输入控件。它们全部被一个事件结构所控制,只在波动二进制开关输入控件数组变化时,才被统一置位和清零。运行时前面板如下图所示。  

 

图6 数字输出控制程序运行效果

三、本系列的实验平台

为完成上述基于数据采集卡的测试实验,我设计了一块面积为78×68mm的双层实验电路板,PCB图和实物图如下所示。  

 

图7 实验平台PCB图

 

 

 

 

 

 

  

posted @ 2018-10-25 22:01  helesheng  阅读(7369)  评论(18)    收藏  举报