Xe tự hành hay còn gọi là Robot tự hành “là một thành phần có vai trò quan trọng trong ngành Robot học. Đề tài tập trung tìm hiểu về nguyên lý hoạt động và cách thức thực hiện xe tự hành (cụ thể là xe dò đường). Điểm khác biệt của xe tự hành này với các loại xe khác (ô tô, xe nâng…) là khả năng tự động đi theo một đường đã vạch sẵn mà không cần sự điều khiển của con người trong quá trình di chuyển
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘIVIỆN ĐIỆN TỬ - VIỂN THÔNG
Trang 2MỤC LỤC
DANH MỤC HÌNH VẼ 2
DANH MỤC BẢNG BIỂU 3
DANH MỤC THUẬT NGỮ 4
NỘI DUNG 5
1 Lý do chọn đề tài 5
2 Yêu cầu chức năng và phi chức năng 5
2.1 Yêu cầu chức năng 5
2.2 Yêu cầu phi chức năng 6
3 Thiết kế hệ thống 6
3.1 Sơ đồ khối 6
3.2 Sơ đồ chi tiết từng khối 7
3.3 Ước tính chi phí 10
3.4 Phân tích nhân lực 11
3.5 Phân công công việc 12
4 Thực hiện 12
4.1 Thực hiện phần cứng 12
4.2 Thực hiện phần mềm 17
4.3 Nạp code 20
5 Kiểm thử 23
5.1 Kiểm tra cảm biến hồng ngoại 23
5.2 Kiểm tra hoạt động của xe 25
KẾT LUẬN 26
HƯỚNG PHÁT TRIỂN 27
TÀI LIỆU THAM KHẢO 28
Trang 3DANH MỤC HÌNH V
Hình 3-1: Sơ đồ khối tổng quát 6
Hình 3-2: Khối cảm biến 7
Hình 3-3: Khối điều khiển 8
Hình 3-4: Khối điều khiển động cơ 9
Hình 3-5: Động cơ giảm tốc 9
Hình 3-6: Khối nguồn 10
Hình 4-1: Tổng thể sản phẩm 13
Hình 4-2: Khối cảm biến 14
Hình 4-3: Arduino UNO R3 14
Hình 4-4: Khối điều khiển động cơ 16
Hình 4-5: 2 quả pin 9V 17
Hình 4-6: Mở sửa sổ Device Manager 21
Hình 4-7: Giao diện cửa sổ Device Manager 21
Hình 4-8: Chọn Board 22
Hình 4-0-9: Nạp chương trình 22
Hình 5-1: Test cảm biến 1 trên nền đen, còn lại trên nền trắng 23
Hình 5-2: Test cảm biến 1 trên nền đen, còn lại trên nền trắng 24
Hình 5-3: Test cảm biến 2 và 3 trên nền đen còn lại trên nền trắng 24
Hình 5-4: Test cảm biến 3 và 4 trên nền đen, còn lại trên nền trắng 25
DANH MỤC BẢNG BIỂ
Trang 4Bảng 3.1: Ước tính chi phí 10 Bảng 3.2: Phân tích nhân lực 11 Bảng 3.3: Phân công công việc 12
Trang 6NỘI DUNG
1 Lý do chọn đề tài
Xe tự hành hay còn gọi là Robot tự hành “là một thành phần có vai trò quan trọng trong ngành Robot học Cùng với sự phát triển mạnh mẽ của các hệ thống tự động hóa, robot tự hành ngày một được hoàn thiện và càng cho thấy lợi ích của nó trong công nghiệp và sinh hoạt.”[1] Với yêu cầu của môn Đồ Án Thiết Kế 2, nhóm chúng em nhận thấy xe tự hành là một đề tài thú vị, giúp chúng em có thêm kiến thức về các lĩnh vực khác như cơ khí, điện, điện tử… và chúng em có thể thực hiện thành công đề tài này Do đó, xe tự hành đã được lựa chọn để chúng em nghiên cứu cho môn Đồ Án Thiết Kế 2 này
Đề tài tập trung tìm hiểu về nguyên lý hoạt động và cách thức thực hiện xe tựhành (cụ thể là xe dò đường) Điểm khác biệt của xe tự hành này với các loại xe khác (ô tô, xe nâng…) là khả năng tự động đi theo một đường đã vạch sẵn mà không cần sự điều khiển của con người trong quá trình di chuyển
Trong quá trình thực hiện, chúng em không thể tránh khỏi những thiếu sót Chúng em mong nhận được sự đóng góp của thầy cô và các bạn để đồ án được hoànthiện hơn
Chúng em xin chân thành cảm ơn PGS.TS Nguyễn Văn Khang, người đã trực tiếp hướng dẫn chúng em thực hiện đồ án này Thầy đã giúp đỡ, tận tình chỉ bảo chúng em trong suốt quá trình học tập và nghiên cứu
2 Yêu cầu chức năng và phi chức năng
2.1 Yêu cầu chức năng
- Xe chạy cheo 1 đường đi màu đen đã vạch sẵn trên nền trắng
- Khi xe không thể nhận diện được đường đi, quay trái để tìm đường
- Xe có nút nhấn cho phép hoạt động hoặc không hoạt động
Trang 72.2 Yêu cầu phi chức năng
- Số bánh xe: 3 bánh Hai bánh sau truyền động (mỗi bánh được điều khiển bởi một động cơ), bánh trước dẫn động
- Số cảm biến: 4 cặp cảm biến hồng ngoại chia làm 2 bên đối xứng với nhau
so với mặt phẳng trung trực của xe và ở trước bánh dẫn động Đặt tên các cảm biến (tính từ trái qua phải của xe: A1, A2, B1, B2) Khoảng cách giữa hai cảm biến cạnh nhau: 2 cm
- Đường đi:
o Màu: Màu đen
o Chiều rộng: 3,5 cm
- Nguồn: 18V
o Nguồn cho mạch điều khiển trung tâm: 9V
o Nguồn cho động cơ: 9V
- Chất liệu sàn xe: nhựa mica
- Kích thước: 25cm x 12cm x 8cm (chiều dài x chiều rộng x chiều cao)
- Chi phí sản xuất: 700.000 đồng
- Ngày hoàn thành: 12/01/2017
Trang 83 Thiết kế hệ thống
3.1 Sơ đồ khối
Hình 3-1: Sơ đồ khối tổng quát
- Khối cảm biến: xác định xe đi đúng đường, lệch phải hay lệch trái.
- Khối điều khiển trung tâm: Nhận tín hiệu từ khối cảm biến, từ đó đưa ra
quyết định điều khiển khối điều khiển động cơ
- Khối điều khiển động cơ: điều khiển các động cơ của xe quay hay dừng.
- Khối nguồn: Cung cấp nguồn điện cho các khối còn lại hoạt động
3.2 Sơ đồ chi tiết từng khối
3.2.1 Khối cảm biến
Khối cảm biến bao gồm 1 module hồng ngoại và các cảm biến hồng ngoại Các cảm biến hồng ngoại sẽ nằm ở 2 bên so với mặt phảng trung trực của xe Module hồng ngoại sẽ nhận tín hiệu từ các cảm biến hồng ngoại thông qua các chân IN1, IN2, IN3, IN4 Giá trị của chân OUT của cảm biến hồng ngoại sẽ trả về giá trị anolog Module hồng ngoại sẽ nhận tín hiêụ, sau đó dùng triết áp để quyết định ngưỡng trả về tại các chân OUT là 0 hay 1 Các chân OUT1, OUT2, OUT3, OUT4 nối với các chân tương ứng của khối điều khiển
Trang 9Hình 3-2: Khối cảm biến
3.2.2 Khối điều khiển trung tâm
Ta dùng module Arduino làm trung tâm điều khiển Lý do: Arduino có hệ thống thư viện phong phú, lập trình dễ dàng, dễ kết nối với các khối khác
Hình 3-3: Khối điều khiển
Trang 103.2.3 Khối điều khiển động cơ
Khối điều khiển động cơ gồm module L298 và 2 động cơ điều khiển 2 bánh trái,phải của xe Module L298 là một IC tích hợp gồm hai mạch cầu H bên trong Điện
áp làm tăng công suất đầu ra từ 5V đến 47V,dòng có thể lên đến 4A.Các chân IN1, IN2, IN3, IN4 là các chân tín hiệu điều khiển, được nối với các chân tương ứng của khối điều khiển, quyết định xem các motor sẽ quay như thế nào Các chân OUT1, OUT2, OUT3, OUT4 sẽ được nối với động cơ Hai chân ENA và ENB để điều khiển các mạch cầu H trong L298 Nếu ở mức logic “1” thì cho phép mạch cầu H hoạt đông, còn nếu ở mức logic “0” thì mạch cầu H không hoạt động
Hình 3-4: Khối điều khiển động cơ
Mỗi động cơ được gắn với 1 bánh xe truyền động cho xe Khi xe muốn rẽ trái, động cơ bên phải sẽ quay, động cơ bên trái không quay và ngược lại, khi xe muốn rẽphải thì động cơ bên trái quay, động cơ bên phải không quay Ở đây, chúng em dùngđộng cơ giảm tốc để đảm bảo khả năng chịu tải của xe, có thể kéo theo các vật khác
Trang 11Hình 3-6: Khối nguồn
Trang 12- Có khả năng lập trình, thuyết trình tốt.
- Bảo thủ trong công việc, đôi khi không tôn trọng ý kiến thành viên trong nhóm
- Các buổi chiều trong tuần và ngày nghỉ cuối tuần
- Xe máy
- Laptop
- Arduino UnoR3
- Module L298
2 Lê - Đúng giờ - Nhà xa - Các ngày - Xe máy
Trang 13Quang
Hoàn - Tinh thần tráchnhiệm trong
công việc
-Có khả năng gắn kết các thành viên trongnhóm
- Chưa có kỹ năng lập trìnhcho Arduino
trong tuần trừ cuối tuần
- Laptop
- Mỏ hàn
3.5 Phân công công việc
Từ bảng đánh giá phân tích nhân lực và các công việc cần thực hiện, nhóm đã phân chia công việc cho từng thành viên như sau:
Bảng 3.3: Phân công công việc
ST
- Yêu cầu chức năng, phi chức năng
- Tìm hiểu giá thành sản phẩm
- Viết và test code
- Mua linh kiện
- Test động cơ
2 Lê Quang Hoàn - Sơ đồ khối và chi tiết các khối
- Mô phỏng trên proteus
- Phân tích nhân lực và phân công công việc
- Mua linh kiện
- Làm đường cho xe chạy
4 Thực hiện
4.1 Thực hiện phần cứng
Dưới đây là sản phẩm sau khi hoàn thành:
Trang 14Hình 4-7: Tổng thể sản phẩm
Chiếc xe có 3 bánh, sàn xe được làm bằng nhựa mica Đặt trên sàn xe là module L298N, module Arduino Uno R3 và module cảm biến hồng ngoại Bên cạnh module Arduino là 1 nút bấm màu đỏ cho phép bật/tắt thiết bị Hai bên của module cảm biến hồng ngoại là 2 quả pin 9V Lý dó không đặt nguồn pin cạnh module L298N vì khi hoạt động, vi điều khiển L298 có thể bị nóng, làm ảnh hưởng đến nguồn pin Bốn cảm biến hồng ngoại được đặt ở đầu xe
4.1.1 Khối cảm biến
Khối cảm biến có hình dạng như sau:
Trang 154.1.2 Khối điều khiển trung tâm
Khối điều khiển trung tâm chúng em sử dụng là Arduino uno R3 có hình dạng sau:
Hình 4-9: Arduino UNO R3
Trang 16
-Bảng 4.1: Thông số của Arduino UNO R3 [5]
Số chân Digital I/O 14 (6 chân cho phép sử dụng PWM)
Dòng tối đa trên mỗi chân I/O 30 mA
- Các chân chức năng:
o GND: cực âm của nguồn điện cấp cho UNO
o 5V: Điện áp 5V đầu ra với dòng tối đa là 500 mA
o 3.3V: Điện áp 3.3V đầu ra với dòng tối đa 50 mA
o Vin: Cấp nguồn ngoài cho Arduino UNO
- Bộ nhớ:
o Bộ nhớ Flash (32KB): những đoạn lệnh lập trình sẽ được lưu trữ trong
bộ nhớ Flash của vi điều khiển
o Bộ nhớ SRAM (2KB): giá trị các biến được khai báo khi lập trình sẽ lưu ở đây Khi mất điện, dữ liệu trêu SRAM sẽ bị mất
o EEPROM (1KB): đây giống như ổ cứng mini – nơi có thể đọc và ghi
dữ liệu và không bị mất khi mất điện
4.1.3 Khối điều khiển động cơ
Khối điều khiển động cơ là module L298 có hình dạng sau:
Trang 17Hình 4-10: Khối điều khiển động cơ
Hai nguồn 5V và 9V đều nối cực âm với chân GND của module Nguồn 5V (lấy từ chân ra 5V của Kit Arduino UNO R3) để nuôi module, nguồn 9V để cấp dòng cho 2 động cơ A và B
4.1.4 Khối nguồn
Vì đây là thiết kế xe nên không thể dùng nguồn cắm dây được Chính vì thế, chúng em quyết định dùng nguồn là 2 pin 9V Một pin dùng để cấp nguồn cho Arduino, một pin dùng để cấp nguồn cho động cơ
Trang 18Hình 4-11: 2 quả pin 9V
4.2 Thực hiện phần mềm
Chúng em sử dụng phầm mềm Arduino 1.6.12 để viết chương trình cho xe chạy Code bao gồm các phần:
4.2.1 Khai báo chân
Đầu tiên, ta cần khai báo các chân tín hiệu của các khối khác sẽ được nối với cácchân nào của Arduino UNO
#define inA1 6 //Định nghĩa chân inA1 của động cơ A nối với chân 6 của Arduino UNO
#define inA2 7 //Định nghĩa chân inA2 của động cơ A nối với chân 7 của Arduino UNO
#define inB1 8 //Định nghĩa chân inB1 của động cơ A nối với chân 8 của Arduino UNO
#define inB2 9 //Định nghĩa chân inB2 của động cơ A nối với chân 9 của Arduino UNO
#define sensor1 10 //Định nghĩa cảm biến 1 nối với chân 10 của Arduino UNO
#define sensor2 11 //Định nghĩa cảm biến 1 nối với chân 11 của Arduino UNO
#define sensor3 12 //Định nghĩa cảm biến 1 nối với chân 12 của Arduino UNO
#define sensor4 13 //Định nghĩa cảm biến 1 nối với chân 13 của Arduino UNO
4.2.2 Khai báo chân input, ouput
Sau khi khai báo các chân tín hiệu, ta xác định chân nào sẽ nhận tín hiệu đầu vào, chân nào sẽ cho tín hiệu đầu ra Để kiểm tra hoạt động của hệ thống sau này, ta
dùng lệnh Serial.begin() để gửi tín hiệu về máy tính
Trang 19Serial.begin(9600); // thiet lap su dung serial gui tin hieu ve may tinh
pinMode(sensor1, INPUT); //Set chân sensor của module hồng ngoại là input
4.2.3 Hàm điều khiển chiều quay của một động cơ
void motorControlNoSpeed(byte in1, byte in2, byte direct)
{
// in1, in2 là 2 tín hiệu điều khiển chiều quayd dộng cơ
switch (direct)
{
digitalWrite(in1, LOW); //Thiết lập in1 ở mức thấp (LOW)
4.2.4 Hàm điều khiển hướng di chuyển của xe
void robotMover(byte inR1, byte inR2, byte inL1, byte inL2, byte action)
{
/*
inR1 inR2 là 2 chân tín hiệu động cơ bên phải
inL1 inL2 là 2 chân tín hiệu động cơ bên trái
Trang 204.2.5 Các hàm kiểm tra vị trí cảm biến hồng ngoại
int deviationDarkLine4Sensor( int PinNumb1, int PinNumb2, int PinNumb3, int PinNumb4) {
int left = 0; //biến kiểm tra lệch trái
int right = 0; // biến kiểm tra lệch phải
left = IRSensor(PinNumb1) + IRSensor(PinNumb2); //kiểm tra mấy cảm biến trái ở trong màu đen
right = IRSensor(PinNumb3) + IRSensor(PinNumb4); //kiểm tra mấy cảm biến phải ở trong màu đen
Serial.print( "left=" ); // In lên màn hình máy tính (nếu kết nối máy tính)
4.2.6 Hàm điều khiển động cơ dựa theo cảm biến hồng ngoại
void darkLineFollower(byte inR1, byte inR2, byte inL1, byte inL2, byte sen1, byte sen2, byte sen3, byte sen4)
{
//Hàm điều khiển robot bám line màu tối
//inR1, inR2 và inL1, inL2 là các chân tín hiệu lần lượt điều khiển động cơ di chuyển bên phải và trái
Trang 21//sen1 đến sen4 là chân nhận tín hiệu từ cảm biến hồng ngoại
switch (deviationDarkLine4Sensor(sen1, sen2, sen3, sen4))
- Bước 1: Kết nối Arduino Kết nối với máy tính
- Bước 2: Tìm cổng kết nối của Arduino UNO với máy tính[6]
Mở cử sổ Run và gõ lệnh “mmc devmgmt.msc”
Trang 22Hình 4-12: Mở sửa sổ Device Manager
Sau đó bấn Enter, cửa sổ Device Manager sẽ hiện lên
Hình 4-13: Giao diện cửa sổ Device Manager
Trang 23Chọn mục Ports (COM & LPT), ta sẽ thấy cổng COM Arduino UNO R3
- Bước 3: Khởi động Arduino IDE
- Bước 4: Cấu hình làm việc cho Arduino IDE
Vào menu Tools -> Board -> chọn Arduino Uno
Hình 4-14: Chọn Board
- Bước 5: Mở file code và nạp chương trình
Trang 245 Kiểm thử
5.1 Kiểm tra cảm biến hồng ngoại
Trong phần báo cáo này, chúng em kiểm thử các cảm biến Chúng em kiểm thử bằng cách viết một chương trình riêng để kiểm tra hoạt động của cảm biến Chương trình có ghi nếu cảm biến nhận màu đen thì màn hình máy tính hiện lên chữ “black”còn nếu cảm biến nhận màu trắng thì màn hình máy tính hiện lên 1 nét liền Chúng
em thực hiện kiểm tra tất cả 4 con cảm biến bằng 4 trường hợp và ghi lại trong các bức ảnh
if (digitalRead (sensor1) == 0) Serial.print(" _");
elseSerial.print ("black ");
if (digitalRead (sensor2) == 0) Serial.print (" _");
elseSerial.print ("black ");
if (digitalRead (sensor3) == 0) Serial.print (" _");
elseSerial.print ("black ");
if (digitalRead (sensor4) == 0) Serial.print (" _\n");
elseSerial.print ("black \n");
Trang 25 Trường hợp 2: test cảm biến 2 trên nền đen còn lại trắng Kết quả được ghi lại như sau:
Hình 5-17: Test cảm biến 1 trên nền đen, còn lại trên nền trắng
Trường hợp 3: test cảm biến 2 và 3 trên nền đen còn lại trắng Kết quả thu được như sau:
Hình 5-18: Test cảm biến 2 và 3 trên nền đen còn lại trên nền trắng
Trang 26 Trường hợp 4: test cảm biến 3 và 4 trên nền đen còn lại trắng Kết quả thu được như sau:
Hình 5-19: Test cảm biến 3 và 4 trên nền đen, còn lại trên nền trắng
5.2 Kiểm tra hoạt động của xe
Sau khi thấy cảm biến hồng ngoại đã hoạt động chính xác, chúng em tiến hành nạp code để test hoạt động của cả xe, bao gồm cảm biến hồng ngoại và điều khiển động cơ Kết quả cho thấy xe chạy đúng với yêu cầu chức năng là đi theo đường đã
kẻ sẵn, không có trường hợp xe bị mất vạch
Trang 27KẾT LUẬN
Như vậy, trong một kỳ học, chúng em đã thực hiện thành công đồ án 2 với đề tài “Xe tự hành” Qua những lần được thực hành làm trực tiếp chiếc xe trong môn học này, chúng em đã rút ra được rất nhiều bài học bổ ích Từ đây, chúng em đã thấy được những ưu, nhược điểm của bản thân để từ đó có thể khắc phục Chúng
em xin chân thành cảm ơn PGS.TS Nguyễn Văn Khang đã tạo điều kiện cho chúng
em để chúng em có những kinh nghiệm quý báu và tự tin hơn để chuẩn bị hành trang bước vào đời
Trang 29TÀI LIỆU THAM KHẢO
[1] Phạm Trọng Đạt, Phạm Đức Linh, Nguyễn Văn Lượm, “Thiết kế robot mini
tự hành dò đương trong mê cung” trong Tuyển tập Báo cáo Hội nghị sinh viên Nghiên cứu Khoa học lần thứ 7 Đại học Đà Nẵng năm 2010
truy cập lần cuối ngày 26/11/2016
14/01/2017
cuối ngày 14/01/2017