本文从本人的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. 带你从零学ReactNative开发跨平台App开发[expo 打包发布](八)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  2. leetCode题解 Student Attendance Record I

    1.题目描述 You are given a string representing an attendance record for a student. The record only conta ...

  3. bug管理工具

    1..禅道 禅道项目管理软件(简称:禅道)集产品管理.项目管理.质量管理.文档管理.组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程. 禅道的主要管理思想基于国际 ...

  4. C#实现ADH815通讯

    最近在做自提柜项目,考虑到ADH815电路板在自助售卖行业的通用性.把通讯代码贴出来了. 下载地址

  5. [翻译] GMCPagingScrollView

    GMCPagingScrollView https://github.com/GalacticMegacorp/GMCPagingScrollView GMCPagingScrollView is a ...

  6. php常用算法和数据结构

    </pre><pre name="code" class="php"><?php /** * Created by PhpStor ...

  7. October 06th 2017 Week 40th Friday

    The greatest ideal man can set before himself is self-perfection. 一个人最高的理想是自我完善. To be better than t ...

  8. 【教程】【FLEX】#004 反射机制

    总结: 目前用到反射的主要有两个方法 1.  getDefinitionByName    //根据类名,返回对象(反射实例化对象) 2.  describeType                 ...

  9. app数据加密方法

    由于项目涉及到注册和登录,所以我了解一下现在app使用比较广泛的几种密码加密方法,可以当作参考,以下都是在python3.5的环境下使用这些算法的例子. 1.base64 Base64是一种基于64个 ...

  10. Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务

    Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...