在本文中,我们将使用Arduino制作一个太阳追踪太阳能电池板,其中我们将使用两个LDR(与光有关的电阻器)来感测光,并使用一个伺服电动机自动将太阳能电池板朝着太阳光的方向旋转。该项目的优势在于,太阳能电池板将始终跟随太阳光,始终始终面对太阳以获取电荷,并可以为电源提供最大的功率。该原型非常易于构建。在下面,您将找到有关其工作原理和原型制造方式的完整说明。
Arduino Solar Tracker的必需组件:
以下是使用Arduino构建太阳能跟踪系统所需的组件,大多数组件应在您当地的商店中可用。
- 伺服马达(SG90)
- 太阳能板
- Arduino Uno
- LDR的X 2(光敏电阻)
- 10K电阻器X 2
- 电池(6至12V)
单轴太阳能跟踪器如何工作?
在此项目中,LDR用作光探测器。在详细介绍之前,我们将必须了解LDR的工作方式。LDR(光敏电阻)也称为光敏电阻,是一种光敏设备。当光落在其上时,其电阻会减小,这就是为什么它经常在黑暗或光探测器电路中使用的原因。在此处检查基于LDR的各种电路。
这两个LDR位于太阳能电池板的两侧,而伺服电机用于旋转太阳能电池板。伺服器会将太阳能电池板移向电阻较低的LDR,即朝着光线下降的LDR移动,这样它将一直跟随光线。并且如果两个LDR上都有一定量的光线照射,则伺服器将不会旋转。伺服器将尝试将太阳能电池板移动到两个LDR都具有相同电阻的位置,这意味着两个电阻上的光量会相同,如果其中一个LDR的电阻发生变化,则它将朝较低电阻旋转LDR。查看本文末尾的演示视频。
如何使用Arduino构建旋转的太阳能电池板:
要制作原型,您将必须执行以下步骤:
第1步:
首先,取一小块纸板,在其一端打一个孔。稍后,我们将螺丝插入其中以与伺服器固定。
第2步:
现在,借助胶水或热风枪将两小块纸板彼此固定为V形,然后将太阳能电池板放置在其上。
第三步:
然后将V形的底面连接到小纸板的另一端,在第一步中在小纸板上打了一个孔。
步骤4:
现在,将螺钉插入卡板上的孔中,并将其穿过该孔插入伺服器中。购买时,伺服电机随附螺钉。
步骤5:
现在将伺服器放在另一块纸板上。硬纸板的尺寸应足够大,以便您可以在其上放置Arduino Uno,面包板和电池。
步骤6:
借助胶水将LDR固定在太阳能电池板的两侧。确保您已将电线与LDR的支脚焊接在一起。稍后,您将必须将它们与电阻器连接。
步骤7:
现在,将Arduino,电池和面包板放在纸板上,并按照下面的电路图和说明部分所述进行连接。最终的原型如下所示。
电路图和说明:
下面显示了太阳能跟踪arduino项目的完整电路图。如您所见,该电路非常简单,并且可以借助小型面包板轻松构建。
在此Arduino Solar Panel Tracker中,Arduino由9V电池供电,而所有其他部件均由Arduino供电。Arduino建议的输入电压为7到12伏,但是您可以在6到20伏的范围内为它供电,这是极限。尝试在建议的输入电压范围内为其供电。因此,将电池的正极线连接到Arduino的Vin,将电池的负极线连接到Arduino的地。
接下来,将舵机连接到Arduino。将伺服器的正极线连接到Arduino的5V,并将接地线连接到Arduino的地线,然后将Servo的信号线连接到Arduino的数字引脚9。伺服将帮助移动太阳能电池板。
现在将LDR连接到Arduino。将LDR的一端连接到10k电阻器的一端,然后将该端连接到Arduino的A0,然后将该电阻器的另一端接地,并将LDR的另一端连接到5V。同样,将第二个LDR的一端连接到另一个10k电阻器的一端,然后将该端连接到Arduino的A1并将该电阻器的另一端接地,并将LDR的另一端连接到5V。 Arduino的。
使用Arduino代码的单轴太阳能跟踪器:
此基于Arduino的Solar Panel Tracker的代码很简单,并通过注释进行了很好的解释。首先,我们将包括伺服电机库。然后,我们将初始化伺服电机初始位置的变量。之后,我们将初始化变量以从LDR传感器和伺服读取。
#包括
sg90.atach(servopin) 命令将从Arduino的引脚9读取Servo。接下来,我们将LDR引脚设置为输入引脚,以便我们可以从传感器读取值并据此移动太阳能电池板。然后,将伺服电机设置为90度,这是伺服的初始位置。
void setup(){sg90.attach(servopin); //将伺服器连接到引脚9 pinMode(LDR1,INPUT); //将LDR引脚作为输入pinMode(LDR2,INPUT); sg90.write(initial_position); //以90度延迟移动伺服(2000); //延迟2秒}
然后,我们将从LDR中读取值,并将其保存在R1和R2中。然后,我们将使两个LDR之间存在差异,以相应地移动伺服器。如果它们之间的差为零,则意味着这两个LDR上的光量相同,因此太阳能电池板不会移动。我们使用了一个名为 error 的变量,其值为5,该变量的用途是,如果两个LDR之间的差异小于5,则伺服机构将不会移动。如果我们不这样做,那么伺服将继续旋转。并且如果该差大于误差值(5),则伺服器将使太阳能电池板朝LDR方向移动,在LDR方向上光线会射向该面板。查看下面的完整代码和演示视频。
int R1 = AnalogRead(LDR1); //从LDR 1读取值int R2 = AnalogRead(LDR2); //从LDR 2读取值int diff1 = abs(R1-R2); //计算LDR的int差异diff2 = abs(R2-R1); if((diff1 <=错误)-(diff2 <=错误)){//如果差异在错误之下,则不进行任何操作} else {if(R1> R2){initial_position = --initial_position; //将伺服系统移向0度} if(R1 <R2){initial_position = ++ initial_position; //将伺服器移至180度}}
这样便可以构建一个简单的Solar Panel Tracker,它将自动朝着像向日葵一样的光线移动。在这里,我们使用了低功率太阳能电池板来减轻重量,如果您打算使用高功率或重型太阳能电池板,则需要相应地选择伺服电机。