何超
摘要:本方案以STC89C52芯片為核心,模擬了電梯控制系統所需的一些基本功能,通過按鍵選擇樓層,數碼管顯示實時樓層數,LED燈組成的箭頭指示上下方向。同時,采用uln2003來驅動步進電機轉動,以步進電機的轉動方向來模擬電梯運行方向。根據電梯運行到不同的樓層,產生不同的電平量,以此實現對電梯的控制。該方案軟硬件結構設計簡單可靠,實現了對電梯的運行控制。
關鍵詞:電梯;步進電機;STC89C52
引言
目前電梯控制系統大多采用繼電器或者可編程控制器(PLC)的控制方式,存在著成本高,需要三相供電等缺點,本方案給出了一種基于單片機的電梯模型控制系統。以單片機為核心,再輔以適當的硬件電路和控制程序來檢測和控制整個電梯的信號,具有成本低、通用性強、靈活性大、擴展容易及易于實現復雜控制等優點。
1 總計設計方案
本方案采用開關作為電梯內外的請求按鍵,按鍵和單片機的插針接口相連,按鍵按下為低電平,將信號傳送到單片機,單片機根據各接口的信號進行判斷處理,處理完畢后控制步進電機運動,實現電梯的上下運動,采用傳感器確定電梯所在的樓層數及電梯準確停止的位置,用七段數碼管顯示電梯所在樓層,用LED燈顯示電梯的上下運行狀態。
本方案采用STC89C52為控制電梯的單片機[1]。考慮到經濟性與實用性,選擇28BYJ48型步進電機。采用5V直流電源為單片機、指示燈、數碼管供電。總體設計框圖如圖1所示。
本方案主要由5大部分組成:鍵盤模塊、單片機控制電路、顯示模塊電路、電源模塊電路、步進電機驅動電路。其中單片機控制電路主要包含復位電路,電路復位后樓層顯示數字1 表示電梯此時在一樓,而電梯樓層位置是由延時電路控制的,延時電路有2秒延時,每層之間通過2秒延時控制即每延時2秒表示電梯走了一層,同時顯示相應的上下箭頭指示。本方案的延時部分主要是由軟件控制的。電梯的狀態是通過點陣組成的上下箭頭和數字顯示的。鍵盤電路采用獨立式按鍵。
2 方案硬件設計
由于電梯要運送客人到不同的樓層,所以每一層都要有按鍵才可以滿足不同樓層顧客的需求。不僅如此,電梯需要人性化的顯示,比如,哪個按鈕按下了,就把它對應樓層按鈕的二極管點亮,還要有一個數碼管實時顯示電梯所在層數,用發光二極管組成的上下箭頭來表示電梯當前的運行方向等。而這些零碎的原件,又需要高效的芯片來控制,它們相互之間的物理連接問題亟待解決。
當在89C52單片機的RST引腳引入高電平并保持2個機器周期時,單片機內部就執行復位操作,若該引腳持續保持高電平,單片機就處于循環復位狀態。復位電路通常采用上電自動復位和按鈕復位兩種方式。最簡單的上電自動復位電路中,上電自動復位是通過外部復位電路的電容充放電來實現的。只要Vcc的上升時間不超過1ms,就可以實現自動上電復位。除了上電復位外,有時還需要按鍵手動復位。本方案采用按鍵手動復位。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST端與電源Vcc接通來實現。
數碼管的基本單元是發光二極管。共陰數碼管在應用時應將公共極COM接到地線GND上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮,當某一字段的陽極為低電平時,相應字段就不亮。由于它的價格便宜、使用簡單在電器特別是家電領域應用極為廣泛。本方案采用共陰數碼管來顯示時間。
本方案模擬的是8層樓電梯,所以有8個按鍵,每一個按鍵對應一層樓。8個按鍵接在P2口。當電梯到達每一層時需要有聲音式提醒,本方案采用了成本和設計難易程度更具優勢的蜂鳴器提醒。在蜂鳴器電路中,由于單片機的IO口驅動能力不夠讓蜂鳴器發出聲音,故我們選擇三極管做驅動。三極管放大驅動電流,從而可以讓蜂鳴器發出聲音,當要輸出高電平,三極管導通,集電極電流通過蜂鳴器讓蜂鳴器發出聲音,當輸出為低電平時,三極管截止,沒有電流流過蜂鳴器,就不會發出聲音。
3 方案軟件邏輯設計
電梯所處的狀態是整個程序成功運行的核心保證。在電梯每經過一個樓層時,就會自動調用狀態函數,它的作用是基于高效率、短時間、人性化的基礎上,合理智能的對電梯的運行進行調度,結合實際情況,最終得出電梯下一個目標停留樓層[2]。其流程如圖2所示。
由圖2可知,程序中將實際情況分為四種情況來判斷:電梯上行且是去送人,即電梯此時位于底層,高層有人呼叫要上樓;電梯上行且是去接人,即電梯此時位于底層,而高層有人呼叫要下樓;電梯下行且是去送人,即電梯此時位于高層,而低層有人呼叫要下樓;電梯下行且是去接人,即電梯此時位于高層,而低層有人呼叫要上樓。
而這四種情況,也就包含了實際電梯中的絕大部分情況。情況不同,分析的方法也當然不一樣。
這可以分為兩個步驟:第一判斷電梯是上行還是下行;第二,判斷是去接人還是去送人。當然,第一個是最好判斷的,因為電梯在運行時,有兩個與樓層有關的變量,一個為當前所在樓層值,一個為目標樓層值,當電梯運行時,會讓這兩個值進行比較,若前者大于后者,就為下行,從而讓狀態變量清零,由于電路中上下行的箭頭使用了非門,故在程序中,表示上下行的狀態變量清零時表示有效;反之,當前者小于后者,即為上行,從而上行變量清零。
至于是接人還是送人,是判別的難點。在此,巧妙地利用了兩個狀態變量scanup和scandown,前者等于所有上行按鍵和去幾層按鍵狀態變量的或,后者等于所有上行按鍵和去幾層按鍵狀態變量的或。由此可知,當上行按鍵和去幾層按鍵均為0時,電梯仍為上行狀態,那么此時,電梯的狀態肯定處于上樓接人的狀態中,即在高層,有人按了下行鍵;反之,若它們中有一個為1,且按鍵所處樓層高于當前電梯所在樓層,這個由其他函數來限定,防止電梯在上行過程中受已經過樓層按鍵按下時的干擾,則電梯此時處于上樓送人狀態,就會執行對應的子程序。其他的與此同理。
以電梯上行的兩種狀態為例分析電梯各種情況下所對應的處理方法。在實際應用中,最簡單的情況莫過于電梯當前為閑置狀態,有人按下按鍵呼叫,電梯響應呼叫。但是,實際情況往往比這復雜的多,在第一個人按下按鍵電梯運行的過程中,還很有可能會有其他樓層的人按下不同的按鍵(上行或者下行)的情況發生。那么就必須得為電梯規定好一個特定的優先級規則,讓其依據這個規則來運行。規定,當電梯上行時,均不理會按下行按鍵的顧客,若在上行過程中,有人在某層按的是上行按鍵,但是電梯此時已經走過了該層,那么電梯也絕對不會再選擇先下行。當然,當將高層上行的顧客送完后(此時一般來說電梯已經處于高層了),電梯便會檢測下行按鍵,若更高層有人呼叫下行,則電梯會選擇先去響應,然后再下行的過程中依次響應按了下行處于等待中的顧客,最后這些顧客都送完后,再去相應那些電梯上行過程中,處于比電梯低的樓層卻按了上行鍵的顧客。
簡單地說,若電梯處于上行狀態,則在該過程中響應不同顧客的優先級(或者電梯響應的先后順序)為:高層呼叫上行顧客>高層呼叫下行顧客>底層呼叫下行顧客>底層呼叫上行顧客。
4結論
基于STC89C52單片機的系統方案設計解決了電梯在上下行運行過程中的邏輯問題。該方案達到了預期的設計效果,具有一定的應用價值。
參考文獻:
[1]周鵬.基于STC89C52單片機的溫度檢測系統設計[J].現代電子技術.2012,35(22):10-13.
[2]蘆艷芳,朱貴憲.基于PLC的電梯控制系統設計[J].煤炭技術,2011,30(8):53-55.