引 言
在工业控制现场,常常需要采集多路的现场数据,如电压、电流、温度、湿度、气压等。数据采集器将现场的模拟量经过A/D转换后变成数字量并传输到主机进行处理,由主机根据处理的结果,将控制信号传输给现场执行模块进行各种操作。由于有些工业现场需要对现场的模拟量进行高速A/D数据采集,目前常用的数据传输网络(如RS232/RS485,CAN等)已经不能满足大量采集数据和高速实时数据传输的要求。而USB传输具有高速可靠传输的优势,具有成本低、可靠性高、维护方便等优点。本文介绍一个基于C8051F060的USB高速A/D数据采集器。通过本系统,不仅能了解数据采集的一般过程以及一般数据采集系统的构成,还能了解C8051F060单片机、USBl00模块的功能。该系统最高传输速度可达8 Mbps。
1 系统原理
该系统由工控机、USBl00、C805lF060单片机、多路模拟切换开关、四路模拟运算放大器、可反复充放电的锂离子电池等构成。系统电路原理框图如图1所示。
1.1 C8051F060单片机
C8051F060是Silicon Laboratories公司推出的完全集成的混合信号片上系统型MCU。具有59个数字I/0引脚,片内集成了2个16位、1 Msps的ADC;有与高速流水线结构的8051兼容的CIP一51内核(可达25MIPS),有DMA控制器和局域网(CAN2.OB)控制器;32个消息对象,每个消息对象有自己的标识屏蔽;具有全速、非侵入式的在系统调试接口(片内),10位、200 ksps的ADC,带8通道模拟多路开关,2个12位DAC;具有可编程数据更新方式;64 KB可在系统编程的Flash内存,4352(4K+256)字节的片内RAM,可寻址64 KB地址空间的外部数据存储器接口,硬件实现的SPI、SMBus/I2C和2个UART串行接口;5个通用的16位定时器,6个捕捉/比较模块的可编程计数器/定时器数组,片内看门狗定时器、VDD监视器、时钟振荡器和温度传感器。
C8051F060是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件使能/禁止和配置。Flash存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。
C8051F060单片机的P0.O配置为外部中断源(INT0)。P0.1配置为外部中断源(INTl),下降沿触发输入,当USBl00模块接收到工控机数据时触发INTl中断。PO.2配置为通用I/0,当电池电压低到一定程度时被MCU检测到并做低电压处理。P3.0~P3.7配置为通用I/0,P3.0用于驱动发光二极管,P3.1用作USBl00的写控制线,P3.2用作USBl00的读控制线,P3.3、P3.4用作模拟控制开关的控制线,P3.5用于控制传感器的供电(当不需要采集数据时关掉传感器电源以减少系统功耗),P3.6、P3.7用作电平转换芯片74ALVCl64245的数据方向选择控制线。P1配置为通用I/O,作为8位并行数据线。P5配置为通用I/O,作为8位拨码开关的输入,用8位拨码开关设定MCU的数据采集速度。C8051F060接线图如图2所示。
1.2 USBl00通用串行总线模块
USBlOO是基于ASIC设计的,内部封装了USBl.1全部协议以及300位元组的内部FIF0,8位并行数据接口,对USB的操作类似于对外部内存的操作,由USBl00模块完成全部协议的转换和封装,使开发的过程变得简单。注意:由于USBlOO输出TTL电平的数据,可以与5V的单片机很好地连接,而C8051F060是3.3 V的系统,为了系统的稳定性,中间需要增加3~5 V电平转换电路。
DO~D7:数据口是一个8位双向I/0口。它是一个8位并口,C8051F060通过它和USBlOO交换数据。
RD:允许内部接收缓冲区数据通过8位并行总线读出。
WR:将8位并行总线上的数据锁存入内部缓冲区。
TXE:高表示模块发送缓冲区已满;低表示发送缓冲区为空,可以发送数据。
RXF:高表示模块没有数据输出;低表示模块有数据输出,可以读数据。
LISBVCC:USB界面的电源脚。
D+:USB数据脚。
D一:USB数据脚。
GND:电源地。
0UTVCC:+5V输出,可以提供给外部MCU使用,最大为400 mA。
NC:空引脚。
USBl00模块的控制时序:
发送时序如图3所示。当单片机检测到USBl00模块TXE为低时,表示内部发送缓冲区允许发送数据,可以将数据通过8位数据总线DO~D7发给USBl00模块,发送数据锁存由WR控制;USBl00模块TXE为高时,禁止发送数据。
接收时序如图4所示,当单片机检测到USBl00模块RXF为低时,表示内部接收缓冲区有数据,可以通过8位数据总线DO~D7发给C8051F060单片机,接收数据锁存由RD控制。
1.3 多路模拟切换开关
因为C8051F060只有2路高速A/D转换器,而实际上有4路模拟量需要采集,故需要一个多路模拟切换开关。NLAS4684是两路单刀双执CMOS模拟切换开关,具有很低的导通电阻。当ADO_CON、ADl_CON为高电平时,运放的输出OUT2进入ADO进行A/D转换,运放的输出OUT4进入ADl进行A/D转换;当ADO_CON、ADl_CON为低电平时,运放的输出OUTl进入ADO进行A/D转换,运放的输出OUT3进入AD1进行A/D转换,如图5所示。
1.4 模拟运算放大电路
LM134、R1、R2、D1构成恒流源电路,对桥式电路传感器提供恒流源。桥式电路传感器输出信号INl+、INl一经INA326EA放大后送入多路模拟切换开关,然后由C805lF060的A/D电路进行A/D转换。INA326EA是一款单电压供电、高性能、低功耗、满幅度输入输出的仪表运算放大器。运算放大器电路放大倍数G=2K1/R3。总共有4路模拟运算放大电路。图6为其中一路模拟运算放大电路。
1.5 供电电路
为了符合工业现场便携式的需要,选用上海捷士电池制品有限公司的JS一7.4V一1.2Ah可反复充放电的锂离子电池。电池采用锂离子083448电芯,组合方式为两串,电池容量1.2 Ah,电池电压7.4 V,外形尺寸50 mm×37mm×17 mm,重量55 g。该电池具有电池过充保护、过放保护、短路保护、过流保护功能(这些功能已经集成在电池内部,便于使用)。TPS76650[)是具有250 mA输出能力的LDO芯片,电池电压通过该芯片的5、6脚输入,7脚输出稳定的+5 V电压供系统使用;2脚是对TPS76650D是否工作正常的指示输出,当芯片工作正常时,2脚输出高电平,当芯片输出电压在4.6~4.9 V时,2脚输出低电平,R1为外部上拉电阻。TPSll00为大电流驱动能力、低导通电阻的电源分配开关;输出5 V电压为传感器电路提供恒流源,通过SPXlll7稳压成3.3 V为传感器放大电路供电。为了节省耗电,C8051F060可以通过TPSll00的4脚关掉传感器电路的恒流源和放大电路。
另外,当采集器和计算机通过USB相接时,因为USB提供+5 V/500 mA电源,采集器可以通过USB连接线对采集器供电。供电电路如图7所示。
2 采集系统的编程
2.1 单片机编程
采用Silicon公司的Silicon Laboratories IDE集成编辑、编译、仿真、下载软件包,用C语言进行软件编写。系统通电后,首先要对单片机进行初始化,包括单片机的I/0端口和交叉开关、定时器的初始化,A/D转换器的初始化以及A/D参考电压的初始化等。工控机通过USB口对便携式数据采集器发送0x41、0x42、0x43、0x4_4,便携式数据采集器分别回送传感器1、2、2、4的200个A/D采集数据,高位在前,低位在后。(部分源代码程序略——编者注)
2.2 工控机编程
在工控机上安装好USBlOO模块的专用驱动程序后,USBl00即可作为一个标准的设备,按照与串口完全一样的方法进行编程。本次设计采用了VB编程。在VB中采用MSComm控件,将USB接口作为一个标准的串口使用。程序分为两部分:一部分是USB接口程序;另一部分是应用程序。将由C8051F060采集到的数据用直观的图像方法显示出来。
结 语
C8051F060作为新一代8051单片机,具有功能强大、体积小、工作稳定等特点,适用于复杂控制系统。本文只介绍了基于C8051F060的USB高速A/D数据采集器。数据采集器已经成功运用于某工程中。对其他相类似的数据采集、USB数据传输应用具有一定的参考价值。