아두이노 우노로 만드는 태양 추적 시스템 – 듀얼 축 자동 추적
부품 및 소모품
| 부품 | 수량 |
| 아두이노 우노 (Arduino UNO) | 1 |
| 아날로그 디바이시스 LDR 센서 (Analog Devices LDR Sensor) | 4 |
| 솔더리스 브레드보드 풀사이즈 | 1 |
| 태양광 패널 | 1 |
| SG90 마이크로 서보 모터 | 2 |
| 점퍼 와이어 (일반) | 1 |
| 저항 1kΩ | 4 |
앱 및 온라인 서비스
프로젝트 소개
일상에서 보는 태양광 패널은 대부분 고정식입니다. 간단하지만 최대한의 에너지를 생산하진 못합니다. 이 프로젝트는 듀얼 축 트래커(이중 축 추적)로, 좌우(X축)와 상하(Y축) 모두 움직여 태양을 자동으로 따라갑니다. 한 번 설치하면 태양이 어디로 이동하든 패널이 따라가므로 추가 조정이 필요 없습니다.
작동 원리
4개의 LDR(조도 센서)을 십자 형태로 배치해 각 방향의 빛 세기를 비교합니다. 수직/수평 서보 모터가 빛이 더 강한 쪽으로 패널을 회전시킵니다.
코드 설명
#include <Servo.h>
Servo s; // 수직 서보
Servo sh; // 수평 서보
int start1 = 90, start2 = 90; // 초기 각도 90도
int L1 = A0, L2 = A1, L3 = A2, L4 = A3; // LDR 핀
int a = 15; // 임계값
void setup() {
s.attach(9); sh.attach(10);
pinMode(L1, INPUT); pinMode(L2, INPUT);
pinMode(L3, INPUT); pinMode(L4, INPUT);
s.write(start1); sh.write(start2);
delay(2000);
}
void loop() {
int LDR1 = analogRead(L1);
int LDR2 = analogRead(L2);
int LDR3 = analogRead(L3);
int LDR4 = analogRead(L4);
int plus14 = LDR1 + LDR4; // 대각선 쌍 합
int plus23 = LDR2 + LDR3;
int plus12 = LDR1 + LDR2; // 상/하 쌍 합
int plus34 = LDR3 + LDR4;
int diff1 = abs(plus14 - plus23);
int diff2 = abs(plus23 - plus14);
int diff3 = abs(plus12 - plus34);
int diff4 = abs(plus34 - plus12);
// 수직 축 제어
if (!((diff1 <= a) || (diff2 <= a))) {
if (plus14 > plus23) start2--;
if (plus14 < plus23) start2++;
}
// 수평 축 제어
if (plus12 > plus34) start1--;
if (plus12 < plus34) start1++;
s.write(start1);
sh.write(start2);
delay(100);
}
임계값(a=15) 이하 차이면 움직이지 않아 불필요한 미세 진동을 방지합니다.
회로도
회로도 이미지 제공 (LDR 4개, 서보 2개, 아두이노 우노 연결)