引言 在孵化設備的科研過(guò)程中,常常用多路溫度測試儀來(lái)對孵化機器內部的溫度場(chǎng)進(jìn)行測量,而我們以前用的多路溫度測試儀是用兩片16選1的模擬開(kāi)關(guān)來(lái)完成對32路溫度的測量, 溫度的采樣時(shí)間受模擬開(kāi)關(guān)開(kāi)通關(guān)斷時(shí)間的限制,開(kāi)關(guān)信號對溫度采樣也造成了一定的干擾。在實(shí)際使用過(guò)程中還常受到溫度采樣路數(如8路、20路、64路、 70路,128路等)的限制,為能更靈活的應用該多路溫度測試儀,我們采用了主從機RS-485通訊的模式來(lái)完成多路溫度的測量。每個(gè)從機采樣8路溫度并作為一個(gè)模塊,每個(gè)從機有獨立的地址,這樣我們就可以在主機通訊負載能力范圍內靈活的配置從機模塊的數量,并且能提高溫度采集的及時(shí)性和準確性,為科研實(shí)驗提供便利工具。 硬件設計 總線(xiàn)式主從機結構框圖如圖1。 ![]() 主機我們采用Atmel公司的高性能8位處理器ATMEG128L-8AI,該芯片具有128k的ISP-FLASH、4k的EEPROM、4k的 SRAM,該芯片容量大、可重復在系統編程、指令豐富并且執行速度快。 主機主要完成以下功能:從機地址識別、與從機的通訊、實(shí)時(shí)溫度顯示、按鍵處理、溫度軟校準以及從機擴張選擇,主機功能框圖如圖2。實(shí)時(shí)溫度顯示采用19264單色點(diǎn)陣液晶,該液晶沒(méi)有背光時(shí)仍能正常查看,只是為了在夜間查看,我們增加了液晶背光功能。溫度軟校準功能是為了保證多路溫度測量的準確性,消除系統誤差。在實(shí)際測量過(guò)程中,很難保證用來(lái)測量的不同的溫度探頭的一致性,電路結構、探頭線(xiàn)長(cháng)度、以及每個(gè)溫度傳感元件本身的不一致性都最終影響溫度測量的準確性。為了方便校準,我們可利用軟件對單個(gè)溫度探頭或全部溫度探頭進(jìn)行軟件校準。這樣盡量減小各個(gè)溫度探頭的不一致而帶來(lái)的測量差值。為保證主機的可靠工作,在電路中還增加了處理器監控芯片MAX706,用來(lái)監控電源電壓和系統是否正常工作,否則發(fā)出復位信號使系統恢復正常。從機擴展功能主要是用來(lái)選擇從機模塊的數量,如果從機數量為1,則在該功能選項中選擇“1路采樣模塊”,依次類(lèi)推,考慮到實(shí)際應用過(guò)程中對溫度探頭數量的要求,本系統中最大的從機模塊配置數量為8,也就是最多可以測量64路溫度信號。 ![]() 主機的按鍵是行列線(xiàn)組成的2輸入4輸出結構形式,采用定時(shí)掃描,利用MCU內部的定時(shí)器產(chǎn)生10ms定時(shí)中斷,CPU響應中斷時(shí)對鍵盤(pán)進(jìn)行掃描,并在有鍵按下時(shí)識別出該鍵并執行相應的鍵功能程序。 從機采用Atmel公司的ATMEG16L-8AI作為處理器,該芯片具有16k的ISP-FLASH、512B的EEPROM、1k的SRAM,該芯片同樣可以在系統編程,該芯片具有8路10位A/D轉換器,當采樣的基準電壓為5V時(shí),系統的采樣精度可達到5毫伏每字,即基準電壓變化5毫伏,采樣的數字量變化1個(gè)字。 從機模塊主要完成8路溫度采樣、與主機的通訊、硬件地址編碼,從機功能框圖如圖3。每個(gè)從機模塊有個(gè)地址編碼跳線(xiàn)器,由硬件完成對該模塊的地址編碼。這樣在擴張時(shí),將每個(gè)模塊的地址唯一確定,不會(huì )由于通訊地址的重復造成通訊的不成功。我們采用的RS-485芯片最多可以負載32個(gè)從機模塊,RS-485芯片采用Maxim公司的MAX483CPA。不同的RS-485芯片,其負載能力不同,有的RS-485芯片如MAX487可以帶120個(gè)負載,MAX1487能夠將負載數量擴大到230個(gè)。 ![]() RS-485串行通訊 在工程實(shí)踐當中,多點(diǎn)數據采集系統的網(wǎng)絡(luò )拓撲一般采用總線(xiàn)方式,傳送數據采用主從機結構的方法。 RS-485采用平衡發(fā)送和差分接收方式來(lái)實(shí)現通信:在發(fā)送端TXD將串行口的TTL電平信號轉換成差分信號A、B兩路輸出,經(jīng)傳輸后在接收端將差分信號還原成TTL電平信號。兩條傳輸線(xiàn)通常使用雙絞線(xiàn),又是差分傳輸,因此有極強的抗共模干擾的能力,接收靈敏度也相當高。同時(shí),最大傳輸速率和最大傳輸距離也大大提高。如果以10kb/s速率傳輸數據時(shí)傳輸距離可達12m,而用100kb/s時(shí)傳輸距離可達1.2km。如果降低波特率,傳輸距離還可進(jìn)一步提高。本系統的波特率設置為2400b/s。 圖1就是用RS-485構成的總線(xiàn)型網(wǎng)絡(luò )系統,采用主從方式進(jìn)行多機通信。主機采用8位微處理器ATMEG128L,從機采用ATMEG16L。每個(gè)從機通過(guò)地址編碼擁有自己固定的地址,由主機控制完成網(wǎng)上的每一次通信。圖4是MAX485和微處理器的接口電路,A、B為RS-485總線(xiàn)接口,D是發(fā)送端,R為接收端,分別與單片機串行口的TXD、RXD連接,由于采用半雙工通訊,所以還有收發(fā)控制端,MAX485的RE、DE為收發(fā)使能端,由微處理器的 PE4(主機)、PC5(從機)口作為收發(fā)控制。該控制口高電平時(shí),MAX485處于發(fā)送狀態(tài),將微處理器TXD處的數據經(jīng)A、B差分送出到RS-485的總線(xiàn)上;當該控制口為低電平時(shí),MAX485處于接受狀態(tài),將RS-485總線(xiàn)上的差分信號轉換成TTL電平的信號由R端輸出到微處理器的RXD端。當總線(xiàn)上沒(méi)有信號傳輸時(shí),總線(xiàn)處于懸浮狀態(tài),容易受干擾信號的影響。應將總線(xiàn)上差分信號的正端A+和+5V電源間接一個(gè)10KW電阻;正端A+和負端B-間接一個(gè)10KW電阻;負端B-和地間接一個(gè)10KW電阻,形成一個(gè)電阻網(wǎng)絡(luò )。當總線(xiàn)上沒(méi)有信號傳輸時(shí),正端A+的電平大約為3.2V,負端B-的電平大約為1.6V,即使有干擾信號,卻很難產(chǎn)生串行通信的起始信號0,從而增加了總線(xiàn)抗干擾的能力。 ![]() 本系統對RS-485串行通訊的應用電路中,在A(yíng)和B端預留了上拉電阻、和AB之間的匹配電阻,但實(shí)際使用過(guò)程中,由于通訊距離很短(10m以?xún)?,所以匹配電阻并沒(méi)有焊上,而是在MAX485和微處理器的TXD和RXD接口處增加了兩個(gè)10KΩ的上拉電阻。用示波器測量其通訊信號波形時(shí),發(fā)現R2、R3兩個(gè)上拉電阻接上后,通訊數據的波形得到了明顯的改善,通訊成功率大大提高。 RS-485通訊需要嚴格遵循通訊協(xié)議,否則通訊是不會(huì )建立起來(lái)的。尤其是在主從機采用不同的處理器時(shí),軟件處理一定的仔細查看其說(shuō)明文件,不能一視同仁。在本電路的實(shí)驗過(guò)程中,就發(fā)現一個(gè)波特率設置的問(wèn)題。波特率的設置公式如下: BAUD= Fosc/16(UBRR+1) 其中BAUD為通訊速率,Fosc為系統時(shí)鐘頻率,UBRR為波特率寄存器UBRRH、UBRRL中的值(0~4095)。 波特率的設置公式中用到了微處理器的系統時(shí)鐘頻率Fosc,我們的主從機雖然都使用了外部4M晶振,但主機內部將4M頻率三分頻,而從機仍然使用4M主頻,軟件編寫(xiě)過(guò)程中,將主從機的波特率寄存器初始化值置為一樣的,這樣就造成了主從機的波特率相差2倍,通訊當然是不能成功的。 為了保證通訊成功,開(kāi)始時(shí)所有從機復位,即處于監聽(tīng)狀態(tài),等待主機的呼叫。當主機向網(wǎng)上發(fā)出某一從機的地址時(shí),所有從機接收到該地址并與自己的地址相比較。如果相符,說(shuō)明主機在呼叫自己,應發(fā)回應答信號,表示準備好開(kāi)始接收后面的命令和數據;否則不予理睬,繼續監聽(tīng)呼叫地址。主機收到從機的應答后,則開(kāi)始一次通信。通信完畢,從機繼續處于監聽(tīng)狀態(tài),等待呼叫。由于發(fā)送和接收共用同一總線(xiàn)。在任意時(shí)刻只允許一臺單機處于發(fā)送狀態(tài)。因此要求應答的單機必須在偵聽(tīng)到總線(xiàn)上呼叫信號已經(jīng)發(fā)送完畢,并且沒(méi)有其它單機發(fā)出應答信號的情況下,才能應答。接受狀態(tài)和發(fā)送狀態(tài)的轉換是通過(guò)方向口高低電平的變化來(lái)完成的。 溫度采集和顯示 從機模塊完成的主要功能是8路溫度模擬信號的采集和向主機正確的發(fā)送這8個(gè)采樣溫度,本系統中采用溫度傳感器為AD590。AD590是一個(gè)電流型集成溫度傳感器,其輸出電流正比于絕對溫度,當溫度為 273開(kāi)氏度時(shí),其輸出電流為273微安。溫度每變化1K(也可以理解為1℃),輸出電流變化1微安。將電流信號經(jīng)運算放大器后輸出0~5V(參考電壓為 5V)的電壓信號,經(jīng)過(guò)ATMEG16L的10位A/D轉換后變?yōu)閿底中盘柎娣旁趶臋C的緩存區。當主機發(fā)出與該從機相應的地址信號后,從機應應答并將采樣后的數據經(jīng)RS-485總線(xiàn)送給主機并顯示在液晶屏幕上。 從機通過(guò)自己的A/D口直接進(jìn)行模擬量采集比利用多路模擬開(kāi)關(guān)來(lái)采集數據要方便的多,為使采樣的溫度數據更接近實(shí)際值,我們在軟件上增加了一些處理措施,如求多次采樣的平均值、中值濾波等。 為消除一些人為造成的誤差,我們在該主從機中使用了一個(gè)開(kāi)關(guān)電源,這樣開(kāi)關(guān)電源電壓的波動(dòng)對所有溫度探頭的影響是一致的。另外,所有的溫度探頭線(xiàn)的長(cháng)度都保持一致。溫度探頭線(xiàn)和主從機的通訊線(xiàn)都必須使用屏蔽雙絞電纜,并將屏蔽電纜進(jìn)行良好接地。特別是在RS-485串行通訊中,主從機必須共地,否則嚴重時(shí)會(huì )有共模干擾,導致數據傳輸出錯。 在實(shí)際的使用過(guò)程中,為保證數據采集的可靠性,還必須對每個(gè)溫度探頭進(jìn)行校準,一般情況下,我們將32個(gè)或64個(gè)溫度探頭盡量放在一起,并將其統一放在一個(gè)溫度比較穩定的老化實(shí)驗箱中,穩定2個(gè)小時(shí)后,在同一點(diǎn)將所有的探頭校準,并做升溫處理觀(guān)察在升溫后各個(gè)溫度點(diǎn)的探頭測量值是否保持一致。否則應在高溫段再校準并做降溫過(guò)程的跟蹤觀(guān)察。 結語(yǔ) 本文介紹了主從機用RS-485串行總線(xiàn),完成對多路溫度信號的測量。特別介紹了RS-485通訊電路在實(shí)際使用中的一些措施 。孵化設備多路溫度測試儀器正是采用了這些措施,使得測試過(guò)程中通訊穩定,測量路數配置靈活,測量數據穩定可靠。 參考文獻: [1] 馬潮. 高檔8位單片機ATMEG128原理與開(kāi)發(fā)應用指南[M]. 北京:北京航空航天大學(xué)出版社, 2004 [2] MAX483 Datasheet. Maxim, 2009 [3] ATMEG128L、ATMEG16L Datasheet. Maxim, 2009 [4] 耿德根, 宋建國, 馬潮等. AVR高速嵌入式單片機原理與應用[M]. 北京:北京航空航天大學(xué)出版社, 2004 [5] 陳斌. 單片機RS-485多機通訊技術(shù)[J]. 電子產(chǎn)品世界, 2005(7) 作者:郭慶亮 中國電子科技集團公司第四十一研究所 來(lái)源:電子產(chǎn)品世界 2010-03-09 |