本發(fā)明屬于數據通信領域,特別涉及了由微控制器充當的主機與多路一線總線(1-Wire Bus)上的從機器件進行長距離通信的技術。
背景技術:
一線總線(1-Wire Bus)技術是達拉斯半導體(Dallas Semiconductor)公司設計開發(fā)的一種通信方式,主機與從機器件之間通過1條數據線進行雙向數字通信。在實際應用中,主機通過1條雙絞線(共2根線,下同)與多個從機器件進行雙向數字通信。一線總線技術需要在數據線上接一只上拉電阻,在主機和從機都釋放總線(即主機和從機都為高阻態(tài),下同)時,由上拉電阻將數據線置成高電平。一線總線技術以其線路簡單、硬件開銷少、成本低廉、軟件設計相對簡單、擁有多種類型的從機器件而廣泛應用于環(huán)境狀態(tài)監(jiān)測、居民小區(qū)監(jiān)管、低速測控等領域。
一線總線技術有兩個技術特點,其一是一線總線(指一線總線的數據線,下同)的高電平是上拉電阻起作用而形成的,電平上升速率比較慢;其二是一線總線上傳送的數字信號的波形持續(xù)時間長度(即脈沖寬度)差別很大。從“復位”波形的最長大于480微秒到“讀時隙”波形的最短小于15微秒。這兩個特點成為制約一線總線傳輸距離的瓶頸。
以五類雙絞線為例,每百米電阻和線間電容的標稱值分別是9.5歐姆和5.6納法,一線總線的上拉電阻典型值是4.7千歐,電源電壓是5伏。不難算出,在線長100米時,4.7千歐的上拉電阻將接口電平從0伏上拉到接口高電平的最小值2.2伏,所需要的時間已大于15微秒,已不能滿足“讀時隙”的要求。
為延長一線總線的通信距離,雙絞線必須能夠快速充電、放電,以滿足“1-Wire協(xié)議(1-Wire Protocol)”的時隙要求。
方案之一,減小上拉電阻的阻值。上拉電阻的阻值可以減小到1千歐左右,通信距離可達到300米。上拉電阻取更小的值則會將一線總線上的低電平電壓值抬高到最高允許值以上,造成通信失敗。對于一線總線上典型的從機器件數字溫度傳感器DS18B20(以下簡稱為“18B20”)來說,過小的上拉電阻即使不造成通信失敗,也會使18B20的自身溫升增加,測量誤差增大。
方案之二,美信(MAXIM)公司(DALLAS公司已被MAXIM公司收購,產品仍以原型號形式出現)設計推薦了一款一線總線主機驅動電路,稱為“性能優(yōu)異的1-Wire網絡驅動器(Advanced 1-Wire Network Driver)”,該主機驅動電路在減小上拉電阻的同時,控制一線總線上電平擺幅速率和對雙絞線進行仔細的阻抗匹配。該主機驅動電路使一線總線的通信距離達到了500米以上。該主機驅動電路需要用微控制器的3個I/O口與其連接,這3個端口的操作時序需要相互配合,比較復雜,因此一個微控制器就難以組建起多路的一線總線。而一路一線總線在長距離的情況下,所掛接的從機器件數量就不能很多。
技術實現要素:
為了解決上述背景技術提出的技術問題,本發(fā)明旨在提供一種基于微控制器的多路長距離一線總線主機驅動電路,能夠驅動多達8路的一線總線,并可以使每一路一線總線的通信距離達到700米以上。
為了實現上述技術目的,本發(fā)明的技術方案為:
一種基于微控制器的多路長距離一線總線主機驅動電路,包括八路雙向三態(tài)緩沖器、8組T型電路、8組電流源電路以及8組保護電路;所述八路雙向三態(tài)緩沖器包括A、B兩組數據輸入/輸出端;所述A組數據輸入/輸出端的8個端口、8組T型電路、8組電流源電路、8組保護電路和8路一線總線是一一對應的;所述B組數據輸入/輸出端的8個端口分別與作為主機的微控制器的8個I/O口相連;八路雙向三態(tài)緩沖器的使能端和方向控制端分別與微控制器的其他2個I/O口相連;每組T型電路均包括第一二極管、第一電容、第四電阻和第五電阻;所述第四電阻的一端與第一二極管的陰極相連,第四電阻的另一端與第五電阻的一端相連,第五電阻的另一端與第一二極管的陽極相連,第一電容的一端與第四電阻和第五電阻的公共端相連,第一電容的另一端接地;每組保護電路均包括第二二極管和第三二極管;所述第二二極管的陰極接入電源正極,第二二極管的陽極與第三二極管的陰極相連,第三二極管的陽極接地;八路雙向三態(tài)緩沖器A組數據輸入/輸出端的8個端口分別與對應的T型電路中的第一二極管的陰極相連;8組電流源電路的輸入端接入電源正極,8組電流源電路的輸出端分別與對應的T型電路中第一二極管的陽極和對應的保護電路中第三二極管的陰極相連;8路一線總線的數據線的一端分別與對應的保護電路中第三二極管的陰極相連,8路一線總線的數據線的另一端分別與相應的從機器件相連。
基于上述技術方案的優(yōu)選方案,每組電流源電路均包括第一三極管、第二三極管、第一電阻、第二電阻和第三電阻;所述第一三極管的發(fā)射極連接第二電阻的一端,第二電阻的另一端連接電源正極,第一三極管的集電極連接第一電阻的一端,第一電阻的另一端接地,第一三極管的基極和集電極相連,第一三極管的基極與第二三極管的基極相連,第二三極管的發(fā)射極連接第三電阻的一端,第三電阻的另一端連接電源正極,第二電阻、第三電阻與電源正極的連接點是電流源電路的輸入端,第二三極管的集電極是電流源電路的輸出端;第一三極管和第二三極管均為PNP型三極管。
基于上述技術方案的優(yōu)選方案,所述八路雙向三態(tài)緩沖器采用型號為74HC245的集成電路。
基于上述技術方案的優(yōu)選方案,所述八路雙向三態(tài)緩沖器采用型號為74AC245的集成電路。
基于上述技術方案的優(yōu)選方案,所述第一二極管、第二二極管和第三二極管均為肖特基二極管。
采用上述技術方案帶來的有益效果:
(1)采用本發(fā)明設計的主機驅動電路,主機可以驅動多達8路的一線總線,能夠組成規(guī)模較大、成本低廉的一線總線網絡;
(2)在本發(fā)明中,主機驅動8路一線總線,只需要占用微控制器的10個I/O口;
(3)在本發(fā)明中,主機驅動的每一路一線總線,在從機器件數量受到限制的情況下,與從機器件的通信距離均可達到700米以上;
(4)在本發(fā)明中,主機可以對8路一線總線上的所有從機器件同時發(fā)出復位指令、ROM指令和功能指令。
附圖說明
圖1是本發(fā)明的電路組成框圖;
圖2是本發(fā)明的具體電路組成原理圖。
標號說明:
U1:八路雙向三態(tài)緩沖器;
R1、R2、R3、R4、R5:電阻器;
D1、D2、D3:二極管;
T1、T2:PNP型三極管;
C1:電容器。
具體實施方式
以下將結合附圖,對本發(fā)明的技術方案進行詳細說明。
一種基于微控制器的多路長距離一線總線主機驅動電路,如圖1、圖2所示,包括:
(1)八路雙向三態(tài)緩沖器U1:
U1有兩組共16個數據輸入/輸出端,其中A1、A2、...、A8共8個為A組,B1、B2...、B8共8個為B組。U1有一個方向控制輸入端D,當D端輸入為高電平(邏輯1)時,數據由數據輸入/輸出端A組傳向B組,即A1傳向B1、A2傳向B2、...、A8傳向B8,此時A組的所有端口為輸入,B組的所有端口為輸出;當D端輸入為低電平(邏輯0)時,數據由數據輸入/輸出端B組傳向A組,即B1傳向A1、B2傳向A2、...、B8傳向A8,此時B組的所有端口為輸入,A組的所有端口為輸出。U1還有一個使能輸入端OE,當OE端輸入為高電平(邏輯1)時,數據輸入/輸出端A組與B組之間為絕緣狀態(tài),A組、B組的所有端口均為高阻態(tài);當OE端輸入為低電平(邏輯0)時,數據輸入/輸出端A組與B組為正常傳輸狀態(tài)。OE端的作用優(yōu)先于D端。
U1的數據輸入/輸出端B組的8個端口分別與微控制器的8個I/O口連接,要求微控制器的這8個I/O口既能夠進行并行的輸入/輸出操作,也能夠進行每個I/O口單獨的輸入/輸出操作。U1的D端和OE端這兩個端口分別與微控制器的另外兩個I/O口連接,要求微控制器的這兩個I/O口能夠進行每個I/O口單獨的輸入/輸出操作。
(2)T型電路:
一共有8組T型電路(圖1、圖2中只畫出了1組),對應8路一線總線。每組T型電路包括二極管D1、電容C1、電阻R4、電阻R5。R4的一端與D1的陰極相連,R4的另一端與R5的一端相連,R5的另一端與D1的陽極相連,C1的一端與R4和R5的公共端相連,C1的另一端接地。U1的數據輸入/輸出端A組的A1端連接到D1的陰極。
(3)電流源電路:
一共有8組電流源電路(圖1、圖2中只畫出了1組),對應8路一線總線。每組電流源電路包括三極管T1、三極管T2、電阻R1、電阻R2、電阻R3。T1的發(fā)射極連接R2的一端,R2的另一端接到電源正極VDD(+5V)端,T1的集電極連接R1的一端,R1的另一端接地,T1的基極和集電極分別與T2的基極相連,T2的發(fā)射極連接R3的一端,R3的另一端接到VDD端,T2的集電極與T型電路中的D1的陽極相連。
(4)保護電路:
一共有8組保護電路(圖1、圖2中只畫出了1組),對應8路一線總線。每組保護電路包括二極管D2、二極管D3。D2的陰極接入VDD端,D2的陽極與D3的陰極相連,D3的陽極接地,D3的陰極與電流源電路中T2的集電極相連,D3的陰極與DQ端連接。
上述各電子器件中,U1可選用的集成電路型號有74HC245、74AC245;T1、T2為PNP型小功率三極管;R1、R2、R3、R4、R5為小功率電阻器;D1、D2、D3為小功率肖特基二極管;C1為瓷片電容器。
從機器件有三根引線,分別是數據線、地線(也是電源負極)和電源正極引線。設雙絞線的兩端分別為A端和B端,雙絞線中的一根線作為一線總線的數據線,其A端連接到DQ端,B端連接到從機器件的數據線;雙絞線中的另一根線作為一線總線的地線,A端連接到GND端(接地),B端連接到從機器件的地線。從機器件的電源正極引線需要通過一根導線與VDD端連接。在實際應用中通常再用1條雙絞線,該雙絞線中的一根線,其A端連接到VDD端,B端與從機器件電源正極引線連接;另一根線,其A端連接到GND端,B端與從機器件地線連接。
下面以18B20作為從機器件為例,說明本發(fā)明電路的工作原理。
T0、T1、R1、R2、R3組成溫度穩(wěn)定性較好的電流源電路。在主機和18B20都釋放總線時,電流源電路以比電阻上拉更快的速率將一線總線置成高電平。電流源電流值設計為4.5毫安。
在主機和從機都釋放總線時,R5和C1串聯組成雙絞線的交流匹配阻抗。R5取值為100歐姆,C1取值為1000皮法。
主機和從機器件的通信距離超過500米后,僅靠電流源上拉已不能滿足一線總線的時隙要求。為此本電路設置了R4和D1。在需要主機將數據線快速置成高電平的剛開始的一段時間內,U1的A1端口不是處于高阻態(tài),而是處于輸出高電平的狀態(tài),A1端輸出的電流,通過R4、R5(R4、R5串聯)流向DQ端,加快了對雙絞線線間電容的充電速率。這里,A1端口輸出高電平的持續(xù)時間TH,設計為略小于18B20“讀1時隙”中所規(guī)定的,從主機釋放總線到主機開始讀的這段時間;A1端輸出電流的最大值設計為:該電流值加上電流源的電流值,小于18B20輸出低電平時所允許的最大灌入電流值。TH的時間長度是以微秒計的,計算表明,在TH時間段內,灌入一線總線上18B20(設一線總線上只接了1只18B20,且18B20為輸出低電平狀態(tài))的電能量只有零點幾微焦耳。實測表明,這種快速對雙絞線線間電容充電的方法,對由18B20經過簡單封裝做成的測溫探頭的測溫精度沒有影響。
在主機拉低一線總線電平時,利用D1旁路R4、R5。D1較小的導通電阻快速對雙絞線的線間電容的進行放電;D1較小的導通電壓可以確保一線總線低電平電壓值小于最高允許值。
D2、D3的作用是電壓鉗位和續(xù)流保護。
在本發(fā)明中,主機驅動一線總線的操作是通過微控制器對本電路的操作實現的,下面對幾種基本操作進行說明:
(1)主機釋放總線:是指主機同時釋放所有8路一線總線(“一線總線”以下簡稱“總線”),微控制器向U1的OE端輸出1位“1”數據(邏輯1,下同)即可。
(2)主機寫0:是指主機同時將所有8路總線置成低電平,設在進行本操作之前,主機已處于主機釋放總線狀態(tài),則微控制器的操作為:并行輸出8位“0”數據(邏輯0,下同)“00000000”給U1數據輸入/輸出端B組的8個端口,再輸出1位“0”數據給U1的D端,然后再輸出1位“0”數據給U1的OE端。
(3)主機寫1:是指主機將所有8路總線快速置成高電平,設在進行本操作之前,主機已處于主機寫0狀態(tài),則微控制器的操作為:并行輸出8位“1”數據“11111111”給U1數據輸入/輸出端B組的8個端口。
(4)主機讀:是指主機并行讀入所有8路總線上的1位電平數據(每路1位數據,高電平對應邏輯1,低電平對應邏輯0,下同)。設在進行本操作之前,主機已處于主機釋放總線狀態(tài),則微控制器的操作為:輸出1位“1”數據給U1的D端,再輸出1位“0”數據給U1的OE端,然后并行讀入U1數據輸入/輸出端B組8個端口的8位數據。
(5)主機單獨讀:是指主機單獨讀入某一路總線上的電平數據。條件和步驟基本同“主機讀”,只是最后一步,微控制器單獨讀入U1數據輸入/輸出端A組中某一個端口的1位數據。
(6)主機單獨寫:是指主機單獨對某一路總線寫入1位(“1”或“0”)數據。這里要說明的是,在進行主機單獨寫操作時,對其他不進行寫操作的各路總線,必須保持高電平輸出。操作條件與步驟基本與“主機寫0”和“主機寫1”相同。例如,設8路總線編號是從第0號到第7號,第0號的數據對應8位數據的最低位(即最右邊一位),則對第0號總線進行主機單獨寫1位“0”數據的操作,只需按照“主機寫0”的操作步驟進行,并且將其中并行輸出的數據改為“11111110”,即可。
(7)主機延時和主機判別:微控制器進行延時操作和判別操作。
利用以上幾種基本操作,就可以實現對8路一線總線同步發(fā)指令、同步讀數據,或對其中某一路一線總線單獨發(fā)指令、單獨讀數據。例如,對8路總線上所有從機器件進行“復位”操作,按照“1-Wire協(xié)議”做如下步驟操作:
A.主機寫0,然后延時最少480微秒,這里選擇延時520微秒。
B.主機釋放總線,然后延時15至60微秒,這里選擇延時40微秒。
C.主機延時、循環(huán)判別8路總線是否都有應答低電平。如果總延時間達到320微秒后,某一路總線一直沒有應答低電平,則說明這一路總線沒有從機器件或全部損壞了。這里“延時、循環(huán)判別”是指主機讀,然后檢查讀到的數據,對讀到“0”數據的總線做出標記,延時幾微秒,再主機讀,然后再檢查讀到得數據,對讀到“0”數據的總線再做出標記,這樣不斷循環(huán),直到總延時時間達到320微秒。
D.主機延時30微秒,然后判別所有8路總線是否都是高電平,如果某一路總線是低電平,則說明這一路總線有從機器件損壞,在后續(xù)主機寫操作中,主機對這一路總線只能單獨寫0,以免影響其他各路總線。
E.主機延時240微秒,復位操作結束。
以上實施例僅為說明本發(fā)明的技術思想,不能以此限定本發(fā)明的保護范圍,凡是按照本發(fā)明提出的技術思想,在技術方案基礎上所做的任何改動,均落入本發(fā)明保護范圍之內。