★의뢰는 instructables.tistory.com/64 로 부탁합니다.
솔라카 관련 부품및 제작 댓글로 질문 주셔도 됩니다. (이메일 남겨주세요)
용산 솔라차 찾으시는 분들도 환영합니다.
▼검색 키워드들
▲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가 머금을 수 있는 전류를 비교해서 맞춰주면 된다.
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;
}
}
}