1.前言 在工業控制中需要對各種參量進行采集,即利用信號采集系統將各種數據采集到計算機中進行實時處理。傳感器起著中間橋梁的作用,但是它輸出的信號往往是很微弱的電流信號,需要經過放大轉換成電壓信號后才能輸入到A/D中進行數據采集。另外,隨著測試技術的不斷發展,為了適應數字化、高效率等要求,在工業測試系統中單片機的應用也越來越廣泛,它具有實時及可靠性高的優點,并且日益顯示出巨大的優越性。本系統采用美國Cygnal公司的C8051F020單片機為控制核心,組成了多通道數據綜合采集系統,它利用較少的外圍器件實現了對液壓設備的控制。 2.C8051F020單片機簡介 C8051F020器件是完全集成的混合信號系統級MCU芯片(SOC),它使用Cygnal的專利CIP-51微控制器內核,CIP-51與MCS-51指令集完全兼容。它采用流水線結構,與標準的8051結構相比指令執行速度有很大的提高。CIP-51提供了22個中斷源,允許大量的模擬和數字外設中斷微控制器,因而有更高的執行效率。具有64個I/O引腳,每個端口都可以配置成推挽或漏極開路輸出。C8051F020 MCU內部有一個SMBUS/I2C接口、兩個具有增強型波特率配置的全雙工UART和一個增強型SPI接口,每種串行總線完全用硬件實現,都能向CIP-51產生中斷。它內部有一個12位的ADC0,該子系統包括一個9 通道的可編程模擬多路選擇器(AMUX0),一個可編程增益放大器(PGA0)和一個100ksps、12 位分辨率的逐次逼近寄存器型ADC,ADC中集成了跟蹤保持電路和可編程窗口檢測器;一個8位的ADC1,包括一個8 通道的可配置模擬多路開關(AMUX1),一個可編程增益放大器(PGA1)和一個500ksps、8 位分辨率的逐次逼近寄存器型ADC。兩個12位的DAC轉換器,每個DAC 都具有靈活的輸出更新機制,允許無縫的滿度變化并支持無抖動輸出更新。C8051F020還有5個通用的16位定時器和5 個捕捉/比較模塊的可編程計數器/定時器陣列。 3.系統的硬件結構 多通道綜合采集系統以C8051F020單片機為核心,主要由以下幾部分組成:數據的采集、LCD顯示和數據通訊三部分,其硬件框圖如圖1。傳感器輸出的電流信號經過放大轉換后,送至C8051F020內部的A/D轉換器中,在單片機內部完成模數轉換、數據存儲、數據處理的工作,最后送到LCD顯示,同時經過RS-485接口送至計算機,由上位機進行實時監控。 3.1數據的采集 對于液壓設備中的8個待測參數選用相應的傳感器來來檢測,試驗時選取應變式傳感器作為測試現場的工具。這些選用的檢測元件輸出都是標準的4-20mA微弱的電流信號,電流信號又經過由LM324組成的放大轉換電路轉換成0-5V的電壓信號輸入到C8051F020的模擬輸入端,如圖2所示,經內部集成的A/D轉換器轉換成相應的數字量。C8051F020將8路采樣值作為液壓設備現場的狀況存入相應的內存單元。 3.2 LCD顯示 為了使數據采集系統小巧美觀,同時又獲得較高的性價比,選用德彼克公司生產的DMF-50174藍屏液晶顯示器,該顯示器是320×240點陣式液晶,圖形和文本都可以顯示。顯示驅動控制芯片采用EPSON 公司的一種高性能LCD 控制器SED1335。硬件電路采用間接接法,如圖3所示。用單片機的P5.0~P5.7口作為SED1335的DB0~DB7數據總線的輸入通道。P4.5作為SED1335的片選信號, 配合地址信號A0實現SED1335 通過數據總線接收來自單片機的指令和數據。當A 0= 0, P4.6(WR)=0,P4.7(RD)= 1時, 實現指令的寫入和從SED1335 中讀取數據。當A 0= 1, P4.6(WR)= 0, P4.7(RD)=1時, 則是顯示數據的寫入,該功能通過軟件實現。 3.3 數據通訊 單片機C8051F020的TX0、RX0及P0.2通過MAX485與上位機相連,進行串行通信,如圖3所示。P0.2控制MAX485的狀態或發送,用軟件控制。RX0為單片機的串行輸入端,接收上位機通過MAX485向單片機發送的數據。TX0為單片機的串行輸出端,通過MAX485發送給上位機。 4 系統軟件設計 4.1 軟件設計總體上由兩部分組成:一部分為單片機C8051F020 主程序設計,一部分為LCD液晶顯示程序設計。由于用C語言編程可以降低程序的復雜度,提高程序的可讀性和可修改性,所以本軟件采用C51進行編程,keil μVision2編譯器進行編譯。 主程序流程圖如圖4所示。 4.11 主程序 void main (void){ long voltage; //電壓以mV為單位 int i; //循環計數器 WDTCN=0xde; //禁止看門狗定時器 WDTCN=0xad; SYSCLK_Init(); //初始化振蕩器 PORT_Init(); //初始化數據交叉開關 UART0_Init(); //初始化UART0 Timer3_Init(SYSCLK/SAMPLERATE0); //初始化定時器3溢出作為采樣率 ADC0_Init(); //初始化ADC AD0EN=1; //允許ADC EA=1; //允許所有中斷 while(1){ for(i=0;i {EA=0; voltage=result[ i]; //從全局變量中取得ADC值 EA=1; voltage = voltage*VREF0;//計算電壓(mV) voltage = voltage>>16; LCD_Disp(); //調顯示程序,顯示電壓值 printf("Channl'%d' voltage is %ldmV\n",i,voltage);//串口輸出 }} 5 結束語 測試實驗中定義C8051F020的采樣頻率為50000Hz,ADC0設為定時器3溢出的連續轉換模式,采用差動輸入方式組成8路轉換通道,單片機運行后由定時中斷進行數據采集。 C8051F020將采集的數據通過RS-485接口傳送給上位機,在傳送期間波特率必須和PC機設置的波特率保持一致,否則不能正確接收。在測量過程中,整個系統工作穩定,數據可以得到“準”實時的顯示。 本文作者的創新點就是能夠把液壓系統參數中的功率P實時顯示出來,而在以往的液壓顯示設備中只能分別顯示液體的壓力p和流量q,然后再用公式P=pq計算液壓功率,比較麻煩;而且C8051F020芯片集成了大量的外設和IO口資源,在設計系統時,只需使用少量的外圍芯片便可完成所需的功能,簡化了硬件電路設計,節省了電路板空間,縮小了產品的體積,因而本系統有很廣闊的應用前景。 |