郭興龍
(廣州市市政職業(yè)學(xué)校,廣東廣州 510507)
目前,教學(xué)實驗室的設(shè)備電源,由外部電箱引入實驗室,經(jīng)過總開關(guān)控制之后再分配至各個實驗設(shè)備,由各個實驗設(shè)備單獨控制,因此無法集中控制。設(shè)備電源一般是AC220V或者AC380V,當(dāng)學(xué)生在教學(xué)實驗室上課的時候,可能無意中啟動設(shè)備電源,容易造成觸電事故。設(shè)備電源如果采用繼電器連線到教師機,使用船型開關(guān)啟停的集中控制模式,存在布線繁瑣、占用空間較多以及維護不方便的問題。為解決上述問題,研究并設(shè)計了基于RS-485網(wǎng)絡(luò)和STC8A單片機的集中控制系統(tǒng)。
系統(tǒng)設(shè)計中,以STC8A單片機為核心控制單元,單獨控制每個設(shè)備電源的啟動或者關(guān)閉??刂茊卧ㄟ^RS-485網(wǎng)絡(luò),與教師機的上位機連接,進(jìn)行遠(yuǎn)程通信[1]。教師機的上位機作為主站,其按照一定的通信協(xié)議,不斷發(fā)送指令到各個控制單元。各個控制單元作為從站,被動地接收主站指令,并對各個指令做出相應(yīng)的回復(fù)。系統(tǒng)的供電,主要是通過電源整流模塊,直接將交流電壓轉(zhuǎn)換為直流,供給單片機以及各個外圍元器件使用。單片機通過小型繼電器驅(qū)動AC220V或者AC380V交流接觸器,從而控制設(shè)備的輸入電源,系統(tǒng)網(wǎng)絡(luò)整體設(shè)計框圖如圖1所示。
圖1 系統(tǒng)網(wǎng)絡(luò)整體框圖
單片機控制單元設(shè)計如圖2所示,主要由STC8A單片機、RS485接口模塊、直流電源模塊、數(shù)碼管顯示和按鍵模塊、撥碼開關(guān)模塊、負(fù)載電流檢測模塊和繼電器控制模塊等組成。STC8A單片機為核心控制器,負(fù)責(zé)系統(tǒng)的整體控制運行,根據(jù)指令控制繼電器的通斷來開啟或者關(guān)閉設(shè)備輸入電源。直流電源模塊將AC220V直接整流濾波輸出穩(wěn)定的DC5V,供給各個模塊使用。MAX485芯片為RS485通訊接口芯片,主要構(gòu)成通訊網(wǎng)絡(luò)。撥碼開關(guān)模塊,設(shè)置控制單元的地址碼,該地址碼作為網(wǎng)路通訊地址碼使用。負(fù)載電流的檢測,主要通過ACS712霍爾傳感器芯片,單片機不斷采樣負(fù)載電流值,與上位機發(fā)送過來的最大負(fù)載電流值比較,超過該值,系統(tǒng)將負(fù)載電流切斷,并報警上位機,實現(xiàn)負(fù)載電流實時監(jiān)控功能,防止意外事故發(fā)生。數(shù)碼管顯示和按鍵模塊,作為人機交互接口,實現(xiàn)數(shù)據(jù)的輸入或者輸出功能。
圖2 單片機控制單元系統(tǒng)框圖
根據(jù)控制單元設(shè)計要求,選用某公司生產(chǎn)的STC8A4K32S2A12單片機。STC8A4K32S2A12是一款基于MCS51內(nèi)核的超高速單片機,采用LQFP44的封裝,工作電壓范圍為2.0~5.5 V,F(xiàn)lash程序存儲器為32 kB,靜態(tài)SRAM為4 kB,內(nèi)部集成了24 MHz高精度IRC時鐘源,無需外部晶振。芯片具有內(nèi)部看門狗和ISP/IAP在系統(tǒng)可編程/在應(yīng)用可編程功能,可實現(xiàn)快速更新程序和便于程序設(shè)計。內(nèi)部資源豐富,可以提供20個中斷源,5個16位定時器,2組高速串口,4組16位PCA模塊和15通道的12位ADC轉(zhuǎn)換器,同時具有SPI,I2C接口設(shè)計,便于電路設(shè)計和程序開發(fā)[2]。STC8A4K32S2A12芯片電路簡單,抗干擾能力強,典型應(yīng)用電路[2]如圖3所示。
ACS712ELCTR-20A是一款低內(nèi)阻、隔離電壓高達(dá)2.1 kVRMS的集成霍爾效應(yīng)線性電流傳感器。檢測直流電流時,霍爾傳感器的輸出是以2.5 V作為基準(zhǔn)的直流電壓信號。檢測信號為交流電流時,霍爾傳感器的輸出是以2.5 V作為基準(zhǔn)直流電壓,疊加交流信號。該信號需要通過整流電路將交流信號轉(zhuǎn)換成直流信號,提供給單片機采樣。主要參數(shù)如表1所示。
主要設(shè)計電路如圖4所示:ASC712芯片通過端子接入設(shè)備電源輸入支路中,傳感器輸出電壓由VIOUT管腳輸出,經(jīng)過電阻分壓之后,經(jīng)過二極管整流穩(wěn)壓輸出之后,送到單片機ADC采樣。
圖3 STC8A4K系列單片機典型應(yīng)用電路
表1 ACS712ELCTR-20A主要參數(shù)[3]
圖4 ASC712電流檢測電路
為了提高電流檢測精度,需要提高采樣參考電壓的精度。該系統(tǒng)采用MCP1541作為單片機ADC采樣的參考電壓源。MCP1541輸入電壓為4.3~4.5 V,輸出參考電壓為4.096 V,精度達(dá)到±1%,采用SOT-23封裝[4]。具有較低的紋波,紋波頻率在0.1~10 Hz范圍之內(nèi),精度達(dá)到小于或等于145uVrms,完全可以滿足系統(tǒng)設(shè)計需要。ADC采樣參考電壓電路設(shè)計如圖5所示,模擬地和數(shù)字地要分開。
圖5 ADC采樣參考電壓電路
該系統(tǒng)中,負(fù)載電流實時值和一些參數(shù)等數(shù)據(jù),主要通過數(shù)碼管實現(xiàn)數(shù)據(jù)的輸入、輸出功能。顯示采用3位一體的共陰極數(shù)碼管,采用動態(tài)掃描的顯示方式。動態(tài)顯示方式,相比靜態(tài)顯示方式,可極大地節(jié)約了IO管腳,電路設(shè)計如圖6所示。
圖6 數(shù)碼管顯示電路設(shè)計
串口通訊電路設(shè)計,采用MAX485芯片完成。MAX485是一款半雙工、±20 kVESD,應(yīng)用于RS485的通訊系統(tǒng)收發(fā)芯片。其通訊速率高達(dá)10 MB/s,總線連接個數(shù)高達(dá)256個,并且具有較寬的共模電壓范圍,其設(shè)計電路如圖7所示,一般在傳輸總線的兩端,并聯(lián)一個120Ω的電阻,起到阻抗匹配的作用。
該系統(tǒng)的單片機控制單元電源,采用WA3-220S05A3模塊產(chǎn)生+5 V電源。WA3-220S05A3是一款內(nèi)部集成了變壓、整流和穩(wěn)壓濾波的開關(guān)電源,具有寬電壓范圍輸入,能夠交直兩用,低紋波、低溫升、低功耗、高效率和高可靠性的優(yōu)點,集成了過流、短路、過溫保護和自恢復(fù)的功能[5]。封裝上采用PCB板直接焊接的安裝方式,廣泛應(yīng)用于工業(yè)、辦公及民用等多個領(lǐng)域,抗干擾能力強,比較適合用于電磁兼容惡劣的環(huán)境。其電路設(shè)計如圖8所示。電路中F1為保險絲,起到短路保護作用,5D-11是NTC熱敏電阻,作為浪涌電流限流保護用。14D-471K為壓敏電阻,作為雷擊浪涌時過壓保護用。
圖7 串口電路設(shè)計
圖8 單片機控制單元電源電路設(shè)計
圖9 程序控制主流程圖
系統(tǒng)單片機程序設(shè)計包括主程序模塊、數(shù)碼管顯示模塊、按鍵輸入檢測模塊、RS485串口通訊模塊、負(fù)載電流ADC采樣模塊和繼電器控制模塊等部分。
2.7.1 主程序設(shè)計
主程序設(shè)計如圖9所示,系統(tǒng)上電之后,將進(jìn)行一些參數(shù)初始化,如定時器設(shè)置、串口參數(shù)設(shè)置以及ADC轉(zhuǎn)換設(shè)置,之后再進(jìn)入主程序循環(huán)函數(shù)。主程序循環(huán)函數(shù)不斷查詢按鍵、ADC采樣更新以及上位機接收信息,查詢到相關(guān)信息之后,進(jìn)入相應(yīng)的處理函數(shù)并更新數(shù)據(jù)。
2.7.2 串口通訊模塊設(shè)計
串口通訊模塊設(shè)計包括字符收發(fā)、處理部分和應(yīng)答等3部分。字符收發(fā)主要在串口中斷函數(shù)里處理,字符接收到完整的字符串之后,主要在主循環(huán)函數(shù)里查詢處理,并將應(yīng)答信息發(fā)送給上位機。單片機與上位機的通訊,采用自定義的通訊協(xié)議,上位機主動發(fā)送命令,單片機作為從機,被動接收數(shù)據(jù)和應(yīng)答上位機。為提高通訊的可靠性,防止錯誤的報文導(dǎo)致意外事故發(fā)生,幀的報文中,增加校驗和處理,校驗和為幀報文中除校驗和之外的所有字節(jié)累加,取低字節(jié)部分,溢出部分忽略不用。在幀的格式中,除起始符和結(jié)束符之外,其它字節(jié)拆分為兩個ASCII字符。
(1)上位機通訊幀格式字符如表2所示。例如:上位機需要控制設(shè)備的電源關(guān)閉,指令代碼是“c”(close單詞首字母的ACSII碼),上位機發(fā)送的幀為:
STX+地址高字節(jié)+地址低字節(jié)+63+ETX+校驗和高字節(jié)+校驗和低字節(jié)
表2 上位機通訊指令幀格式
(2)單片機幀應(yīng)答主要有兩種,一種不帶參數(shù)的應(yīng)答,一種是需要返回參數(shù)的應(yīng)答。其應(yīng)答格式如表3所示,如果接收到的指令不對或者校驗和不符,控制單元應(yīng)答NAK。
表3 通訊應(yīng)答幀格式
(3)串口通訊接收主要是在串口中斷函數(shù)里完成,數(shù)據(jù)接收采用一組緩沖寄存器,兩個指針的處理方式[6],如圖10所示。每接收到1個數(shù)據(jù),RxPointer指針加1,并將數(shù)據(jù)存放入寄存器組,如果指針超過數(shù)組大小,指針歸0。在通訊處理函數(shù),先預(yù)讀數(shù)組。每讀取1個數(shù)組,ReadPointer指針加1。主循環(huán)程序中,不斷查詢是否接收到一個完整的報文,如果是完整的一個報文,才可以進(jìn)入報文處理函數(shù)。再判斷報文校驗和是否正確,如果報文出錯,整個報文做丟棄處理,數(shù)據(jù)讀取處理流程如圖11所示。RxPointer和ReadPointer指針地址不能夠一樣。在通訊應(yīng)答發(fā)送過程中,待發(fā)送的第一個數(shù)據(jù)寫入發(fā)送寄存器后,發(fā)送長度減1。數(shù)據(jù)發(fā)送完畢之后進(jìn)入串口中斷函數(shù),通過判斷發(fā)送長度字節(jié)數(shù),繼續(xù)將數(shù)據(jù)寫入發(fā)送寄存器,直至待發(fā)送長度字節(jié)數(shù)為0,程序流程圖如圖12所示。
圖10 通訊接收數(shù)據(jù)緩沖器設(shè)計
圖11 數(shù)據(jù)讀取處理流程圖
圖12 發(fā)送程序流程圖
2.7.3 ADC采樣
ADC采樣主要采用中斷的處理方式。ADC轉(zhuǎn)換器啟動之后,按照一定的時間間隔自動完成一次采樣工作之后,程序進(jìn)入中斷處理函數(shù)。程序讀取采樣值,并累加多次采樣結(jié)果,求取其平均值作為一次采樣的有效值,程序處理流程如圖13所示。
圖13 ADC中斷采樣程序流程圖
上位機軟件界面主要是在教師機上運行,操作人員可以控制和查看每個實驗設(shè)備的電源使用情況。軟件界面采用Visual Basic 6.0編程語言編寫,功能包括遠(yuǎn)程控制和實時監(jiān)測。串口通訊編程主要基于MSComm控件實現(xiàn)數(shù)據(jù)發(fā)送和接收[7],通訊協(xié)議由用戶自定義。
例如:上位機向03設(shè)備發(fā)送關(guān)閉設(shè)備電源指令,MSComm串口控件發(fā)送數(shù)據(jù)程序,如下程序所示。
MSComm1.InBufferCount=0
MSComm1.OutBufferCount=0
SendData(0)=&H02
SendData(1)=&H30
SendData(2)=&H33
SendData(3)=&H67
SendData(4)=&H03
SendData(5)=&H67
SendData(6)=&H6B
MSComm1.Output=SendData
按以上設(shè)計方案制作的單片機控制單元樣機如圖14所示,經(jīng)過電工電子實驗室舊實驗設(shè)備的改裝使用測試,基本上能夠?qū)崿F(xiàn)預(yù)期要求。整個系統(tǒng)設(shè)計重點和難點是負(fù)載電流檢測和數(shù)據(jù)通訊處理兩個部分。
通過設(shè)備電源控制系統(tǒng)的設(shè)計與制作,可以得出以下幾點結(jié)論:
(1)負(fù)載電流檢測采樣間隔周期,不能夠過長,通過反復(fù)試驗,采樣頻率采用36 kHz比較合適。如果頻率過快,導(dǎo)致程序反復(fù)進(jìn)入ADC中斷,頻繁占用CPU,處理其它事務(wù)相對遲滯了。如果采樣周期過長,導(dǎo)致電流監(jiān)測不及時。
圖14 單片機控制單元樣機
(2)負(fù)載電流檢測與控制,只能夠作為輕過載保護,不能夠作為短路保護,設(shè)備電源系統(tǒng)還必須有相應(yīng)的短路、漏電等保護措施。
(3)串口通訊程序的設(shè)計中,緩沖器數(shù)組數(shù)量的設(shè)置不能夠太小。如果設(shè)置過小,容易出現(xiàn)如下的情況:接收數(shù)據(jù)量過大時,已接收部分沒有及時讀取,導(dǎo)致接收中斷,將部分?jǐn)?shù)據(jù)丟棄,從而使通訊質(zhì)量下降。綜合考慮單片機的RAM容量大小,接收緩沖器長度為64個。