2 차시
2. 우주 에너지하베스팅 기술 따라하기(심화 과정)
2차시에서 보드게임을 통하여 4종의 체험 기술 중 선정된 체험 기술 하나를 동영상을 보고 체험 따라하기(기본) 를 해보았다. 심화 과정은 선택 과정으로 태양을 따라다니며 태양 전지 충전을 효율적으로 하는 태양트랙커를 만드 는 체험을 따라해보자.
Follow Me
[체험동영상] https://youtu.be/L-DFNIHSqq8 [태양트랙커]
[그림 34] 태양전지의 원리
장점 • 대기 오염이나 폐기물 발생의 염려가 없고, 연료비가 필요 없다.
• 수명이 20년 이상으로 오랜 기간 사용할 수 있고, 유지 보수가 쉽다.
단점 • 가격이 높고, 흐린 날과 밤에는 전기를 생산할 수 없다.
• 에너지 효율이 낮고, 초기 투자 비용이 많이 든다.
이용 •태양 전지 자동차, 태양 전지 계산기, 태양 전지 비행기, 태양 전지 휴대 전화, 태양 전지 가로등 등
▶박막형 태양 전지와 염료 감응형 태양 전지
① 박막형 태양 전지: 플라스틱 판 등에 광흡수 물질을 얇게 발라 만든다. 얇게 만들 수 있어 굴곡이 있는 곳에 도 설치할 수 있다.
② 염료 감응형 태양 전지: 태양광이 반도체 표면에 부착된 염료 분자와 반응하며 흡수되어 전류를 발생시킨 다. 투명하게 만들거나 다양한 색을 넣을 수 있어 창문 등에 활용할 수 있다.
▶ 수소 - 산소 연료 전지의 구조와 원리
- 수소와 산소의 산화 - 환원 반응에 의해 생기는 연소 에너지를 열로 바꾸지 않고 직접 전기 에너지로 변환 하는 장치이다.
① 전해질을 사이에 두고 (-)극에는 수소를, (+)극에는 산소를 공급 → ② (-)극의 수소는 전자를 내놓고 전해 질을 통해 (+)극으로 이동하여 산소 분자와 만나 물과 열을 생성 → ③ 수소가 내놓은 전자가 외부 회로를 따라 (+)극으로 이동하여 전류가 흐른다.
(-)극 H₂ → 2H+ + 2e- (수소의 산화 반응) (+)극 12O₂ + 2H+ + 2e- → H₂O(산소의 환원 반응)
전체 H₂ + 12O₂ → H₂O + 에너지(전기, 열) 전기 부하
재결합
전자
정공 전자 전류
태양광
금속 전극 n형 반도체
금속 전극 p-n접합 p형 반도체
[그림 35] 연료전지 원리
장점 • 에너지 효율이 40 ~ 60%이며, 반응 과정에서 나오는 열을 이용하면 80% 정도로 높일 수 있다.
• 물이 유일한 생성물로 환경 오염 문제가 없다.
• 연료가 되는 수소를 재생 에너지, 원자력 등 다양한 에너지원으로부터 생산할 수 있다.
단점
• 수소를 생산하는 데 비용이 많이 들며, 폭발 위험이 있다.
• 수소 충전소 등 새로운 기반 시설을 설치해야 한다.
• 수소와 산소를 계속해서 공급해 주어야 하며, 생성물인 물을 연료 전지로부터 제거해야 한다.
이용 • 휴대용 전자 기기, 수소 연료 전지 자동차, 대형 발전 장치, 우주 왕복선 등
• 아두이노를 활용한 태양전지 트랙커 기술 체험하기
▶ 태양을 따라다는 태양전지 트랙커 제어하기
준비물: 아두이노 우노, 조도센서 4개, 서보모터 2개, MDF, 태양전지, 브레드보드
[그림 36] 태양 트랙커 외형
-동작방식: 태양을 따라 태양전지판을 트래킹할 수 있는 제어회로를 만든다. 조도센서로 태양의 강도를 측정 하고 강도하고 강한 면을 따라 태양전지가 부착된 모터가 동작한다.
- 기본회로
[그림 37] 태양 트랙커 회로도
• 소스코드 설명
#include <Servo.h>
Servo servohori; //수평 동작 서보모터로 아래에 위치 int servoh = 0;
int servohLimitHigh = 160;
int servohLimitLow = 20;
Servo servoverti; //수직 동작 서보모터로 위에 위치 int servov = 0;
int servovLimitHigh = 160;
int servovLimitLow = 20;
int ldrtopl = 2; //위 왼쪽에 위치한 CDS int ldrtopr = 1; //위 오른쪽에 위치한 CDS int ldrbotl = 3; //아래 왼쪽에 위치한 CDS int ldrbotr = 0; //아래 오른쪽에 위치한 CDS void setup ()
{
servohori.attach(10); // 아래 서보모터를 아두이노 10번에 연결 servohori.write(0);
servoverti.attach(9); // 위 서보모터를 아두이노 9번에 연결 servoverti.write(0);
delay(500);
}
void loop() {
servoh = servohori.read();
servov = servoverti.read();
//4개의 CDS 값 읽어오기 int topl = analogRead(ldrtopl);
int topr = analogRead(ldrtopr);
int botl = analogRead(ldrbotl);
int botr = analogRead(ldrbotr);
// 읽은 CDS값의 평균값 가져오기 int avgtop = (topl + topr) / 2;
int avgbot = (botl + botr) / 2;
int avgleft = (topl + botl) / 2;
int avgright = (topr + botr) / 2;
if (avgtop < avgbot) {
servoverti.write(servov +1);
if (servov > servovLimitHigh) {
servov = servovLimitHigh;
}
delay(10);
}
else if (avgbot < avgtop) {
servoverti.write(servov -1);
if (servov < servovLimitLow) {
servov = servovLimitLow;
}
delay(10);
} else {
servoverti.write(servov);
}
if (avgleft > avgright) {
servohori.write(servoh +1);
if (servoh > servohLimitHigh) {
servoh = servohLimitHigh;
}
delay(10);
}
else if (avgright > avgleft) {
servohori.write(servoh -1);
if (servoh < servohLimitLow) {
servoh = servohLimitLow;
}
delay(10);
} else {
servohori.write(servoh);
}
delay(50);
}
[그림 38] 솔라트랙커 시제품 완성