制作一个带有Arduino的LDR的光传感器

描述

我们都希望我们的家用电器根据某些条件自动控制,这称为家庭自动化。今天我们要控制外面基于黑暗的光,当外面黑暗时灯会自动打开,当它变亮时关闭。为此,我们需要一个光传感器来检测光线状况,并需要一些电路来控制光传感器。这就像黑暗和明亮探测器电路,但这次我们使用Arduino来更好地控制光线。

在这个电路中,我们正在制作一个使用带有Arduino的LDR的光传感器,根据房间或外部区域的光线条件控制灯泡/ CFL。

所需材料

Arduino UNO

LDR (光相关电阻)

电阻器 (100k-1;330ohm-1)

指示灯 - 1

继电器模块 - 5v

灯泡/节能灯

连接线

面包板

电路图

Arduino

LDR

LDR 是光相关电阻器。LDR由半导体材料制成,使其具有光敏特性。有很多类型,但有一种材料很受欢迎,那就是硫化镉(CdS)。这些LDR或光敏电阻器的工作原理是“光导率”。现在这个原理说的是,每当光落在LDR表面(在这种情况下)时,元件的电导就会增加,或者换句话说,当光落在LDR表面时,LDR的电阻就会下降。LDR电阻降低的这一特性之所以得以实现,是因为它是表面使用的半导体材料的特性。

Arduino

我们之前使用LDR制作了许多电路,这些电路使用LDR根据需要使灯光自动化。

使用Arduino的LDR控制LED的工作

根据电路图,我们使用LDR和100k电阻制作了分压器电路。分压器输出馈送到 Arduino 的模拟引脚。模拟引脚感测电压并为Arduino提供一些模拟值。模拟值根据LDR的电阻而变化。因此,当光落在LDR上时,它的电阻会降低,因此电压值会增加。

光强度 ↓ - 电阻↑ - 模拟引脚电压↓ -灯亮起

根据Arduino代码,如果模拟值低于700,我们认为它是黑暗的并且灯打开。如果该值高于 700,我们认为它是明亮的,并且灯关闭。

代码说明:

在这里,我们定义了继电器、LED 和 LDR 的引脚。

#define relay 10
int LED = 9;
int LDR = A0;
将 LED 和继电器设置为输出引脚,将 LDR 设置为输入引脚。

pinMode(LED, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(LDR, INPUT);
通过 Arduino 的 A0 引脚读取电压模拟值。该模拟电压将根据LDR的电阻增加或减少。

int LDRValue = analogRead(LDR);
给黑暗和明亮的条件。如果该值小于 700,则表示颜色较暗,LED 或指示灯亮起。如果该值大于 700,则它很亮,LED 或灯熄灭。

if (LDRValue <=700)
{
digitalWrite(LED, HIGH);
digitalWrite(relay, HIGH);
Serial.println("It's Dark Outside; Lights status: ON");
}
else
{
digitalWrite(LED, LOW);
digitalWrite(relay, LOW);
Serial.println("It's Bright Outside; Lights status: OFF");
}

使用 LDR 和 Arduino 控制继电器

 

Arduino

我们可以控制家庭灯或任何电气设备,而不是根据亮度和暗度控制LED。我们所要做的就是连接继电器模块并设置参数以根据光的强度打开和关闭任何交流电器。如果该值低于 700,这意味着它为暗,则继电器运行并且灯亮起。如果该值大于 700(表示其白天或明亮),则继电器将不运行,指示灯保持熄灭。 在此处了解有关继电器以及如何将交流设备连接到继电器的更多信息。

Arduino

#define relay 10

int LED = 9;

int LDR = A0;


void setup() 

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

pinMode(relay, OUTPUT);

pinMode(LDR, INPUT);

}


void loop() {

int LDRValue = analogRead(LDR);

Serial.print("sensor = ");

Serial.print(LDRValue);


if (LDRValue <=700) 

{

digitalWrite(LED, HIGH);

digitalWrite(relay, HIGH);

Serial.println("It's Dark Outside; Lights status: ON");

}

else 

{

digitalWrite(LED, LOW);

digitalWrite(relay, LOW);

Serial.println("It's Bright Outside; Lights status: OFF");

}

}


 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分