RTX15를 이용한 라인트레이서 line tracer 마이크로 프로세스과목 설계보고서임
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

RTX15를 이용한 라인트레이서 line tracer 마이크로 프로세스과목 설계보고서임에 대한 보고서 자료입니다.

목차

1. 설계 목적

2. 설계 목표

3. 구동 원리

4. 주요 부품 및 설계 내용

5. 개선점 및 고찰

6. 후 기

본문내용

, counter2;
bit LSTATE, RSTATE, MODE;
job0 () _task_ 0 {
Dir_A= 0, Dir_B = 0, Enable_A = 0, Enable_B = 0;
os_create_task(1);
os_create_task(2);
while(1){
os_wait2(K_IVL, 5);
DATA = P0 & 0xf0;
if(TURN == 40) os_send_signal(2);
else if(DATA == 0x00) TURN++;
else os_send_signal(1);
}
}
job1 () _task_ 1 {
while(1){
os_wait1(K_SIG);
switch(DATA){
case 0x90 ://1001
Dir_A = 0, Dir_B = 0;
while(++cnt <= 10){
Enable_B = 1;
if(cnt == 1)
Enable_A = 0;
else
Enable_A = 1;
} break;
case 0xb0 ://1011
Dir_A = 0, Dir_B = 0;
while(++cnt <= 10){
Enable_B = 1;
if(cnt == 1 || cnt == 2)
Enable_A = 0;
else
Enable_A = 1;
} break;
case 0xd0 ://1101
Dir_A = 0, Dir_B = 0;
while(++cnt <= 10){
Enable_A = 1;
if(cnt == 1 || cnt == 2)
Enable_B = 0;
else
Enable_B = 1;
} break;
case 0x30 ://0011
while(++cnt <= 10){
Dir_A = 0, Dir_B = 0;
Enable_B = 1;
if(cnt == 1 || cnt == 2 || cnt == 3)
Enable_A = 0;
else
Enable_A = 1;
} break;
case 0xc0 ://1100
while(++cnt <= 10){
Dir_A = 0, Dir_B = 0;
Enable_A = 1;
if(cnt == 1 || cnt == 2 || cnt == 3)
Enable_B = 0;
else
Enable_B = 1;
} break;
case 0x10 ://0001
while(++cnt <= 10){
Dir_A = 0, Dir_B = 0;
Enable_B = 1;
if(cnt == 1)
Enable_A = 1;
else
Enable_A = 0;
} break;
case 0x80 ://1000
while(++cnt <= 10){
Dir_A = 0, Dir_B = 0;
Enable_A = 1;
if(cnt == 1)
Enable_B = 1;
else
Enable_B = 0;
} break;
case 0x70 ://0111
while(++cnt <= 10){
Dir_A = 0, Dir_B = 0;
Enable_B = 1;
Enable_A = 0;
} break;
case 0xe0 ://1110
while(++cnt <= 10){
Dir_A = 0, Dir_B = 0;
Enable_A = 1;
Enable_B = 0;
} break;
default :
while(++cnt <= 2){
Dir_A = 1, Dir_B = 1, Enable_A = 1, Enable_B = 1;
} break;
}
cnt = 0, TURN = 0;
}
}
job2 () _task_ 2{
while(1){
os_wait1(K_SIG);
Enable_A = 0, Enable_B = 0;
while(LCHECK < 7){
LSTATE = ENCOL;
if(LSTATE != ENCOL) LCHECK++;
Dir_A = 1, Dir_B = 1, Enable_A = 1, Enable_B = 1;
}
while(RCHECK < 10){
RSTATE = ENCOR;
if(RSTATE != ENCOR) RCHECK++;
Dir_A = 1, Dir_B = 0, Enable_A = 1, Enable_B = 1;
}
Enable_A = 0, Enable_B = 0,TURN = 0, LCHECK = 0, RCHECK = 0;
}
}
5. 개선점 및 고찰
개 선 점
회로도에는 버퍼가 없어서 처음에는 그대로 만들었는데 테스트를 해보니 LED에 불빛도 약하고 신호도 확실치 못했다. 나중에 버퍼를 넣고 보니 제대로 개선이 되었다. 그리고 센서부의 가변저항을 하나만 설치해서 동작시켜보니 센서부가 각자 약간의 감도 차이가 있어서 하나의 저항으로 모든 센서를 정확히 제어하기 힘들어서 센서부의 가변저항을 센서마다 각각 한 개씩 달아주었다. 그렇게 함으로써 각 각의 센서부의 감도를 정밀하게 제어할 수 있게 되었다.
처음 받은 모터를 장착하여 동작시켜보니 두 모터가 속도 차이가 너무 많이 나서 모터를 교체하고 나니 비슷한 속도가 나왔다.
P0 포트를 출력포트로 지정하고 프로그램을 넣었는데 출력이 나오지 않았다. 그래서 많은 시간동안 에러점을 찾을려고 노력했는데, 알고 보니 P0 포트는 오픈 컬랙터여서 저항을 달아줘야 한다는 것을 알게 되었다.
고 찰
Photo interrupt를 사용한 U턴 제어를 가능케 했다.
직각 회전 및 좌우회전은 모터의 좌우 출력비를 이용했다.
바깥트랙 18초에 완주하고 안쪽트랙을 29초에 완주하였다.
6. 후 기
작년에 했던 설계들은 만들어져 있는 Kit에 소스만 직접 작성해서 작동시키는 것이어서 작동에 오류가 있으면 소스만을 고민하면 되었지만 이번 라인트레이서 설계는 하드웨어, 소프트웨어 모든 것을 직접 만들어 내야 했기 때문에 작동에 오류가 발생해도 어떤 것이 문제인지 찾아내는 일이 가장 힘들었다.
라인트레이서를 완성 시킬 때 까지 수많은 밤을 지새워야했다. 하드웨어를 구성하는데 있어서 에러가 자주 발생하여서 디버깅하는데 어떤 것은 하루가 걸린 적도 있었고, 처음에는 당황하고 디버깅하는데 많은 시간이 걸렸지만 완성할 때 쯤 에는 쉽게 할 수 있었다. 이번 설계를 하면서 특히 이 디버깅하는 방법을 많이 배우고 몸으로 직접 느낄 수 있었다. 예전에는 회로가 잘 안되면 아예 부품을 다시 분해해서 새로 선을 잇고 하였으나, 이제는 이런 과정을 하지 않고 바로 디버깅을 하였다.
  • 가격2,000
  • 페이지수12페이지
  • 등록일2009.07.18
  • 저작시기2009.6
  • 파일형식한글(hwp)
  • 자료번호#545947
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니