一種線型組網(wǎng)的三線制數(shù)據(jù)測(cè)量方法
1.2 工作原理
主機(jī)啟動(dòng)一次數(shù)據(jù)采集時(shí),首先閉合開(kāi)關(guān)J1,總線VCC 得電,所有單元同時(shí)上電,單元內(nèi)的單片機(jī)開(kāi)始工作。單元的工作分為待機(jī)、工作、透?jìng)?種模式。上電后,所有單元進(jìn)入待機(jī)模式,主機(jī)先向距離最近的1#單元發(fā)出啟動(dòng)脈沖,1#單元由“待機(jī)”轉(zhuǎn)為“工作”模式,它會(huì)啟動(dòng)傳感器,點(diǎn)亮指示燈L1,表示本單元是活動(dòng)的,這時(shí),主機(jī)可以與1#單元進(jìn)行直接的通信,命令1#單元的進(jìn)行測(cè)量并讀取數(shù)據(jù),完畢后,主機(jī)發(fā)送結(jié)束脈沖,命令1#單元結(jié)束活動(dòng)態(tài)。1#單元在向2#單元發(fā)送啟動(dòng)脈沖后進(jìn)入透?jìng)髂J健S谑?,收?#發(fā)出的啟動(dòng)脈沖,2#單元成為活動(dòng)單元,點(diǎn)亮指示燈L1,進(jìn)入工作模式。由于1#單元的透?jìng)髯饔茫鳈C(jī)可以直接跟2#單元通信,直到2#單元收到結(jié)束指令后,它啟動(dòng)下個(gè)單元,然后自己變成透?jìng)鳎@樣依次類推,各個(gè)單元逐個(gè)變成活動(dòng)單元,主機(jī)總是透過(guò)已經(jīng)變成透?jìng)髂J降膯卧?,直接與活動(dòng)單元進(jìn)行通信,獲取數(shù)據(jù),直到全部單元都完成數(shù)據(jù)采集。
因此,在整個(gè)三線制網(wǎng)絡(luò)中,只有一個(gè)是活動(dòng)單元,活動(dòng)單元前面,是完成了數(shù)據(jù)采集變成透?jìng)髂J降膯卧辉诨顒?dòng)單元后面,是等待啟動(dòng)的待機(jī)單元。主機(jī)能夠直接與活動(dòng)單元聯(lián)系,使用靈活約定的協(xié)議和速率,是本文提出三線制線狀組網(wǎng)的一大優(yōu)勢(shì)。
主機(jī)與活動(dòng)單元通信時(shí),可以直接使用單片機(jī)的串口通信模式,在數(shù)據(jù)量小的時(shí)候,約定使用較低的波特率可以獲得較遠(yuǎn)的傳送距離。用來(lái)啟動(dòng)和停止單元工作的脈沖命令,可以有2種形式:
?。?)直接使用串行通信來(lái)改變單元的工作模式,只要約定主機(jī)下發(fā)給單元的串行數(shù)據(jù)命令字即可,例如約定0X55為啟動(dòng)命令,0XAA為停止命令;(2)使用脈沖寬度控制,只要命令脈沖與通信波特率通信脈沖有明顯區(qū)別不產(chǎn)生混淆就可以,例如波特率使用1 200,啟動(dòng)和停止脈沖使用寬度為30 ms的低電平。
1.3 特點(diǎn)分析
總結(jié)上述闡述,本文提出的三線制線狀組網(wǎng)具有如下特點(diǎn):
(1)自帶電源:三線中有一根電源線,所有單元可以直接授電;(2)功耗低:工作過(guò)程中,只有一個(gè)單元是活動(dòng)的,處于待機(jī)和透?jìng)髂J降膯卧?,可以關(guān)閉所轄傳感器的供電,只讓單片機(jī)帶電,如果使用MSP433 超低功耗單片機(jī),100個(gè)單元的功耗也不會(huì)超過(guò)1 mA.
?。?)協(xié)議靈活:主機(jī)是通過(guò)透?jìng)鲉卧苯优c活動(dòng)單元通信,允許系統(tǒng)搭建者使用自己約定的通信協(xié)議;(4)傳送距離遠(yuǎn):主機(jī)是通過(guò)接力與每個(gè)單元通信的,只要每個(gè)單元之間能有效傳送,多個(gè)單元構(gòu)成的整個(gè)系統(tǒng)就能正常工作。
?。?)擴(kuò)展方便:當(dāng)需要模式量傳送時(shí),只要再增加一條總線,每個(gè)單元增加模擬開(kāi)關(guān),活動(dòng)單元把模擬開(kāi)關(guān)閉合,該單元的模擬量就可以上傳到總線上,送給主機(jī)。
?。?)無(wú)需單元編號(hào):主機(jī)是順序與各個(gè)單元建立聯(lián)系的,所有單元完全一樣,沒(méi)有地址編號(hào)環(huán)節(jié),適合批量生產(chǎn)制作。
2 程序編制
下面是主機(jī)和單元的程序編制流程與說(shuō)明。
主機(jī)程序流程如下:
?、偕想姟诘却杉瘯r(shí)間到→③啟動(dòng)供電開(kāi)關(guān)J1→④發(fā)出啟動(dòng)命令→⑤等待單元發(fā)回應(yīng)答→⑥與單元通信完成采集→⑦發(fā)出結(jié)束命令→⑧判斷單元是否全部完成采集→⑨關(guān)閉J1供電→回到②等待下次采集。
其中,在⑤如果等不到單元發(fā)回的確認(rèn),要回到斷開(kāi)J1 回到③重新開(kāi)始,如果多次重復(fù)均不成功,要做出錯(cuò)處理;在第⑧步,如果單元采集沒(méi)有完成,則回到第⑤等待下個(gè)單元的回復(fù)確認(rèn)。
對(duì)于每天只有幾次采集的低頻度情形,可使用低功耗定時(shí)振蕩器,用硬件電路控制主機(jī)的CPU供電,達(dá)到采集時(shí)刻主機(jī)才上電工作1次,大大降低功耗,適合在野外現(xiàn)場(chǎng)做數(shù)據(jù)采集。
單元程序流程如下:
?、偕想姟诘却龁?dòng)命令→③啟動(dòng)傳感器采集數(shù)據(jù)/點(diǎn)亮L1/與主機(jī)通信/完成數(shù)據(jù)采集→④等待結(jié)束命令→⑤向下個(gè)單元發(fā)送啟動(dòng)命令→⑥進(jìn)入透?jìng)髂J健?P> 其中透?jìng)髂J降木幊炭驁D見(jiàn)圖3,思路如下:
(1)透?jìng)鞯暮x是既可以從接收主機(jī)方向數(shù)據(jù)傳給后面的單元,也可以從后面單元接收數(shù)據(jù)傳給主機(jī)(2)認(rèn)為常態(tài)是高電平,不停檢測(cè)左右兩邊的電平,為高時(shí)表示沒(méi)有數(shù)據(jù)傳遞。
?。?)無(wú)論在哪個(gè)方向檢測(cè)到低電平,都立即把低電平傳輸?shù)搅硪粋€(gè)方向,直到這個(gè)低電平消失,便取消另一個(gè)方向的低電平。
3 傳送距離
傳送距離受透?jìng)鲉卧氲拿}沖寬度失真和單元電壓跌落兩個(gè)因素影響,下面分別討論。
3.1 透?jìng)鲉卧獙?duì)脈沖的寬度的失真
單元之間傳輸延遲如圖4 所示,命令由第N - 1 單元傳向第N 單元,在t1 時(shí)刻發(fā)出,t2 時(shí)刻結(jié)束,寬度為T(mén)1.線路電容等帶來(lái)脈沖的下降和上升時(shí)間,第N 單元認(rèn)定的翻轉(zhuǎn)時(shí)刻,由該單元的輸入端閾值決定,它認(rèn)定的寬度為T(mén)2.同樣道理,這個(gè)寬度傳送到N + 1 單元時(shí)被認(rèn)定為T(mén)3.T1,T2 ,T3 會(huì)有差異,造成脈寬逐級(jí)失真,超過(guò)一定限度就無(wú)法正確通信(串口專用11.059M 晶體用12M代替就無(wú)法工作,這時(shí)誤差僅為8%)。解決逐級(jí)失真的辦法有兩個(gè):
(1)加快脈沖上升下降時(shí)間,可在單元的信號(hào)線加上拉電阻。上拉電阻的最小值,要保證它灌入的電流小于單片機(jī)能吸入電流的最大值;上拉電阻的最大值,要考慮它與信號(hào)線電容的時(shí)間常數(shù)小于通信脈寬的10%.例如,100 m的單元距離,按照普通絞線100 pF/m的分布電容,C = 100 pF×100=0.01 μF,如果使用1 200波特率,信號(hào)脈寬800 μs,則時(shí)間常數(shù)應(yīng)小于80 μs,用τ = RC 計(jì)算,上拉電阻R = τ C = 80 μs /0.01μF =8 kΩ。按照經(jīng)驗(yàn)這個(gè)數(shù)值是可以用于單片機(jī)上拉的。
評(píng)論