基于PIC16F877微控制器觸摸式調(diào)光臺(tái)燈智能化控制的實(shí)現(xiàn)
本文系統(tǒng)講述如何利用PIC16F877微控制器實(shí)現(xiàn)觸摸式調(diào)光臺(tái)燈的智能化控制,實(shí)現(xiàn)(1)觸摸調(diào)光;(2)燈絲預(yù)熱;(3)自動(dòng)消除眩光、頻閃;(4)定時(shí)鬧鐘;(5)特色鈴音;(6)整點(diǎn)報(bào)時(shí);(7)事件提醒;(8)日歷功能;(9)中文液晶顯示等功能,滿足安全、高效、無眩光、無頻閃、功能齊全等質(zhì)量標(biāo)準(zhǔn)。
硬件設(shè)計(jì)
1.PIC16F877徵控制器
PIC16F877微控制器為MicroChip公司FLASH型CPU,片內(nèi)含8K的FLASH程序存儲(chǔ)區(qū),368字節(jié)RAM,256字節(jié)的EEPROM,35個(gè)獨(dú)立I/0口,一個(gè)16位計(jì)數(shù)器/定時(shí)器,兩個(gè)8位計(jì)數(shù)器/定時(shí)器,14個(gè)可獨(dú)立使用也可嵌套使用的中斷源,2個(gè)捕捉器、比較器、PWM模塊,,白帶8路10位A/D,內(nèi)帶看門狗WDT及電源監(jiān)視,具有休眠、等待等多種節(jié)電方式,I/0口可以直接驅(qū)動(dòng)LCD。
2.硬件電路設(shè)計(jì)
觸摸式調(diào)光臺(tái)燈硬件框圖如上圖所示,硬件原理圖如下圖所示。
上圖中C1和T1組成EMI濾波器,一方面可以減少鎮(zhèn)流器對(duì)電網(wǎng)的干擾,另一方面可以防止其它電器設(shè)備對(duì)鎮(zhèn)流器的干擾;V1-V4組成橋式整流器;C3、C4、V5、V6和R21組成無源功率因數(shù)校正電路,使功率因數(shù)達(dá)到0.9以上,為保證功率燈管使用壽命,電路的功率峰值因數(shù)應(yīng)小于1.7,本文采用PIC16F877單片機(jī)的捕捉功能對(duì)頻率進(jìn)行反饋回讀,根據(jù)頻率的變化采取相應(yīng)的措施,改變IR2151的輸入,從而控制IR2151的輸出頻率,達(dá)到控制輸出功率的目的。該方法可以使光源更穩(wěn)定,消除眩光、頻閃,達(dá)到護(hù)眼燈的效果。
觸摸式調(diào)光燈工作時(shí)通過觸摸金屬片A(亮鍵)、B(暗鍵),將人體雜波信號(hào)通過耦合電容加到MCU的I/0口進(jìn)行檢測,同時(shí),耦合電容還可以防止因個(gè)別器件損壞而造成麻電現(xiàn)象;MCU根據(jù)檢測到的信號(hào)通過程序分析、運(yùn)算,將PWM信號(hào)從17腳輸出到IR2151,控制振蕩頻率;振蕩器經(jīng)高端(HO)和低端(LO)引腳輸出,驅(qū)動(dòng)兩個(gè)場效應(yīng)管IRF830交替導(dǎo)逼和截止,達(dá)到控制燈管的目的。
燈絲的預(yù)熱由熱敏電阻控制,上電后,IR2151的6腳、電感L1、電容C1O、Cl3組成串聯(lián)諧振電路,在Cl3上產(chǎn)生高壓加到燈管兩端,將燈點(diǎn)亮。其中,RT為正溫度系數(shù)的熱敏電阻,起到對(duì)燈絲預(yù)熱的作用;電源接通后燈絲電流幾乎全部加載到C1O和RT上,由于C1O電容較大,LC串聯(lián)電路不發(fā)生諧振,隨著溫度升高,RT阻值迅速增大,RT支路相當(dāng)于開路)使LC串聯(lián)電路發(fā)生諧振,即達(dá)到對(duì)燈絲進(jìn)行預(yù)熱及軟啟動(dòng)的作用,延長了燈管的使用壽命,整個(gè)過程MCU時(shí)刻進(jìn)行監(jiān)控及調(diào)整,實(shí)現(xiàn)真正的智能化控制。
軟件設(shè)計(jì)
軟件設(shè)計(jì)由MCU初始化、裝置自檢、定時(shí)采樣、中斷處理、液晶顯示、按鍵處理六部分,軟件流程如下圖所示。
定時(shí)器中斷子程序?yàn)檐浖O(shè)計(jì)的核心,包含濕度、濕度采樣、調(diào)光,除眩等控制,本文對(duì)溫度、濕度的精度要求不是非常的嚴(yán)格,采樣周期設(shè)為1min,通過采樣5個(gè)點(diǎn)求平均值,且精度滿足采樣要求。
定時(shí)器初始化子程序如下;
/***********定時(shí)器初始化*******/
void tmint(void)
{
INTCON=0X00;
/********關(guān)閉中斷**********/
GIE=1;
?。?**********總中斷使能INTCON.7**********/
PEIE=1;
/*********外圍接口中斷使能位,必須置1否則TMR1中
斷不好用***********/
TMR1IE=1;
/**********TMR1溢出中斷使能位**********/
T1 CON=0X24;
?。?*****************預(yù)分頻器1:4暫時(shí)不打開TMR1***********/
TMR1 L=0X77;
TMR1 H=0XEC;
?。?*************定時(shí)器賦初值20mS中斷1次***************/
TMR1ON=1;
/***********啟動(dòng)TMR1開始計(jì)數(shù)。T1CON.0**************/
}
定時(shí)器中斷子程序如下:
/************定時(shí)器中斷***********/
void interrupt clkint(void)
{
int i,j,k:
for(i=1:i<5:i++)
{
adwd_h[i]=adwd_h[i+1];
adwd_I[i]=adwd_I[i+1];
/**溫度采樣值移位,頂出第1位,新值存在5位***/
}
int m,n,t;
for(m=1;m<5;m++)
{
adsd_h[m]=adsd_h(m+1];
adsd_I[m]=adsd_I[m+1];
?。?**溫度采樣值移位,頂出第1位,新值存在5位*****/
}
ADCONO=Ox41;
/*****時(shí)鐘源F/8,AO通道,允許A/D工作**********/
ADCON 1=0x82;
/********結(jié)果右對(duì)齊**********/
delayms(1);
?。?**************等待采樣,采樣電容充電時(shí)間提高精度**************/
ADCONOㄧ=Ox04;
/**********啟動(dòng)A/D轉(zhuǎn)換GO.ADCON0.2***********/
while(ADIF==1)
/***********等轉(zhuǎn)換結(jié)束位ADIF置1,PIR1.6**********/
{
adwd_h[5]=ADRESH;
adwd_I[5]=ADRESL;
/**********存溫度采樣結(jié)果**********/
}
ADCON0=0x51;
?。?*********時(shí)鐘源F/8,A1通道,允許A/D工作**********/
ADCON1=0x82;
/*****結(jié)果右對(duì)齊**********/
delayms(1);
/**************等待采樣,采樣電容充電時(shí)間——提高精度************/
ADCON0ㄧ=0×04;
?。?*******啟動(dòng)A/D轉(zhuǎn)換GO,ADCON0.2********/
while(ADIF==1)
/*******等待轉(zhuǎn)換結(jié)束位ADIF置1,PIR1.6***********/
{
adsd_h[5]=ADRESH;
adsd_1[5]=ADRESL;
/**********存溫度采樣結(jié)果**********/
}
TMR1 IF=O;
?。?******清中斷標(biāo)志位********/
TMR1 L=0X77;
TMR1 H=0XEC;
/********定時(shí)器重新賦初值20mS中斷1次***********/
}
功能說明
為使臺(tái)燈亮度調(diào)節(jié)平穩(wěn)過渡,本文設(shè)置8檔調(diào)光:輕觸金屬片A亮鍵,燈由滅點(diǎn)亮,然后每觸摸一下亮鍵,臺(tái)燈亮度增加一檔,至第8檔時(shí)臺(tái)燈達(dá)到最亮,此后再按亮鍵亮度也不會(huì)增加金屬片B暗鍵功能和亮鍵相反,每按一次亮度減小~檔,直至熄滅,同時(shí)通過液晶顯示相應(yīng)的狀態(tài)。
其它功能通過不同按鍵進(jìn)入相應(yīng)的功能菜單進(jìn)行設(shè)置,同時(shí)通過純中文液晶菜單顯示。另外,還可設(shè)置整點(diǎn)語音報(bào)時(shí)、3個(gè)定日寸鬧鈴以及事件提醒功能,每個(gè)鬧鈴周期還可以分別設(shè)定,事件提醒功能包括會(huì)議、約會(huì)、參加婚禮、運(yùn)動(dòng)、業(yè)余學(xué)習(xí)、其它等幾種事件,提醒包括提前1天、提前1小時(shí)、提前10分鐘三種選擇。
由于MCU存儲(chǔ)容量有限,鬧鈴鈴音除了固定的鈴音外,還有以下4個(gè)比較有特色的語音鈴音供選擇:(1)懶豬起床了,不然把你抬出去了;(2)寶貝起床,太陽都照到屁股了;(3)快點(diǎn)起床、快點(diǎn)起床,一會(huì)遲到了;(4)你的定時(shí)時(shí)間到,快去辦事吧。