Tải bản đầy đủ - 0 (trang)
Phần Ba: Lập Trình Điều Khiển

Phần Ba: Lập Trình Điều Khiển

Tải bản đầy đủ - 0trang

ĐỒ ÁN THIẾT KẾ LOGIC SỐ

Bộ dao động có thể thay đổi được (1000/100/10khz) ,them vào đó là có khe nắp bộ

dao động thạch anh thứ 2

64 tín hiệu I/0 trên các cổng giao tiếp(32 trên các cổng nối tiếp ,32 trên các cổng

song song)

Các miếng đệm cho SPI PROM gắn trong



CoolRunner – II 256 TQ144



ROBOT Dò Đường Theo Vạch



Page 28



ĐỒ ÁN THIẾT KẾ LOGIC SỐ

Sơ đồ khối của KIT CPLD CoolRunner – II 256 TQ144

3.2.Lập trình trên KIT thử nghiệm

Modul điều khiển được viết trên VHDL – một ngôn ngữ mô tả phần cứng của

Xilinx sử dụng phần mềm Xilinx Integrated Software Environment (ISE) v.10.0

.Việc đầu tiên là soạn thảo văn bản có sẵn trong ISE để viết modul và hệ thống

quản lí project ,file cấu hình cho CoolRunner – II 256 TQ144 được tạo ra trong

ISE .Nó bao gồm những việc sau (tất cả đều được phần mềm làm tự động ) :

Biên dịch VHDL thành sơ đồ các cổng logic ,thành phần của mạch (thông qua

công cụ tổng hợp XST)

Vẽ sơ dựa trên những tài nguyên có sẵn trên FPGA

Sắp xếp các thành phần để đạt sự tối ưu nhất

File cấu hình được nạp vào CPLD qua giao tiếp JTAG .Kết quả của q trình tối ưu

hóa có thể dẫn đến sự thay đổi các file gốc và các chu trình sau đó.



3.3.Sơ đồ khối mạch điều khiển



ROBOT Dò Đường Theo Vạch



Page 29



ĐỒ ÁN THIẾT KẾ LOGIC SỐ



Sơ đồ khối mạch điều khiển

Mạch điều khiển sẽ được lập trình tạo ra 3 khối :

-



Khối phát hiện đường dẫn: Có nhiệm vụ xử lí tín hiệu từ sensor dò đường

đưa vào FPGA.

Khối điều khiển chuyển động : Nhận tín hiệu điều khiển từ khối phát hiện

đường dẫn và đưa ra mức điều khiển hợp lí.

Khối tạo xung : Phát xung cho hai động cơ giúp động cơ có thể hoạt động

linh hoạt để bám theo đường dẫn.



3.4 Cách bố trí cảm biển trên robot



ROBOT Dò Đường Theo Vạch



Page 30



ĐỒ ÁN THIẾT KẾ LOGIC SỐ



Cách bố trí cảm trên robot

Trong mạch này chúng tôi sử dụng 3 cặp thu phát hồng ngoại để dò

đường.Khi cặp thu phát ở giữa chạm vạch trắng mức tín hiệu đưa vào FPGA tương

ứng là R=1001.Khi cặp thu phát bên trái chạm vạch trắng mức tín hiệu đưa vào

FPGA là R=0011.Tương tự khi cặp thu phát bên phải chạm vạch trắng thì tín hiệu

đưa vào FPGA sẽ là R=1100.

3.5 Trạng thái điều khiển cho động cơ

Các trưởng

hợp

Đi thẳng



Trạng thái sensor



Cách xử lý

Bánh trái : Quay tiến

Bánh Phải: Quay tiến



Lệch trái 1



Bánh trái: Quay tiến

Bánh Phải : Đứng yên



Lệch trái 2



Bánh Trái: Quay tiến

Bánh Phải : Quay lùi



Lệch phải 1



Bánh Trái: Đứng yên

Bánh Phải: Quay tiến



Lệch phải 2



BánhTrái: Quay lùi

Bánh Phải: Quay tiến



Tất cả các

cảm biến

chạm vạch

Tất cả các

cảm biến ra

khỏi vạch



Bánh Trái: Đứng yên

Bánh Phải: Quay tiến



ROBOT Dò Đường Theo Vạch



Bánh trái: Quay tiến

Bánh Phải: Quay lùi



Page 31



ĐỒ ÁN THIẾT KẾ LOGIC SỐ

3 cảm biến

bên trái

chạm vạch

đen

3 cảm biến

bên phải

chạm vạch

đen



Bánh Trái: Quay tiến

Bánh Phải: Đứng yên

Bánh Trái: Đứng yên

Bánh Phải: Quay Tiến.



Mức 1 sẽ làm cho động cơ hoạt động.Khi muốn robot đi lùi ta chỉ cần đảo chiều

cả hai động cơ.



3.6 CODE điều khiển

---------------------------------------------------------------------------------- Create Date:

22:40:49 01/14/2013

-- Design Name:

Dinh Hong Dang

-- Module Name:

CPLD COOLRRUNER II C256-TQ144

-- Project Name:

ROBOT do duong

--------------------------------------------------------------------------------library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity robot is

Port (

CLK : in STD_LOGIC;

sen1 : in STD_LOGIC;

sen2 : in STD_LOGIC;

sen3 : in STD_LOGIC;

sen4 : in STD_LOGIC;

chan_1 : out STD_LOGIC;

chan_2 : out STD_LOGIC;

chan_3 : out STD_LOGIC;

chan_4 : out STD_LOGIC);

end robot;

architecture Behavioral of robot is

ROBOT Dò Đường Theo Vạch



Page 32



--Clock=10khz

--Tin' hieu vao` sensor



--DK

--DK

--DK

--DK



dong

dong

dong

dong



co

co

co

co



trai

trai

phai

phai



tien

lui

tien

lui



ĐỒ ÁN THIẾT KẾ LOGIC SỐ

signal

signal

signal

signal

signal

signal

signal

signal

begin

sensor



sensor : std_logic_vector(3 downto 0);

CLK_50 : std_logic :='0';

CLK_80 : std_logic :='0';

CLK_60 : std_logic :='0';

CLK_40 : std_logic :='0';

CLK_25 : std_logic :='0';

CLK_20 : std_logic :='0';

dem : std_logic_vector(6 downto 0);

<= sen1 & sen2 & sen3 & sen4;



--Dieu che xung 50hz

process (CLK,dem)

begin

if(dem = "1100100") then

dem <= "0000000" ;

else

if(CLK'event and CLK = '1')

dem <= dem + 1;

end if;

end if;

end process;



then



process(dem)

begin

--xung 50%

if(dem = "1100100") then

CLK_50 <= not CLK_50;

end if;

end process;

process(dem)

begin

-- xung 80%

if (dem < "1010000" and dem >= "0000000") then

CLK_80 <= '1';

else CLK_80 <= '0';

end if;

end process;

process(dem)

begin

--xung 60%

if (dem < "0111100" and dem >= "0000000") then

CLK_60 <= '1';

else CLK_60 <= '0';

end if;

end process;

process(dem)

begin

ROBOT Dò Đường Theo Vạch



Page 33



ĐỒ ÁN THIẾT KẾ LOGIC SỐ

--xung 40%

if (dem < "0101000" and dem >= "0000000") then

CLK_40 <= '1';

else CLK_40 <= '0';

end if;

end process;

process(dem)

begin

--xung 25%

if (dem < "0011001" and dem >= "0000000") then

CLK_25 <= '1';

else CLK_25 <= '0';

end if;

end process;

process(dem)

begin

--xung 20%

if (dem < "0010100" and dem >= "0000000") then

CLK_20 <= '1';

else CLK_20 <= '0';

end if;

end process;

--DK dong co

process(sensor)

begin

case sensor is

when "1001" =>



when "1000" =>



when "1100" =>



when "1110" =>



ROBOT Dò Đường Theo Vạch



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



'1';

'0';

'1';

'0';



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



CLK_50;

'0';

'0';

'0';



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



CLK_50;

'0';

'0';

'0';



chan_1 <= CLK_50;

chan_2 <= '0';

chan_3 <= '0';

Page 34



ĐỒ ÁN THIẾT KẾ LOGIC SỐ

chan_4 <= CLK_50;

when "0001" =>



when "0011" =>



when "0111" =>



when "0000" =>



when "1111" =>



when others =>



end case;

end process;

end Behavioral;



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



'0';

'0';

CLK_50;

'0';



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



'0';

'0';

CLK_50;

'0';



chan_1

chan_2

chan_3

chan_4



<= '0';

<= CLK_50;

<= CLK_50;

<= '0';



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



CLK_40;

'0';

'0';

CLK_40;



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



'0';

CLK_40;

CLK_40;

'0';



chan_1

chan_2

chan_3

chan_4



<=

<=

<=

<=



'0';

CLK_40;

CLK_40;

'0';



Phần Bốn: Kết Thúc Đề Tài



ROBOT Dò Đường Theo Vạch



Page 35



ĐỒ ÁN THIẾT KẾ LOGIC SỐ

Nhóm đã thiết kế và chạy thử nghiệm thành công trên KIT CPLD

CollRuneer – II 256 TQ144. Robot có thể bám vạch chính xác và khi hết vạch thì

tự quay đầu trở lại.

Tuy nhiên khó khăn lớn nhất mà nhóm gặp phải chính là khâu thiết kế và

làm phần cứng. Do thời gian và số lượng kiến thức có hạn nên chắc chắn đề tài sẽ

khơng tránh khỏi có sai sót. Em xin chân thành cảm ơn!



Tài Liệu Tham Khảo



-



http://www.xilinx.com



ROBOT Dò Đường Theo Vạch



Page 36



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Phần Ba: Lập Trình Điều Khiển

Tải bản đầy đủ ngay(0 tr)

×