新聞中心

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

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

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


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

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

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


        2 硬件電路設(shè)計(jì)

        本文引用地址:http://www.104case.com/article/201612/333778.htm

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

        A/D轉(zhuǎn)換模塊采用具有I2C接口的8 bit CMOS可編程轉(zhuǎn)換器PCF8591,該芯片同時(shí)集成了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]。在鍋爐溫度測(cè)量系統(tǒng)中,為簡(jiǎn)化設(shè)計(jì)把PCF8591的A0、A1、A2三個(gè)地址引腳接地。根據(jù)其硬件設(shè)計(jì),確定PCF8591的總線地址為91H,根據(jù)系統(tǒng)所需功能,確定其控制寄存器的值為00H,單片機(jī)從PCF8591中讀取A/D轉(zhuǎn)換值。通道輸入的模擬電壓U和轉(zhuǎn)換結(jié)果D之間的關(guān)系為D=255U/5。在使用I2C總線的系統(tǒng)中,主控器發(fā)出的第一個(gè)字節(jié)信息為器件地址信息,控制寄存器信息是主控器對(duì)PCF8591訪問(wèn)時(shí)發(fā)出的第二個(gè)字節(jié)信息。

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

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

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

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

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

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

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

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

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

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

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

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



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 金塔县| 定西市| 禄丰县| 滨海县| 丰城市| 合作市| 浮山县| 蒙山县| 吴忠市| 鸡泽县| 天台县| 合作市| 论坛| 长兴县| 芦山县| 宜州市| 灵武市| 广西| 奇台县| 南岸区| 海晏县| 大埔县| 安阳市| 会昌县| 湖北省| 达日县| 扶绥县| 辽宁省| 黑山县| 海口市| 武义县| 太白县| 华安县| 荃湾区| 日照市| 漾濞| 佛教| 大田县| 名山县| 屏山县| 鸡泽县|