假设您坐在房间里感到寒冷,并且希望加热器自动打开,然后在室温升高后关闭,那么此项目将帮助您根据温度自动控制家用电器。在这里,我们根据温度控制带有Arduino的家用AC设备。在这里,我们使用热敏电阻读取温度。我们已经将热敏电阻与Arduino连接,并在LCD上显示了温度。
在本教程中,我们将为AC设备连接继电器,并使用Arduino制作温度受控的家庭自动化系统。它还在与电路连接的16 * 2 LCD显示屏上显示温度和设备状态。
所需材料
- Arduino UNO
- 继电器(5v)
- 16 * 2 LCD显示屏
- 灯泡(CFL)
- NTC热敏电阻10k
- 连接线
- 电阻(1k和10k欧姆)
- 电位计(10k)
电路原理图
该基于温度的家庭自动化系统 由各种组件组成,例如Arduino板,LCD显示屏,继电器和热敏电阻。工作情况主要取决于继电器和热敏电阻,随着温度升高,继电器将打开;如果温度降低到预设值以下,则继电器将关闭。与继电器连接的家用电器也将相应地打开和关闭。在这里,我们使用了CFL灯泡作为交流电器。整个触发过程和温度值设置由已编程的Arduino板执行。它还为我们提供了有关每半秒的温度变化和LCD屏幕上的设备状态的详细信息。
中继:
继电器是一种电磁开关,由小电流控制,用于接通和断开相对较大的电流。意味着通过施加较小的电流,我们可以打开继电器,从而允许更大的电流流过。继电器是使用小得多的直流电流来控制AC(交流)设备的一个很好的例子。常用的继电器是 单单刀双掷(SPDT)继电器,它有五个终端如下:
当线圈上未施加电压时,COM(公共)连接到NC(常闭触点)。当在线圈上施加一定的电压时,产生的电磁场将吸引电枢(杠杆连接到弹簧),并且COM和NO(常开触点)被连接,从而允许更大的电流流过。继电器有许多额定值,这里我们使用5V工作电压继电器,它允许7A-250VAC电流流过。
通过使用一个小的驱动器电路来配置继电器,该 驱动器电路 包括一个晶体管,一个二极管和一个电阻器。晶体管用于放大电流,以便全电流(来自直流电源– 9v电池)可以流过线圈以完全为其供电。电阻器用于为晶体管提供偏置。当晶体管关闭时,二极管用于防止反向电流流动。突然关闭时,每个电感线圈会产生相等且相反的EMF,这可能会对组件造成永久性损坏,因此必须使用二极管来防止反向电流。一个 继电器模块 容易获得在市场上与板上所有的驱动电路,也可以通过使用上述部件创建它。在这里我们使用了5V继电器模块
使用热敏电阻计算温度:
从分压器电路我们知道:
V输出=(V输入* Rt)/(R + Rt)
因此,Rt的值为:
Rt = R(Vin / Vout)– 1
此处Rt为热敏电阻(Rt)的电阻,R为10k欧姆电阻。
该方程式用于根据输出电压Vo的测量值计算热敏电阻电阻。我们可以从Arduino引脚A0上的ADC值获得电压Vout的值,如下面给出的Arduino代码所示。
从热敏电阻电阻计算温度
数学上,热敏电阻的电阻只能借助Stein-Hart方程来计算。
T = 1 /(A + B * ln(Rt)+ C * ln(Rt)3)
其中,A,B和C是常数,Rt是热敏电阻电阻,ln表示log。
项目中使用的热敏电阻的常数值为A = 1.009249522 ×10 -3,B = 2.378405444×10 -4,C = 2.019202697×10 -7。通过在三个不同温度下输入热敏电阻的三个电阻值,可以从计算器中获得这些常数值。您可以直接从热敏电阻的数据表中获得这些常数值,也可以在不同温度下获得三个电阻值,并使用给定的计算器获得常数值。
因此,为了计算温度,我们只需要热敏电阻的电阻值即可。从上面给出的计算中获得Rt的值后,将这些值放入Stein-hart方程中,我们将获得以开尔文为单位的温度值。由于输出电压的微小变化会引起温度变化。
Arduino代码
本文末尾给出了该温度控制家用电器的完整Arduino代码。在这里,我们解释了其中的几个部分。
为了执行数学运算,我们使用头文件 “ #include
#包括
为了在启动时设置继电器(作为输出)和LCD,我们必须在 无效设置 部分中编写代码
虚空setup(){lcd.begin(16,2); lcd.clear(); pinMode(继电器,输出); }
对于使用热敏电阻的电阻通过Stein-Hart方程计算温度,我们在代码中执行了一些简单的数学方程,如上面的计算所示:
浮点a = 1.009249522e-03,b = 2.378405444e-04,c = 2.019202697e-07; 浮点T,logRt,Tf,Tc; 浮动热敏电阻(int Vo){logRt = log(10000.0 *((1024.0 / Vo-1))); T =(1.0 /(a + b * logRt + c * logRt * logRt * logRt)); //我们从这个Stein-Hart方程Tc = T-273.15得到以开尔文为单位的温度值;//将开尔文转换为摄氏Tf =(Tc * 1.8)+ 32.0; //将开尔文转换为华氏返回T;}
在下面的代码中,功能热敏电阻从Arduino的模拟引脚读取值,并通过执行数学运算来打印温度值
lcd.print((热敏电阻(analogRead(0))));
然后通过 热敏电阻 功能获取该值,然后开始计算
浮动热敏电阻(int Vo)
设置温度值时,我们必须根据温度编写用于打开和关闭灯的条件的代码,例如,如果温度升高超过28摄氏度,则灯会打开;如果灯保持关闭,则灯会打开。因此,只要温度超过28度,就需要将RELAY引脚(PIN 8)设为高电平,以使继电器模块导通。当温度低于28度时,我们需要将RELAY引脚设为低电平以关闭继电器模块。
如果(Tc> 28)digitalWrite(RELAY,HIGH),lcd.setCursor(0,1),lcd.print(“ Light status:ON”),delay(500); 否则,如果(Tc <28)digitalWrite(RELAY,LOW),lcd.setCursor(0,1),lcd.print(“ Light status:OFF”),delay(500);
温控家庭自动化系统的工作:
要为Arduino提供电源,您可以通过USB为笔记本电脑供电或连接12v适配器。LCD与Arduino相连以显示温度值,根据电路图连接了热敏电阻和继电器。模拟引脚(A0)用于随时检查热敏电阻引脚的电压,并且在通过Arduino代码使用Stein-Hart方程进行计算之后,我们可以获取温度并将其显示在摄氏和华氏温度的LCD上。
当温度升高到28摄氏度以上时,Arduino会通过在温度低于28度时将引脚8设置为高电平(连接了继电器模块)来打开继电器模块,而Arduino通过将引脚设置为低电平来关闭继电器模块。CFL灯泡还将根据继电器模块打开和关闭。
该系统在温控风扇和自动交流温度控制器项目中非常有用。
还要检查我们使用不同技术和微控制器的许多类型的 家庭自动化项目, 例如: