一、引言
工业控制等场合往往需要用PC或工控机对各种数据进行采集,通常数据采集系统是通过串行口、并行口或内部总线等与计算机连接的,但是它们都有一个共同的缺点,即安装不太方便,灵活性受到限制。目前USB接口已经成为计算机的标准设备,它具有通用、高速、支持热插拔等优点,非常适合在数据采集中应用。一般USB开发需要熟悉USB标准,FIRMWARE编程,驱动编程等,这对于没有USB经验的开发者有一走的困难。采用USBI00模块开发USB数据采集系统,开发者无需编写驱动程序,只需具备一定的单片机知识和PC应用程序的知识。就可以很快的开发USB接口的数据采集产品。
二、USB在数据采集中的应用
(一)USB的主要优点
1.速度快 USB有高速和低速两种方式,主模式为高速模式,速率为12Mbps.另外为了适应一些不需要很大吞吐量和很高实时性的设备,如鼠标等,USB还提供低速万式,速率为1.5Mb/s。
2.设备安装和配置容易 安装USB设备不必再打开机箱,无需关闭计算机。所有USB设备支持热插拔,系统对其进行自动配置,彻底抛弃了过去的跳线和拔码开关设置。
3.易于扩展 通过使用Hub扩展可连接多达127个外设。
4.能够采用总线供电 USB总线提供最大达5V电压、500mA电流。2.2 USB用于数据采集。
目前常见的采用板卡做数据采集。不仅安装麻烦,易受机箱内环境的干扰,而且由于受计算机插槽数量和地址,中断资源的限制,不可能挂接很多设备USB的出现,很好的解决了这些冲突,是实现数据采集的较好选择。
三、数据采集系统硬件构成
一个实用的数据采集系统一般包括电源模块,信号处理模块,微处理器,USB通讯模块几部分,图I是一个典型的USB数据采集系统组成结构方框图。

在微处理器和USB接口的选择上主要有两种方式,一种方案是采用具备USB通信功能的单片机。随着USB应用的日益广泛,Intel, SGS-Tomson, Cypress, Philips等芯片厂商都推出了具备USB通信接口的单片机。这些单片机处理能力强,有的本身就具备多路A/D,构成系统的电路简单,调试方便,是构成USB数据采集系统较好的方案,但是由于具备了USB接口,这些芯片与过去的开发系统通常是不兼容的,需要购买新的开发系统,投资较高。另一种是采用普通单片机加专用USB通信芯片。从成本上考虑,笔者采用了第二种方案,选用Atmel公司的89C51单片机和讯通公司的USB100芯片构成系统。89c51这种普通单片机价格便宜,而由于USB100模块对通讯协议进行了转换封装,开发时无需自己编写驱动程序,设计和调试起来也并不困难。
(一)电源模块
这一部分提供其它模块所需供电。USB的一大优点是可以提供电源,所以只需考虑电路中其它芯片的供电要求,一般数据采集设备耗电量不大,用低功耗低压差集成线性电源芯片即可。
(二)信号处理模块
这一模块将传感器采集过来的电压信号进行滤波,放大,以及进行A/D转换然后送入单片机,可以沿用传统的设计方法,综合考虑采集的精度、速率、通道数来选择芯片和设计电路。依据传感器发送的信号范围以及A/D转换芯片的接收电压范围来确定放大倍数,决定是采用单级放大还是多级放大,设计相应的放大电路。另外,根据信号的频率要求,设计滤波电路。对于多路采集,还需要加入相应的开关电路,使得微处理器能够分时处理多路信号。
笔者在人体姿态平衡仪器的设计中,前端三个传感器发送的信号在-20mV~+20mV,频率要求小于200Hz。由于系统对采集精度和速率较高,因此笔者选用了高精度的ADS774芯片,ADS774是8路12位的A/D转换芯片,双极性输入时转换电压范围-5V~+5V,它转换速度快,能够实现高速高精度数据采集的要求。这样,在信号处理部分就采用了两级放大,放大250倍后送入ADS774进行数据转换。另外在放大电路中加上一阶有源低通滤波电路,滤掉高频千扰口。
(三)通讯模块
这一部分主要是USB内部芯片和外围电路,用来实现单片机与计算机的通讯。笔者选用了讯通公司的USB 100芯片USB100芯片是目前开发最为方便的USB接口产品之一。它内部封装了USB11协议以及300字节的内部FIFO,八位并行数据接口,它的最大优点是完成了全部协议的转换和封装,使得开发的过程变得简单,对USB的操作变成了类似于对外部存储器的操作。
图2是USBI00芯片与接口插头的连接图。D+和D-用以在插座和芯片间传输数据。DO~D7是USB100的8位双向I/O口,与单片机的8位端口相连,用于传输数据USB100模块的WR, RD, IXE, RXF与单片机的I/O口相连,但因为时序不同,USB100的WR、RD不能用单片机的WR与RD进行控制、应用单片机I/O进行控制。单片机根据FXE,RXF的状态进行数据的收发。

发送数据:当单片机检测到USB100模块IXE为低时,表示内部发送缓冲区允许发送数据到USB端口,可以将数据通过八位数据总线发送给USB100模块,发送数据锁存由WR控制(沿触发);USB100模块TXE为高时,禁止发送数据发送时序如图3所示.
接收数据:当单片机检测到USB100模块RXF为低时,表示内部接收缓冲区有来自USB端口得数据,可以通过八位数据总线将数据读入发给USB100模块,接收数据锁存由RD控制〔沿触发〕,接收时序图如图4所示。

(四)中央处理器模块
中央处理器对A/D转换、通讯、通道选择进行控制。笔者采用了89C51单片机,它体积小,重量轻,价格便宜。51系列单片机的开发应用已经非常成熟,读者可以参考一般的51开发方法,这里不再介绍。
四、数据采集系统编程
系统软件包括89C51单片机软件和计算机界面与数据处理软件两部分。
通讯部分采用单机通讯协议的方式编程,这样能够保证数据传输更加稳定可靠。一种选择是以PC为主机,MCU为从机,另一种是以MCU为主机,PC为从机。笔者采用的是前一种方案,PC作为主机发送请求,MCU给出应答程序主要流程如图5所示。

(一)89C51单片机程序
在初始化了各种参数之后,开始不断的循环,查询USB100端口,当查询到USB100端口有数据收到,并且该数据代表采集指令时,开始执行数据采集,否则继续循环。程序用汇编语言或者C语言都可以,笔者采用的是C语言编程。
(二)PC机程序
PC机程序可分为通讯程序及数据处理两部分,数据处理部分不同应用各不相同,这里只介绍通讯部分。在PC上安装USB100专用驱动后,PC会增加一个虚拟端口(如串口3),此端口对应USB端口,可以完全按照串口的方式操作USB端口发送和接收数据,区别只是设走的通讯速率无效,USB 100按默认最高速率(8Mb/s)工作编写程序时。完全可以按照一般串口编程方法,无需DDK编程笔者采用的是在VC下,Mscomm控件编程.使用控件编程的特点是程序比较简单,但是如果需要较高的通讯效率,建议采用VC调用API的方式也可以采用DELPHI, VB等编程语言。
五、结语
笔者在人体姿态平衡仪的开发中,采用普通单片机89C51和USB100专用模块组成数据采集系统,在使用中运行可靠,测量准确.用该方法开发USB数据采集系统,在满足性能要求的同时,也使系统的设计更为方便决捷。
接收数据:当单片机检测到USB100模块RXF为低时,表示内部接收缓冲区有来自USB端口得数据,可以通过八位数据总线将数据读入发给USB100模块,接收数据锁存由RD控制〔沿触发〕,接收时序图如图4所示。

(四)中央处理器模块
中央处理器对A/D转换、通讯、通道选择进行控制。笔者采用了89C51单片机,它体积小,重量轻,价格便宜。51系列单片机的开发应用已经非常成熟,读者可以参考一般的51开发方法,这里不再介绍。
四、数据采集系统编程
系统软件包括89C51单片机软件和计算机界面与数据处理软件两部分。
通讯部分采用单机通讯协议的方式编程,这样能够保证数据传输更加稳定可靠。一种选择是以PC为主机,MCU为从机,另一种是以MCU为主机,PC为从机。笔者采用的是前一种方案,PC作为主机发送请求,MCU给出应答程序主要流程如图5所示。

(一)89C51单片机程序
在初始化了各种参数之后,开始不断的循环,查询USB100端口,当查询到USB100端口有数据收到,并且该数据代表采集指令时,开始执行数据采集,否则继续循环。程序用汇编语言或者C语言都可以,笔者采用的是C语言编程。
(二)PC机程序
PC机程序可分为通讯程序及数据处理两部分,数据处理部分不同应用各不相同,这里只介绍通讯部分。在PC上安装USB100专用驱动后,PC会增加一个虚拟端口(如串口3),此端口对应USB端口,可以完全按照串口的方式操作USB端口发送和接收数据,区别只是设走的通讯速率无效,USB 100按默认最高速率(8Mb/s)工作编写程序时。完全可以按照一般串口编程方法,无需DDK编程笔者采用的是在VC下,Mscomm控件编程.使用控件编程的特点是程序比较简单,但是如果需要较高的通讯效率,建议采用VC调用API的方式也可以采用DELPHI, VB等编程语言。
五、结语
笔者在人体姿态平衡仪的开发中,采用普通单片机89C51和USB100专用模块组成数据采集系统,在使用中运行可靠,测量准确.用该方法开发USB数据采集系统,在满足性能要求的同时,也使系统的设计更为方便决捷。