Tải bản đầy đủ (.docx) (16 trang)

Mạch xe ROBOT dò đường ( code đầy đủ bên dưới )

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (298.4 KB, 16 trang )

ROBOT DÒ ĐƯỜNG
DANH MỤC CÁC HÌNH VẼ


MỤC LỤC


ĐỒ ÁN 2
Trang 3/15

CHƯƠNG 1.

GIỚI THIỆU

1.1 Giới thiệu đề tài
1.1.1 Mô tả
Robot dò line là một tổng thể các module và arduino được kết hợp với nhau. Mỗi
thành phần gắn thêm có một vai trò nhất định với mục đích chung là điều khiển robot
chạy đúng line định sẵn.




1.1.2 Khả năng của thiết bị
Tự vận hành:


Robot tự động khi bật nguồn.




Robot dừng khi tắt hoặc hết nguồn.

Di chuyển theo line định sẵn:


Chuyển hướng khi line chuyển hướng.



Chạy lùi khi di chuyển hết line.

1.2 Sơ đồ khối hệ thống

Vạch màu

Hình 1: Sơ đồ khối

• KHỐI NGUỒN:
Nguồn cung cấp 9 - 12 DC. (sử dụng pin).
• KHỐI CẢM BIẾN DÒ ĐƯỜNG:

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 4/15

Module hồng ngoại.

• KHỐI ĐIỀU KHIÊN ĐỘNG CƠ:
Module L298
• KHỐI ARDUINO:
Arduino nano.

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 5/15

CHƯƠNG 2.

LỰA CHỌN LINH KIỆN

1.3 Khối arduino: (arduino nano)











Hình 2: Arduino nano. (nguồn arduino.cc)

Điện áp hoạt động: 5V DC.
Điện áp giới hạn: 20V DC.
Tần số: 16MHz.
Dòng tiêu thụ: 30mA.
Điện áp khuyên dùng: 7V – 12V DC.
Số chận Digital I/O: 14 (6 chân PWM).
Số chân Analog: 8 (độ phân giải 10bit).
Dòng mỗi chân: 40mA
Bộ nhớ: 32KB.
1.4 Khối cảm biến dò line:

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 6/15

Hình 3: sơ đồ orcad khối cảm biến dò line. (tự vẽ)

Hình 4: Sơ nguyên lý cảm biến hồng ngoại. (nguồn muabanlinhkien.com)

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 7/15


NGUYÊN LÝ HOẠT ĐỘNG MODULE HỒNG NGOẠI:








Bước 1: LeD phát sẽ phát 1 tín hiệu ánh sáng hồng ngoại.
Bước 2: Ánh sáng sẽ phản xạ trên đường mặt sàn.
Bước 3: LeD thu sẽ hấp thụ tín hiệu từ ánh sáng hồng ngoại phản xạ.
Bước 4: OPAMP so áp sẽ so sánh tín hiệu nhận được với mức điện áp
cung cấp. Nếu giá trị lớn hơn thì có nghĩa là đang ở nền trắng, nếu giá
trị nhỏ hơn thì có nghĩa là đang ở line đen. (đen, trắng do line quy ước)

1.5 Khối điều khiển động cơ: (module L298)






Hình 5: Module L298. (nguồn muabanlinhkien.com)
Bản chất của moteur là động cơ điện 1 chiều.
Tín hiệu các ngõ ra của L298 cùng là tín hiệu điện áp, giá trị khác nhau.
Sự chênh lệch áp của 2 ngõ ra trên cùng 1 động cơ sẽ tạo ra 1 dòng điện kích
thích động quay.
Ta có công thức:

 Ta chỉ có thể thay đổi tốc độ động cơ bằng cách thay đổi I hay cụ thể là
thay đổi sự chênh lệch áp giữa 2 đầu ra trên cùng 1 động cơ.
 Chênh lệch áp càng lớn  động cơ quay càng nhanh.

1.6

Lưu đồ giải thuật: (nhận tín hiệu từ LeD)
Quy ước:
{X; Y; Z; T} {0; 1}
N {0; 1; ….; 15}

Robot dò line

• X, Y, Z, T là giá trị điện áp
0V hoặc 5V được tính theo
mã nhị phân {0;1} từ phải
sang trái của module hồng
ngoại.
• N là giá trị tổng thu được.
SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 8/15

Đ
X=1

S
N := 1


N :=0

Y=1

Đ
N := N + 2

S
Z=1

Đ
N := N + 4

S
T=1

Đ
N := N + 8

S
Xuất N
Hình 6: Lưu đồ giải thuật.

Kết thúc

Robot dò line

SVTH: Nguyễn Quốc Bảo



ĐỒ ÁN 2
Trang 9/15

1.7 Bảng sự thật: (điều khiển động cơ bằng L298)
Quy ước: đen = 1, trắng = 0.
Mã bit nhận được (N)

Hướng di chuyển

0000
0001
0011
0111
1000
1100
1110
1111

Đi thẳng
Rẽ trái
Xoay trái
Xoay trái
Rẽ phải
Xoay phải
Xoay phải
Lùi + Xoay trái
Hình 7: Bảng sự thật.

Robot dò line


SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 10/15

CHƯƠNG 3.

THI CÔNG MẠCH

• Dựa vào các kết quả tính toán trên lý thuyết qua các bước vẽ mạch in ta tiến
hành thi công mạch.
• Mua linh kiện
• Thiết kế xe chạy.
• Line di chuyển.
• Lắp ráp.

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 11/15

CHƯƠNG 4.

KẾT LUẬN


1.8 Ý nghĩa thực tế và hạn chế của đề tài
Robot là line là bước đầu tiên trong công cuộc tự động hoá ngành điều khiển tự
động. Có thể nói, cho dù thuộc ngành nào chăng nữa thì di chuyển là điều không thể
thiếu trong công việc của mỗi cá nhân. Con người mỗi ngày phải đi qua các tuyến
đường lặp đi lặp lại như một nhu cầu tất yếu, và robot dò line ra đời để thay thế cho
con người làm chuyện đó.
1.9 Hướng phát triển của đề tài
Tương lai không xa, khi công nghệ VANET phát triển mạnh mẽ thì sự ra đời của xe
buýt thông minh hay taxi tự động là điều không tránh khỏi. Nguyên lý hoạt động của
robot dò line lúc này sẽ góp phần không nhỏ vào thành công của các thế hệ sau nó.
Sắp xếp hàng hoá trong siêu thị, hay chỉ đơn giản để vui chơi giải trí thì robot dò line
vẫn có thể đăng tên mình lên vị trí quán quân bảng xếp hạng.

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 12/15

TÀI LIỆU THAM KHẢO
Tiếng việt:
[1] Nguyễn Văn Nhờ, Giáo trình ĐIỆN TỬ CÔNG SUẤT, Nhà xuất bản Đại học
quốc gia Tp.Hồ Chí Minh
[2] Nguyễn Tiến Thường, Giáo trình MẠCH ĐIỆN TỬ 1, Nhà xuất bản Đại học
quốc gia Tp.Hồ Chí Minh
[3] Hình ảnh
Tiếng Anh:
[4] CCS manual nguồn

[5] Arduino nano nguồn />
Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 13/15

PHỤ LỤC A
#define inA1 6 //Định nghĩa chân in1 của động cơ A
#define inA2 7 //Định nghĩa chân in2 của động cơ A
#define inB1 8 //Định nghĩa chân in1 của động cơ B
#define inB2 9 //Định nghĩa chân in2 của động cơ B
#define linesens1 10 //Định nghĩa chân cảm biến line 1
#define linesens2 11 //Định nghĩa chân cảm biến line 2
#define linesens3 12 //Định nghĩa chân cảm biến line 3
#define linesens4 13 //Định nghĩa chân cảm biến line 4
void setup() {
Serial.begin(9600);
pinMode(inA1, OUTPUT);//Set chân in1 của dc A là output
pinMode(inA2, OUTPUT);//Set chân in2 của dc A là output
pinMode(inB1, OUTPUT);//Set chân in1 của dc B là output
pinMode(inB2, OUTPUT);//Set chân in2 của dc B là output
pinMode(linesens1, INPUT);//Set chân cảm biến 1 là input
pinMode(linesens2, INPUT);//Set chân cảm biến 2 là input
pinMode(linesens3, INPUT);//Set chân cảm biến 3 là input
pinMode(linesens4, INPUT);//Set chân cảm biến 4 là input
}
void loop() {

darkLineFollower (inA1, inA2, inB1, inB2, linesens1, linesens2, linesens3,
linesens4);
//delayMicroseconds(1);
}
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
//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))
{
case -1:
robotMover( inR1, inR2, inL1, inL2, 6);// rẽ phải
break;
case -2:
robotMover( inR1, inR2, inL1, inL2, 6);

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 14/15

break;
case 1:
robotMover( inR1, inR2, inL1, inL2, 5);// rẽ trái

break;
case 2:
robotMover( inR1, inR2, inL1, inL2, 5);
break;
case 0:
robotMover( inR1, inR2, inL1, inL2, 1);// tiến thẳng
break;
case 3:
robotMover( inR1, inR2, inL1, inL2, 2);// lệch vạch thì lùi
break;
}
}
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
action= 0 đứng yên
action =1 đi thẳng
action =2 lùi lại
action =3 quay trái
action =4 quay phải
action =5 rẽ trái
action =6 rẽ phải
*/
switch (action)
{
case 0:// không di chuyển
motorControlNoSpeed(inR1, inR2, 0);
motorControlNoSpeed(inL1, inL2, 0);

break;
case 1://đi thẳng
motorControlNoSpeed(inR1, inR2, 1);
motorControlNoSpeed(inL1, inL2, 1);
break;
case 2:// lùi lại
motorControlNoSpeed(inR1, inR2, 2);

Robot dò line

SVTH: Nguyễn Quốc Bảo


ĐỒ ÁN 2
Trang 15/15

motorControlNoSpeed(inL1, inL2, 2);
break;
case 3:// quay trái
motorControlNoSpeed(inR1, inR2, 2);
motorControlNoSpeed(inL1, inL2, 1);
break;
case 4:// quay phải
motorControlNoSpeed(inR1, inR2, 1);
motorControlNoSpeed(inL1, inL2, 2);
break;
case 5:// rẽ trái
motorControlNoSpeed(inR1, inR2, 1);
motorControlNoSpeed(inL1, inL2, 0);
break;

case 6:// rẽ phải
motorControlNoSpeed(inR1, inR2, 0);
motorControlNoSpeed(inL1, inL2, 1);
break;
default:
action = 0;
}
}
void motorControlNoSpeed (byte in1, byte in2, byte direct)
{
// in1 and in2 are 2 signal pins to control the motor
// en is the enable pin
// the defauspeed is the highest
// direct includes:
// 0:Stop
// 1:Move on 1 direct
// 2:Move on another direct
switch (direct)
{
case 0:// Dừng không quay
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
break;
case 1:// Quay chiều thứ 1
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);

Robot dò line

SVTH: Nguyễn Quốc Bảo



ĐỒ ÁN 2
Trang 16/15

break;
case 2:// Quay chiều thứ 2
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
break;
//default:
}
}
boolean IFSensor (byte PinNumb)
{
//0 sáng
//1 tối
return(digitalRead (PinNumb));
}
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 = IFSensor (PinNumb1)+IFSensor (PinNumb2); //kiểm tra mấy cảm biến trái ở
trong màu đen
right= IFSensor (PinNumb3)+IFSensor (PinNumb4); //kiểm tra mấy cảm biến phải
ở trong màu đen
Serial.print("left=");
Serial.println(left);

Serial.print("right=");
Serial.println(right);
if ((left!=0) || (right!=0))return left - right;
else return 3;
/*
Kết quả trả về là 0 là không lệch
Âm là lệch trái
Dương là lệch phải
*/
}
1.2%

Robot dò line

SVTH: Nguyễn Quốc Bảo



×