溫度作為一種基本的環境因素,直接影響著工業控制、化工、醫藥、航空航天等生產工藝過程。因此如何安全、可靠、快速地取得溫度值就顯得尤為重要。隨著計算機軟件、硬件技術及集成電路工業的迅速發展,各種溫度采集技術不斷出現。這里介紹一種基于DSl8820的1-Wire總線的嵌入式測溫系統設計。 1-Wire總線是美國Dallas公司的一項專有技術——單總線技術(1-Wire Bus Technology),該技術在理論上每條總線連接的1-Wire器件數量可達248。支,適用于單主機、多從設備的系統。它與其他串行通信方式最大的不同在于它采用單根信號線雙向傳輸數據。以其節省I/0口線資源,成本低廉,體積小,便于總線擴展和維護等優點,在串行數據通信領域占有越來越重要的地位。 1-Wire網絡構成簡單,一般情況下只使用電源線、地線、信號線3條線,當使用寄電方式供電時只需電源/信號線和地線2根線。 DSl8820是Dallas公司生產的一種簡便易用的數字式溫度傳感器。它體積小巧,溫度測量范圍廣(一55~+125℃),測量分辨率可選,分別為0.062 5 oC,0.125℃,0.25℃,0.5℃。 1 主要器件結構及工作原理 1.1 DSl8820結構及工作原理 Dallas公司生產的DSl8820可編程單總線數據溫度傳感器共有3種封裝形式:8管腳SO封裝、8管腳μSOP封裝和3管腳TO一92封裝。該設計中為了節省空間采用3管腳的TO一92封裝,它的管腳排列圖和底視圖如圖1所示,其中GND為接地管腳,VDD為外部供電電源管腳,DQ為數據輸入/輸出管腳。 DSl8820內部結構如圖2所示,包括供電電路、64 b ROM、內部存儲器和存儲器控制邏輯4部分。64 b ROM中存儲著每個DSl8820芯片獨有的64位ROM ID碼,這是系統用來識別DSl8820芯片的標志。其中最低8位是DSl8820的家族碼:28H。中間48位是每片DSl8820獨有的串行碼。最高8位是用前56位計算得到的循環冗余校驗碼。 內部存儲器由9。Byte SRAM和3 B E。PROM組成。SRAM中:ByteO和Bytel是溫度寄存器,用來存儲采集到的溫度值。Byte0的內容是溫度的低8位,Bytel是溫度的高8位。。Byte2和Byte3為高低溫警報寄存器。Byte4為配置寄存器,用來設置器件溫度采集精度。這3個字節中的值可以拷貝到E。PROM中,保證掉電后數據不會丟失,重新上電后E。PROM中的值將自動重載人SRAM中。Byte5,Byte6,Byte7保留為內部使用。Byte8存儲CRC碼。 DSl8820有2種供電方式:寄電方式和外部供電方式。寄電方式非常適用于需要遠程溫度測量和空間受限的場合。當工作于這種方式時,管腳3必須接地。總線處于高電平時DSl8820通過DQ管腳從1-Wire網絡上竊取能量并存儲一部分電荷到寄電電容中,總線處于低電平時釋放寄電電容中的電荷給DSl8820供電。在寄電方式中寄電電容中存儲的電荷能滿足DSl8820大部分操作的要求,但是當執行溫度轉換和數據拷貝命令時操作電流提高到1.5 mA,這將導致內部弱上拉電阻上產生不可接受的壓降,同時這個電流也高于寄電電容能夠提供的電流,所以必須外接強上拉電路以滿足這一類命令的要求。當處于外部供電方式下時則不需要外接強上拉電路,直接通過管腳3從外部供電。 在溫度超過100℃條件時,處于寄電方式下的DSl8B20可能不能保證正常通信,所以在某些特殊場合下使用外部供電方式比寄電方式更加可靠。DSl8820是一種可編程的基于1-Wire總線標準的數字式溫度傳感器,可以通過SRAM中的配置寄存器來選擇測量分辨率,其上電默認值為12位精度,對應分辨率為0.062 5℃。其他可選擇的精度包括11位、 10位和9位,對應的分辨率分別為O.125℃,O.25℃, O.5℃。DSl8820上電后處于空閑狀態,可通過微處理器發送轉換命令44H來啟動1次溫度測量和A/D轉換,并將結果存儲在溫度寄存器中,此后DSl8820返回空閑狀態。如果Dsl8820處于外部供電模式,微處理器可以發送“讀時隙”來查看溫度采集轉換過程是否完畢,如果結束則應答為1,沒結束則應答為O。如果 DSl8820處于寄電方式下則不能使用該功能。DSl8820的溫度數據值是以攝氏度為單位的。 1.2 DS2480B介紹及工作原理 1-Wire通信協議可以通過微處理器上的一個I/O 引腳實現,但是要創建可靠的1-Wire網絡,必須提供正確的時序和適當的輸出電壓擺率,如果1-Wire主機發送的時序不正確會導致與1-Wire從器件之間的通信間斷或完全失敗,并限制網絡的長度。Ds2480B是從串行接口到1-Wire網絡協議轉換的橋接器。使用這個橋接器和UART連接就能產生嚴格定時和電壓擺率控制的1-Wire波形,并能減輕主機產生1-Wire時序信號和對1-Wire總線進行采樣的負擔。Ds2480B 接收指令與數據,執行1-Wire操作,并將結果返回至主機。圖3為1-Wire復位操作、寫1/讀數據操作、寫 0操作的時序圖,這3種操作是1-Wire操作中必須具備的基本操作,幾乎所有的其他1-Wire操作都可以由這3種操作構成。由于該設計工作在Flexible模式下,以下提供的參數都是Flexible模式下適用的參數。 1.2.1 復位/應答時序 DS2480B接到主機復位命令后將總線拉低512 μs后釋放總線,等待2μs(短路/中斷采樣)后檢測總線上是否有短路或中斷信號,如果沒有則等待8μs(應答采樣)后檢測總線上是否有應答脈沖,再等待512μs(延遲)后向主機發送命令應答字。如果總線上有短路或中斷信號則等待4 096 μs后再次檢測總線。時序如圖3所示。 1.2.2 寫1/讀數據時序 DS2480B在寫1/讀數據時序中先將總線拉低8~15 μs(寫1低),3~10μs(數據采樣)數據采樣偏移后對總線采樣并讀從器件應答。再經過49 μs(等待高)1/讀數據時序結束。時序圖如圖4所示。 l. 2.3 寫0時序 DS2480B的寫O時序中先將總線拉低57弘s(寫O低)然后釋放總線,3~10μs后寫0時序結束。如圖5所示。 DS2480B可以被看作包含2個靜態和多個動態的狀態機。上電后DS2480B自動進入兩個靜態之一的命令模式。此時主機應向DS2480B發送1次復位命令,用來校準DS2480B內部的時序產生器,所有的1-Wire通信過程都必須以復位命令開始。此后DS2480B準備好接收及執行任何合法命令。在命令模式下微處理器可以改變1-Wire網絡的通信速度、供電方式、改變1-Wire通信波形等。DS2480B從命令模式轉換到下一個靜態一數據模式后將從TXD管腳上收到的信息字節轉換成相應的1-Wire通信波形并將從器件返回的應答字節通過RXD管腳返回給微處理器。也就是說對1-Wire從器件DSl8820的操作必須在數據模式下進行。 2 系統設計 系統設計包括硬件設計和軟件設計2部分。 2.1 系統硬件設計 與DS2480B橋接器一起工作的UART應支持8位字長、無奇偶校驗、9 600波特率(b/s)的通信方式。該系統采用Silicon公司生產的C8051F040作為主處理器,(;8051F040有2個uART串口,且滿足橋接器對UART的要求。溫度采集轉換芯片為Dallas公司生產的DSl8820。系統原理圖如圖6所示。 其中從C8051F040的UART到DS2480B需用1片QS3245進行3~5 V的電平轉換。1-Wire總線上過多的噪聲會影響l—wire通信的正確性,為了濾除電路中的噪聲保護。DS2480B的1-Wire端口不受靜電損傷DS2480B的1一w管腳外接RC濾波電路。在本設計中只涉及到基本DS2480B操作,在需要進行EPROM編程的設計中應串接2個DS9503。 2.2 系統軟件設計 給出的1-Wire總線驅動程序是結合圖4所述電路,以C8051F040單片機為主控制器,使用內部時鐘頻率24.5 MHz編寫而成,其中包括DS24.80B復位子程序、DS2480B初始化子程序、總線復位子程序、溫度采集子程序、溫度值讀取子程序。C8051F040系統內部有64 KB FLASH存儲器可以用來存儲程序代碼。C代碼設計調試工具為Silicon公司提供的單片機集成開發環境。 控制器上電后,對自身和DS2480B進行初始化并與DS2480B取得同步。由于DS2480B中沒有晶振,它必須通過采樣主機發送的字節來調節自身的時基。主控制器在低于9 600波特率條件下發送1次0字節可以產生1次復位信號。Ds2480B復位后所有參數恢復到缺省狀態,在該設計中1-Wire網絡長度在10 m之內,屬于小型長度,為了取得良好的性能,選擇在“flexi—ble speed”下進行標準速度通信。對DS2480B復位和初始化是進行正確1-Wire通信的前提,當網絡中應答數據包長度或格式不正確時,也必須重新對DS2480B復位和初始化。 所有的1-Wire操作都是從復位1-Wire總線開始的。每次采集溫度值和讀取溫度值操作前最好對總線進行1次復位操作,同時檢測來自總線上的從器件的在線應答脈沖。驅動程序流程圖如圖7所示,部分程序代碼如下所示: 3 結 語 介紹一種1-Wire總線嵌入式測溫系統,并給出了硬件電路及部分驅動代碼。該系統具有設計簡單,擴展方便,占用主控制器資源少,軟件控制方便易于實現自動化測試等特點,并成功應用于工程實踐中。在設計成本、費用和復雜度方面相對于CAN,RS 485等總線有著無可比擬的優勢,更適合小型工控系統使用,在今后的工業應用領域中必將有著更為廣闊的空間。 |