本文从本人的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读到高电平。
未完待续…………