誒嘿
今天要來介紹的是光敏電阻
今天要使用光敏電阻來控制LED燈
然後使用的材料有:
linkit 7697 開發版*1
光敏電阻*1
100k電阻*1
LED*1(視情況需串聯電阻)
一些麵包線
麵包版
直接先上測試影片
然後是原理介紹
小白:好的~大家可以回去了~
光敏電阻,就像他的名字,光敏電阻的電阻值是會隨著照光的強度而改變的
像這樣在室內的光照下,量到的電阻是3K歐姆左右
而用一隻手指遮起來,電阻值就瞬間升到超過50k歐姆了
然後我們把光敏電阻和100k歐姆的電阻串聯,接上電源,透過分壓定理,我們可以得知電阻和光敏電阻中間的點上的電壓如下:
(註:CdS是光敏電阻的材料硫化鎘的英文)
然後把這個分壓出來的一端接上linkit 7697的ADC(類比轉數位)接腳
需要注意的是,linkit 7697的ADC 輸入電壓範圍只有0~2.5v,然後解析度是12bit(也就是0~4095,因為2^12=4096),如果電壓超出這個範圍就測不出來了
總之先編寫測試用的程式,讓linkit 7697 每隔一秒就把ADC讀到的值輸出到序列埠,如下圖
然後打開序列埠監視窗,觀察輸出的值隨著光照強度的變化
這是普通日光,大概是400上下
這是用布把光全遮掉,幾乎直接頂到輸入上限了
由此可知,亮度越大,值就越小
因此我們就開始寫程式,當讀到的值大於2000就點亮LED,小於500就關掉LED
(LED接在2號腳)
你可能會想問,為甚麼不要就大於2000就點亮,小於2000就關掉呢?
為甚麼要特地設2000跟500兩個值呢?
因為如果大於2000就點亮,小於2000就關掉的話,假設現在的亮度剛好讓讀到的值在2000左右,然後因為一些雜訊會造成讀到的值上下跳動,可能一下變2003,一下又變1999,結果就是你的燈會一直亂閃
而如果把點亮跟關掉的條件分開來,就可以避免這種問題了
ex:當亮度降低使讀取值上升超過2000時,除非突然有人發射閃光彈讓讀取值瞬間下降到低於500,不然燈就不會亮起,反之亦然
接著,只要把程式燒進linkit 7697,然後把電路接好就完成啦~
好的,那麼今天的介紹就大概到這裡啦~
對了,雖然我今天使用的是linkit 7697這張開發版,不過同樣的程式是可以直接套用上arduino的,只差在arduino的ADC是10bit(0~1023),而且電壓範圍是0~5v