衡 蜓
(晉中信息學院,山西 太谷 030800)
本設計選用AT89C52為主要的控制芯片,配合時鐘電路、復位電路及電源等用來控制按鍵輸入及顯示模塊、光敏電阻感應模塊、人體紅外感應模塊及聲光電報警模塊4個部分。其整體設計框圖見圖1。

圖1 整體設計結構Fig.1 The overall design structure diagram
按鍵輸入模塊由連接在AT89C52單片機P1.0模式切換、P1.1亮度減少及P1.2亮度增加等3個按鍵。模式按鍵可以在手動模式以及自動模式切換,如若模式燈點亮,則系統處于自動模式下,此時的亮度減少按鍵和亮度增加按鍵不起任何作用;如若模式燈熄滅,則系統處于手動模式,所在控制臺的工作人員可以通過增加或減少按鍵隨意地進行調節連接于單片機P1.7端口路燈的亮度。
光敏電阻感應模塊采用的是將光敏電阻和ADC0832結合的控制方案,單片機接收光敏電阻感應模塊所判別的外界環境光照情況,進行PWM波調整路燈亮度的功能,即判斷出路燈是否被打開而進行正常工作,以及路燈打開時的明暗程度;而另一方面,用于判斷路燈是否發生故障。
人體紅外感應模塊采用的是與單片機P1.6端口連接的HC-SR501型傳感器,單片機檢索到該傳感器所判別的是否有行人經過的數據狀況,進一步實現檢測路人功能。在有行人通過的前提下,根據外界環境的明暗程度利用單片機定時器0實現PWM調節路燈;在HC-SR501型傳感器檢測到路人離開后,路燈延時10 s的亮度,然后單片機會使路燈的亮度設置成為車輛照明的第3等級亮度,這也是平時在夜晚沒有行人經過時的亮度,避免了沒有路人還亮燈的情況,實現了節能功能。
在夜晚,當單片機需要執行亮燈命令時,光敏電阻感應模塊檢測出路燈卻是處于滅的狀態,表示電路發生了故障,從而使得路燈沒有被點亮,這時會觸發報警模塊報警。
本設計中按鍵輸入及顯示模塊的功能是用于控制路燈的工作模式及亮度,防止特殊情況的出現。設計意義在于所在控制臺的工作人員可以隨意地手動調節路燈亮度。在該部分有3個按鍵,分別為模式切換、亮度減少、亮度增加按鍵;3個顯示燈,分別是模式燈、路燈、報警燈。模式按鍵的功能可以在手動模式以及自動模式來回切換,當系統處于自動模式下,此時模擬指示燈被點亮,這也是上電路燈所處的工作模式;只有在手動模式及模擬指示燈熄滅時,工作人員可以通過增加或減少按鍵隨意進行調節;報警指示燈的功能是提醒路人發生故障的情況下被點亮。按鍵是人與單片機直接打交道的設備之一,獨立按鍵硬件電路非常簡單,而且在程序設計上也不復雜。
本設計中光敏電阻感應模塊的功能:一方面,AD轉換芯片通過讀取電阻R2的分壓情況,傳遞給單片機對外界天氣光照進行辨別,從而判別路燈是否被打開以及路燈被打開時的明暗程度;另一方面,可以檢測在接受單片機開燈命令后,路燈是否被正常打開,從而決定單片機是否發出高低電平,啟動聲光報警模塊和報警指示燈。
本模塊由光敏電阻和ADC0832芯片構成。這里采用滑動變阻器模擬光敏電阻,光敏電阻工作的原理是基于內光電效應,環境光照射時,產生導電的載流子,在外加電場的作用下產生一定的漂移運動,電子轉移到電源正極方向;反之,空穴轉移到負極方向,最終導致光敏電阻值降低,反之同理。本設計也是利用了光敏電阻的這一特性,來感應路燈的外界環境光強弱程度。
當外界環境光照較強時,例如白天,電阻本身的值會非常小,電壓值也會非常小,模數轉換電路會根據它反饋的值進行相應的判斷;相反,隨著晚上或者陰天的來臨時,電阻值也會越來越大,電壓值也會變得越來越大,模數轉換電路會根據反饋的值進行相應的判斷,傳到單片機連接的顯示電路中,從而控制路燈亮度和報警模塊。
本設計中人體紅外感應模塊主要功能為判斷是否有行人在感應范圍內。在手動控制模式下,只有感應模塊檢測到路人在感應范圍之內,才可以進行路燈自動調節功能;同理,在另一種控制模式下,以檢測到光線不足為路燈工作的前提,當人在感應范圍之內時,才進行路燈的亮度增加,當人在感應范圍之外時,路燈恢復第3等級亮度,這樣有效節約了電力資源。
本設計中直接選用HC-SR50型人體紅外傳感器,其采用LH788探頭設計、性能可靠、零密度高的特點,符合本設計的要求。本模塊根據紅外線反射原理,采用的是全自動感應方式,通過對行人的自身特定熱量來感應。根據研究表明人體穩定的體溫普遍在37℃上下,可以發出波長為10μm的紅外線,HC-SR501型人體紅外傳感器的紅外探頭可以根據此原理來判斷路人的狀態。當行人的身體在紅外線感應的測定范圍之內,傳感器中的發射管發射紅外線放射到接收管內部,經過信號處理反饋到電磁閥,最后按照接收指令輸出高電平傳遞給單片機進一步的控制電路。
本設計中聲光報警模塊的功能是光敏感應模塊檢測到路燈外界環境特別暗,即路燈沒有被正常打開,在接受到來自AT89C52單片機的反饋信號,就會自動發出聲音和燈光警示。當在夜晚來臨之際,以光敏電阻感應模塊檢測到環境光線特別黑為報警的前提。因為在白天時,外界環境的光線充足,而夜晚路燈在有人的時候,路燈亮度增加,沒有人或者有車的時候處于第三等級的亮度,所以沒有光線即表示路燈沒能被正常打開。系統會致使發光二極管、有源蜂鳴器2個元器件同時工作,發出滴的聲音和報警指示燈光閃爍的警示,這方便對故障的排除及維修。
本設計中聲光報警模塊由有源蜂鳴器及1個發光二極管構成,這2個元器件在檢測到單片機發出的指令進行聲光報警。當光敏電阻檢測模塊,檢測到外界環境特別暗,但是燈沒亮,即表示出現了線路故障、燈泡毀壞等故障現象,單片機則會將低電平給予報警指示燈,將高電平給予有源蜂鳴器,發出聲光報警。
路燈控制系統的軟件編寫主要采用的是函數嵌套形式,所以在編寫主函數之前,需要先編寫多個函數、定義變量等步驟。本設計中包含7個函數,以完成對路燈的功能設計。7個函數包括定時器初始化、延時、時鐘脈沖、獲取指定通道的A/D轉換結果、手動控制、自動控制以及定時器0服務程序函數。主函數對以上這7個函數的嵌套使用即可完成節能路燈的控制。
根據本課題設計功能的需求,為其設計流程圖并編寫程序。首先,判斷按鍵的狀態,當有鍵按下時進行模式切換控制,即手動模式與自動模式兩者之間的切換;然后,識別當前路燈的工作模式狀態,進行對應模式的處理。當識別路燈為自動狀態,人體紅外傳感器判別檢測是否路燈下有人,進一步讀取ADC0832數據,根據環境的不同光照強度,執行PWM調節路燈不同狀態下的亮度,路人離開后以最后一個人為基準,延遲10 s路燈亮度設置為等級3。在自動控制期間,如果檢測到外界光線為最暗,報警模塊工作。如果判定為手動模式,首先判別是否有行人,防止像小貓、小狗這類的動物操作,隨后進行路燈亮度調節。
首先,默認上電即為自動模式,模式按鍵按下后,改變為手動模式,此時模擬指示燈接收到控制中心低電平的指令后熄滅,路燈工作。以有人為工作前提,通過點擊亮度減少按鍵和亮度增加按鍵的操作,路燈的亮度隨之發生變化。其次,再按一次按鍵,轉換為自動控制路燈的模式,LED燈點亮,按下人體按鍵,即模擬人體傳感器檢測到有人在觸發范圍之內,通過滑動變阻器調節電阻值,即模擬外界環境天氣的亮度變化,路燈發生了不同等級的亮度變化;再次按人體按鍵,即模擬人體傳感器檢測到無人在觸發范圍之內,觀察路燈在10 s后路燈亮度等級變為3;將路燈按鍵打開,再將光敏電阻撥向無光方向,模擬路燈發生故障無法打開路燈,發生報警指示燈閃爍,有源峰鳴器報警發出滴的聲音。
通過對系統的反復調試,設計的硬件電路及軟件編程可以實現其所在模塊的功能。