[33호]자가발전기구 GX-1
ICT 융합 프로젝트 공모전 입선
자가발전기구 GX-1
글 | 동양미래대학교 임종헌, 강정민, 권도황, 양단비, 최승연, 한소연
심사평
뉴티씨 생활 속에서 나올 수 있는 매우 간단한 발상이지만, 이를 직접 구현한다는 것은 또 다른 문제이다. 항상 쉬워 보이는 것도, 직접 만들어 보면 매우 어렵다. 이 때문에, 쉬워보이는 것을 구현하는 것이 의외로 어려운 일인데, 중간중간 어려운 과정 속에서도 잘 극복해 나간 팀원의 고민과 노력을 엿볼 수 있었다. 앞으로 이 팀원들이 사회에 나와서 실질적인 아이디어를 제품으로 구현해 가는 멋진 일을 상상해 보면서, 높은 점수를 준다.
칩센 자가 발전으로는 나와있는 제품들이 너무 다양하고 많으며, 실생활 어느 부분에서 적용이 가능한지에 대한 조사가 부족하다.
위드로봇 배터리로 구동하는 장비가 많아지는 현 상황에서 에너지 수집 장치의 필요성은 매우 높습니다. 아쉬운 점은 일반적인 모터를 활용하여 전력을 생성하는데 추가 아이디어가 있었어야 한다는 점과 에너지 저장 장치로 2차 전지가 아닌 슈퍼 캐패시터를 선택한 이유를 보고서에 명기하면 좋았겠다라는 생각을 해 봅니다.
작품개요
사람이 일상적으로 이용하는 운동 기구에 버려지는 에너지를 쓸모 있는 에너지로 만드는 ‘에너지 수확기술(Energy Harvesting)’을 접목시켜, 운동기구에 소용량 발전기 및 충전회로를 구성하여 오늘날 현대인의 대부분이 이용하는 휴대폰 충전을 가능하게 함으로써 별도의 가정용 전원 없이 충전할 수 있게 한다. 그리고 충전을 할 때 사람의 동력이 필요하다는 것을 이용하여서 사용자의 규칙적인 운동습관까지 기대할 수 있게 하는데 목적이 있다.
기존에 있던 자가발전기구와의 비교
기존 운동기구는 규모가 커서 거치된 형식으로 이동성과 휴대성이 결여되어 있고 운동시간을 따로 투자해서 해야 하므로 바쁜 현대인으로서는 불규칙한 생활습관으로 운동시간을 따로 내기 어렵다는 단점이 있다.
또한, 사이클은 회전운동이기 때문에 다양한 운동기구에 접목하기 힘들다는 단점이 있다. 그러나 사진에서와 같이, 저희가 만든 GX-1은 휴대성이 있고 직선운동이기 때문에 현재 나와 있는 여러 다양한 기구에 접목시킬 수 있고 남자 여자 상관없이 다양한 연령층이 편리하게 이용할 수 있으며 충전된 용량을 LCD에 표시하여 운동 잔여량을 확인할 수 있다. 충전되는 전류를 제어하여 운동에 드는 힘을 조절 할 수 있어 다양한 연령층이 사용할 수 있도록 하였다.
작품설명
BLDC모터를 통해 나온 교류기전력을 다이오드 브릿지 회로로 정류하여 직류 기전력으로 변환하고, 그 기전력으로 Super Capacitor 4개를 직렬로 연결하여(100[F], 5.4[V]) 배터리를 충전시킨다. Step-Up 과 Step-Down converter를 두 개 모두 사용하는 이유는 Capacitor에서 나오는 전압이 약 3Volt~8Volt 사이인데, Battery에 충전하기 위한 적정전압이 5Volt 이므로 Step-Up converter 하나 만으로는 5Volt~8Volt구간에서 5Volt로 출력되지 않고 그대로 나오게 되어 문제가 발생한다. 그렇기 때문에 Step-Down converter를 사용하여 5Volt~8Volt구간에서의 전압을 5Volt로 강압시킨다. 따라서 Battery에 5Volt의 일정한 전압을 인가할 수 있게 된다.
부품설명
동작원리
승압기와 감압기 회로 및 설명
승압기 : 승압기 회로도에서는 input 5Volt라고 되어있지만 실험을 통해 3Volt이상부터 승압이 되는 것을 확인 할 수 있다.
감압기 : 휴대폰을 충전하기 위한 전압은 5 Volt이기 때문에 승압기를 거쳐 출력된 12Volt전압을 5Volt전압으로 낮추기 위해 감압기를 사용하였다.
PWM(Pulse Width Modulation) 제어란?
구형파의 ON구간의 전체 파형 대비 비율을 조절하여 파형의 평균값을 조절하는 제어를 PWM(Pulse Width Modulation)제어라 한다. DC모터에선 이와 같이 PWM 제어를 이용하여 속도를 조절한다.
즉, PWM은 디지털기기에서 아날로그 결과를 얻기 위한 테크닉이다. 0 또는 1, on 또는 off의 수직파를 얻기 위해서 디지털 컨트롤을 이용하는데, 이 on-off 패턴으로 on이 지속되는 시간과 off가 지속되는 시간을 조정함으로써 on(5 Volt)과 off(0 Volt) 사이의 전압을 흉내낼 수 있다. 이 on이 지속되는 시간을 펄스 폭(Pulse Width Modulation)라고 한다. 이러한 on-off 패턴을 반복하여 LED에 출력하면 전압이 0~5 volt 사이의 값을 나타내며 LED의 밝기를 조절할 수 있다. PWM에서 전체 파형 대비 ON구간의 비율을 Duty라 칭하고, 0~100[%]로 표기한다. 위 그림의 파형은 Duty의 값에 따른 파형의 모습을 같은 시간 축 상에 나타낸 그래프이다. 본 작품에서는 다양한 연령층의 사용자가 모두 이용할 수 있도록 운동량의 강도를 조절하고자 PWM제어가 이용되었으며, 총 5단계로 나누어 전류를 조정하여 이를 실현하였다.
GX-1 메인 회로 및 설명
Main 기판의 특수적인 부분을 설명한다. 트랜지스터Q1을 쓰는 이유는 PWM 제어(D11핀)를 통해 커패시터에 흐르는 전류를 제한하여 운동할 때 드는 힘을 조절할 수 있게끔 하였다. BAT1, BAT2는 리튬폴리머 충전지를 사용하여 아두이노의 전원을 공급하기 위해 사용하였다.
릴레이IC의 b접점을 사용한 이유는 BAT1와 BAT2가 전부 소비되었을 때 Arduino가 켜지지 않아 Q1이 도통이 되지 않기 때문에 릴레이의 b접점을 이용하여 우선 BAT1과 BAT2를 충전시킬 수 있도록 만들기 위해서이다. 또한 IC릴레이에 병렬로 바리스터를 연결한 이유는 IC릴레이가 서지전압에 약하여 이를 방지하기 위해서이다.
제작과정
➊ 이론 계산
· 기준: S사 휴대폰 배터리 (3.8V, 2,100mA, 7.98Wh)
· [Wh]와 [J]간의 환산: 3.8×2100×10^-3×3600= 28,728[J]
· 선정한 모터: 760[g], 33.27[W], 900[rpm], Φ92 (2대)
33.27×2×13×1800= 39,924[J] (300[rpm]의 운동 감안)
위의 에너지 계산을 토대로 용량이 적합한 BLDC 모터를 선정하였으며, 커패시터는 다음과 같이 선정하였다. 2.7[V] 400F 커패시터 – 4개 직렬연결: 내압 10.8[V], 100F의 충전회로를 구성하였다. 이론상 10.8[V]이지만, 충전실험을 한 결과 13.5[V]까지 커패시터의 팽창 및 과열 현상 없이 충전 가능함을 확인하였다.
13.5[V]까지 충전하였을 경우 저장되는 에너지:
{(13.5*13.5*100*0.5)-(3*3*100*0.5)}=8662.5[J]
이는 휴대폰 전체 용량의 약 30%에 달하며, 커패시터가 완전 충전 및 방전을 3회 하였을 경우 휴대폰 배터리가 완전 충전 된다.
➋ 하드웨어 및 회로 기판 제작
앞서 나타나 있는 대로 회로를 제작하고 외관상의 하드웨어를 메이크 블록을 이용하여 제작하였다.
➌ 프로그램 제작
GX-1에 사용하는 아두이노는 Arduino Mega 2560이기 때문에 ATmega2560을 기반으로 프로그램이 구동된다. 따라서 ATmega2560에 맞는 프로그램을 구성하였다. 우선적으로 찾아야 하는 데이터는 분주비 및 모드설정이다. 이는 데이터 시트에 명시되어 있으며, 아래에 소개한다.
본 프로그램에는 Fast PWM 8비트 및 1분주비를 사용하였다. 또한, PWM의 모드도 설정해야 했다. 이 레지스터는 TCCR1A 및 TCCR1B에 있으며, 이는 아래에서 확인할 수 있다. 최종적으로 프로그램에 삽입한 구절은 아래와 같다.
TCCR1A = _BV(COM1A1) | _BV(WGM10);
TCCR1B = _BV(WGM12) | _BV(CS10);
그리고, 이를 토대로 한 프로그램의 동작절차 계략도는 다음과 같다.
프로그램의 내용을 아래에 첨부한다.
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int analogInput = 7;
float Energy = 0.0;
float vout = 0.0;
float vin = 0.0;
float R1 = 50900.0;
float R2 = 4370.0;
int value = 0;
int SW1 = 22;
int SW2 = 23;
int SW3 = 24;
int SW4 = 25;
int SW5 = 26;
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int val5 = 0;
void setup()
{
// LCD 단자 입출력 설정
pinMode(13, OUTPUT);
pinMode(analogInput, INPUT);
//———————————-
// 단계 조절 스위치 입출력 설정
pinMode(11, OUTPUT);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
pinMode(SW3, INPUT);
pinMode(SW4, INPUT);
pinMode(SW5, INPUT);
lcd.begin(16, 2);
}
void loop()
{
val1 = digitalRead(SW1);
val2 = digitalRead(SW2);
val3 = digitalRead(SW3);
val4 = digitalRead(SW4);
val5 = digitalRead(SW5);
value = analogRead(analogInput);
// LCD 출력 함수 계산식
vout = (value * 5.0) / 1024.0;
vin = vout / (R2/(R1+R2));
Energy = ((vin*vin*50)-(3*3*50))/8662.5*100; //((((vin*vin) * 400)) / 26000) * 100;
//————————————————-
// Fast PWM 설정
TCCR1A = _BV(COM1A1) | _BV(WGM10); //Fast PWM_8bit_Non_toggle_mode
TCCR1B = _BV(WGM12) | _BV(CS10); //(prescaler_1)
//(prescaler_1)___62.5k_(prescaler_8)___7.81k_(prescaler_64)___0.9kHz
//————————————————-
lcd.setCursor(2, 0);
lcd.print(“BAT=”); //lcd.print(“P=”);
lcd.print(Energy); //lcd.print(Energy);
lcd.print(“% “); //lcd.print(“%”);
if(val1 & !val2 & !val3 & !val4 & !val5)
{
OCR1A = 2.55; // 1%(2.55) 40(102)%
lcd.setCursor(2, 1);
lcd.print(“LEVEL=”);
lcd.print(1);
}
if(!val1 & val2 & !val3 & !val4 & !val5)
{
OCR1A = 107.1; //42%(107.1) 67%(171)
lcd.setCursor(2, 1);
lcd.print(“LEVEL=”);
lcd.print(2);
}
if(!val1 & !val2 & val3 & !val4 & !val5)
{
OCR1A = 183.6; //72%(183.6) 82%(209)
lcd.setCursor(2, 1);
lcd.print(“LEVEL=”);
lcd.print(3);
}
if(!val1 & !val2 & !val3 & val4 & !val5)
{
OCR1A = 229.5; //90%(229.5) 92%(235)
lcd.setCursor(2, 1);
lcd.print(“LEVEL=”);
lcd.print(4);
}
if(!val1 & !val2 & !val3 & !val4 & val5)
{
OCR1A = 255; //100%(255)
lcd.setCursor(2, 1);
lcd.print(“LEVEL=”);
lcd.print(5);
}
delay(500);
}
시행착오 및 수정사항
처음 작품을 구성하였을 때, 우리는 DC모터를 사용할 계획이었다. 그러나 출력 값을 확인해 본 결과 전력 값이 너무 작았다. 그래서 충분한 전력 값과 빠른 충전시간을 설정해주기 위해서 BLDC MOTOR 2개로 변경하였다. 모터의 개수가 늘어났기 때문에 자가 발전운동기구의 외관과 베어링을 좀 더 안정적으로 만들고, 체인의 길이를 늘였다.
다음으로 슈퍼 커패시터 8개를 병렬로 연결하여 충전량을 확인하였다. 그런데 정전용량 값이 너무 커서 충전 및 방전하는데 있어서 너무 효율이 떨어진다고 생각되어 커패시터를 4개만 사용하여 용량을 줄였다. 그리고 슈퍼 커패시터를 단단하게 고정시키기 위해서 지지대를 설치했다.
마이크로 컨트롤러 부분인 Arduino의 전원을 연결하기 위해서 반도체릴레이를 사용하였다. 그러나 PWM의 Duty값이 낮아지면, 운동을 하고 나온 출력에 서지전압이 발생하여 반도체릴레이가 손상되는 문제점이 발견되었기 때문에, 서지전압을 억제하기 위해 VARISTOR를 사용하였다. 아두이노의 reference를 확인하면서 우리가 구성한 작품의 알맞은 분주비 코드를 찾고, 설정하는 데에 있어서 몇 번의 실패가 있었지만 여러 번의 노력 끝에 정확한 동작을 얻을 수 있었다.