2013年4月5日 星期五

Arduino 光敏電阻控制LED燈


       現在我們對Arduino 的應用也應該有一些認識和瞭解了,在基本的數位輸入輸出和類比輸入以及PWM 的產生都掌握以後,我們就可以開始進行一些感測器的應用了。

        光敏電阻器(photovaristor)又叫光感電阻,是利用半導體的光電效應製成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻減小,入射光弱,電阻增大。光敏電阻器一般用於光的測量、光的控制和光電轉換(將光的變化轉換為電的變化)。
光敏電阻可廣泛應用於各種光控電路,如對燈光的控制、調節等場合,也可用於光控開關。


  通常,光敏電阻器都制成薄片結構,以便吸收更多的光能。當它受到光的照射時,半導體片(光敏層)內就激發出電子—空穴對,參與導電,使電路中電流增強。一般光敏電阻器結構如圖所示。

1、原理
2、分類
3、主要參數
4、制作材料

原理

  用于制造光敏電阻的材料主要是金屬的硫化物、硒化物和碲化物等半導體。
  在黑暗環境裡,它的電阻值很高,當受到光照時,只要光子能量大于半導體材料的禁頻寬度,則價帶中的電子吸收一個光子的能量后可躍遷到導帶,并在價帶中產生一個帶正電荷的空穴,這種由光照產生的電子—空穴對增加了半導體材料中載流子的數目,使其電阻率變小,從而造成光敏電阻阻值下降。光照愈強,阻值愈低。入射光消失后,由光子激發產生的電子—空穴對將逐漸復合,光敏電阻的阻值也就逐漸還原原值。

分類

  根據光敏電阻的光譜特徵,可分為三種光敏電阻器:
  紫外光敏電阻器:對紫外線較靈敏,包括硫化鎘、硒化鎘光敏電阻器等,用于探測紫外線。
  紅外光敏電阻器:主要有硫化鉛、碲化鉛、硒化鉛。銻化銦等光敏電阻器,廣泛用于飛彈制導、天文探測、非接觸測量、人體病變探測、紅外光譜,紅外通信等國防、科學研究和工農業生產中。
  可見光光敏電阻器:包括硒、硫化鎘、硒化鎘、碲化鎘、砷化鎵、硅、鍺、硫化鋅光敏電阻器等。主要用于各種光電控制系統,如光電自動開關門戶,航標燈、路燈和其他照明系統的自動亮滅,自動給水和自動停水裝置,機械上的自動保護裝置和“位置檢測器”,極薄零件的厚度檢測器,照相機自動曝光裝置,光電計數器,煙霧報警器,光電跟蹤系統等方面。

主要參數

  光敏電阻的主要參數有亮電阻,暗電阻,光電特徵 光譜特徵,頻率特徵,溫度特徵。在光敏電阻兩端的金屬電極之間加上電壓,其中便有電流通過,受到適當波長的光線照射時,電流就會隨光強的增加而變大,從而實現光電轉換。沒有極性,純粹是個電阻期間,使用時可加直流也可以加交流

制作材料

  用于制造光敏電阻的材料主要是金屬的硫化物、硒化物和碲化物等半導體。通常采用涂敷、噴涂、燒結等方法在絕緣襯底上制作很薄的光敏電阻體及梳狀歐姆電極,然后接出引線,封裝在具有透光鏡的密封殼體內,以免受潮影響其靈敏度。光敏電阻的原理結構如圖2.6.1所示。在黑暗環境裡,它的電阻值很高,當受到光照時,只要光子能量大于半導體材料的禁頻寬度,則價帶中的電子吸收一個光子的能量后可躍遷到導帶,并在價帶中產生一個帶正電荷的空穴,這種由光照產生的電子—空穴對增加了半導體材料中載流子的數目,使其電阻率變小,從而造成光敏電阻阻值下降。光照愈強,阻值愈低。入射光消失后,由光子激發產生的電子—空穴對將逐漸復合,光敏電阻的阻值也就逐漸還原原值。


本次實驗我們先進行一個較為簡單的光敏電阻的使用實驗。光敏電阻既然是可以根據光強改變阻值的元件,自然也需要類比端口讀取類比值了,本實驗可以借由PWM 端口實驗,將電位計換做光敏電阻實現當光強不同時LED的亮度也會有相應的變化。


連接好就可以編寫程式了,本實驗程式與PWM 實驗程序相類似只是在PWM 值,賦值value時根據我們現在的電路稍有修改。



int potpin=0;  //定義類比端口0 連接光敏電阻
int ledpin=11; //定義數位端口11 輸出PWM 調節LED 亮度
int val=0;        //定義變數val


void setup()
{
pinMode(ledpin,OUTPUT); //定義數位端口11 為輸出
Serial.begin(9600);              //設置baud rate為9600
}


void loop()
{
val=analogRead(potpin);//讀取感測器CDS的類比值並賦值給val

Serial.println(val);                   //顯示val 變數數值 於PC 螢幕上 需開啟 serial monitor 
analogWrite(ledpin,val);         // 打開LED 並設置亮度(PWM 輸出最大值255

delay(10) ;                                //延時0.01
}


這裏我們將感測器返回值除以4,原因是模擬輸入analogRead()函數的返回值範圍是0 1023,而模擬輸出analogWrite()函數的輸出值範圍是0 255


下載完程式再試著改變光敏電阻所在的環境的光強度就可以看到我們的LED燈有相應的變化了。

在日常生活中光敏電阻的應用是很廣泛的,用法也是很多,大家可以根據這個實驗舉一反三,做出更好的互動作品。


沒有留言:

張貼留言

Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --3

  Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --3 AngularJS 實例 <!DOCTYPE html> <html> <head> <meta charse...