弘毅 发表于 2011-7-15 20:45:29

arduino学习笔记9 - 光控LED实验

本帖最后由 董董soul 于 2016-12-12 11:44 编辑

光敏电阻

光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下漂移运动,从而使光敏电阻的阻值迅速下降。

光敏电阻的工作原理基于内光电效应。在半导体光敏材料的两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状。在有光照射时,射入的光强,电阻减小,射入的光弱,电阻增大。

下图就是一个光敏电阻



本次实验设计的效果是,当光照正常的时候led灯是灭的,当周围变暗时led灯变亮。

因为光敏电阻受不同光照影响变化很大,所以本次实验的参数是在60W三基色节能灯照射下实验(无日光照射),同样亮度的日光下光敏电阻的阻值会比日光灯下低不少,估计和不同光的波段有关系。不同环境下实验使用的参数不同,大家根据原理进行调整。

实验前先测量一下当前环境下光敏电阻的亮阻值与暗阻值

下图是测出来的LED亮阻值,为9.1KΩ


下图是测出来的LED暗阻值,为32.4KΩ


硬件连接图如下





根据测出来的亮阻9.1KΩ,暗阻32.4KΩ。选定分压电阻为10KΩ。因为当有遮挡物的后,阻值会变大。假设亮阻为10KΩ(对于光敏电阻来说,与测量出来的9.1KΩ差别不大,计算起来更加方便了),分压阻值为10K欧姆。模拟2号口所测量的触发电压为10KΩ分压电阻的,在5V电源供电下,亮与暗转换的触发电压为5×10÷(10+10)=2.5V。当光线越暗,光敏电阻的阻值也就越大,分压两端电压也就越小。所以触发条件就为≤2.5V。(不同光照条件下触发电压不同,请根据实验环境进行调整。)

程序代码如下
int photocellPin = 2;    //定义变量photocellsh=2,为电压读取端口。
int ledPin = 12;   //定义变量ledPin=12,为led电平输出端口
int val = 0;       //定义val变量的起始值


void setup() {
pinMode(ledPin, OUTPUT);//使ledPin为输出模式
}

void loop() {
val = analogRead(photocellPin);    //从传感器读取值
if(val<=512){      //512=2.5V,想让传感器敏感一些的时候,把数值调高,想让传感器迟钝的时候把数值调低。
    digitalWrite(ledPin, HIGH); //当val小于512(2.5V)的时候,led亮。
}
else{
    digitalWrite(ledPin, LOW);
}
} 实验效果如下
http://player.youku.com/player.php/sid/XMjg1MzAxMDUy/v.swf

偶是谁 发表于 2011-7-20 11:54:24

太简单,没意思,不好玩

弘毅 发表于 2011-7-20 12:13:50

偶是谁 发表于 2011-7-20 11:54 static/image/common/back.gif
太简单,没意思,不好玩

嘿嘿,现在我正在写arduino驱动1602液晶的,今天应该可以发出来初稿~~~比这个复杂很多~~蛮好玩的

NaceMichael 发表于 2011-11-27 00:11:40

呵呵。高手说话就是不一样哈。但是也要考虑下我们这些初学者哈。我感觉 这个很神奇呢。见笑了。感谢楼主发表此文!

树·水·风 发表于 2011-12-15 10:02:37

亮阻值为9.1kΩ<分压电阻10kΩ,那么就算光敏电阻达到最大值,也不会比分压电阻分得的电压大,那分压电阻分得的电压应该始终>2.5V才对啊

bzzdzc 发表于 2012-1-12 16:00:09

暗阻32.4KΩ吧

弘毅 发表于 2012-1-12 16:48:55

bzzdzc 发表于 2012-1-12 16:00 static/image/common/back.gif
暗阻32.4KΩ吧

:lol改正过来了

Jacky 发表于 2012-1-16 23:31:18

亮阻值为9.1kΩ<分压电阻10kΩ,那么就算光敏电阻达到最大值,也不会比分压电阻分得的电压大,那分压电阻分得的电压应该始终>2.5V才对啊

本实验是光线暗的时候触发LED发光暗阻32.4KΩ >>分压电阻10KΩ 根据串联电路分压原理 阻值越大分得的电压也越大 分压电阻上的电压越小所以利用检测到的电压<2.5V判断触发LED 没有错啊

iamted 发表于 2012-2-3 19:27:07

本帖最后由 iamted 于 2012-2-3 19:48 编辑

好玩!!

謝謝您了

diamondliu 发表于 2012-3-22 22:25:18

这么简单我都弄不出来,

河山 发表于 2012-4-14 17:14:33

不错,小白学习了~

正_初 发表于 2012-4-21 12:31:19

val = analogRead(photocellPin);    //从传感器读取值
为什么是从传感器取值,读取的不是模拟2引脚的值吗?
val=anlogRead(2);

弘毅 发表于 2012-4-21 14:06:28

正_初 发表于 2012-4-21 12:31 static/image/common/back.gif
val = analogRead(photocellPin);    //从传感器读取值
为什么是从传感器取值,读取的不是模拟2引脚的值 ...

模拟2读取光敏电阻的分压值

正_初 发表于 2012-4-21 22:12:56

弘毅 发表于 2012-4-21 14:06 static/image/common/back.gif
模拟2读取光敏电阻的分压值

明白了 谢谢老师电路看错了 嘿嘿还以为2口读的是固定电阻两端的电压呢!!

yyy_zc 发表于 2012-5-25 21:55:00

把开关值换个方向,就是达文西的经典“这个手电筒有光的时候就亮,没光的时候呢?绝对不亮!!!”
页: [1] 2 3
查看完整版本: arduino学习笔记9 - 光控LED实验