Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도

Slides:



Advertisements
Similar presentations
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
Advertisements

독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
Power Calculation in AC Circuits
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여

전남행복수업 design 독서ㆍ토론 수업 지원 자료 활용 목포유달초등학교 김미향.
전남행복수업 design, 독서·토론수업 연구의 개요를 말씀드리겠습니다..
1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
Introduction 2007년 2학기.
VHDL Package & Subprogram
Copyright SangSangDom, All Rights Reserved.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
MAX+PLUS II 개요.
디지털 시계 설계.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
Design of Digital Clock (디지털 시계의 설계)
고교평준화의 득과 실 김영주 이지영 최윤영.
VHDL을 이용한 통신 칩 설계 -DS/SS MODEM 설계를 중심으로-
VHDL, FPGA를 이용한 소리인식 스위치 (Matched Filter 사용)
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
순차로직 개요.
디지털 산술과 연산회로.
1. VHDL과 합성 설계 1.1 HDL: Hardware Description Language 집적회로의 설계환경의 변화
가산기 설계.
Multiplexer 설계.
VHDL의 기본 Lecture #5.
자동제어 실험(2) 라인트레이서 제어.
Verilog HDL 이론.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
VHDL의 개요 김 인 수.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
MAX+PLUS II 설치 및 디지털 시스템의 설계 방법
VHDL Package and Sub program
Stop Watch 구현 Lecture #12.
II. VHDL 설계부 4장. VHDL 개요 5장. VHDL 설계 구성 6장. VHDL 객체 및 타입 7장. VHDL 모델링
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
디지털 시스템 설계(2).
Stepping Motor.
FSM 설계.
Flip-Flop 설계.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
Section 02 덧셈 회로 BCD 덧셈 회로 BCD 코드에서 십진수 (16)BCD =
오브젝트 하드웨어 기술 언어 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Programmable Logic Device
VHDL Mealy and Moore model
MEDICAL INSTRUMENTATION
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
VHDL.
VHDL 디지털시계 2.
가산기 설계.
디 지 털 공 학 한국폴리텍V대학.
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
LCD.
대기오염 Made By 조성빈.
실습 9 / 부울식 구현(결합 법칙을 이용한 논리회로 구현)
Report #4 (1) (due 4/4) 문제 #1 3개의 막대 A, B, C와 원판 n개를 전달받아 Hanoi 탑 문제를 해결하는데 필요한 원판의 이동 회수를 구하여 반환하는 hanoi_tower(n, A, B, C)를 작성하라. 여기서 원판 n은 막대 A에 쌓여 있고.
시민이 체감하는 편리한 건축인허가 절차 개선 추진.
중학교 2학년 과학 1. 여러 가지 운동 > 1) 물체의 운동 방향이 변하는 운동에는 어떤 것이 있을까?
시스템 분석 및 설계 2007학년도 2학기 멀티미디어공학과 2학년 대상 담당교수 박태희
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
VHDL 응용 Lecture #10.
Presentation transcript:

Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도 (선을 잘 따라가도록 판단 및 제어) (바퀴를 굴려줌) (선 감지)

라인 트레이서의 설계 - 개념도 라인 트레이서 VHDL 코드 작성 개념도

라인 트레이서의 설계 - Design 센서 데이터에 따른 좌,우 모터 속도 결정 센서 데이터 (중앙의 5비트) 좌, 우 모터 속도 (11:320Hz, 10:200Hz, 01:100Hz, 00:정지) 좌 우 비고 11011 11 빠른 직진 10001 01 느린 직진 10011 10 느린 우회전 10111 빠른 우회전 00011 00111 01111 11001 느린 좌회전 11101 빠른 좌회전 11000 11100 11110 그 외 00 정지

라인 트레이서의 설계 - Design library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;   entity line_tracer is     Port ( RSTB : in std_logic;            CLK_4M : in std_logic;            SENSE : in std_logic_vector(6 downto 0);            LIGHT : out std_logic_vector(6 downto 0);            MTL_A : out std_logic;            MTL_B : out std_logic;            MTL_nA : out std_logic;            MTL_nB : out std_logic;            MTR_A : out std_logic;            MTR_B : out std_logic;            MTR_nA : out std_logic;            MTR_nB : out std_logic); end line_tracer; architecture Behavioral of line_tracer is signal clk_500 : std_logic; signal mtl_speed : std_logic_vector (1 downto 0); signal mtr_speed : std_logic_vector (1 downto 0); signal speed_l : integer range 0 to 25000; signal speed_r : integer range 0 to 25000; signal motor_lcnt : integer range 0 to 25000; signal phase_lclk : std_logic; signal motor_rcnt : integer range 0 to 25000; signal phase_rclk : std_logic; signal phase_lcnt : std_logic_vector (1 downto 0); signal phase_lout : std_logic_vector (3 downto 0); signal phase_rcnt : std_logic_vector (1 downto 0); signal phase_rout : std_logic_vector (3 downto 0);   begin =========Clock(500Hz)Generator===================         process(RSTB,CLK_4M)         variable cnt : integer range 0 to 4000;         begin                 if RSTB = '0' then                         cnt := 0;                         clk_500 <= '0';                 elsif rising_edge (CLK_4M) then                         if cnt >= 3999  then       --정상 동작시 --                    if cnt >= 2  then         --시뮬레이션시                                 clk_500 <= not clk_500;                         else                                 cnt := cnt + 1;                         end if;                 end if;         end process; ============================================= 

라인 트레이서의 설계 - Design --========== Infrared Light Emission ===========         LIGHT(0) <= clk_500 ;         LIGHT(1) <= clk_500 ;         LIGHT(2) <= clk_500 ;         LIGHT(3) <= clk_500 ;         LIGHT(4) <= clk_500 ;         LIGHT(5) <= clk_500 ;         LIGHT(6) <= clk_500 ; --========================================= --=== Line Status Sensing & 좌,우 모터 속도값  결정 =====    process(RSTB,CLK_500)    begin        if RSTB = '0' then           mtl_speed <="00";  mtr_speed <="00";   -- 느린 직진        elsif falling_edge (CLK_500) then           case SENSE is           when "1110111" => mtl_speed <="11";                                    mtr_speed <="11"; -- 빠른직진           when "1100011" => mtl_speed <="01";                                  mtr_speed <="01"; -- 느린직진           when "1100111" => mtl_speed <="11";                                mtr_speed <="10"; -- 느린우회전   when "1000111" => mtl_speed <="11";                                  mtr_speed <="01"; -- 빠른우회전           when "1001111" => mtl_speed <="11";                                     mtr_speed <="01"; -- 빠른우회전 when "1011111" => mtl_speed <="11";                                   mtr_speed <="01"; -- 빠른우회전      when "1110011" => mtl_speed <="10";                                   mtr_speed <="11"; -- 느린좌회전      when "1111011" => mtl_speed <="01";                                   mtr_speed <="11"; -- 빠른좌회전      when "1110001" => mtl_speed <="01";      when "1111001" => mtl_speed <="01";      when "1111101" => mtl_speed <="01";      when others => mtl_speed <="00";                               mtr_speed <="00";       -- 정지      end case;  end if; end process;

라인 트레이서의 설계 - Design ==== 모터속도값에 따른 좌,우모터 속도결정 ==== process(mtl_speed) ==== 모터속도값에 따른 좌,우모터 속도결정  ====           process(mtl_speed)         variable for_sim : std_logic;         begin                 for_sim := '0';  -- 1: 시뮬레이션시 0:정상동작시                 if for_sim = '0'  then                     case mtl_speed is         when "00" => speed_l <= 0; -- 0 Hz when "01" => speed_l <= 19999;-- 100Hz           when "10" => speed_l <= 9999; -- 200 Hz when "11" => speed_l <= 6249; -- 320Hz                     when others => speed_l <= 6249;                     end case;                 else                    when "00" => speed_l <= 0 ; when "01" => speed_l <= 8;                         when "10" => speed_l <= 4; when "11" => speed_l <= 2;                         when others => speed_l <= 2;                      end case;                 end if;         end process;          process(mtr_speed) variable for_sim : std_logic; begin       for_sim := '0';  -- 1: 시뮬레이션시 0:정상동작시       if for_sim = '0'  then            case mtr_speed is             when "00" => speed_r <= 0; -- 0 Hz when "01" => speed_r <= 19999;-- 100Hz                 when "10" => speed_r <= 9999; -- 200Hz                 when "11" => speed_r <= 6249; -- 320Hz                 when others => speed_r <= 6249; --320Hz               end case;          else                case mtr_speed is                     when "00" => speed_r <= 0;                        when "01" => speed_r <= 8;                     when "10" => speed_r <= 4;                     when "11" => speed_r <= 2;                          when others => speed_r <= 2;                 end case;           end if; end process;

라인 트레이서의 설계 - Design process(RSTB,speed_l, CLK_4M,motor_lcnt) begin        if RSTB = '0' or speed_l = 0 then            motor_lcnt <= 0;            phase_lclk <= '0';         elsif rising_edge (CLK_4M) then              if (motor_lcnt >= speed_l) then                   motor_lcnt <= 0;                   phase_lclk <= not phase_lclk;               else                   motor_lcnt <= motor_lcnt + 1;               end if;         end if; end process; process(RSTB,speed_r, CLK_4M,motor_rcnt)        if RSTB = '0' or speed_r = 0 then          motor_rcnt <= 0;           phase_rclk <= '0';        elsif rising_edge (CLK_4M) then             if (motor_rcnt >= speed_r) then                  motor_rcnt <= 0;                  phase_rclk <= not phase_rclk;              else                  motor_rcnt <= motor_rcnt + 1;             end if;        end if; --===================================== --===== 왼쪽 모터 phase Output(1상 여자방식) ======  process(RSTB,phase_lclk,phase_lcnt)  begin           if RSTB = '0' then               phase_lcnt <= (others => '0');           elsif rising_edge (phase_lclk) then                   phase_lcnt <= phase_lcnt + 1;            end if; end process; process(RSTB, phase_lcnt) begin        if RSTB = '0' then           phase_lout <= (others => '0');        else             case phase_lcnt is                  when "00" => phase_lout <= "1000";                  when "01" => phase_lout <= "0100";                  when "10" => phase_lout <= "0010";                  when "11" => phase_lout <= "0001";                  when others => phase_lout <= "0000";               end case;         end if;  end process; --===========================

--========================================== 라인 트레이서의 설계 - Design --====== 오른쪽 Phase Output(1상 여자방식) ========= process(RSTB,phase_rclk,phase_rcnt) begin       if RSTB = '0' then        phase_rcnt <= (others => '0');      elsif rising_edge (phase_rclk) then             phase_rcnt <= phase_rcnt + 1;      end if; end process; process(RSTB, phase_rcnt) begin         if RSTB = '0' then           phase_rout <= (others => '0');         else             case phase_rcnt is                  when "00" => phase_rout <= "0001";                  when "01" => phase_rout <= "0010";                  when "10" => phase_rout <= "0100";                  when "11" => phase_rout <= "1000";                  when others => phase_rout <= "0000";               end case;           end if; --========================================== MTL_A <= phase_lout(0);         MTL_B <= phase_lout(1);         MTL_nA <= phase_lout(2);         MTL_nB <= phase_lout(3);         MTR_A <= phase_rout(0);         MTR_B <= phase_rout(1);         MTR_nA <= phase_rout(2);         MTR_nB <= phase_rout(3); end Behavioral;

라인 트레이서의 설계 - Simulation 라인 트레이서의 시뮬레이션 결과 파형 화면