引 言
在工業控制現場,常常需要采集多路的現場數據,如電壓、電流、溫度、濕度、氣壓等。數據采集器將現場的模擬量經過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 USB AD數據采集器
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數據傳輸應用具有一定的參考價值。