基于AVR單片機(jī)的負(fù)荷缸多路遙控開關(guān)編解碼實(shí)現(xiàn)
負(fù)荷缸是船舶電力核心發(fā)電機(jī)性能的負(fù)荷試驗(yàn)必備的重要工裝設(shè)備,通過負(fù)荷試驗(yàn),可以檢驗(yàn)發(fā)電機(jī)長期工作的性能穩(wěn)定的情況(靜態(tài)特性)和對(duì)突加突卸負(fù)荷的應(yīng)變能力(動(dòng)態(tài)特性)。AVR單片機(jī)具有高性能低價(jià)格的優(yōu)點(diǎn),在本文中利用AVR單片機(jī)對(duì)發(fā)電機(jī)負(fù)荷缸的多路遠(yuǎn)程遙控開關(guān)量進(jìn)行采集監(jiān)控并進(jìn)行數(shù)字信號(hào)編解碼,用2芯的電纜取代原來40芯的粗電纜傳輸控制信號(hào),有效地解決了工作中遇到的問題。
1 問題的提出
我們通過把由發(fā)電機(jī)供電的通電極板放到負(fù)荷缸水電阻中,用充氣升降極板和補(bǔ)給水調(diào)節(jié)水電阻大小的方法控制試驗(yàn)發(fā)電機(jī)所帶負(fù)荷的大小,對(duì)發(fā)電機(jī)的性能進(jìn)行試驗(yàn)。體積龐大的負(fù)荷缸一般放置在碼頭,在船舶發(fā)電機(jī)的負(fù)荷試驗(yàn)中需要在船舶配電板處控制負(fù)荷缸的各個(gè)部件,所以我們?cè)诖芭潆姲逄幇惭b了負(fù)荷缸遙控臺(tái),通過一條40芯約100 m長的多芯電纜連接負(fù)荷缸和遙控臺(tái)??刂凭€路連接如圖1所示。
在多年的使用經(jīng)驗(yàn)中發(fā)現(xiàn)存在以下問題:
(1)因?yàn)殡娎|芯線繁多,工人接線時(shí)往往出現(xiàn)接錯(cuò)線的問題,導(dǎo)致遙控臺(tái)沒法正常工作,需耗費(fèi)時(shí)間進(jìn)行調(diào)試。
(2)這條多芯的電纜非常大,在每次試驗(yàn)安裝的時(shí)候需要耗費(fèi)很多人力進(jìn)行拉放。
(3)經(jīng)過長期多次的使用,會(huì)出現(xiàn)電纜芯線折斷無法正常使用的現(xiàn)象,導(dǎo)致在試驗(yàn)期間需花費(fèi)人力進(jìn)行檢查。
鑒于以上存在的問題,我們提出了以下的設(shè)想:尋找一種方法對(duì)這些多路遙控開關(guān)信號(hào)進(jìn)行編碼傳送,然后在另一端進(jìn)行解碼,使得可以用兩芯或較少的芯線來取代這條多芯電纜。
2 解決方案
對(duì)于以上遙控臺(tái)和負(fù)荷缸連接原理圖,因?yàn)樵谶b控臺(tái)上由負(fù)荷缸供電的低水位回傳信號(hào)指示燈等可以容易地改為由遙控臺(tái)端供電,而在負(fù)荷缸端只提供開關(guān)量信號(hào),于是實(shí)際的問題便變成了實(shí)現(xiàn)一種對(duì)多路遙控開關(guān)和返回開關(guān)量信號(hào)進(jìn)行編碼。剛開始考慮到采用T型電阻網(wǎng)絡(luò)對(duì)這些開關(guān)進(jìn)行采樣,用A/D,D/A轉(zhuǎn)換的方法實(shí)現(xiàn),但為了保證信號(hào)長距離傳輸?shù)目煽啃?,決定用數(shù)字信號(hào)的方式對(duì)這些開關(guān)量進(jìn)行編解碼,隨著技術(shù)的進(jìn)步使這種設(shè)想成為可能,經(jīng)過綜合比較,我們決定選用功能強(qiáng)大,價(jià)格便宜的ATMEL Mega8單片機(jī)對(duì)這些開關(guān)信號(hào)進(jìn)行編解碼和信號(hào)傳輸控制。
DIP封裝的ATMEL Mega8單片機(jī)只有28個(gè)管腳,除掉電源和用于單片機(jī)之間通信必要的串行端口引腳,實(shí)際可用來做信號(hào)采集和輸出的管腳遠(yuǎn)遠(yuǎn)不夠,然而ATMEL Mega8單片機(jī)的12 MHz的高速運(yùn)行速度相對(duì)于開關(guān)動(dòng)作的速度來說極其快速,通過74SL244緩沖器和74SL273鎖存器共用單片機(jī)管腳,在程序中控制緩沖器使能端,控制鎖存器時(shí)鐘信號(hào)的方法擴(kuò)展單片機(jī)I/O口。
{{分頁}}
負(fù)荷缸端單片機(jī)具體連接如圖2所示。
圖2中2個(gè)74SL273鎖存器和1個(gè)74SL244緩沖器共用單片機(jī)PB和Pc端口低四位管腳,單片機(jī)通過PB4,PD3,PB5管腳分別控制第一個(gè)、第二個(gè)鎖存器的時(shí)鐘脈沖輸入端和緩沖器和使能端。我們?cè)诔绦蛑性O(shè)置單片機(jī)PB和PC端口低四位管腳為輸入狀態(tài),控制74SL244緩沖器的使能端為低電平,并屏蔽兩個(gè)74SL273鎖存器的時(shí)鐘輸入,從而通過74SL244緩沖器采集負(fù)荷缸工作狀態(tài)開關(guān)信號(hào);在程序中設(shè)置單片機(jī)PB和PC端口低四位管腳為輸出狀態(tài),控制74SL244緩沖器的使能端為高電平,并讓單片機(jī)給其中一個(gè)74SL273鎖存器的加上時(shí)鐘輸人信號(hào),從而通過74SL273鎖存器輸出一組開關(guān)狀態(tài)控制信號(hào)。
因?yàn)樵谪?fù)荷端和遙控臺(tái)的連接距離接近100 m,超過串口RS 232信號(hào)可靠傳送到達(dá)的距離,我們?cè)黾恿薙N75LBC184 RS 232/RS 485串行通信轉(zhuǎn)換器芯片,SN75LBC184輸人和單片機(jī)TXD、RXD管腳相連,單片機(jī)PD2引腳控制SN75LBC184芯片的收發(fā)使能端實(shí)現(xiàn)收發(fā)功能的轉(zhuǎn)換,用兩芯的電纜連接負(fù)荷缸端和遙控臺(tái)端SN75LBC184芯片的輸出端口,實(shí)現(xiàn)了單片機(jī)串口信號(hào)的遠(yuǎn)距離傳送和電路的半雙工工作,具體連接如圖3所示。
3 串行通信協(xié)議及編程實(shí)現(xiàn)
3.1 串行通信協(xié)議
在從遙控臺(tái)端單片機(jī)和負(fù)荷缸被控端單片機(jī)的通信中.我們選擇通信協(xié)議為:9600波特率,8個(gè)數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)。
{{分頁}}
遙控臺(tái)端單片機(jī)和負(fù)荷缸被控端單片機(jī)之間的通信方式采用主從定時(shí)請(qǐng)求應(yīng)答方式,遙控臺(tái)端單片機(jī)始終具有主動(dòng)發(fā)送權(quán),定時(shí)向負(fù)荷缸被控端單片機(jī)發(fā)送設(shè)置16個(gè)開關(guān)狀態(tài)命令幀和讀取回傳指示燈開關(guān)狀態(tài)命令,負(fù)荷缸單片機(jī)處于被動(dòng)狀態(tài)響應(yīng)狀態(tài)。
3.2 數(shù)據(jù)幀格式
在負(fù)荷缸的控制中,當(dāng)發(fā)電機(jī)帶負(fù)荷運(yùn)行時(shí),意外的主開關(guān)分閘信號(hào)等同于發(fā)電機(jī)突卸負(fù)荷,特別是當(dāng)滿負(fù)荷運(yùn)行時(shí)意外的主開關(guān)分閘信號(hào)等同于發(fā)電機(jī)的瞬時(shí)100%突卸負(fù)荷,將導(dǎo)致發(fā)電機(jī)出現(xiàn)飛車現(xiàn)像,嚴(yán)重的損害發(fā)電機(jī)的性能,因此信號(hào)傳輸?shù)目煽啃苑浅V匾?,在本系統(tǒng)中遙控臺(tái)到負(fù)荷缸的命令幀格式采用如圖4所示的方法進(jìn)行通訊握手和數(shù)據(jù)校驗(yàn)保證遙控臺(tái)和負(fù)荷缸端的數(shù)據(jù)的可靠傳輸和控制。
其中:@為幀開始標(biāo)志符,$為幀結(jié)束標(biāo)志符,D1,D2分別為第一、第二組8個(gè)開關(guān)狀態(tài)組成的1個(gè)字節(jié)的無符號(hào)字符,V1,V2為其對(duì)應(yīng)校驗(yàn)碼,這里采用其按位取反。當(dāng)D1,D2,V1,V2都為ASCII碼0xff時(shí)為請(qǐng)求負(fù)荷缸端回傳開關(guān)狀態(tài)命令幀,負(fù)荷缸端單片機(jī)響應(yīng)命令回傳負(fù)荷缸端開關(guān)狀態(tài)命令幀的格式為:
其中:@為幀開始標(biāo)志符,D1為8個(gè)回傳指示燈開關(guān)狀態(tài)組成的1個(gè)字節(jié)的無符號(hào)字符,V1為D1按位取反較驗(yàn)碼,$為幀結(jié)束標(biāo)志符。
{{分頁}}
3.3 通訊握手和數(shù)據(jù)較驗(yàn)編程實(shí)現(xiàn)
在單片機(jī)編程中,為了方便命令幀數(shù)據(jù)較驗(yàn),我們?cè)趩纹瑱C(jī)程序中設(shè)置了30個(gè)字節(jié)的堆??臻g用于緩存接收的數(shù)據(jù),負(fù)荷缸端單片機(jī)程序流程圖如圖5所示,該程序在實(shí)際工作中運(yùn)行穩(wěn)定,滿足工作的要求。
4 結(jié) 語
本文利用AVR單片機(jī)的高速運(yùn)行速度,采用74SL244緩沖器和74SL273鎖存器擴(kuò)展單片機(jī)I/O口,實(shí)現(xiàn)了多路遠(yuǎn)程遙控開關(guān)量采集監(jiān)控和數(shù)字信號(hào)編碼,采用了握手和數(shù)據(jù)較驗(yàn)的方法保證了數(shù)據(jù)的可靠傳輸和控制,用SN75LBC184 RS 232/RS 485串行通信轉(zhuǎn)換芯片實(shí)現(xiàn)了串行通信信號(hào)的遠(yuǎn)距離傳送。本文的方法也可用于其他開關(guān)量信號(hào)采集和自動(dòng)化控制場所,實(shí)現(xiàn)設(shè)備的智能監(jiān)控。
評(píng)論