摘要:針對油田現場環境復雜,一直面臨著因采集到的數據不準確的問題,采用ADl公司的ADuC841芯片設計了一種具有在油田現場實現數據采集的小型電路。該數據采集電路采用片內集成的A/D轉換器,大大減小電路體積;滿足系統的高溫、高壓工作環境以及低功耗。現在的數據采集系統速度更快,功能更強,精度更高,但是體積卻顯得更小,總體性價比越來越高。
關鍵詞:嵌入式;數據采集系統;ADuC841;A/D轉換器
0 引言
油田現場往往環境復雜,電磁干擾多,溫度/濕度相對變化范圍較大,所以一直面臨著因采集到的數據不準確,影響測量精度和速度。在設計現場數據采集模塊的過程中,經過對眾多數據采集處理芯片的分析比較,選用了ADuC841作為數據采集的核心芯片,相比于早期的ADuC81x系列,它在速度大幅度提升片內的集成功能、器件的可靠性和功耗等方面都達到了一個嶄新的水平,證明該芯片非常適合用于復雜電磁環境下工業控制上的小信號數據采集。
1 ADuC841的基本原理和性能特點
ADuc841單片機具有高速、高精度的ADC,DAC功能,以及獨一無二的在電路可調試、可下載的特點,特別適合在各種測控系統和儀器儀表中使用。
ADuC841(如圖1所示)內部集成了8052微處理器的內核,并提供了很大的存儲空間,如64 KB的FLASH/E2PROM程序空間、8 KB的FLASH/E-2PROM數據空間,以及2 304 B的數據RAM等。此外,該器件還集成了許多外圍器件,包括精確、高速的8通道12位模/數轉換器(其轉換速率最高可達420 kS/s),片上低漂移15×10-6℃的精密內部電壓參考源,DMA方式控制器,2個12位的電壓輸出數/模轉換器、2個脈寬調制輸出、一個溫度傳感器。使用這些模塊,可以方便地實現與前級傳感器的接口,也可以有效地控制后級電路。其他的片上外設主要有ART,SPI以及I2C接口、時間間隔計數器、看門狗定時器和電源監視器等,這些模塊可以便捷地實現與其他單片機或PC機通信(此時需電平轉換電路),還可以有效地保障單片機電源的正常工作和程序的正常運行。
2 數據采集器硬件系統的總體設計與實現
2.1 硬件系統的模塊劃分和各模塊功能
該外置式數據采集器硬件系統由傳感器模塊、信號調理模塊、外部存儲模塊、串行通信口模塊、顯示模塊組成,如圖2所示。信號調理模塊主要采集到的信號進行簡單的放大、濾波。模擬輸入信號的濾波主要用于濾除高頻干擾信號,在設計中采用低通濾波器完成這一功能。開關量輸入信號的濾波主要用于防止強電磁干擾或工頻電壓通過開關量輸入通道進入信號采集處理系統,設計采用連接光耦合器的方法實現這一功能。信號采集處理模塊的主要功能是對采集到的信號進行A/D轉換和簡單處理。同時信號采集處理模塊的微處理器肩負著管理輸入輸出等其他模塊的任務,該模塊主要由ADuC841芯片組成。外部存儲模塊的主要功能是提供32 KB的外部數據存儲空間,為該外置式數據采集器存儲和處理大量的采集信號,以提供硬件支持。外部存儲模塊主要由FLAsH存儲器AT45DB081B組成。串行通信模塊的功能主要是提供標準的RS 232接口和RS 485接口,為實現不同外置式數據采集器之間的通信,以及外置式數據采集器與計算機之間的通信提供方便。該模塊主要由MAX 232芯片和MAX485芯片組成。
2.2 硬件系統電路的總體設計
信號采集處理模塊中的ADuC841芯片允許P1口作為采集器的模擬信號輸入口,ADuC841芯片功能強大,允許被采集信號直接輸入。但為了抑制干擾信號,在本設計中被采集信號通過低通濾波器后再輸入ADuC841。信號采集處理模塊中ADuC841芯片的P2口既可以作為采集器的數字信號I/O口,也可以作為外部32 KB RAM的高7位地址線接口。當作為采集器的數字信號I/O口時,P2口通過緩沖器(鎖存器)與外部開關量輸入(開關量輸出)相連;當作為外部32 KB RAM的高7位地址線接口時,P2口直接與外部RAM的高7位地址線相連。ADuC841的第14口外接一個射級跟隨器作為DAC輸出口,第14口外接一個射級跟隨器的目的是增加電路的驅動能力。為了方便集散控制和實現外置式數據采集器與計算機及其
他設備間的信息交換,需要在外置式數據采集器設計標準的通信接口。本數據采集處理器預留了標準的RS 232C和RS 485A通信接口,方便了聯機通信。
3 軟件系統的設計
本系統的軟件編制和仿真下載均在Keil公司最新推出的Keil uVision3環境下實現。Keil單片機應用開發軟件支持多種不同公司的MCS51構架的芯片,集編輯、編譯、下載和仿真等于一體,同時還支持PLM、匯編和C語言的程序設計,在調試程序和軟件仿真方面也有很強大的功能。Keil uVision3支持ADuC8XX系列芯片的開發和在線下載,簡單易用,能夠滿足系統軟件開發環境的需求。由于篇幅的限制只給出了串口通信的設計,如圖3所示。
在串行通信中,收發雙方對發送或接收數據的速率要有約定。通過軟件可對ADuC841串行口編程為4種工作方式,其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。串行口的4種工作方式對應3種波特率。由于輸入移位時鐘的來源不同,所以各種方式的波特率計算公式也不相同。
方式0的波特率=fosc/12
方式1的波特率=(2SMOD/64)(T1溢出率)
方式2的波特率=(2SMOD/64)fosc
方式3的波特率=(2SMOD/64)(T1溢出率)
當T1作為波特率發生器時,使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。這時溢出率取決于TH1中的計數值。在ADuC841中,用的晶振頻率為32.768 kHz,所以選用的波特率也相對固定。在使用串行口之前,應對其進行初始化,主要是設置產生波特率的定時器1、串行控制和中斷控制。具體步驟如下:
(1)確定T1的工作方式(編程TMOD寄存器);
(2)計算T1的初值,裝載TH1,TL1;
(3)啟動T1(編程TCON中的TR1位);
(4)確定串行口控制(編程SCON寄存器);
(5)串行口在中斷方式工作時,要進行中斷設置(編程IE,IP寄存器)。
雙方約定采用串行口方式1進行通信,一楨信息為10位,其中有1個起始位、8個數據位和一個停止位,波特率為2 400 b/s。T1工作在定時器方式2,振蕩頻率選用11.059 2 Hz,由此可知TH1=TL1=OF4H,PCON寄存器的SMOD位為0。
4 結語
在此提出了以ADuC841單片機為核心結構,進行數據實時采集的實施方案設計。圍繞該系統方案,把本系統實時內核的具體實現步驟分為系統硬件設計和軟件編程設計2個階段。對今后的研發提供一定的整體框架,為開發設計類似設備打下了理論與實踐的基礎。