色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于I2C總線的鍋爐溫度測量系統(tǒng)的設(shè)計與實現(xiàn)

          基于I2C總線的鍋爐溫度測量系統(tǒng)的設(shè)計與實現(xiàn)

          作者: 時間:2016-12-26 來源:網(wǎng)絡(luò) 收藏
          單片機作為典型的嵌入式控制器,具有集成度高、處理功能強、運行速度快、體積小、擴展靈活等優(yōu)勢,在儀器儀表、家用電器、過程控制等領(lǐng)域被廣泛應(yīng)用。鍋爐溫度是工業(yè)過程中最常見的工藝參數(shù)之一,其測量過程的抗干擾能力和測量值的精度是影響對鍋爐溫度控制效果的重要因素。為使系統(tǒng)更智能化,一般選擇單片機為系統(tǒng)控制核心。但是,傳統(tǒng)的單片機測量系統(tǒng)中實現(xiàn)A/D轉(zhuǎn)換結(jié)果輸出以及各器件之間的數(shù)據(jù)傳遞大多采用并行的通信方式,這種數(shù)據(jù)交換方式占用了大量的I/O資源,系統(tǒng)結(jié)構(gòu)也因此變得復(fù)雜。同時大量的硬件連線也會帶來很多干擾因素,降低了鍋爐溫度值的測量精度。為了解決傳統(tǒng)設(shè)計中存在的問題,本文提出使用Philips公司推出的I2C總線(Inter Integrated Circuit Bus)標(biāo)準(zhǔn)來設(shè)計系統(tǒng),大大簡化了系統(tǒng)硬件結(jié)構(gòu),釋放了單片機I/O資源,也提高了系統(tǒng)的擴展性和抗干擾能力。


          1 系統(tǒng)總體設(shè)計方案

          基于I2C總線的鍋爐溫度測量系統(tǒng)結(jié)構(gòu)如圖1所示,系統(tǒng)主要由溫度傳感器及信號調(diào)節(jié)電路、A/D轉(zhuǎn)換器、微控制器、液晶顯示、報警電路、存儲器電路等組成。系統(tǒng)首先通過溫度傳感器獲得鍋爐溫度值,調(diào)節(jié)電路把傳感器的輸出信號轉(zhuǎn)換為0~5 V的電壓值,標(biāo)準(zhǔn)電壓值送入A/D轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字信號,并送入單片機數(shù)據(jù)處理,單片機將接收到的鍋爐溫度值存儲到非易失性的E2PROM,液晶顯示器1602將顯示鍋爐的實時溫度,單片機還將當(dāng)前鍋爐溫度與預(yù)先設(shè)定的溫度范圍進(jìn)行比較。當(dāng)溫度高于設(shè)定溫度最大值或小于溫度極小值時,系統(tǒng)將自動報警。

          鍋爐溫度測量系統(tǒng)是基于I2C總線標(biāo)準(zhǔn)設(shè)計的,主要通信部件之間只需要兩條總線,一條是雙向串行數(shù)據(jù)線SDA,另一條是串行時鐘線SCL。AT89S51不具備I2C總線接口,本設(shè)計使用了兩個普通I/O口來模擬I2C標(biāo)準(zhǔn)中SDA和SCL的工作,圖2是測量系統(tǒng)I2C總線串行通信線路圖,系統(tǒng)的多個I2C器件全部通過SDA和SCL連接并進(jìn)行數(shù)據(jù)交換,不同器件之間通過總線競爭獲得數(shù)據(jù)交換的權(quán)利。


          2 硬件電路設(shè)計

          本文引用地址:http://cafeforensic.com/article/201612/333778.htm

           微控制器模塊使用AT89S51單片機,主要實現(xiàn)數(shù)據(jù)的采集、處理和控制顯示等功能,單片機最小系統(tǒng)包括時鐘電路和復(fù)位電路。設(shè)計使用單片機的P1.0產(chǎn)生I2C總線中的SCL時鐘信號,P1.1模擬SDA數(shù)據(jù)信號線,進(jìn)行數(shù)據(jù)的雙向傳遞。SCL和SDA引腳內(nèi)部漏極開路,設(shè)計時要外加約5 ?贅的上拉電阻。系統(tǒng)的硬件電路如圖3所示。

          A/D轉(zhuǎn)換模塊采用具有I2C接口的8 bit CMOS可編程轉(zhuǎn)換器PCF8591,該芯片同時集成了A/D轉(zhuǎn)換和D/A轉(zhuǎn)換功能,這里使用其逐次比較型A/D轉(zhuǎn)換功能。與傳統(tǒng)的ADC0809轉(zhuǎn)換輸出需要8根并口數(shù)據(jù)線相比,PCF8591為系統(tǒng)節(jié)省了6根數(shù)據(jù)線。典型的I2C總線接口器件的總線地址由器件地址、引腳地址、方向位組成[1]。在鍋爐溫度測量系統(tǒng)中,為簡化設(shè)計把PCF8591的A0、A1、A2三個地址引腳接地。根據(jù)其硬件設(shè)計,確定PCF8591的總線地址為91H,根據(jù)系統(tǒng)所需功能,確定其控制寄存器的值為00H,單片機從PCF8591中讀取A/D轉(zhuǎn)換值。通道輸入的模擬電壓U和轉(zhuǎn)換結(jié)果D之間的關(guān)系為D=255U/5。在使用I2C總線的系統(tǒng)中,主控器發(fā)出的第一個字節(jié)信息為器件地址信息,控制寄存器信息是主控器對PCF8591訪問時發(fā)出的第二個字節(jié)信息。

          存儲器模塊采用ATMEL公司推出低功耗CMOS串行帶I2C接口的E2PROM芯片AT24C01[2],主要實現(xiàn)溫度值的存儲。單片機從PCF8591讀取A/D轉(zhuǎn)換結(jié)果后,把溫度值存儲到E2PROM。此時,AT24C01地址為A0H,當(dāng)系統(tǒng)需要從E2PROM讀取溫度值時,AT24C01地址為A1H。與一般存儲器擴展相比,采用AT24C01為系統(tǒng)節(jié)省了6根數(shù)據(jù)線及大量的地址線,使得系統(tǒng)結(jié)構(gòu)更簡化,測量過程的干擾因素也大大減少。

          系統(tǒng)工作時,AT89S51發(fā)出地址信息,PCF8591和AT24C01把自身的地址與接收到的地址信息進(jìn)行比較,相同則為被訪問器件,并準(zhǔn)備數(shù)據(jù)的發(fā)送和接收。

          溫度傳感器采用恒流源輸出的AD590,不需進(jìn)行冷端補償,可進(jìn)行遠(yuǎn)距離傳送,有較好的抗干擾能力。信號調(diào)節(jié)電路模塊將AD590輸出的電流信號轉(zhuǎn)換為0~5 V的電壓信號,為A/D轉(zhuǎn)換做準(zhǔn)備。

          顯示模塊使用液晶顯示屏LCD1602,可以顯示16×2個字符,1602的三個功能控制引腳RS、RW、E由單片機的P0.5、P0.6、P0.7三個I/O控制,數(shù)據(jù)接口D0~D7則由P2口的8 bit來控制。與采用LED顯示器相比,液晶顯示器的硬件連線更少,電路焊接因此變得簡單。

          聲光報警模塊由LED、蜂鳴器和電阻組成。光、聲音報警分別由單片機的P1.2和P1.3控制,為提高驅(qū)動能力,發(fā)光二極管和蜂鳴器均由NPN三極管驅(qū)動。

          3 系統(tǒng)軟件設(shè)計實現(xiàn)

          本系統(tǒng)的軟件設(shè)計部分采用C語言編程實現(xiàn),使用的軟件是KeiluVision3,從功能上看,系統(tǒng)軟件主要包括主程序、數(shù)據(jù)處理子程序、讀A/D轉(zhuǎn)換結(jié)果、溫度比較及報警輸出子程序、讀寫E2PROM子程序、顯示子程序等,系統(tǒng)主程序流程圖如圖4所示。

          系統(tǒng)主程序主要完成系統(tǒng)的初始化,及各功能模塊函數(shù)的調(diào)用、等待中斷。采樣時間選擇500 ms,使用單片機內(nèi)部定時器T0實現(xiàn),因此要對T0的工作方式、計時初值、中斷允許、開始計時等進(jìn)行初始化,T0每50 ms中斷一次,中斷10次即開始一次溫度采樣。

          數(shù)據(jù)處理子程序?qū)Σ杉絾纹瑱C內(nèi)的鍋爐溫度值進(jìn)行處理,包括四次均值濾波和標(biāo)度變換部分。
          I2C總線通信的編程是系統(tǒng)軟件設(shè)計的關(guān)鍵,AT89S51不具有I2C接口,I2C總線信號將通過兩個獨立I/O進(jìn)行軟件模擬。這部分總線數(shù)據(jù)通信程序編寫思路為:先由單片機發(fā)出起始信號,接著通過SDA發(fā)出I2C器件的總線地址。與該地址相同的器件發(fā)出應(yīng)答,應(yīng)答正確后,再由單片機通過SDA向應(yīng)答器件寫數(shù)據(jù)或從應(yīng)答器件中讀取對應(yīng)地址的數(shù)據(jù),一次數(shù)據(jù)通信結(jié)束時要由單片機發(fā)出結(jié)束信號。

          起始信號程序如下:
          Start( )
          { SDA=1;
          _NOP_( );
          SCL=1; //I2C啟動總線時,SCL維持高電平
          FOR(I=0;I++;I<5)
          _NOP_( );
          SDA=0; //I2C啟動總線時,SDA產(chǎn)生高電平到
          低電平的跳變
          FOR(I=0;I++;I<4)
          _NOP_( );
          SCL=0;//準(zhǔn)備發(fā)送或接收數(shù)據(jù)
          _NOP_( );
          }
          結(jié)束信號程序如下:
          Stop( )
          {CLR SDA;
          _NOP_( );
          _NOP_( );
          SCL=1; //I2C總線停止時,SCL維持高電平
          FOR(I=0;I++;I<5)
          _NOP_( );
          SDA=1; //I2C總線停止時,SDA產(chǎn)生低電平到
          高電平的跳變
          FOR(I=0;I++;I<4)
          _NOP_( );
          }

          編寫讀取PCF8591的A/D轉(zhuǎn)換結(jié)果子程序時,流程為:啟動起始信號,發(fā)器件地址,PCF8591應(yīng)答,正確則接著發(fā)送控制字節(jié),PCF8591應(yīng)答,正確則傳送A/D轉(zhuǎn)換后的數(shù)字量,數(shù)據(jù)傳送完則發(fā)出結(jié)束信號。

          本文提出了一種基于日趨流行的I2C總線的鍋爐溫度測量系統(tǒng)設(shè)計方法,經(jīng)過實際測試,系統(tǒng)運行良好,開發(fā)周期縮短。與其他傳統(tǒng)設(shè)計方法相比,該系統(tǒng)具有簡化硬件設(shè)計、節(jié)省控制器I/O資源、擴展方便、便于實現(xiàn)等優(yōu)勢,提高了測量系統(tǒng)的抗干擾能力和測量精度,具有一定的實用價值。



          關(guān)鍵詞: I2C總線鍋爐溫度測量系

          評論


          技術(shù)專區(qū)

          關(guān)閉