光敏电阻原理,即实例小制作:光控LED灯
1.光敏电阻的基本原理
光敏电阻也是电阻中的一种,其阻值随光强度的变化而变化。光敏电阻一般由硫化镉、硒化镉、硫化铝等半导体材料制成,这些材料在特定波长的光照射下,载流子在电场的作用下漂移运动,其阻值迅速下降。
光敏电阻的阻值随光强度的增加而减小,光敏电阻在黑暗的环境下其阻值一般几十K以上,甚至高达1MΩ到10MΩ。 如下图为光敏电阻实测结果,在光线较充足的环境下其阻值3.049K,在较暗的环境下测量,其阻值为74.9K。
2、光敏电阻控制LED的原理
光敏电阻采样的原理较简单,光敏电阻直接串联一个高精度的基准电阻1KΩ,再接5V电源即可,中间输出接入单片机ADC采样接口进行电压采样。
通过单片机IO口控制LED灯亮灭,实现白天光线较亮时,LED灯不亮;晚上光线较暗时,LED灯点亮。
其原理为,光线变化会影响光敏电阻阻值改变,从而导致ADC接口采集到的电压变化,单片机通过采集到的电压数字量进行判断是白天还是黑夜,当黑夜时,控制IO口输出高电平点亮LED灯;当白天时,IO口输出低电平,LED灯不亮。
A0引脚是ADC引脚(模拟输入引脚),Arduino有6个模拟输入引脚A0~A5,对于输入引脚的参考电压为0~5V,库函数为analogRead(),读取返回值,范围为0~1023,线性关系,输入0V时返回值为数字0,输入5V时,返回值为1023,比如光敏电阻为4K时,ADC接口的电压为4V,对应的数字量为4/5×1023=818,因此,analogRead()返回818,利用该值控制LED灯亮灭。
示例程序如下:
int led_0 = 13;
int lightSensor_0 = A0;
void setup() {
pinMode(led_0, OUTPUT);
pinMode(lightSensor_0, INPUT);
}
void loop() {
if(analogRead()>818)
digitalWrite(led_0,HIGH);
else
digitalWrite(led_0,LOW);
}
当采集到的数字量大于818时,即光敏电阻的阻值大于818时,认为光线较暗,LED的IO口输出高电平,点亮LED灯;否则,认为光线较强,LED的IO口输出低电平,LED灯熄灭。