목차
1. 서론
1.1 작품에 대한 개요
1.2 설계과제의 필요성
1.3 설계과제 수행의 제약요인
1.4 설계과제 수행결과 기대효과
1.5 설계배경
2. 설계
2.1 관련이론
2.2 개념설계
2.3 상세설계
3. 제작
3.1 제작시 문제점 토의
4. 실험 및 결과
4.1 실험 사진
4.2 결과 및 성능
1.1 작품에 대한 개요
1.2 설계과제의 필요성
1.3 설계과제 수행의 제약요인
1.4 설계과제 수행결과 기대효과
1.5 설계배경
2. 설계
2.1 관련이론
2.2 개념설계
2.3 상세설계
3. 제작
3.1 제작시 문제점 토의
4. 실험 및 결과
4.1 실험 사진
4.2 결과 및 성능
본문내용
d%d:%d%d \",hour1H,hour1L,min1H,min1L);//알람출력
lcd_puts(lcd_text2);
sprintf(lcd_text3,\"%c\",bang);
lcd_puts(lcd_text3);
lcd_putchar(0);
lcd_puts(lcd_text3);
}
TCNT0 = 56; //TCNT0을 56으로 초기화
}
- 18 -
void main(void)
{
DDRA=0x00;
PORTA=0x00;
DDRB=0xff;
PORTB=0x00;
TCCR0=0x02; //prescaler를 8로 나누어줌
TCNT0=0x00;
OCR0=0x00;
TIMSK=0x01; //Timer/Counter0 Overflow Interrupt Enable
ADMUX = 0x00; //ADC0을 사용
ADCSRA = 0x87; //ADC Enable, ADC Prescaler를 128로 나누어줌
UCSRA = 0x00;
UCSRB = 0x18; //Receiver Enable, Transmitter Enable
UCSRC = 0x86; //Register Select
UBRRH = 0;
UBRRL = 103;
lcd_init(16);
//.........................................................초기 화면
- 19 -
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf(\"-DIGITAL WATCH-\");
lcd_gotoxy(0,1);
lcd_putsf(\" -4TH V O L T-\");
delay_ms(2000);
lcd_clear();
#asm(\"sei\")
define_char(backslash,0); //CG RAM에 원하는 패턴을 입력
lcd_clear();
while (1)
{
//.........................................................USART알람입력
rx = getchar();
switch (rx)
{
case \'1\' :{
hour1L++;
if (hour1L == 10)
{
hour1H++;
hour1L = 0;
}
if (hour1H == 2 && hour1L == 4 )
{
hour1L=0;
hour1H = 0;
}
}
break;
case \'2\' :{
min1L++;
- 20 -
if (min1L == 10)
{
min1H++;
min1L = 0;
}
if (min1H == 6)
{
hour1L++;
min1H = 0;
}
}
break;
case \'0\' :
min1H = 0, min1L = 0;
hour1H = 0,hour1L = 0;
break;
}
};
}
- 21 -
3. 제작
3.1) 제작 시 문제점 토의
- 초음파센서의 하드웨어적 문제
▶▶ 거리측정센서로 대체
- 타이머 카운터와 USART를 동시에 사용할 때 타이머 정지
▶▶ While문에서 USART명령어만을 놔두고 나머지 명령어
While문 탈출
- PIC8051에서나오는 전류로 동작부(DC모터) 연결 시,
전원부에서의 낮은 입력 전압으로 인한 미작동
▶▶ 트랜지스터 스위치를 사용한 외부전류제어로 DC모터 구동
- 재구입시 부품 및 재료 구입의 어려움
▶▶ 부품의 결함 등의 문제로 재구입시 부품들을 구매하기 위해 직접방문 시도
- 재료비 절감을 위해 사용한 바퀴가 완벽한 수평을 이루지 못해
한쪽으로 치우치는 현상이 발생
▶▶ 문제점 보안을 위해 논의함
- 부저를 사용함에 있어 마이크로컨트롤러에서 나오는 전류로 동작 할 것이라고 가정
▶▶ 트랜지스터가 스위치로 동작 할 때 부저 동작
- 22 -
4. 실험 및 결과
4.1) 실험 사진
-부분별 사진
<사진1>
<사진2>
- Reset부분과 PIC8051로 5V의 전압을 인가해주는 7805의 모습
- 기판 오른쪽의 점퍼케이블은 기판이 이층구조로 되어있기 때문에 작업시 불편함을 없애기 위해 PIC8051의 PORT를 한 덩어리로 묶어 놓은 것
- 메인 기판 아래에 DC모터와 바퀴를 달아 알람이 울리고 거리측정 센서가 작동하면 움직임을 줄 수 있도록 설치된 모습
- 23 -
<사진3>
<사진4>
- 기존의 초음파 센서를 코딩하고 ADC를 사용하려고 하는 과정에서 하드웨어적인 문제 때문에 사용이 불가
- 새로운 초음파센서 구입을 위해 알아보던 중, 가격대비 성능이 뛰 어난 거리측정 센서라는 것이 있다는 것을 알고 초음파보다 저렴 한 가격으로 구입
- 이층 기판으로 16*2 LCD와 시간과 알람을 조정하기 위한 스위치
- 24 -
- 제작과정 사진
<사진5>
<사진6>
- 바퀴에 DC모터를 장착하는 과정으로 바퀴와 모터의 기어가 연결되지 않아 이를 보완하는 과정
- 초음파센서의 하드웨어적 결함으로 대체 부품인 거리측정 센서로 프로그램 수정하는 과정
- 25 -
<사진7>
<사진8>
- 기존의 트랜지스터를 스위치로 사용하여 모터를 구동시켰지만 힘이 너무 약해 몸체를 이동시키 불가능하여 모터를 때어낸 후 다른
해결책 모색하는 과정
- 비교/분석을 하며 보고서 작성하는 과정
- 26 -
4.2) 결과 및 성능
- “도망가는 알람시계”는 PIC8051를 이용해서 알람시계를 구현한 것인데 시간을 시각적으로 표현해 줄 수 있는 16*2 LCD와 알람이 울리게 될시 소리를 나게 해주는 부저, 도망가는 것을 구현하기 위한 모터, 모터를 PIC8051로 스위칭하기 위한 릴레이 등으로 구성 되어있다.
PIC8051의 주요기능인 타이머/카운터를 사용하여 시계를 구현하고, ADC를 사용하여 거리측정센서의 거리 값을 받아들여 알람이 울릴시 모터를 구동시켜 도망가게 되는 것이다. 본체에는 알람을 맞출 수 있는 스위치와 현재시간을 맞출 수 있는 스위치가 달려있고, 컴퓨터와의 통신 즉, RS232를 통해 컴퓨터로 알람을 맞출 수 있게 제작 되었다. 본체의 입력 전압은 9VDC전압을 사용하고, 모터를 구동하는 것은 외부전압인 4.5V의 건전지가 추가적으로 들어가 있다.
알람이 울리면 부저가 울리고 알람을 끄기 위해 손이 다가가면 모터를 구동해 도망가게 된다. 물론 외부 스위치로 알람을 제어 할 수 있게 제작되어 있다.
- 27 -
lcd_puts(lcd_text2);
sprintf(lcd_text3,\"%c\",bang);
lcd_puts(lcd_text3);
lcd_putchar(0);
lcd_puts(lcd_text3);
}
TCNT0 = 56; //TCNT0을 56으로 초기화
}
- 18 -
void main(void)
{
DDRA=0x00;
PORTA=0x00;
DDRB=0xff;
PORTB=0x00;
TCCR0=0x02; //prescaler를 8로 나누어줌
TCNT0=0x00;
OCR0=0x00;
TIMSK=0x01; //Timer/Counter0 Overflow Interrupt Enable
ADMUX = 0x00; //ADC0을 사용
ADCSRA = 0x87; //ADC Enable, ADC Prescaler를 128로 나누어줌
UCSRA = 0x00;
UCSRB = 0x18; //Receiver Enable, Transmitter Enable
UCSRC = 0x86; //Register Select
UBRRH = 0;
UBRRL = 103;
lcd_init(16);
//.........................................................초기 화면
- 19 -
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf(\"-DIGITAL WATCH-\");
lcd_gotoxy(0,1);
lcd_putsf(\" -4TH V O L T-\");
delay_ms(2000);
lcd_clear();
#asm(\"sei\")
define_char(backslash,0); //CG RAM에 원하는 패턴을 입력
lcd_clear();
while (1)
{
//.........................................................USART알람입력
rx = getchar();
switch (rx)
{
case \'1\' :{
hour1L++;
if (hour1L == 10)
{
hour1H++;
hour1L = 0;
}
if (hour1H == 2 && hour1L == 4 )
{
hour1L=0;
hour1H = 0;
}
}
break;
case \'2\' :{
min1L++;
- 20 -
if (min1L == 10)
{
min1H++;
min1L = 0;
}
if (min1H == 6)
{
hour1L++;
min1H = 0;
}
}
break;
case \'0\' :
min1H = 0, min1L = 0;
hour1H = 0,hour1L = 0;
break;
}
};
}
- 21 -
3. 제작
3.1) 제작 시 문제점 토의
- 초음파센서의 하드웨어적 문제
▶▶ 거리측정센서로 대체
- 타이머 카운터와 USART를 동시에 사용할 때 타이머 정지
▶▶ While문에서 USART명령어만을 놔두고 나머지 명령어
While문 탈출
- PIC8051에서나오는 전류로 동작부(DC모터) 연결 시,
전원부에서의 낮은 입력 전압으로 인한 미작동
▶▶ 트랜지스터 스위치를 사용한 외부전류제어로 DC모터 구동
- 재구입시 부품 및 재료 구입의 어려움
▶▶ 부품의 결함 등의 문제로 재구입시 부품들을 구매하기 위해 직접방문 시도
- 재료비 절감을 위해 사용한 바퀴가 완벽한 수평을 이루지 못해
한쪽으로 치우치는 현상이 발생
▶▶ 문제점 보안을 위해 논의함
- 부저를 사용함에 있어 마이크로컨트롤러에서 나오는 전류로 동작 할 것이라고 가정
▶▶ 트랜지스터가 스위치로 동작 할 때 부저 동작
- 22 -
4. 실험 및 결과
4.1) 실험 사진
-부분별 사진
<사진1>
<사진2>
- Reset부분과 PIC8051로 5V의 전압을 인가해주는 7805의 모습
- 기판 오른쪽의 점퍼케이블은 기판이 이층구조로 되어있기 때문에 작업시 불편함을 없애기 위해 PIC8051의 PORT를 한 덩어리로 묶어 놓은 것
- 메인 기판 아래에 DC모터와 바퀴를 달아 알람이 울리고 거리측정 센서가 작동하면 움직임을 줄 수 있도록 설치된 모습
- 23 -
<사진3>
<사진4>
- 기존의 초음파 센서를 코딩하고 ADC를 사용하려고 하는 과정에서 하드웨어적인 문제 때문에 사용이 불가
- 새로운 초음파센서 구입을 위해 알아보던 중, 가격대비 성능이 뛰 어난 거리측정 센서라는 것이 있다는 것을 알고 초음파보다 저렴 한 가격으로 구입
- 이층 기판으로 16*2 LCD와 시간과 알람을 조정하기 위한 스위치
- 24 -
- 제작과정 사진
<사진5>
<사진6>
- 바퀴에 DC모터를 장착하는 과정으로 바퀴와 모터의 기어가 연결되지 않아 이를 보완하는 과정
- 초음파센서의 하드웨어적 결함으로 대체 부품인 거리측정 센서로 프로그램 수정하는 과정
- 25 -
<사진7>
<사진8>
- 기존의 트랜지스터를 스위치로 사용하여 모터를 구동시켰지만 힘이 너무 약해 몸체를 이동시키 불가능하여 모터를 때어낸 후 다른
해결책 모색하는 과정
- 비교/분석을 하며 보고서 작성하는 과정
- 26 -
4.2) 결과 및 성능
- “도망가는 알람시계”는 PIC8051를 이용해서 알람시계를 구현한 것인데 시간을 시각적으로 표현해 줄 수 있는 16*2 LCD와 알람이 울리게 될시 소리를 나게 해주는 부저, 도망가는 것을 구현하기 위한 모터, 모터를 PIC8051로 스위칭하기 위한 릴레이 등으로 구성 되어있다.
PIC8051의 주요기능인 타이머/카운터를 사용하여 시계를 구현하고, ADC를 사용하여 거리측정센서의 거리 값을 받아들여 알람이 울릴시 모터를 구동시켜 도망가게 되는 것이다. 본체에는 알람을 맞출 수 있는 스위치와 현재시간을 맞출 수 있는 스위치가 달려있고, 컴퓨터와의 통신 즉, RS232를 통해 컴퓨터로 알람을 맞출 수 있게 제작 되었다. 본체의 입력 전압은 9VDC전압을 사용하고, 모터를 구동하는 것은 외부전압인 4.5V의 건전지가 추가적으로 들어가 있다.
알람이 울리면 부저가 울리고 알람을 끄기 위해 손이 다가가면 모터를 구동해 도망가게 된다. 물론 외부 스위치로 알람을 제어 할 수 있게 제작되어 있다.
- 27 -
소개글