졸업작품/태양광 추적

솔라카(=Solar Car) 중앙대 기계과 2학년 과정

ElectricShock 2017. 5. 10. 03:26

★의뢰는 instructables.tistory.com/64 로 부탁합니다.

솔라카 관련 부품및 제작 댓글로 질문 주셔도 됩니다. (이메일 남겨주세요)

용산 솔라차 찾으시는 분들도 환영합니다.



▼검색 키워드들

Favicon of m.search.naver.com [솔라카 모터]

Favicon of search.naver.com [중앙대기계과]

Favicon of m.search.naver.com [2017 솔라카 경진대회]

Naver[솔라카 원리]


naver[용산 전자상가 솔라카] 







▲Solar Car 경진대회 사진이다.

2017년 5월 9일 대선전날 8일에 용산에 갈일이 있었다.

그날 유독 중앙대 기계과 2학년들이 Solar Car때문에 오길래 그게 뭐 그리 대단한건가 한번 찾아봤다.

▲위 그림이 모든것을 설명해준다.

모터를 Solar Panel에서 Capacitor로 충전을 하고, 모인전력을 Motor로 보내 동작시키는 원리이다.

솔라카 모터는 따로 정해진건 없다. 다만 일반DC모터와 Geared DC모터를 쓰면 속도가 달라진다.

Capacitor를 High-Pass Filter 용도로 사용했다고 보면된다.

capacitor current equation에 따르면

Motor소모전류를 Tester를 통해 체크하고

위 전류공식에 맞게 capacitor가 머금을 수 있는 전류를 비교해서 맞춰주면 된다.

▶Motor 소모전류 체크법


http://hj630lee.tistory.com/219

블루투스 통신을 이용했다.

모바일에서 블루투스로 a,b,c,d,e,f등을 보내면 그에 맞게 앞바퀴를 움직인다.


 


ATmega8에 크리스탈을 달고 16Mhz를 이용해 구성했다.


 


 


 


////


 


#define F_CPU 16000000

#include <avr/io.h>

#include <avr/delay.h>

#include <avr/interrupt.h>


#define DELAY1 30

#define DELAY2 50

#define DELAY3 100

#define DELAY4 200

#define DELAY5 300



volatile unsigned char RxData=0, RxFlag=0, DataFlag=0;

volatile unsigned char TimerFlag=0;


 


ISR(USART_RXC_vect)

{

 RxData=UDR;  

 UART_Tx(RxData);


 if(RxData == 'a'){DataFlag=1;}

 else if(RxData == 'b'){DataFlag=2;}

 else if(RxData == 'c'){DataFlag=3;}

 else if(RxData == 'd'){DataFlag=4;}

 else if(RxData == 'e'){DataFlag=5;}


 else if(RxData == 'f'){DataFlag=6;}

 else if(RxData == 'B'){DataFlag=7;}

 else if(RxData == 'C'){DataFlag=8;}

 else if(RxData == 'D'){DataFlag=9;}

 else if(RxData == 'E'){DataFlag=10;}

 

 

 RxFlag=1;

}



void UART_Tx(char TxData){ while(!(UCSRA&(1<<UDRE))); UDR=TxData;}


void UART_Init(void)

{

 UCSRA=0; 

 UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN); 

 UCSRC=(1<<UCSZ1)|(1<<UCSZ0); 

 UBRRH=0; 

 //UBRRL=8;  //115200bps

 UBRRL=103;  //9600bps  

}


 


int main(void)

{

 DDRB=0xff;

 UART_Init();

 sei();

 


 while(1)

 {

 

  if(RxFlag==1)

  { 

   if(DataFlag==1)  {PORTB=0x01; _delay_ms(DELAY3); PORTB=0x00;}

   else if(DataFlag==2){PORTB=0x01; _delay_ms(DELAY4); PORTB=0x00;}

   else if(DataFlag==3){PORTB=0x02; _delay_ms(DELAY3); PORTB=0x00;}

   else if(DataFlag==4){PORTB=0x02; _delay_ms(DELAY4); PORTB=0x00;}



   else if(DataFlag==5){PORTB=0x01; _delay_ms(DELAY5); PORTB=0x00;}

   else if(DataFlag==6){PORTB=0x02; _delay_ms(DELAY5); PORTB=0x00;}

/*

   else if(DataFlag==7){PORTB=0x02; _delay_ms(DELAY2); PORTB=0x00;}

   else if(DataFlag==8){PORTB=0x02; _delay_ms(DELAY3); PORTB=0x00;}

   else if(DataFlag==9){PORTB=0x02; _delay_ms(DELAY4); PORTB=0x00;}

   else if(DataFlag==10){PORTB=0x02; _delay_ms(DELAY5); PORTB=0x00;}

  */

   DataFlag=0;

   RxFlag=0;  

  }

 

 

 }

}