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