曾 舒
(福建船政交通職業學院,福建 福州 350007)
在數字經濟時代,聲光控節能燈已廣泛應用于學校、辦公樓的走廊、路道等場所,極大方便了人們的生活。該文設計了一款采用單片機的節能控制燈具,在黑暗環境中利用聲音實現燈光的亮、熄,并按照場所要求設定光照時長。一方面提高了黑暗環境中行為的安全性,另一方面可達到節能減排的效果,為促進數字技術、生態科技相互融合以及碳達峰、碳中和的戰略目標的實現做出微弱貢獻。
該設計主要包括3個部分,第一部分是利用光敏電阻、光信息及語音信號控制電路收集信息并控制光和語音;第二部分則是利用單片機對所采集信息進行處理;第三部分為繼電器接收信息,進而驅動電路。實現聲光控制系統的具體流程如下:光信號控制電路利用光敏電阻接受光,聲音信號控制電路利用駐極體話筒收集語音,光和語音經放大后傳給單片機,最后單片機將已經處理好的信息傳給繼電器,使其驅動電路,并控制繼電器的導通和斷開[1]。
該系統使用5 V直流電壓,并采用穩壓二極管將220 V交流電壓轉換,其電路組成如圖1所示。

圖1 直流穩壓電源電路圖
光控電路系統由光敏電阻、滑動變阻器、電阻、NPN三極管和LM393型運算放大器構成,電路組成如圖2所示[2]。

圖2 光控電路
該電路由GR1、R5、D1、R2、R和U2組成,MCU GPIO P1.0設置為高阻態做輸入檢測,R4滑動變阻器阻值一定時,D1常亮,R2為限流保護電阻。當環境光增強時,GR1的阻值變小,R5兩端分得的電壓變大,電壓比較器A端輸出口輸出電壓為高,D1熄滅,MCU檢測為高,反之為低[3]。
光敏電阻在明亮環境中阻值變小,在較暗環境中電阻增加,光控制電路的輸出信號通過電壓將微弱的電流信號放大至單片機能夠識別的程度,再經過運放輸出端將放大后的信號傳至單片機I/O口。
聲控電路圖如圖3所示。聲控集成電路可以把音頻信息轉變成微小的電壓信號。微小的電壓信號進行兩級放大后得到成伏級電壓。電壓通過遲滯比較器轉換成單片機能夠識別的方波信號,再經過雙向穩壓管變成5 V的方波后傳送到單片機的I/O口[4]。其中兩級共射單管(級是NPN管,后級是PNP管)擴大組成了兩級放大電路,通過閾值電壓的設置來消除兩級放大的噪聲,以避免噪聲對方波信號輸出的影響,進而減少對單片機的影響,提高對有用信號的辨識[5]。

圖3 聲控電路
該電路由D2、R1、R19、MK1、R10、R11、Q2和C4組成RC濾波,由f=1/2ΠRC可得f=159.2 Hz。MCU P1.4端口為高阻態,麥克風無聲波采集到時,R11為上拉電阻,Q1基級為高電平導通狀態,LM393 B組比較器負端口為低電平,OUTB輸出端為高,D2不亮,R1為限流電阻。當MK1采集到特定頻率聲波時,C4電容的內部電子被抽離,電源從R11給C4沖能,Q1基級為低電平狀態,Q1屬于截止區,LM393 B組比較器負端口為高電平,正、負端電壓持平,OUTB輸出端為地,D2常亮。
單片機控制電路主要利用STC89C52單片機來實現。STC89C52單片機的主要特性包括擁有4 k字節在線編程Flash閃速存儲器,擦寫周期1000次;128字節內部RAM32個可編程I/O口線,雙數據指針和看門狗(WDT),兩個16位定時/計數器;全雙工串行UART通道;低功耗空閑和掉電模式,中斷時可從空閑模式喚醒系統,同時擁有快速編程特性及掉電標識,并且具有掉電狀態下的中斷恢復功能以及靈活的在系統編程。基于這些特性,STC89C52單片機非常實用,因此選在該設計中[6]。單片機及其外圍電路如圖4所示[1]。

圖4 單片機控制電路
單片機電路工作原理:MCU用到了P1.0、P1.1、P1.4和P3.4共4個GPIO引腳,P1.0為光強檢測GPIO,P1.1為指示燈部分控制GPIO,P1.4為聲強檢測GPIO,P3.4為繼電器控制引腳GPIO。MCU電路還包括RST復位,默認通過R3電阻下拉,上電復位一次。當需要外部復位時,可通過按下S1按鍵上拉復位,其中C1起按鍵消抖作用,Y1、C2和C3起激活Y1晶振的作用。
繼電器驅動電路是將開關集成電路的負載改變為繼電器開關,其電路圖如圖5所示。

圖5 繼電器驅動電路
該電路由Q1、R6、D3、R7、K1(一對常開,一對常閉)和P2組成,由MCU的P3.4腳控制,默認低電平,三極管處于截止區,電路無電壓電流,D3發光二極管熄滅,繼電器不工作。當MCU輸出高電平時,三極管導通,D3發光二極管亮,繼電器常開,觸電閉合導通[6]。
運算放大器與同相信號單片機相連,利用電壓跟隨器將微弱的單片機I/O口輸出電流放大,進而增加負載能力,使電流能夠直接帶動三極管。為了防止電流差太大而損壞三極管,所以加上限流電阻R12,利用三極管的開、關功能驅動繼電器。繼電器的控制狀態通過電路中的LED3顯示,繼電器斷開時LED3熄滅,繼電器閉合時LED3亮起。當開、關電源的負荷為電動機或繼電器的感性負荷時,截斷流過負載的電流會產生感應電動勢。這時產生的電壓非常大,當這種電壓超過晶體管的集電極-發射極和集電極-基極間的最大額定值VCBO、VCEO時,會擊穿晶體管。因此給繼電器并聯一個二極管,將集電極的電位鉗制在VCC+0.5V左右,可避免三極管被擊穿。
軟件設計主要包括對聲光信息的采集輸入和對繼電器的驅動輸出。該設計使用Keil Software的Keil編譯器來實現系統軟件設計。系統收集光信號和語音信號,利用光敏電阻和駐極話筒將采集來的信號轉化為可被單片機辨識的語音水平。如果沒有光(或光源弱)和有語音,單片機就控制繼電器吸合導通,燈亮,導通時間可設定為0s~99s。其他情況下單片機均不對繼電器輸出,繼電器為未吸合狀態,系統處于休眠狀態,燈不會亮。軟件設計流程圖如圖6所示[7]。

圖6 程序流程圖
在測試階段發現輸出端未輸出方波,總是出現一條直線,經過觀察探究,發現是噪聲的原因,這是由光控部分二級放大產生的。后在零比較器的輸出端添加電容,同時為了單片機能夠識別而增加了電壓跟隨器,利用電容把噪聲所產生的直流電壓全部去除。最終化繁為簡,采用了將零比較器與電壓跟隨直接改為遲滯比較器的方法。
而在繼電器驅動部分,未加負載時,單片機的輸出電壓為標準方波,在輸出端(P1.7)加了繼電器驅動后,單片機輸出端電壓為0.63 V,不能帶動負載。因此也通過增加電壓跟隨器的方法來驅動負載。
該文設計了一種基于單片機的聲光控制燈,充分利用了匯編語言可以直接訪問與硬件相關的I/O端口,并對關鍵代碼進行更精確的控制,實現了通過聲音與光控制燈的亮、滅,提高黑暗環境中活動的安全性,達到了節能減排的效果,并助力碳達峰、碳中和戰略目標的實現。