1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

16 4,9K 19

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 529,58 KB

Nội dung

có sơ đồ nguyên lý, đồ khối và lưu đồ giải thuật và code đầy đủ cho mạch thiết kế ROBOT dò đường ...............................................................................................................................................................

Trang 1

DANH MỤC CÁC HÌNH VẼ

Trang 3

Vạch màu

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

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:

Trang 4

Module hồng ngoại.

• KHỐI ĐIỀU KHIÊN ĐỘNG CƠ:

Module L298

• KHỐI ARDUINO:

Arduino nano

Trang 5

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:

Trang 6

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)

Trang 7

• 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 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 {X; Y; Z; T} {0; 1}

N {0; 1; ….; 15}

Trang 8

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

S

N := N + 2

S

S

Đ Đ

N := 1

N := N + 4 Đ

X = 1

N :=0

Y = 1

Z = 1

N := N + 8 S

T = 1

Xuất N

Kết thúc

Đ

Trang 9

1.7 Bảng sự thật: (điều khiển động cơ bằng L298)

Quy ước: đen = 1, trắng = 0

Hình 7: Bảng sự thật.

Trang 10

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

Trang 11

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

Trang 12

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 ảnhhttps://muabanlinhkien.com

Tiếng Anh:

[4] CCS manual nguồnhttps://www. ccs info.com

[5] Arduino nano nguồn https://www.arduino.cc/

Trang 13

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);

Trang 14

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);

Trang 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);

Trang 16

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%

Ngày đăng: 11/03/2017, 18:08

TỪ KHÓA LIÊN QUAN

w