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