崔 涵 魏立明
(吉林建筑大學 長春 130118)
隨著科學技術水平的發展,人們對于光照質量的要求也在逐漸上升,為了適應不同的生產環境,對于光照的多少也出現了不同的需求[1],為了衡量各種光源的質量水平,就需要通過照度計對光照進行測量[2]。目前大部分的照度計多以光敏二極管作為探測裝置,本文使用BH1750 芯片代替作為光照探頭,通過芯片內部對數據做的線性處理,使得照度測量更加準確且方便,可以更好滿足實際的需要。
本照度測量系統主要硬件包括主控器、顯示器和測量芯片。其中主控器選用STC89C52 單片機,該單片機擁有32 個I/O 口,滿足本設計需要,并且編程簡單,易于使用,加之檢測電路、顯示電路、報警電路以及鍵盤電路,實現光信號的采集轉換及運算照度。顯示器選用LCD1602 液晶顯示屏,該液晶屏體積小,功耗低,其所能顯示的字符滿足本設計需求,同時其調用時序相對容易理解,可以降低編程難度;測量芯片選用BH1750 芯片,其內部具有光敏二管,放大器,數模轉換電路以及IIC 總線模塊,其可以實現在IIC 上的通信,方便單片機的讀取和運算,這樣與直接采用光敏二極管測量照度相比,芯片測量更加穩定,結果也更加準確。其余硬件包括按鈕、晶振芯片、電阻電容等將按照實際需要選用合適大小,硬件電路結構如圖1 所示。

圖1 系統方案結構框圖
本文對硬件電路設計進行介紹,基于立創EDA 繪圖軟件繪制硬件電路圖,主要包括單片機最小系統、照度測量模塊、顯示模塊和報警模塊,主要硬件選擇如表1所示。

表1 主要硬件列表
單片機最小系統是指用最少的元件所組成的可以工作的單片機系統,也是其他硬件電路搭建的基礎。主控制器選擇STC89C52 單片機,該單片機每次可處理8 位數據,內部具有8 K 字節儲存器,包括閃存以及可編程可擦寫只讀存貯器的單片機[3]。STC89C52 單片機最小系統包括晶振電路、復位電路。通常情況下,STC89C52 單片機的晶振選用11.059 2 MHz,晶振電路還需要兩個起振電容用于幫助晶振起振,大小在(5 ~30)pF 之間,一般選取22 pF 或30 pF。單片機中的XTAL1 和XTAL2 接口便是用于接晶振電路的。
檢測電路依靠BH1750 光檢測芯片及其外圍電路完成。其中,ADDR 是其選址端,高低電平影響其地址,通過機械開關可以進行手動選取地址,SCL,SDA 是IIC總線接口,與單片機上的IIC 總線相連[4]。將外圍電路引出的線引給排針,最后與主電路板的預留排針相連進行使用。值得注意的是,其內部的光敏二極管的光電轉換數據雖然是一一對應的,但這些數據并不是線性的,而BH1750 內部對數據做了線性處理,這也是不直接采用光敏二極管測量的原因,照度測量模塊硬件電路如圖2 所示。

圖2 照度測量模塊
顯示電路主要用于顯示測量值以及閾值,通過LCD1602 液晶屏來實現,這種顯示屏只有三個控制端,使得源碼易于編寫,在編程過程中,該函數的調用也比較簡單,減少編程的工作量。顯示屏連接在單片機的P0口,并且外加上拉電阻來LCD 提高信號穩定程度,增加抵抗外界干擾能力,顯示模塊硬件電路如圖3 所示。

圖3 顯示模塊
當所測的地方的光照值超過某一范圍時,需要將這個信號傳遞給使用者,因而設計了報警模塊。報警主要分為兩個部分,一部分是通過發光二極管進行報警顯示,并且數值超過上下限顯示的顏色也不一樣;另一部分體現在液晶顯示屏幕上,當使用者通過顯示屏觀察照度值時,如果數值不在范圍內,屏幕會顯示“!!!”來進行提示,以此來提醒使用者當前環境的照度水平是否合乎標準,報警模塊硬件電路如圖4 所示。

圖4 報警模塊
本章根據上述硬件電路以及設計要求進行模塊化軟件設計。采用模塊化編程,這樣可以為后續的功能拓展帶來方便,程序主要分為主函數、顯示及報警、模擬IIC協議以及LCD1602 調用程序,如圖5 所示。

圖5 軟件程序設計流程圖
本文所用的BH1750 芯片通過IIC 協議進行數據的傳輸,而STC89C52 單片機并不具有IIC 通信協議的串口,因而需要通過程序進行模擬。IIC 協議的通信共有兩根線,為保證數據傳輸的穩定,避免誤傳或丟失,IIC 對于傳輸過程中的數據做了一些規定:數據只能在 SCL 處于低電平的情況下發生變化,并且在 SCL 電平被拉高的情況下,數據必須是穩定的,也就是有效數據[5]。
1)硬件初始化
IIC 具有兩根傳輸線SDA 和SCL,當沒有數據傳輸時,IIC 處于不工作狀態,此時SDA 與SCL 均處于高電平,因此,在程序開始前需要將SDA 和SCL 電平拉高,以保證處在非工作狀態。
2)開始停止信號
在需要進行數據傳輸的時候,需要一個開始信號使電平產生變化,同樣,在數據傳輸完畢后也需要一個停止信號將電平拉回停止工作狀態。開始信號中SCL 在保持高電平時SDA 由高電平變為低電平,間隔一段時間后SCL 也變為低電平;停止信號中SCL 變為高電平,并且SCL 保持高電平后SDA 由低電平變為高電平[6],開始停止信號時序圖如圖6 所示。

圖6 IIC 啟停時序圖
3)應答信號
在進行讀寫操作時,每次數據傳輸之后,都需要產生應答信號,一般由接收數據的一方發出可以發送數據,總的來說,就是在數據傳輸后,在傳輸下8 bit 數據前需要做出響應。應答信號是指在一次8 bit 數據傳輸后,也就是8 個時鐘周期過去后,在SCL 第9 個高電平時將SDA 電平拉低,視為一次ACK 信號[7],應答信號時許如圖7 所示。

圖7 IIC 應答時序圖
4)讀寫數據
首先由單片機發送開始信號,緊接著發送從機地址并確定讀寫功能(0×46),之后等待從機的應答信號,之后給從機發送指令(0×10),最后發出停止信號,完成一次數據傳輸;隨后開始讀取BH1750 測量結果。先由主機發送開始信號,并發送從機地址并確定讀寫功能(0×47),然后等待從機應答信號,BH1750 內自帶的ADC 是16 位數據轉換,也就是兩個字節,在讀取數據時先讀高8 位,即接收一個字節,并向從機發送應答信號,再讀低8 位,接收第二個字節,最后給從機應答信號,停止信號,讀取完畢,數據傳輸時序圖如圖8 所示。

圖8 IIC 數據傳輸時序圖
本文基于Peoteus 8 仿真軟件,來對測量結果進行演示。當閾值設置完成后,可以進行測量,可以看到,當照度值低于閾值設置的范圍時,屏幕會出現“!!!”的警告提示,如圖9 所示,而當測量值在閾值范圍內時,不會出現警告提示,如圖10 所示。

圖9 報警仿真圖

圖10 正常測量仿真圖
根據所繪制的硬件電路圖,基于Altium Designer 軟件對PCB 板進行繪制,采用雙面布線方式,雙面鋪銅,PCB 板圖如圖11 所示。

圖11 PCB 板設計圖
本文主要針對便攜式照度測量計進行設計,基于STC89C52 單片機,采用光強檢測芯片BH1750 作為探測模塊,將采集的信息通過LCD1602 液晶顯示屏顯示出來。通過按鍵實現對閾值的自主選擇,當測量數據超過或低于閾值的情況下,通過報警模塊以及屏幕顯示報警,達到對某一區域照度水平進行測量的效果,本文所提方案和方法為照度測量系統提供理論借。