[Wireless Control Micromouse] 무선 조정 마이크로마우스 with VHDL
본 자료는 8페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
해당 자료는 8페이지 까지만 미리보기를 제공합니다.
8페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

*서론
1) 제작 목적 및 수행범위
2) 동작 개요

*본론
1) 각 부 동작 설명
① 리모컨부 개요
② 리모컨부 블록 다이어그램
③ 리모컨부 회로도
④ 마이크로 마우스 본체 개요
⑤ 본체 블록 다이어그램
⑥ 본체 회로도
⑦ StepMotor 동작부 개요
2) StepMotor 설명
3) RF통신 설명
4) Source Code
5) Simulation

*결론
1) 제작물 사진
2) 고찰

본문내용

<= '1'; --오른쪽바퀴 작동 A
MotRdir <= '1'; --시계 방향
MotLen <= '1'; --왼쪽바퀴 작동 B
MotLdir <= '1'; --시계 방향?
--speed 체크 후 적용
if(sTempSp = "00")then--저속
--MotRclk <= sMot1SpR;
--MotLclk <= sMot1SpL;
MotRclk <= sMot1SpRleft;
MotLclk <= sMot1SpLleft;
elsif(sTempSp = "01")then--중속
--MotRclk <= sMot2SpR;
--MotLclk <= sMot2SpL;
MotRclk <= sMot2SpRleft;
MotLclk <= sMot2SpLleft;
--elsif(sTempSp = "01")then--고속
--MotRclk <= sMot3SpR;
--MotLclk <= sMot3SpL;
else
MotRclk <= '0';
MotLclk <= '0';
end if;
when "00010" => -- 우
MotRen <= '1'; --오른쪽바퀴 작동 A
MotRdir <= '0'; --반시계방향
MotLen <= '1'; --왼쪽바퀴 작동 B
MotLdir <= '0'; --반시계방향
--speed 체크 후 적용
if(sTempSp = "00")then--저속
--MotRclk <= sMot1SpR;
--MotLclk <= sMot1SpL;
MotRclk <= sMot1SpRright;
MotLclk <= sMot1SpLright;
elsif(sTempSp = "01")then--중속
--MotRclk <= sMot2SpR;
--MotLclk <= sMot2SpL;
MotRclk <= sMot2SpRright;
MotLclk <= sMot2SpLright;
--elsif(sTempSp = "01")then--고속
--MotRclk <= sMot3SpR;
--MotLclk <= sMot3SpL;
else
MotRclk <= '0';
MotLclk <= '0';
end if;
when "00001" => -- 정지
MotRen <= '0';
MotRdir <= '0';
MotLen <= '0';
MotLdir <= '0';
MotRclk <= '0';
MotLclk <= '0';
when others => -- others...
MotRen <= '0';
MotRdir <= '0';
MotLen <= '0';
MotLdir <= '0';
MotRclk <= '0';
MotLclk <= '0';
end case;
end process;
end sample;
5) Simulation
① 리모컨부
② 마이크로 마우스 본체부
3. 결론
1) 제작물 사진
<리모컨부 사진>
<제작중 일때의 본체와 리모컨>
<본체 상단>
<본체 측면>
2) 고찰
: 이번 Project를 진행하면서 정말 많은 시행착오를 겪었으며 제 스스로에 대해 많은 것을 깨우치게 되는 뜻 깊은 시간 이었습니다. 우선 이번 저희 팀의 Project는 다른 팀과는 달리 하드웨어적인 설계와 소프트웨어적인 설계 두 가지를 병행하여 처리하여야 했습니다. 그래서 같은 팀의 팀원인 이종승 학우는 하드웨어쪽을 맡게 되었고 저는 소프트웨어쪽을 전담하여 작업을 진행하였습니다. 우선 제가 맡은 소프트웨어쪽은 VHDL을 이용하여 리모컨의 입력신호에 따른 데이터 패킷을 생성하고 이를 9600bps로 분주시켜 직렬로 데이터를 전송하며 이를 마이크로 마우스 본체에서 수신하여 databit와 speedbit로 추출하여 StepMotor를 제어하는 것을 작성하였습니다. 첫 번째 시행착오는 최초 전, 후, 좌, 우, 속도조절의 동작을 생각하여 코드를 작성하다 보니 안정적인 동작을 하기가 힘들다는 판단을 하였습니다. 그래서 정지신호를 추가하였고 최종적으로는 전, 후, 좌, 우, 정지, 속도조절의 입력신호를 사용하게 되었습니다. 두 번째 시행착오는 본체부분에서 패킷데이터를 수신하고 startbit가 일치할 경우 databit와 speedbit를 검출하고 이를 각 부의 제어신호로 사용하게 되는데 여기서 speedbit를 검출한다음 1단계, 2단계 속도의 제어를 가능하게 하기 위해 각각의 내부 clk을 생성하였는데 예를 들어 integer type의 20000까지 연산이 가능한 signal을 선언하고 이와 같은 signal을 몇 개 생성하였더니 저희가 사용하는 EMP7128SLC84-15에서 게이트가 부족하다는 경고가 발생하였습니다. 그래서 이를 해결하기 위해 400 X 500 이런식으로 보다 작은 signal을 여러개 생성하고 이를 돌려서 결과적으로는 같은 결과를 도출하게 작성하였습니다. 그리고 마지막으로 가장 중요한 StepMotor의 제어신호를 생성하는 부분에서 각 databit와 speedbit를 검사하여 방향과 속도를 조절하게 되는데 속도를 조절하는 부분에서 방금전에 기술한 방법을 사용하여 1단계, 2단계 속도조절 내부clk을 생성하고 이를 assign하는 과정에서 하나의 이전에 자주 사용하던 C프로그래밍 언어처럼 생각하고 하나의 signal을 경우에 따라 모두 assign하고 동작을 시켰더니 어떤 방향은 정상작동하고 또 다른 방향은 작동이 잘 되지 않는 현상이 발생하였습니다. 이는 입력으로 들어가는 내부 clk의 문제라고 판단하여 각 방향에 따른 내부 clk을 별도로 assign하였더니 모든 것이 잘 작동하였습니다. 소프트웨어 적인 문제 말고도 하드웨어 적으로도 많은 문제점이 발생 하였습니다. 분명 입력신호를 주지 않았는데도 노이즈가 발생하여 ‘1’의 신호인 입력신호가 들어가는 것처럼 회로상에 서 돌고 있었던 문제점들, 그리고 RF모듈과 크리스탈에서의 노이즈 이러한 것들도 Full-down 저항을 이용하고, 콘덴서를 이용한 필터링 기법을 사용하면서 해결하였고 이 모든 오류들이 지금 생각하여 보면 정말 어처구니가 없고 간단한 해결법들이지만 당시의 생각으로는 너무 답답하였습니다. 지금 Project를 모두 끝내고 나서 저의 모습을 되돌아 보니 이제는 어엿한 시스템 엔지니어가 된 것 같은 기분이 듭니다. 한학기 동안 정말 수고하셨습니다. 그리고 감사합니다.

키워드

  • 가격3,000
  • 페이지수24페이지
  • 등록일2007.12.05
  • 저작시기2006.12
  • 파일형식한글(hwp)
  • 자료번호#440447
본 자료는 최근 2주간 다운받은 회원이 없습니다.
  • 편집
  • 내용
  • 가격
청소해
다운로드 장바구니