C8051F060的USB高速A/D數(shù)據(jù)采集器設(shè)計(jì)
在工業(yè)控制現(xiàn)場,常常需要采集多路的現(xiàn)場數(shù)據(jù),如電壓、電流、溫度、濕度、氣壓等。數(shù)據(jù)采集器將現(xiàn)場的模擬量經(jīng)過A/D轉(zhuǎn)換后變成數(shù)字量并傳輸?shù)街鳈C(jī)進(jìn)行處理,由主機(jī)根據(jù)處理的結(jié)果,將控制信號傳輸給現(xiàn)場執(zhí)行模塊進(jìn)行各種操作。由于有些工業(yè)現(xiàn)場需要對現(xiàn)場的模擬量進(jìn)行高速A/D數(shù)據(jù)采集,目前常用的數(shù)據(jù)傳輸網(wǎng)絡(luò)(如RS232/RS485,CAN等)已經(jīng)不能滿足大量采集數(shù)據(jù)和高速實(shí)時數(shù)據(jù)傳輸?shù)囊?。?strong>USB傳輸具有高速可靠傳輸?shù)膬?yōu)勢,具有成本低、可靠性高、維護(hù)方便等優(yōu)點(diǎn)。本文介紹一個基于C8051F060的USB高速A/D數(shù)據(jù)采集器。通過本系統(tǒng),不僅能了解數(shù)據(jù)采集的一般過程以及一般數(shù)據(jù)采集系統(tǒng)的構(gòu)成,還能了解C8051F060單片機(jī)、USBl00模塊的功能。該系統(tǒng)最高傳輸速度可達(dá)8 Mbps。
1 系統(tǒng)原理
該系統(tǒng)由工控機(jī)、USBl00、C805lF060單片機(jī)、多路模擬切換開關(guān)、四路模擬運(yùn)算放大器、可反復(fù)充放電的鋰離子電池等構(gòu)成。系統(tǒng)電路原理框圖如圖1所示。
1.1 C8051F060單片機(jī)
C8051F060是Silicon Laboratories公司推出的完全集成的混合信號片上系統(tǒng)型MCU。具有59個數(shù)字I/0引腳,片內(nèi)集成了2個16位、1 Msps的ADC;有與高速流水線結(jié)構(gòu)的8051兼容的CIP一51內(nèi)核(可達(dá)25MIPS),有DMA控制器和局域網(wǎng)(CAN2.OB)控制器;32個消息對象,每個消息對象有自己的標(biāo)識屏蔽;具有全速、非侵入式的在系統(tǒng)調(diào)試接口(片內(nèi)),10位、200 ksps的ADC,帶8通道模擬多路開關(guān),2個12位DAC;具有可編程數(shù)據(jù)更新方式;64 KB可在系統(tǒng)編程的Flash內(nèi)存,4352(4K+256)字節(jié)的片內(nèi)RAM,可尋址64 KB地址空間的外部數(shù)據(jù)存儲器接口,硬件實(shí)現(xiàn)的SPI、SMBus/I2C和2個UART串行接口;5個通用的16位定時器,6個捕捉/比較模塊的可編程計(jì)數(shù)器/定時器數(shù)組,片內(nèi)看門狗定時器、VDD監(jiān)視器、時鐘振蕩器和溫度傳感器。
C8051F060是真正能獨(dú)立工作的片上系統(tǒng)。所有模擬和數(shù)字外設(shè)均可由用戶固件使能/禁止和配置。Flash存儲器還具有在系統(tǒng)重新編程能力,可用于非易失性數(shù)據(jù)存儲,并允許現(xiàn)場更新8051固件。
C8051F060單片機(jī)的P0.O配置為外部中斷源(INT0)。P0.1配置為外部中斷源(INTl),下降沿觸發(fā)輸入,當(dāng)USBl00模塊接收到工控機(jī)數(shù)據(jù)時觸發(fā)INTl中斷。PO.2配置為通用I/0,當(dāng)電池電壓低到一定程度時被MCU檢測到并做低電壓處理。P3.0~P3.7配置為通用I/0,P3.0用于驅(qū)動發(fā)光二極管,P3.1用作USBl00的寫控制線,P3.2用作USBl00的讀控制線,P3.3、P3.4用作模擬控制開關(guān)的控制線,P3.5用于控制傳感器的供電(當(dāng)不需要采集數(shù)據(jù)時關(guān)掉傳感器電源以減少系統(tǒng)功耗),P3.6、P3.7用作電平轉(zhuǎn)換芯片74ALVCl64245的數(shù)據(jù)方向選擇控制線。P1配置為通用I/O,作為8位并行數(shù)據(jù)線。P5配置為通用I/O,作為8位撥碼開關(guān)的輸入,用8位撥碼開關(guān)設(shè)定MCU的數(shù)據(jù)采集速度。C8051F060接線圖如圖2所示。
1.2 USBl00通用串行總線模塊
USBlOO是基于ASIC設(shè)計(jì)的,內(nèi)部封裝了USBl.1全部協(xié)議以及300位元組的內(nèi)部FIF0,8位并行數(shù)據(jù)接口,對USB的操作類似于對外部內(nèi)存的操作,由USBl00模塊完成全部協(xié)議的轉(zhuǎn)換和封裝,使開發(fā)的過程變得簡單。注意:由于USBlOO輸出TTL電平的數(shù)據(jù),可以與5V的單片機(jī)很好地連接,而C8051F060是3.3 V的系統(tǒng),為了系統(tǒng)的穩(wěn)定性,中間需要增加3~5 V電平轉(zhuǎn)換電路。
DO~D7:數(shù)據(jù)口是一個8位雙向I/0口。它是一個8位并口,C8051F060通過它和USBlOO交換數(shù)據(jù)。
RD:允許內(nèi)部接收緩沖區(qū)數(shù)據(jù)通過8位并行總線讀出。
WR:將8位并行總線上的數(shù)據(jù)鎖存入內(nèi)部緩沖區(qū)。
TXE:高表示模塊發(fā)送緩沖區(qū)已滿;低表示發(fā)送緩沖區(qū)為空,可以發(fā)送數(shù)據(jù)。
RXF:高表示模塊沒有數(shù)據(jù)輸出;低表示模塊有數(shù)據(jù)輸出,可以讀數(shù)據(jù)。
LISBVCC:USB界面的電源腳。
D+:USB數(shù)據(jù)腳。
D一:USB數(shù)據(jù)腳。
GND:電源地。
0UTVCC:+5V輸出,可以提供給外部MCU使用,最大為400 mA。
NC:空引腳。
USBl00模塊的控制時序:
發(fā)送時序如圖3所示。當(dāng)單片機(jī)檢測到USBl00模塊TXE為低時,表示內(nèi)部發(fā)送緩沖區(qū)允許發(fā)送數(shù)據(jù),可以將數(shù)據(jù)通過8位數(shù)據(jù)總線DO~D7發(fā)給USBl00模塊,發(fā)送數(shù)據(jù)鎖存由WR控制;USBl00模塊TXE為高時,禁止發(fā)送數(shù)據(jù)。
接收時序如圖4所示,當(dāng)單片機(jī)檢測到USBl00模塊RXF為低時,表示內(nèi)部接收緩沖區(qū)有數(shù)據(jù),可以通過8位數(shù)據(jù)總線DO~D7發(fā)給C8051F060單片機(jī),接收數(shù)據(jù)鎖存由RD控制。
1.3 多路模擬切換開關(guān)
因?yàn)镃8051F060只有2路高速A/D轉(zhuǎn)換器,而實(shí)際上有4路模擬量需要采集,故需要一個多路模擬切換開關(guān)。NLAS4684是兩路單刀雙執(zhí)CMOS模擬切換開關(guān),具有很低的導(dǎo)通電阻。當(dāng)ADO_CON、ADl_CON為高電平時,運(yùn)放的輸出OUT2進(jìn)入ADO進(jìn)行A/D轉(zhuǎn)換,運(yùn)放的輸出OUT4進(jìn)入ADl進(jìn)行A/D轉(zhuǎn)換;當(dāng)ADO_CON、ADl_CON為低電平時,運(yùn)放的輸出OUTl進(jìn)入ADO進(jìn)行A/D轉(zhuǎn)換,運(yùn)放的輸出OUT3進(jìn)入AD1進(jìn)行A/D轉(zhuǎn)換,如圖5所示。
1.4 模擬運(yùn)算放大電路
LM134、R1、R2、D1構(gòu)成恒流源電路,對橋式電路傳感器提供恒流源。橋式電路傳感器輸出信號INl+、INl一經(jīng)INA326EA放大后送入多路模擬切換開關(guān),然后由C805lF060的A/D電路進(jìn)行A/D轉(zhuǎn)換。INA326EA是一款單電壓供電、高性能、低功耗、滿幅度輸入輸出的儀表運(yùn)算放大器。運(yùn)算放大器電路放大倍數(shù)G=2K1/R3??偣灿?路模擬運(yùn)算放大電路。圖6為其中一路模擬運(yùn)算放大電路。
1.5 供電電路
為了符合工業(yè)現(xiàn)場便攜式的需要,選用上海捷士電池制品有限公司的JS一7.4V一1.2Ah可反復(fù)充放電的鋰離子電池。電池采用鋰離子083448電芯,組合方式為兩串,電池容量1.2 Ah,電池電壓7.4 V,外形尺寸50 mm×37mm×17 mm,重量55 g。該電池具有電池過充保護(hù)、過放保護(hù)、短路保護(hù)、過流保護(hù)功能(這些功能已經(jīng)集成在電池內(nèi)部,便于使用)。TPS76650[)是具有250 mA輸出能力的LDO芯片,電池電壓通過該芯片的5、6腳輸入,7腳輸出穩(wěn)定的+5 V電壓供系統(tǒng)使用;2腳是對TPS76650D是否工作正常的指示輸出,當(dāng)芯片工作正常時,2腳輸出高電平,當(dāng)芯片輸出電壓在4.6~4.9 V時,2腳輸出低電
平,R1為外部上拉電阻。TPSll00為大電流驅(qū)動能力、低導(dǎo)通電阻的電源分配開關(guān);輸出5 V電壓為傳感器電路提供恒流源,通過SPXlll7穩(wěn)壓成3.3 V為傳感器放大電路供電。為了節(jié)省耗電,C8051F060可以通過TPSll00的4腳關(guān)掉傳感器電路的恒流源和放大電路。
另外,當(dāng)采集器和計(jì)算機(jī)通過USB相接時,因?yàn)閁SB提供+5 V/500 mA電源,采集器可以通過USB連接線對采集器供電。供電電路如圖7所示。
2 采集系統(tǒng)的編程
2.1 單片機(jī)編程
采用Silicon公司的Silicon Laboratories IDE集成編輯、編譯、仿真、下載軟件包,用C語言進(jìn)行軟件編寫。系統(tǒng)通電后,首先要對單片機(jī)進(jìn)行初始化,包括單片機(jī)的I/0端口和交叉開關(guān)、定時器的初始化,A/D轉(zhuǎn)換器的初始化以及A/D參考電壓的初始化等。工控機(jī)通過USB口對便攜式數(shù)據(jù)采集器發(fā)送0x41、0x42、0x43、0x4_4,便攜式數(shù)據(jù)采集器分別回送傳感器1、2、2、4的200個A/D采集數(shù)據(jù),高位在前,低位在后。(部分源代碼程序略——編者注)
2.2 工控機(jī)編程
在工控機(jī)上安裝好USBlOO模塊的專用驅(qū)動程序后,USBl00即可作為一個標(biāo)準(zhǔn)的設(shè)備,按照與串口完全一樣的方法進(jìn)行編程。本次設(shè)計(jì)采用了VB編程。在VB中采用MSComm控件,將USB接口作為一個標(biāo)準(zhǔn)的串口使用。程序分為兩部分:一部分是USB接口程序;另一部分是應(yīng)用程序。將由C8051F060采集到的數(shù)據(jù)用直觀的圖像方法顯示出來。
結(jié) 語
C8051F060作為新一代8051單片機(jī),具有功能強(qiáng)大、體積小、工作穩(wěn)定等特點(diǎn),適用于復(fù)雜控制系統(tǒng)。本文只介紹了基于C8051F060的USB高速A/D數(shù)據(jù)采集器。數(shù)據(jù)采集器已經(jīng)成功運(yùn)用于某工程中。對其他相類似的數(shù)據(jù)采集、USB數(shù)據(jù)傳輸應(yīng)用具有一定的參考價值。