Bùi Tuấn Anh và Đtg<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
116 (02): 13 - 16<br />
<br />
SỬ DỤNG FPGA ĐỂ XÂY DỰNG HỆ ĐIỀU KHIỂN CHO ROBOT TỰ HÀNH<br />
Bùi Tuấn Anh*, Kim Đình Thái<br />
Trường Đại học Công nghệ Thông tin và Truyền thông – ĐH Thái Nguyên<br />
<br />
TÓM TẮT<br />
Robot tự hành hay robot di động (mobile robot) đƣợc định nghĩa là một loại xe có khả năng tự<br />
dịch chuyển, tự vận động (có thể lập trình lại đƣợc) duới sự điều khiển tự động hoàn thành một<br />
công việc đƣợc giao. Theo lý thuyết, môi trƣờng hoạt động của robot tự hành có thể là mặt đất,<br />
nuớc, không khí, không gian vũ trụ hay tổ hợp giữa chúng. Ðịa hình bề mặt mà robot di chuyển<br />
trên đó có thể bằng phẳng hoặc thay đổi, lồi lõm. Ðề tài nghiên cứu này đi sâu nghiên cứu ứng<br />
dụng FPGA để xây dựng hệ điều khiển robot tự hành.<br />
Từ khóa: Ngôn ngữ mô tả phần cứng (VHDL), Field Programmable Gate Array (FPGA), Very high<br />
speed Circuit Itergrated (VHSIC), điều chế độ rộng xung (PWM), robot di động (mobile robot)<br />
<br />
GIỚI THIỆU*<br />
Ở trong bài báo này chúng tôi trình bày việc<br />
sử dụng ngôn ngữ VHDL để mô tả phần cứng<br />
cho mạch tích hợp tốc độ cao. Ngôn ngữ mô<br />
tả phần cứng VHDL đƣợc phát triển dùng cho<br />
chƣơng trình VHSIC (Very High Speed<br />
Itergrated Circuit) của Bộ Quốc phòng Mỹ.<br />
VHDL đƣợc ba công ty Intermetics, IBM và<br />
Texas Instruments bắt đầu ngiên cứu phát<br />
triển vào tháng 7 năm 1983. Phiên bản đầu<br />
tiên đƣợc công bố vào tháng 8-1985. Sau đó<br />
nó đƣợc tổ chức IEEE xem xét thành một tiêu<br />
chuẩn chung. Năm 1987 đã trở thành tiêu<br />
chuẩn (tiêu chuẩn IEEE-1076).<br />
Theo lý thuyết, môi trƣờng hoạt động của<br />
robot tự hành có thể là đất, nƣớc, không khí<br />
không gian vũ trụ hay tổ hợp giữa chúng. Địa<br />
hình bề mặt robot mà robot di chuyển có thể<br />
bằng phẳng hoặc thay đổi lồi lõm. Theo bộ<br />
phận thực hiện chuyển động, ta có thể chia<br />
robot tự hành làm hai loại: chuyển động bằng<br />
chân (legged) hoặc chuyển động bằng bánh<br />
(wheeled). Mặc dù có ứng dụng cao, nhƣng<br />
để chế tạo robot tự hành còn vƣớng nhiều hạn<br />
chế chƣa giải quyết trọn vẹn nhƣ chi phí chế<br />
tạo cao, đã không cho phép chúng đƣợc sử<br />
dụng rộng rãi. Một nhƣợc điểm khác của<br />
robot tự hành phải kể đến là còn thiếu linh<br />
hoạt và thích ứng khi làm việc ở những vị trí<br />
khác nhau. Bài toán tìm đƣờng (navigation<br />
*<br />
<br />
Tel: 01692 478758, Email: btanh@ictu.edu.vn<br />
<br />
problem) của robot tự hành cũng không phải<br />
là loại bài toán đơn giản nhƣ nhiều ngƣời<br />
nghĩ ban đầu. Trong bài báo này, bài toán tìm<br />
đƣờng cũng nhƣ mô hình điều khiển robot sẽ<br />
đƣợc giải quyết mức độ không quá phức tạp<br />
bằng ngôn ngữ mô tả phần cứng VHDL, trên<br />
công cụ lập trình cho FPGA. Trong một robot<br />
phần cơ bản quan trọng nhất trong robot<br />
chính là hệ thống cảm biến. Cảm biến đƣợc<br />
định nghĩa là các giác quan của robot. Robot<br />
cần xác định trạng thái của môi trƣờng bên<br />
ngoài (nhƣ là các vạch trắng, màu sắc của các<br />
chƣớng ngại vật…) để gửi trạng thái môi<br />
trƣờng đến bộ xử lý rồi đƣa ra các phản ứng<br />
điều khiển robot để thích ứng với các sự kiện<br />
bên ngoài ấy. Các loại cảm biến trong kỹ<br />
thuật robot ngƣời ta sử dụng nhiều loại cảm<br />
biến nhƣ: LED hồng ngoại, quang điện trở<br />
(photorresistance), tế bào quang điện, cảm<br />
biến công nghiệp, camera số trong công nghệ<br />
xử lý ảnh. Mạch công suất dùng để điều khiển<br />
động cơ điện một chiều (DC motor).<br />
MÔ TẢ PHẦN CỨNG CHO ROBOT DI ĐỘNG<br />
Kiến trúc của một robot tự hành cơ bản<br />
Mạch điều khiển đƣợc lập trình tạo ra 3 khối.<br />
Khối chuyển đổi tín hiệu tƣơng tự thành số<br />
(ADC): Có nhiệm vụ xử lý tín hiệu sensor dò<br />
đƣờng đƣa vào bộ xử lý xây dựng bằng<br />
FPGA. Khối điều khiển chuyển động: Nhận<br />
tín hiệu điều khiển từ khối phát hiện tín hiệu<br />
đƣờng dẫn và đƣa ra mức điều khiển hợp lý.<br />
13<br />
<br />
Bùi Tuấn Anh và Đtg<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
Khối tạo xung: Phát xung cho hai động cơ<br />
giúp cho động cơ có thể hoạt động linh hoạt<br />
theo phƣơng pháp PWM để bám theo đƣờng<br />
dẫn<br />
<br />
116 (02): 13 - 16<br />
<br />
thanh ghi lập trình, độ phân giải tối đa là 8<br />
bit, tích hợp timer, hỗ trợ một ngõ ra điều chế.<br />
Sơ đồ chân của PWM nhƣ sau.<br />
<br />
Hình 1: Sơ đồ khối của một robot<br />
tự hành sử dụng FPGA<br />
<br />
Hệ thống này bao gồm cả hai phần cứng và<br />
phần mềm. Đầu ra của ADC đƣợc nối đến bộ<br />
xử lý trên kit FPGA và nó đã đƣợc sử dụng<br />
nhƣ là đầu vào của các mã nguồn. Ngôn ngữ<br />
sử dụng trong hệ thống này là VHDL.<br />
Bộ chuyển đổi ADC8-bit sử dụng trên<br />
kit FPGA<br />
<br />
Hình 2: Sơ đồ khối của bộ chuyển đổi ADC 8-bit<br />
<br />
Trong đó Vin là tín hiệu điện áp cần chuyển<br />
đổi (Input). Vref là tín hiệu điện áp so sánh<br />
(Input). Di là 8 bit đầu ra số của bộ ADC<br />
i=0,…,7 (Output). Ta lấy Vref=15 VDC làm<br />
điện áp so sánh. Với ADC 8 bit sẽ có 28=256<br />
trạng thái chạy từ 0000 0000 đến 1111 1111.<br />
Nhƣ vậy mỗi bƣớc tính tƣơng ứng là<br />
N=10/(256-1). Số 8 bits ra của bộ ADC sẽ là<br />
<br />
Hình 3: Bộ chuyển đổi ADC 8 bit xây dựng trên<br />
phần mềm Quartus II<br />
<br />
Hình 4: Sơ đồ chân của bộ chuyển đổi ADC<br />
<br />
n=Vin/N=Vin(256-1)/15=Vin(255/15)= Vin.17<br />
Điều chế độ rộng xung (PWM)<br />
Điều chế độ rộng xung PWM (Pulse With<br />
Modulation) là một khâu quan trọng trong<br />
thiết kế robot. Sử dụng phƣơng pháp này<br />
chúng ta có thể điều khiển một cách linh hoạt<br />
cho motor DC từ đó có thể dùng các hàm vận<br />
tốc để cho robot bám theo vạch trắng. Module<br />
PWM có các nhiệm vụ nhƣ sau: Hỗ trợ các<br />
14<br />
<br />
Hình 5: Sơ đồ khối của module PWM như sau<br />
<br />
Hệ thống bao gồm thanh ghi bộ đếm 8 bit,<br />
luôn đếm lên, và hai thanh ghi tham chiếu<br />
period và duty. Các thanh ghi này đƣợc ghi<br />
vào bởi một master. Tại sƣờn lên bộ đếm,<br />
duty match sẽ xảy ra trƣớc period match. Nếu<br />
thanh ghi duty lớn hơn thanh ghi period thì<br />
<br />
Bùi Tuấn Anh và Đtg<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
116 (02): 13 - 16<br />
<br />
xem nhƣ ngõ ra xung điều chế không đổi. Khi<br />
period match xảy ra, ngõ ra đƣợc đặt lên logic<br />
1, đồng thời thanh ghi counter timer bị xóa.<br />
Khi duty match xảy ra, ngõ ra bị xóa về logic<br />
0 và thanh ghi counter timer tiếp tục đếm đến<br />
period match. Để tránh hiện tƣợng max speed<br />
của bộ điều chế ta cho ngõ ra bằng 0.<br />
<br />
Hình 6: Bộ điều chế độ rộng xung ( PWM)<br />
xây dựng trên phần mềm Quartus II<br />
<br />
Hình 8: Mô phỏng Bộ điều chế độ rộng xung<br />
(PWM) xây dựng bằng ngôn ngữ VHDL<br />
<br />
Cách bố trí cảm biến trên robot<br />
Trong mạch này chúng tôi sử dụng 3 cặp thu<br />
phát hồng ngoại dò đƣờng. Khi cặp thu phát ở<br />
giữa chạm vạch trắng mức tín hiệu đƣa vào<br />
kit FPGA tƣơng ứng là R=101. Khi cặp thu<br />
phát bên trái chạm vạch trắng mức tín hiệu<br />
đƣa vào kit FPGA là R=011. Tƣơng tự khi cặp<br />
thu phát bên phải chạm vạch trắng thì tín hiệu<br />
đƣa vào FPGA sẽ là R=110. Sau đây là sơ đồ<br />
biểu diễn trạng thái hoạt động của robot.<br />
<br />
Hình 9: Mô phỏng bộ ADC xây dựng<br />
bằng ngôn ngữ VHDL<br />
Hình 7: Sơ đồ trạng thái hoạt động của robot<br />
<br />
KẾT QUẢ ĐẠT ĐƢỢC<br />
Chúng tôi sử dụng ngôn ngữ mô tả phần cứng<br />
VHDL để xây dựng hệ điều khiển cho robot<br />
tự hành trên kit FPGA DE2 của Altera và<br />
thực hiện mô phỏng trên phần mềm Quartus<br />
II. Robot hoạt động ổn định tuy nhiên sự nhạy<br />
cảm với nhiễu còn tƣơng đối lớn. Trong các<br />
nghiên cứu tiếp theo chúng tôi sẽ tâp trung<br />
vào việc giảm ảnh hƣởng của nhiễu, tăng tính<br />
ổn định của hệ thống để có thể áp dụng trong<br />
thực tế.<br />
<br />
Hình 10: Mô phỏng của robot tự hành<br />
xây dựng bằng ngôn ngữ VHDL<br />
<br />
15<br />
<br />
Bùi Tuấn Anh và Đtg<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
116 (02): 13 - 16<br />
<br />
TÀI LIỆU THAM KHẢO<br />
<br />
Hình 11: Hình ảnh robot tự hành xây dựng<br />
trên Board DE2 của ALTERA<br />
<br />
1. Nguyễn Linh Giang, (2003)Thiết kế mạch bằng<br />
máy tính. Nxb KH&KT, Hà Nội.<br />
2. Chris Lo. (2006) “Dynamic Reconfiguration<br />
Mechanism<br />
ForRobot<br />
Control<br />
Software”.<br />
Department<br />
of<br />
Electricaland<br />
Computer<br />
Engineering, University of Auckland, Auckland,<br />
New Zealand.<br />
3. K. Sridharan and P. Rajesh Kumar. (2009)<br />
“Design and Development of an FPGA based<br />
Robot”.<br />
4. Volnie A.Pedroni. (2004) “Circuit Design with<br />
VHDL”.MIT Press, Cambridge, Massachusetts,<br />
London, England.<br />
5. Prabhas Chongstitvatana. (1998) “A FPGAbased Behavioral Control System for a Mobile<br />
Robot”.IEEE Asia-Pacific Conference on Circuits<br />
andSystems,<br />
Chiangmai,<br />
Thailand,<br />
<br />
SUMMARY<br />
USE FPGA TO INTEGRATE SYSTEM CONTROL FOR MOBILE ROBOT<br />
Bui Tuan Anh*, Kim Đinh Thai<br />
College of Information and Communication Technology - TNU<br />
<br />
Autonomous robot or mobile robot , defined as a robotic vehicle capability of self-moving, selfmovement (programmable) under automatic control is able to complete assigned work. In theory,<br />
the operating environment of the self-propelled robot may be ground, water, air, space or<br />
combination between them. The surface of terrain on which the robot can move is flat or<br />
changeable, convex and concave. This project has been studied deeply applications FPGA to<br />
control for a Mobile Robot.<br />
Keyword: Very High Speed Intergrated Circuit Hardware Description Language (VHDL), Field<br />
Programmable Gate Array (FPGA), Very high speed Circuit Itergrated (VHSIC), mobile robot,<br />
Pulse-width modulation (PWM)<br />
<br />
Ngày nhận bài:25/01/2014; Ngày phản biện:10/02/2014; Ngày duyệt đăng: 26/02/2014<br />
Phản biện khoa học: TS. Phạm Đức Long – Trường ĐH Công nghệ Thông tin & Truyền thông - ĐHTN<br />
*<br />
<br />
Tel: 01692 478758, Email: btanh@ictu.edu.vn<br />
<br />
16<br />
<br />