基于ATmegal 28的調光控制器方案設計
3 軟件設計
3.1 變量定義
該控制器包含12個獨立的通道且要將現場采集的光強送給上位機顯示,所以定義數組channelData[13]。其中,channelData[O]~chan-nelData[11]存儲相應1~12通道的實際控制電壓(0~255),channelData[12]存儲傳感器采樣的現場光強。變量write_end表示channelData[O]~channelData[11]的值是否被修改,write_end=1表示修改完成。
3.2 主程序
上位機對調光控制器的控制通過串口中斷實現,調光控制器上的快捷按鍵通過I/O外部中斷實現,傳感器的采樣間隔通過定時器中斷實現。3個中斷的優先級為;定時器中斷>I/O外部中斷>串口中斷。主程序流程如圖3所示。本文引用地址:http://www.104case.com/article/162595.htm
當串口中斷被響應時,首先判斷上位機的指令是讀操作還是寫操作。如果是寫操作,返回同樣的指令作為響應指令,根據指令改變cha-nnelData[]中相應通道的值,并將write_end置1。如果為讀指令,根據地址將channelData[]中相應通道的數據或者現場光強返回作為響應。
當定時器中斷被響應時,通過傳感器采樣現場光強。為了保證數據的準確,在算法中采用求16次采樣的平均值作為有效值存入channel-Data[12]。
當I/O外部中斷被響應時,首先需要判斷是否為按鍵抖動所致。如果為抖動,返回;反之,將channelData[O]~channelData[11]的值改為該快捷鍵代表的電壓值,并將write_end置1。
最后判斷變量write_end是否為1。若write_end=1,則執行函數DAOperation(channelData,12),將channelData[O]~channelData[11]中對應的各通道值(O~255)以0~10 V電壓輸出,然后將write_end清0。
4 實驗結果
當上位機調節通道1控制電壓為2.5 V,通道1的實際測得電壓如圖4所示。從圖中可知,實際電壓為2.46 V,其中O.04 V的壓降是由AD7226芯片引腳的100 Ω電阻引起的。
在實際的測量中發現,未接電源時在該控制器中存在峰峰值為40 mV、頻率為50 Hz的干擾電壓,如圖5所示。為了減小這種低頻干擾,在D/A輸出引腳接了一個47 μF的電容(見圖2),并取得很好的效果。
5 總結
利用8位的ATmegal28單片機可以精確地實現多級可調的0~10 V控制電壓,分辨率為40 mV。在調光控制器上可以通過4個按鍵快速地調節各個通道的燈光強弱。此外,通過上位機實現單個通道的獨立調光、所有通道的快速調光以及燈光的閉環控制。
電子鎮流器相關文章:電子鎮流器工作原理
光控開關相關文章:光控開關原理 聲光控開關相關文章:聲光控開關原理
評論