한국어

Solar :: 태양열발전

아두이노로 만드는 ‘태양 쫓는 솔라트래커’

조회 수 1084 추천 수 0 2015.06.25 13:38:39

빛을 따라서 움직이는 솔라트래커(Solar Tracker)를 직접 만든다면 어떨까. 솔라 트래커란 말 그대로 광원, 그러니까 빛 움직임이나 광량에 따라서 이에 반응해가며 가로축과 세로축을 움직이는 장치를 말한다. 한마디로 햇빛을 추적하는 기기인 셈이다.


솔라 트래커는 말 그대로 빛(광원)의 움직임이나 빛의 양에 따라 
그에 반응하여 가로축과 세로축을 움직이는 장치 입니다.


위 영상에서 볼 수 있듯이, 해바라기(?) 형상의 꽃이 빛을 따라 상, 하, 좌, 우로 움직이는 모습을 볼 수 있습니다.

여기에는 핵심 부품인 조도센서(Cds)가 쓰이는데요,
혹시 아직 조도센서에 대해 잘 모른다면,
아래의 링크를 통해 조도센서에 대해 학습해 보세요.
조도센서 사용하기

원리는 생각보다 간단합니다. 
4개 혹은 5개 이상의 조도센서를 각각의 포인트로 설정하여,
해당 포인트가 상대적으로 어둡거나 0값이 감지되면,
서보모터는 그 반대 방향으로 각도를 증가시키게 됩니다.
이를 통해 빛의 방향을 인식하고, 
마치 따라다니듯 움직일 수 있는 것입니다.


물론 꼭 랜턴과 같은 작은 빛에만 반응하는 것은 아닙니다.
태양 빛에도 반응하며, 여기에 태양충전패널만 부착하면
DIY 발전기가 되지 않을까요 ?

그럼 본격적으로 프로젝트를 시작해 보겠습니다.

미리보기 동영상

부품목록

NO부품명수량상세설명
1오렌지 보드1아두이노 호환보드
2서보모터2sg-90
3조도센서4cds
4가변저항2가변저항
510k 옴 저항4저항
6전선1강선 1m 
7점퍼케이블11푸시버튼
8인두기1인두기
91
10글루건1글루건
11와이어 스트리퍼1와이어 스트리퍼
12송곳1송곳
13포맥스1포맥스
14드레멜1전동공구
부품명아두이노서보모터조도센서가변저항10k옴 저항
파트x1  x2 x4x2 x4
부품명전선점퍼케이블인두기글루건
파트 x1 x11 x1 x1x1 
부품명와이어 스트리퍼송곳포맥스드레멜 
파트 x1x1x1 x1  

하드웨어 Making

회로도


브레드보드 레이아웃





1. 3 cm x 3 cm 크기의 정 사각형 모양으로 포맥스를 재단합니다.
이는 조도센서 4개를 꽂아 넣는 받침으로 사용됩니다.

2. 가로 3cm  세로 6cm 크기로 포맥스를 재단합니다.
2개를 재단하고, 가운데 지점에 포맥스의 두께만큼 그리고 길이는 3cm로 홈을 파내어 줍니다.
포맥스는 미끄럽기 때문에 재단 작업시 항상  손을 다치지 않도록 주의해 주세요.


3. 이제 바닥판을 4등분 한뒤, 조도센서(cds)를 고정해 보겠습니다.
위 사진처럼 조도센서의 간격만큼 살짝 구멍을 뚤어주세요.


4. 조도센서를 넣어보겠습니다.


5. 나머지 부분도 동일하게 작업해 줍니다.


6.뒷면의 모습입니다.
조도센서의 다리는 충분히 길기 때문에 별도의 전선을 쓰지않고,
서로 납땝을 하기 용이하도록 접어 펼쳐줍니다.


7. 서로 인접한 2개의 조도센서를 오른쪽, 왼쪽으로 구분하고 
나중에 위, 아래를 구분하여 연결합니다.
지금은 서로 인접한 2개의 조도센서의 한쪽 다리를 서로 납땜하여 연결합니다.
 

8. 미리 잘라둔 홈을 파낸 코맥스 파츠 두 개를 이용하여 십자 모양의 가림막을 만들어줍니다.
이 가림막을 역할을 4개의 조도센서로 유입되는 빛을 차단하여 '빛의 방향'을 측정하도록 합니다.
알고리즘상에서는 빛을 왼쪽에서 비춘다고 가정할 때,
'오른쪽'에 있는 조도센서에는 가림막에 의해 빛이 차단되어 
'왼쪽'에서 빛이 유입된다는 것을 알려주는 원리입니다.


9.사진에서 처럼 왼쪽에서 빛이 올때 오른쪽에 있는 조도센서는 그림자가 생기게 됩니다.


10. 이제 본격적인 회로 구성을 해보겠습니다.
먼저 연결한 두개씩 연결된 부분은 전선을 납땜하여 5V(+)에 연결해 줍니다.
그리고 사진에 보이는 빨간색 전선처럼 각각의 조도센서에 한쪽 끝에 전선을 납땜하여 줍니다.


11. 납땝한 전선은 만능기판이나 브레드보드에 연결하여 저항 10K 옴과 연결합니다.



12.아두이노와 연결하기 쉽도록 점퍼케이블을 잘라 납땜하였습니다.
여기서 점퍼케이블은 각각의 아날로그 핀과 연결하고,
각각의 10k옴은 아래의 '가변저항'의 GND와 만나 아두이노의 GND로 통합하여 연결해 줍니다.


13.이번에는 가변저항을 연결해 보겠습니다.
가변저항은 A4, A5에 연결되며, 
이는 각각 서보모터의 속도(A4)와 각도 범위(A5)를 설정하는 역할을 합니다.


14. 2개의 가변저항의 GND와 10K옴 저항의 끝을 연결한 모습입니다.


15.이번에는 가변저항의 +극을 서로 연결하여 줍니다.


16. 통합된 +극과 -극을 2개의 점퍼케이블과 연결해 주었습니다.


18.점퍼케이블은 연선이기 때문에 단단히 고정되어지지 않으면 쉽게 끊어지기 때문에
글루건을 이용하여 연결부에 유격이 없도록 고정하였습니다.


19. 전선이 많아 복잡하니 한번 정리해 주도록 합니다.


20. 만능기판 한쪽에 아두이노를 고정해 보도록 하겠습니다.
유성매직이나 네임펜등을 이용하여 자리를 잡고 볼트가 들어갈 자리를 체크합니다.


21. 체크된 자리를 '드레멜'로 구멍을 뚫어 볼트 혹은 나사가 들어갈 자리를 만들어 줍니다.



22. 회로를 연결하고 PCB에 고정한 모습입니다.


23. 이제 서보모터와 조도센서 파트를 연결해 보겠습니다.
먼저 서보모터에 연결되는 플라스틱 파츠중 긴 1자 날개 형태의 부속을 
사진과 같이 한쪽날개를 접어줍니다.
한번 접어 라이터를 이용하여 열을 살짝 가해주면 형태가 직각 모양으로 만들어 집니다.


사진과 같이 디지털 10번에 연결된 서보모터를 아래에 두고(가로축 담당)
디지털 9번에 연결된 서보모터에 직각 날개를 끼운뒤 조도센서 파츠와 연결합니다.
이때 조도 센서 파츠의 방향은 
A0 (왼쪽 탑- LT)A2(오른쪽 탑-RT)
A1 (왼쪽 다운 - LD)A3(오른쪽 다운-RD)
으로 방향을 놓고 파츠 왼쪽에 서보모터를를 고정해 줍니다. 


24.완성된 모습입니다.

3D 프린팅이 가능하신 분들은 아래의 stl 파일을 출력하여 만들어 보세요 :)
FL3S7CFI4IX2PVO.stl

소프트웨어 Coding

아래의 소스코드를 아두이노에 업로드 합니다.

#include <Servo.h> // 서보 라이브러리를 불러옵니다.

Servo horizontal; //가로축 서보를 설정합니다.
int servoh = 90; // 가로축 서보의 기본값은 90으로 설정합니다.

Servo vertical; // 세로축 서보를 설정합니다.
int servov = 90; // 세로축 서보의 기본값은 90으로 설정합니다.
// 조도센서를 연결합니다. // 조도센서의 이름 = 아날로그 핀번호; int ldrlt = 0; //LDR 왼쪽 위 int ldrrt = 1; //LDR 오른쪽 위 int ldrld = 2; //LDR 왼쪽 아래 int ldrrd = 3; //ldr 오른쪽 아래 void setup() { Serial.begin(9600); // 서보를 연결합니다. // name.attacht(pin); horizontal.attach(9); vertical.attach(10); } void loop() { int lt = analogRead(ldrlt); // 왼쪽 탑 int rt = analogRead(ldrrt); // 오른쪽 탑 int ld = analogRead(ldrld); // 왼쪽 다운 int rd = analogRead(ldrrd); // 오른쪽 다운 int dtime = analogRead(4)/20; //속도는 아날로그 4번 가변저항값을 읽고 20으로 나누어 줍니다. int tol = analogRead(5)/4; //반경은 아날로그 5번 가변저항값을 읽고 4로 나누어 줍니다. int avt = (lt + rt) / 2; // 위쪽의 평균값을 구합니다. int avd = (ld + rd) / 2; // 아래쪽의 평균값을 구합니다. int avl = (lt + ld) / 2; // 왼쪽의 평균값을 구합니다. int avr = (rt + rd) / 2; // 오른쪽의 평균값을 구합니다. int dvert = avt - avd; // 위쪽과 아래쪽의 차이를 구합니다. int dhoriz = avl - avr;// 왼쪽과 오른쪽의 차이를 구합니다. if (-1*tol > dvert || dvert > tol) // check if the diffirence is in the tolerance else change vertical angle { if (avt < avd) { servov = ++servov; if (servov > 180) { servov = 180; } } else if (avt > avd) { servov= --servov; if (servov < 0) { servov = 0; } } vertical.write(servov); } if (-1*tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle { if (avl > avr) { servoh = --servoh; if (servoh < 0) { servoh = 0; } } else if (avl < avr) { servoh = ++servoh; if (servoh > 180) { servoh = 180; } } else if (avl == avr) { // nothing } horizontal.write(servoh); } delay(dtime); }
 
List of Articles
번호 제목 글쓴이 날짜 조회 수
77 제로 에너지 하우스에 다시 한번.... 수텐리 2018-09-05 102
76 [과학을 읽다]태양전지 효율 최고기록 또 깼다 WindBoy 2017-06-30 75
75 태양광 패널, 일반 가정에서 투자 대비 효과는? 구글 툴로 계산 WindBoy 2015-08-20 139
74 "빗물이 태양 전지 패널 수명을 단축시킨다" 나사 연구원 WindBoy 2015-08-18 93
73 펌] 태양전지의 종류와 용도 3 (3세대태양전지) - 솔라센터 WindBoy 2015-08-14 139
72 전기료 인하를 가져올 재생에너지 열풍 WindBoy 2015-07-21 110
71 “IT기업이 ‘쿨’해지는 법, 재생가능에너지 활용입니다” WindBoy 2015-07-20 49
70 공기중에서 물을 얻는 와카워터(Warka Water) [2] WindBoy 2015-07-08 467
69 한글시계 - 한글로 흐르는 시간의 즐거움 WindBoy 2015-07-07 117
68 휴대폰 케이블로 충전하는 건전지, 크라우드펀딩 ‘똑똑’ WindBoy 2015-07-02 72
67 웹사이트, ‘착한’ 전력으로 돌아가고 있을까 WindBoy 2015-07-01 87
» 아두이노로 만드는 ‘태양 쫓는 솔라트래커’ WindBoy 2015-06-25 1084
65 에코돔을 소개 합니다. WindBoy 2015-06-16 92
64 [공개] 아두이노 미세먼지 측정기 소스코드와 설계도면 [1] WindBoy 2015-04-15 614
63 ‘슬기로운’ 태양광 벤처, 이든스토리 WindBoy 2015-04-15 765
62 기름 한 방울 쓰지 않고, 전 세계 여행하기- 석유와의 공생을 실현하는 Solar Impulse의 두 파일럿 file WindBoy 2014-10-24 517
61 4인승 태양광 전기차 스텔라(Stella) 도로주행 성공 [1] WindBoy 2014-09-26 600
60 우리집햇빛발전소 - 노원구편 WindBoy 2014-08-21 937
59 태양의 고도 file WindBoy 2014-07-30 1086
58 태양광 발전소 진행 시 주의할 점 WindBoy 2014-07-30 924