基於Arduino的太陽能跟蹤器
在這個項目中將利用兩個光敏電阻感知光線的變化, 控制舵機自動在太陽光變化的方向上旋轉, 太陽能電池板將始終跟隨太陽光並一直朝著太陽,
元件清單:
舵機 (sg90)
太陽能電池板
Arduino Uno
光敏電阻X 2
10K 電阻 X 2
電池 (9V)
光敏電阻是一種光敏感器件, 常用硫化鎘製作, 另外還有硒、硫化鋁、硫化鉛和硫化鉍等材料製作的光敏電阻。 這些材料具有在特定波長的光照射下, 其阻值迅速減小的特性。 當光照在它上面時, 它的電阻就會降低, 因此光敏電阻經常被用於光線探測電路。
光敏電阻
工作原理:
在太陽能電池板兩側分別放置兩個光敏電阻, 舵機用於旋轉太陽能電池板。 如果某一個光敏電阻的阻值下降, 舵機將帶動太陽能電池板旋轉, 調節光敏電阻的位置。 如果兩個光敏電阻的阻值同時下降, 則舵機不會轉動。 在這個Arduino太陽能跟蹤器中, Arduino採用9V電池供電, 其餘部分都是由Arduino供電。
電路連接圖:
電路連接圖
C語言代碼:
#include //包含舵機的庫
Servo sg90; //聲明一個Servo類型的變數sg90
int initial_position = 90; //定義一個初始位置
int LDR1 = A0; //連接光敏電阻引腳
int LDR2 = A1;
int error = 5;
int servopin=9;
void setup()
{
sg90.attach(servopin);
pinMode(LDR1, INPUT);
pinMode(LDR2, INPUT);
sg90.write(initial_position);
delay(2000);
}
void loop()
{
int R1 = analogRead(LDR1);
int R2 = analogRead(LDR2);
int diff1= abs(R1 - R2);
int diff2= abs(R2 - R1);
if((diff1
} else {
if(R1 > R2)
{
initial_position = --initial_position; //Move the servo towards 0 degree
}
if(R1
{
initial_position = ++initial_position; //Move the servo towards 180 degree
}
}
sg90.write(initial_position); // write the position to servo
delay(100);
}