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

几年以来,一直担任学校“虚拟仪器”课程教师。以前上课都以介绍LabVIEW编程为主,硬件实验一直没有开展。这次借“西部高校实力提升工程”的机会,学院采购了一批NI的数据采集卡,终于有机会让学生动手开展一点硬件实验了。这次采购的是入门级的USB数据采集卡——USB-6009,NI没有为这卡提供外围实验电路,要用他上实验课还得自己动手为这个“小宝贝”设计几个实验,并配些外围电路。接下来的几篇博文,将分几次介绍为学生设计的实验及外围电路,写到哪算哪吧。今天先从小宝贝工具USB-6009介绍起。(NI官方网站上介绍资料的内容就不原样重复了,只把我觉得有用、有趣和大家会感兴趣的内容摘一下)

在NI众多的数据采集卡中,USB-6009可以算是性能最低的了,价格也相对最低——官方渠道约小3000元(个人觉得还是比国产的其他数据采集卡还是贵多了)。USB-6009性能不高,但“麻雀虽小,五脏俱全”,常见的功能一应俱全,基本能够体现LabVIEW+NI数据采集卡的开发特点。先来张外观照片。

再看看内部电路板(PCB的顶层,底层没东西)。

一、USB-6009的内部构成

打开后盖,看到USB-6009主要有两个芯片,一个是Silicon Labs的单片机,另一个是TI的十四位ADC,这两个芯片决定了USB-6009的基本性能。

单片机上的激光丝印看不出它的型号,但“Silicon Labs”、“TQFP-32封装”、“有USB DEVICE接口”几个条件一综合,大概能猜出来了:C8051F320——2.3KB RAM+16KB Flash。

TI的ADS7871是个功能挺全面的ADC。四个全差分通道,或变为八个单端通道。其他参数包括:14位分辨率;带有片上PGA;参考电压等都和USB-6009一样。个人觉得这个ADC最大的缺点就是最高采样率只有48KBPS。

二、USB-6009的模拟输入

1、输入范围

ADS7871,虽然可以接受差分形式的负电压,但同时要求输入电压的绝对值不能为负(0V到接近电源电压)。组成USB-6009后,模拟输入范围有一个值得注意的参数变化:USB-6009的任意模拟输入引脚都可以接受负电压(具体可达-10V到+10V),也就是支持真正的双极性输入,这一点可能是由USB-6009板子上的偏置调整电路做到的。就此要为NI点赞,实在是大大方便了使用者。偏置电路的出厂较准,在产品的生产过程中实在是比较麻烦的一件事情,这也许也是USB-6009价格较高的重要原因之一。

2、模拟分辨率

ADS7871的分辨率是14bits,在-10V到+10V的情况下,分辨率约为1.22mV。在很多应用中,这个分辨率并不算很高,例如后面将要提到的半导体温度传感器测温实验中1.22mV的分辨率就显得不太够。

当然在很多情况下,可以在进入A/D转换之前,对模拟信号进行放大以提高输入其分辨率,这样做的代价了是降低模拟信号的输入范围。例如,用PGA(可编程增益放大器)将信号放大10倍后ADC对放大前模拟信号分辨率将达到122uV,而输入范围将被限制在-1V到+1V之间。

值得注意的是NI对USB6009的设置非常有趣,只允许差分输入模式的模拟通道使用PGA,而对单端模式的通道却不能使用PGA。也就是说一旦在LabVIEW中将USB-6009的某个通道设置为RSE模式(单端)后,不论怎样配置其他参数,这个通道的分辨率都将为1.2mV。如果将USB-6009的某个通道设置为差分模式后,LabVIEW会自动的根据该通道模拟输入范围参数来控制PGA的增益值,从而达到提高模拟分辨率的效果。因此在这种情况下对模拟输入最大值和最小值的设置将是非常重要的。

3、模拟输入阻抗

ADS7871的输入阻抗达到6M欧姆,但USB-6009的输入阻抗仅为150K欧姆左右,可能是由于输入范围调整造成的,在客观上也起到了提高输入电流,提升抗干扰能力的作用。但在进行某些高输出阻抗的测试中,这可能导致测试失败,需要小心。

4、缓冲FIFO

C8051F320的片上RAM只有2.3KB,这意味着USB-6009单次采集缓冲的大小不可能超过这个数量。在LabVIEW编程时,最好不要把各个通道的“每通道采样数”之和设置到1K以上(每次采样需要14bits缓冲宽度)。

二、USB-6009的模拟输出

1、输出范围

USB-6009的输出电压范围是0-5V,且不能用程序调整该电压范围。这与模拟输入参数相差较大,在设计时需要特别注意,例如后面将要介绍的,用USB-6009测试三极管输出特性曲线的例子中,就需要调整模拟输出电压范围。

2、模拟输出阻抗

为保护USB-6009的模拟输出电路,其输出端串联了一个50欧姆的输出电阻。在使用中如果不注意这个输出电阻,它可能会在后级电路的输入阻抗的共同作用下,影响输出的电压值。

3、输出刷新速度

USB-6009的模拟输出非常奇怪:刷新速度只有150SPS!不知NI在这一点上是如何考虑的,这导致USB-6009基本无法输出有意义的时域波形,其模拟输出只能产生控制电压。

4、2.5V参考电压输出

这是由USB-6009输出的参考电压,在数字输出一边的第14脚,但应该属于模拟输出引脚,作用是供外部电路作为参考电压。使用时要注意,这个参考电压的输出阻抗较大,可达2K欧姆左右——这一点USB-6009的参考手册没有述及。

三、USB-6009的数字I/O

USB-6009共有12个数字I/O,分为P0——八个和P1——四个。每个都可以单独配置为“数字输入”、“集电极开路输出”或“推挽输出”三种模式。

1、数字输出

缺省情况下,为保证USB-6009的端口安全,当任意I/O被配置为输出时,它将采用集电极开路输出。虽称为“集电极开路”,但并非真正意义上的集电极开路。真实情况是这样的:该I/O的输出集电极被一个4.7K的电阻弱上拉到5V电源。这也意味着,如果使用缺省输出模式,最多只能输出1mA左右的拉电流——1mA即使只用来点亮一个小LED灯都很暗淡。在缺省的输出模式下如果想获得较大输出电流,应该采用灌电流形式:根据手册可获得8.5mA灌电流。

当然也可以采用“推挽输出”模式,获取较大的拉电流。但这种模式需要在LabVIEW中使用属性节点功能来配置,且推挽模式使用的高电平为3.3V。

2、数字输入
  
使用数字输入功能时,需要注意的是在“数字输入”模式下,USB-6009的输入阻抗较小。以连接触摸按键为例,需要使用1K欧姆左右的上拉电阻,才能使USB-6009读到高电平。

未完待续…………

用NI的数据采集卡实现简单电子测试之1——USB-6009简介的更多相关文章

  1. 用NI的数据采集卡实现简单电子测试之6——数字I/O及测试平台

    本文从本人的163博客搬迁至此. 前面几个例子介绍了NI数据采集卡的模拟输入和输出功能,本例则集中介绍USB-6009的数字输入输出功能.本例包括基本数字IO电路及在LabVIEW中控制USB-600 ...

  2. 用NI的数据采集卡实现简单电子测试之2——绘制三极管输出特性曲线(面)图

    本文从本人的163博客搬迁至此. 想设计几个实验,既能展示NI的LabVIEW和数据采集卡的功能特点,又能够让普通电类专业本科学生可以理解,自然首先想到了<电子技术基础>课程的内容.第一个 ...

  3. 用NI的数据采集卡实现简单电子测试之5——压控振荡器的测试

    本文从本人的163博客搬迁至此. 为了展示连续信号采集的方法,以其外部触发采集功能.我用运算放大器实现了一个最简单的低频压控振荡器(VCO),作为USB-6009采集的信号源.在LabVIEW下编写的 ...

  4. 用NI的数据采集卡实现简单电子测试之4——半导体温度传感器

    本文从本人的163博客搬迁至此. 为了展示NImax(Measurement & Automation explorer)的强大配置功能,做了一个半导体温度传感器测试的示例. 一.半导体温度传 ...

  5. 用NI的数据采集卡实现简单电子测试之3——绘制二极管V-I特性曲线图

    本文从本人的163博客搬迁至此. 接下来用USB-6009和LabVIEW实现对二极管最重要的特性曲线“V-I特性曲线”的测试和绘制. 一.什么是二极管V-I特性曲线    康华光版的<电子技术 ...

  6. 【转】linux设备驱动之MMC SD卡——核心层简单分析

    原文网址:http://blog.chinaunix.net/uid-28685940-id-3889878.html /*************************************** ...

  7. python3 练手实例5 做一个简单电子时钟

    import time,sys,os while(1): t = time.strftime('%Y-%m-%d\n%H:%M:%S',time.localtime(time.time())) pri ...

  8. 自己实现简单的AOP(一)简介

    AOP 和 OOP,在我看来是两种相辅相成的技术,作为OOP的补充,AOP 有着自己特殊的应用场景. 假设,我们需要在Service层实现以下几项基本功能: /// <para>1.自动管 ...

  9. 自制简单的.Net ORM框架 (一) 简介

    在自己研究ORM之前,也使用过几个成熟的ORM方案,例如:EntityFramework,PetaPoco,Dapper 等,用是很好用,但是对自己来说总是不那么方便,EF比较笨重,Dapper要自定 ...

随机推荐

  1. Angularjs 表格插件的使用

    对于相关的table组件可以使用:UI Grid (ng-grid),ng-table,smart table,Angular-Datatables,tablelite,kendo-ui中的grid. ...

  2. Windows远程桌面Debian配置

    由于xrdp.gnome和unity之间的兼容性问题,在Debian仍然无法使用xrdp登陆gnome或unity的远程桌面,现象是登录后只有黑白点为背景,无图标也无法操作.使用xrdp只能登录xfc ...

  3. C#中的三种timer

    转 https://blog.csdn.net/hoiven/article/details/51362582 如果你需要使用规律的时间间隔重复执行一些方法,最简单的方式是使用定时器(timer). ...

  4. 使用 Azure CLI 管理 Azure 磁盘

    Azure 虚拟机使用磁盘来存储 VM 操作系统.应用程序和数据. 创建 VM 时,请务必选择适用于所需工作负荷的磁盘大小和配置. 本教程介绍如何部署和管理 VM 磁盘. 学习内容: OS 磁盘和临时 ...

  5. Tomcat性能监控之Probe

    目前采用java进行开发的系统居多,这些系统运行在java容器中,通过对容器的监控可以了解到java进程的运行状况,分析java程序问题.目前市面上流行的中间件有很多(Tomcat.jetty.jbo ...

  6. 手把手教你制作AppPreview视频并上传到appStore进行审核

    手把手教你制作AppPreview视频并上传到appStore进行审核 注意,你需要使用iMovie才能够制作AppPreview视频文件,用QuickTime录制的无效! 最终效果 1. 新建一个事 ...

  7. web开发方面会遇到哪些缓存?分别如何优化

    Web缓存定义: Web缓存游走于服务器和客户端之间,这个服务器可能是源服务器(资源所驻留的服务器Add),数量可能是1个或多个. Web缓存就在服务器-客户端之间搞监控,监控请求,并且把请求输出的内 ...

  8. zabbix日常监控项nginx(五)

    1.开启nginx监控 2.编写脚本来进行数据采集 3.设置用户自定义参数 4.重启zabbix-agent 5.添加item.创建图形.创建触发器 6.创建模板 注:第一次使用可以按需求制定好模板, ...

  9. IIS6.0解析漏洞

    IIS6.0解析漏洞分两种 1.目录解析 以*.asp命名的文件夹里的文件都将会被当成ASP文件执行. 2.文件解析 *.asp;.jpg 像这种畸形文件名在“:”后面的直接被忽略,也就是说当成 *. ...

  10. 【C#】#103 动态修改App.config配置文件

    对 C/S模式 下的 App.config 配置文件的AppSetting节点,支持配置信息现改现用,并可以持久保存. 一. 先了解一下如何获取 配置信息里面的内容[获取配置信息推荐使用这个] 1.1 ...