摘 要: 為了能根據(jù)室外環(huán)境亮度實現(xiàn)窗簾自動拉合的設(shè)計需求,,提出了一種基于單片機控制的光控窗簾設(shè)計方案,并完成系統(tǒng)的軟,、硬件設(shè)計,。該系統(tǒng)的硬件部分主要利用光敏傳感器產(chǎn)生的信號作為單片機輸入信號,軟件部分采用C語言進行編程,,能夠完成智能光控窗簾的自動拉合,。同時,考慮到用戶習(xí)慣和天氣原因,,本方案還設(shè)置了選擇開關(guān),,用戶在使用窗簾時可任意選擇自動或手動控制方式。實際應(yīng)用表明,,該系統(tǒng)具有設(shè)計成本低,、可靠性高的特點,達到了設(shè)計要求,。
關(guān)鍵詞:單片機,;光敏傳感器;直流電動機,;C語言,;智能光控窗簾
隨著生活水平的不斷提高,人們對家庭生活舒適度的要求也越來越高,,具有裝飾,、遮光并能進行自動開合的智能光控窗簾成為了現(xiàn)代家居生活的新寵。為了能根據(jù)室外環(huán)境亮度實現(xiàn)窗簾自動拉合的設(shè)計需求,,本文提出了一種基于單片機控制的光控窗簾設(shè)計方案,。
1 系統(tǒng)概述
本設(shè)計由單片機、傳感器和直流電動機組成,,以AT89C51單片機[1-2]芯片為核心,,運用光敏傳感器技術(shù),將室外環(huán)境亮度作為單片機的控制信號,,實現(xiàn)窗簾的自動拉合,。同時,考慮到用戶習(xí)慣和天氣原因,,本方案還設(shè)置了選擇開關(guān),用戶在使用窗簾時可任意選擇自動或手動控制方式,。當(dāng)選擇自動控制模式時,,單片機將室外環(huán)境光線亮度作為輸入信號,單片機控制程序根據(jù)光敏傳感器所產(chǎn)生的電流信號的強弱自動調(diào)節(jié)直流電機的正反轉(zhuǎn),,從而實現(xiàn)窗簾的自動拉合;當(dāng)選擇手動控制模式時,,單片機將手動控制開關(guān)作為輸入信號,單片機控制程序根據(jù)開關(guān)信號控制電機的正反轉(zhuǎn),,從而實現(xiàn)窗簾的手動拉合,。
2 系統(tǒng)硬件設(shè)計
本系統(tǒng)硬件系統(tǒng)主要由傳感器、單片機,、直流電動機三大部分組成[3-4],,如圖1所示。
2.1元器件選擇
(1)單片機芯片
本文選擇AT89C51單片機作為控制芯片,,可以反復(fù)修改1 000多次,。
(2)光敏傳感器
光敏傳感器尺寸為32 mm×11 mm×20 mm,型號為EPSON 1600K3+,,工作電壓為直流5 V,,可用于光控場合,、無需驅(qū)動,、可直接接單片機。
(3)電機
選擇775微型電動機,,其工作電流為5 A,,工作電壓為27 V。能承受頻繁的沖擊負載,,發(fā)熱量低,、驅(qū)動功率較小,滿足負載較輕的智能窗簾的驅(qū)動需求,。
材料清單如表1所示,。
2.2 硬件電路設(shè)計圖
本電路由電源部分、光感應(yīng)部分,、數(shù)據(jù)存儲部分和顯示部分組成,。硬件電路設(shè)計圖如圖2所示。電源部分通過外接插座輸入直流13 V~14 V電壓,;P2.2接光敏傳感器接收光信號,,單片機P1.0、P1.1控制電機運行,。P0.0,、P0.1接正反轉(zhuǎn)指示燈,,其中按鈕接共陰極,低電平有效;指示燈共陽極,,低電平有效,。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件主要實現(xiàn)智能光控、手動控制兩大功能,,采用C語言進行編程,,可實現(xiàn)用戶在使用窗簾時任意選擇自動或手動控制方式[4-5]。
3.1程序流程圖
光控窗簾程序流程圖如圖3所示,。
3.2 程序設(shè)計
(1)光控程序
當(dāng)天亮?xí)r,,有陽光射進屋內(nèi),傳感器感應(yīng)到光信號,,此時電機正轉(zhuǎn),,窗簾開始打開,當(dāng)碰到開限位開關(guān)時,,電機停止轉(zhuǎn)動;當(dāng)天黑時,,傳感器接收到信號,電機反轉(zhuǎn),,窗簾閉合,,當(dāng)碰到關(guān)限位開關(guān)時,電機停止轉(zhuǎn)動,。具體程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K3=P2.2;
//光控正轉(zhuǎn)或反轉(zhuǎn),,此處接光敏傳感器
sbit K5=P2.4; //開限位
sbit K6=P2.5; //關(guān)限位
sbit LED1=P0.0; //正轉(zhuǎn)指示燈
sbit LED2=P0.1; //反轉(zhuǎn)指示燈
sbit MA=P1.0;
sbit MB=P1.1;
void main(void)
{
LED1=1;LED2=1;
while(1)
{
if(K7==0)
sd();
if (K3==0&&K4==1) //光控正轉(zhuǎn)
{ while (K3==0&&K5==1&&K4==1)
{LED1=0;LED2=1;MA=0;MB=1;}
LED1=1;LED2=1;MA=1;MB=1;
}
if (K4==0&&K3==1) //光控反轉(zhuǎn)
{ while (K4==0&&K6==1&&K3==1)
{ LED1=1;LED2=0;MA=1;MB=0; }
LED1=1;LED2=1;MA=1;MB=1;
}
}
}
(2)手動程序
當(dāng)陰天或者晚上用戶要打開窗簾時,只需將控制方式選擇按鈕P2.6按下,,就可以實現(xiàn)手動控制窗簾的開合,。程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P2.0; //手動正轉(zhuǎn)
sbit K2=P2.1; //手動反轉(zhuǎn)
sbit K7=P2.6; //控制方式選擇按鈕
sbit LED1=P0.0; //正轉(zhuǎn)指示燈
sbit LED2=P0.1; //反轉(zhuǎn)指示燈
sbit MA=P1.0;
sbit MB=P1.1;
void sd() //子程序
{
while(1)
{
if(K7= =1)
{
return;
}
if (K1==0&&K2==1) //手動正轉(zhuǎn)
{
while (K1==0&&K5==1&&K2==1)
{
LED1=0;LED2=1;MA=0;MB=1;
}
LED1=1;LED2=1;MA=1;MB=1; //不轉(zhuǎn)
}
if (K2==0&&K1==1) //手動反轉(zhuǎn)
{
while (K2==0&&K6==1&&K1==1)
{
LED1=1;LED2=0;MA=1;MB=0;
}
LED1=1;LED2=1;MA=1;MB=1;
}
}
}
4 調(diào)試與仿真
將程序燒寫到AT89C51芯片中之后進行調(diào)試。在調(diào)試過程中出現(xiàn)兩個主要問題:(1)易將二極管極性接反,,故障現(xiàn)象為接通直流電源24 V時按下正,、反轉(zhuǎn)按鈕,電機可以正、反轉(zhuǎn)但二極管不亮,,解決方法是將二級管極性對調(diào),;(2)電路易有虛焊、漏焊,,故障現(xiàn)象為接通直流電源后,,選擇光控模式發(fā)現(xiàn)電機不動作,解決方法是將虛焊和漏焊處用電烙鐵重新焊接,。
本設(shè)計采用單片機控制的智能光控窗簾有較好的性價比,。實際應(yīng)用表明,該測試系統(tǒng)具有測試準(zhǔn)確,、穩(wěn)定可靠的特點,,達到了設(shè)計要求,。
參考文獻
[1] 張鑫. 單片機原理及應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,2010.
[2] 胡漢才.單片機原理及其接口技術(shù)(第3版)[M]. 北京: 清華大學(xué)出版社,2010.
[3] 胡漢才.單片機原理及其接口技術(shù)學(xué)習(xí)輔導(dǎo)與實踐教程[M]. 北京:清華大學(xué)出版社,2010.
[4] 張義和. 例說51單片機(C 語言版)[M]. 北京:人民郵電出版社,2008.
[5] 黃英.單片機工程應(yīng)用技術(shù)[M]. 上海:復(fù)旦大學(xué)出版社, 2011.