切換
舊版
前往
大廳
主題

[白鷗小學堂]光控開關-光敏電阻應用

白鷗 | 2019-11-15 22:14:44 | 巴幣 36 | 人氣 2129

誒嘿

今天要來介紹的是光敏電阻



今天要使用光敏電阻來控制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

創作回應

小路(,,・ω・,,)
太厲害了吧
2019-11-16 00:31:51
白鷗
這在我們科系算基礎了(°▽°)
2019-11-16 09:52:18
喔哇@あくあ☆
打卡
2019-11-16 08:33:15
喔哇@あくあ☆
抓鷗
2019-11-16 08:33:27
白鷗
別(>△<)
2019-11-16 09:52:53
喵咪喵咪喵咪
真酷
2019-11-16 13:32:26
白鷗
謝謝(^▽^)
2019-11-16 13:36:43

更多創作