19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.

Slides:



Advertisements
Similar presentations
파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
Advertisements

수유부의 약물복용 시 주의점 발표자 조기성. 모유 수유의 장점 모유 수유의 장점은 ? 위장관 질환 발생감소 영아 돌연사 발생감소 아토피 질환 발생감소 정서적 안정.
4D 장치 제작 체험으로 배우는 아두이노 및 SW프로그래밍 교육
Progress Report YoonMo Yeon

예비보고서1 : 8개의 푸시버튼 스위치가 있다. 이 스위치에 각각 0~7개까지의 번호를 부여하였다고 하자
디지털시스템실험 2주차 고려대학교 전기전자전파공학부.
1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
VHDL Package & Subprogram
Copyright SangSangDom, All Rights Reserved.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ROLL COATER 제작 사양서 FOUR TECHNOLOGY 초 정밀 가공기술 정밀 제어기술 신기술의 핵심기술
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
신호조절*(Signal Conditioning)
Design of Digital Clock (디지털 시계의 설계)
순차로직 개요.
가산기 설계.
Multiplexer 설계.
VHDL의 기본 Lecture #5.
램( RAM ) 램의 개념 램 선택법 듀얼채널의 의미.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
오브젝트 플립플롭 IT CookBook, VHDL을 이용한 디지털 회로 입문.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
Quartus II 사용법 VHDL을 이용한 디지털 시스템 설계.
VHDL Package and Sub program
Stop Watch 구현 Lecture #12.
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
어셈블리 문법 보강 4월 10일.
VHDL Design : Barrel Shifter
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
Stepping Motor.
FSM 설계.
디지털 온도조절기(SHTC) 신한콘트롤밸브㈜ SERVICE MANUAL.
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
Flip-Flop 설계.
이동식 다 관절 로봇팔 Removable Articulated robot arm
Microprocessor I/O Port & CLCD Noh Jin-Seok.
과제#4 내용 정성훈.
Programmable Logic Device
Microsoft Robotics Developer Studio 고급 프로그래밍 과정 [Part 3] VPL 로봇 프로그래밍
VHDL Mealy and Moore model
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
LCD Controller Colorbar
HBE-RoboCAR 제어 Obstacle Avoidance
논리회로 및 실험 조합논리회로 (1) - Adder
VHDL.
VHDL 디지털시계 2.
13장 CTC and DMA Slide 1 (of 10).
가산기 설계.
계산기.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
LCD.
PART 1 앱 인벤터 프로젝트 12 원격 로봇. PART 1 앱 인벤터 프로젝트 12 원격 로봇.
DK-128 직렬통신 실습 아이티즌 기술연구소
논리회로 설계 및 실험 4주차.
전류는 자계에서 힘을 받는다 기계공학교육 박지훈 황인석 한만혁 이덕균.
실습 9 / 부울식 구현(결합 법칙을 이용한 논리회로 구현)
OP-AMP를 이용한 함수발생기 제작 안정훈 박선진 변규현
시스템 분석 및 설계 2007학년도 2학기 멀티미디어공학과 2학년 대상 담당교수 박태희
3주차 실험 지도 교수 : 한형석 교수님 Gachon Univ. HHS LABORATORY.
VHDL 응용 Lecture #10.
논리회로 설계 및 실험 8주차.
디 코 더 n비트의 2진 코드를 입력으로 받아들여 최대 2n개의 서로 다른 정보로 바꿔 주는 조합 회로
Presentation transcript:

19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔

목 차 설계 개요 VHDL 코드 작성 시뮬레이션 결과 파형 핀 할당

설계 개요 원격 조정이란? 원격 조정 로봇 조립 RF-MAIN FPGA 보드 리모콘 송신기 모터부 사용자로부터 멀리 떨어진 곳에 있는 대상을 조정한다는 뜻. 즉, 3-Key 송신기에서 key를 누르면 직진, 후진, 또는 좌회전, 우회전 주행. 원격 조정 로봇 조립 리모콘 송신기 FPGA 보드 RF-MAIN 모터부

설계 개요 원격 조정 로봇 VHDL 코드 작성 개념도 양쪽 모터 무선 통신 차등 속도 제어기 (17장) (15장) 모터 속도 송신기 Key 수신 데이터 무선 통신 제어기 (17장) LED 표시 데이터 모터 속도 결정 process (18장) 스위치 입력 양쪽 모터 차등 속도 (15장) 좌, 우 모터 구동 신호 mtl_speed mtr_speed

VHDL – 입출력 선언 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity rc_ro_vhdl is Port ( RSTB : in STD_LOGIC; // 시스템 Reset 신호 CLK_4M : in STD_LOGIC; // 4MHz 클럭 신호 RF_DATA : in STD_LOGIC_VECTOR (2 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 rc_ro_vhdl;

VHDL – 변수 선언 architecture Behavioral of rc_ro_vhdl is signal forward : std_logic; // ‘1’이면 전진, ‘0’이면 후진 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); // 4개의 (좌)스텝 구분을 위한 신호 signal phase_lout : std_logic_vector (3 downto 0); // 좌 스텝 모터의 출력 신호 묶음 signal phase_rcnt : std_logic_vector (1 downto 0); // 4개의 (우)스텝 구분을 위한 신호 signal phase_rout : std_logic_vector (3 downto 0); // 우 스텝 모터의 출력 신호 묶음 begin

VHDL – 송신기 모듈 조작 실습시 “01”과 “10” 의 속도는 배제 --===== RF data에 따른 좌,우 모터 속도값 결정 ================= process (RF_DATA) begin forward <= '1'; case RF_DATA is when "100" => mtl_speed <= "11"; mtr_speed <= "11"; -- 빠른 직진 when "001" => mtl_speed <= "11"; mtr_speed <= "11"; forward <= '0'; -- 빠른 후진 when "110" => mtl_speed <= "11"; mtr_speed <= "00"; -- 빠른 우회전 when "011" => mtl_speed <= "00"; mtr_speed <= "11"; -- 빠른 좌회전 when others => mtl_speed <= "00"; mtr_speed <= "00"; -- 정지 end case; end process; 실습시 “01”과 “10” 의 속도는 배제

VHDL – 송신기 모듈 조작 forward <= ‘0’; 3 2 1 Key 조작 RF_DATA ( 2:0 ) 로봇 동작 3번 누름 “100” 전진 1번 누름 “001” 후진 2, 3번 동시 누름 “110” 우회전 1, 2번 동시 누름 “011” 좌회전 그 외 “000” 등 정지 1 2 3 3-Key 리모콘 송신기 forward <= ‘0’;

VHDL – 좌 모터 속도결정 --===== 속도값에 따른 좌,우모터 속도결정 ======================= 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; -- 100 Hz when "10" => speed_l <= 9999; -- 200 Hz when "11" => speed_l <= 6249; -- 320 Hz when others => speed_l <= 6249; end case;

VHDL – 좌 모터 속도결정 우 모터 동일 else -- 시뮬레이션 시 case mtl_speed is 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; 우 모터 동일

VHDL – 좌 모터 속도분주기 우 모터 동일 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 phase_lclk <= not phase_lclk; else motor_lcnt <= motor_lcnt + 1; end if; end process; 우 모터 동일

VHDL – 좌 모터 phase_output 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;

VHDL – 좌 모터 phase_output 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;

VHDL – 우 모터 phase_output 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;

VHDL – 우 모터 phase_output 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; end process;

VHDL – phase_output 스텝 모터를 조립할 때 서로 반대 방향이 되게 조립. phase_lcnt phase_lout 00 1000 01 0100 10 0010 11 0001 phase_rcnt phase_rout 00 0001 01 0010 10 0100 11 1000 스텝 모터를 조립할 때 서로 반대 방향이 되게 조립. 한 쪽의 회전 방향을 반대로 해야만 함. 두 개의 모터가 동시에 같은 방향으로 회전하게 되어 진행 가능.

VHDL – 모터 회전 --======================================================= MTL_A <= phase_lout(0) when forward = '1' else phase_lout(3); MTL_B <= phase_lout(1) when forward = '1' else phase_lout(2); MTL_nA <= phase_lout(2) when forward = '1' else phase_lout(1); MTL_nB <= phase_lout(3) when forward = '1' else phase_lout(0); MTR_A <= phase_rout(0) when forward = '1' else phase_rout(3); MTR_B <= phase_rout(1) when forward = '1' else phase_rout(2); MTR_nA <= phase_rout(2) when forward = '1' else phase_rout(1); MTR_nB <= phase_rout(3) when forward = '1' else phase_rout(0); end Behavioral;

병행처리문 조건적 병행처리문 VHDL – 모터 회전 감지신호 list, begin, process 등을 없앤 간결한 문장표현. 순서에 무관하게 동시에 수행. 조건적 병행처리문 signal_name <= a when 조건 else b; when의 조건이 ‘참’이면 a를 signal에 대입. ‘거짓’일 경우 b를 대입하라는 수행.

VHDL – 좌 모터 회전 phase_lcnt phase_lout 00 1000 01 0100 10 0010 11 0001 MTL_A <= phase_lout(0) when forward = '1' else phase_lout(3); MTL_B <= phase_lout(1) when forward = '1' else phase_lout(2); MTL_nA <= phase_lout(2) when forward = '1' else phase_lout(1); MTL_nB <= phase_lout(3) when forward = '1' else phase_lout(0); phase_lcnt phase_lout 00 1000 01 0100 10 0010 11 0001

VHDL – 우 모터 회전 phase_rcnt phase_rout 00 0001 01 0010 10 0100 11 1000 MTR_A <= phase_rout(0) when forward = '1' else phase_rout(3); MTR_B <= phase_rout(1) when forward = '1' else phase_rout(2); MTR_nA <= phase_rout(2) when forward = '1' else phase_rout(1); MTR_nB <= phase_rout(3) when forward = '1' else phase_rout(0); phase_rcnt phase_rout 00 0001 01 0010 10 0100 11 1000

시뮬레이션 결과 파형

핀 할당 입 력 신호이름 키트이름 핀 번호 CLK_4M FPGA_clock P79 RSTB Reset pin P205 입 력 신호이름 키트이름 핀 번호 CLK_4M FPGA_clock P79 RSTB Reset pin P205 RF_DATA(0) P40 RF_DATA(1) P42 RF_DATA(2) p43 출 력 신호이름 키트이름 핀 번호 MTL_A P128 MTL_B P130 MTL_nA P131 MTL_nB P132 MTR_A P133 MTR_B P135 MTR_nA P137 MTR_nB P138

Thank You !