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 ...............................................................................................................................................................
ROBOT DÒ ĐƯỜNG DANH MỤC CÁC HÌNH VẼ MỤC LỤC ĐỒ ÁN Trang 3/15 CHƯƠNG GIỚI THIỆU 1.1 Giới thiệu đề tài 1.1.1 Mô tả Robot dò line tổng thể module arduino kết hợp với Mỗi thành phần gắn thêm có vai trò định với mục đích chung điều khiển robot chạy line định sẵn • • 1.1.2 Khả thiết bị Tự vận hành: • Robot tự động bật nguồn • Robot dừng tắt hết nguồn Di chuyển theo line định sẵn: • Chuyển hướng line chuyển hướng • Chạy lùi 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 - 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 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 Trang 5/15 CHƯƠNG 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: (độ phân giải 10bit) Dòng 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 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 Trang 7/15 NGUYÊN LÝ HOẠT ĐỘNG MODULE HỒNG NGOẠI: • Bước 1: LeD phát phát tín hiệu ánh sáng hồng ngoại Bước 2: Ánh sáng phản xạ đường mặt sàn Bước 3: LeD thu hấp thụ tín hiệu từ ánh sáng hồng ngoại phản xạ Bước 4: OPAMP so áp so sánh tín hiệu nhận với mức điện áp cung cấp Nếu giá trị lớn có nghĩa trắng, giá trị nhỏ có nghĩa line đen (đen, trắng 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 moteur động điện chiều Tín hiệu ngõ L298 tín hiệu điện áp, giá trị khác Sự chênh lệch áp ngõ động tạo dòng điện kích thích động quay Ta có công thức: Ta thay đổi tốc độ động cách thay đổi I hay cụ thể thay đổi chênh lệch áp đầu động Chênh lệch áp lớn động quay 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 giá trị điện áp 0V 5V tính theo mã nhị phân {0;1} từ phải sang trái module hồng ngoại • N giá trị tổng thu SVTH: Nguyễn Quốc Bảo ĐỒ ÁN Trang 8/15 Đ X=1 S N := N :=0 Y=1 Đ N := N + S Z=1 Đ N := N + S T=1 Đ N := N + 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 Trang 9/15 1.7 Bảng thật: (điều khiển động L298) Quy ước: đen = 1, trắng = Mã bit nhận (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 thật Robot dò line SVTH: Nguyễn Quốc Bảo ĐỒ ÁN Trang 10/15 CHƯƠNG THI CÔNG MẠCH • Dựa vào kết tính toán lý thuyết qua 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 Trang 11/15 CHƯƠNG KẾT LUẬN 1.8 Ý nghĩa thực tế hạn chế đề tài Robot line bước công tự động hoá ngành điều khiển tự động Có thể nói, cho dù thuộc ngành di chuyển điều thiếu công việc cá nhân Con người ngày phải qua tuyến đường lặp lặp lại nhu cầu tất yếu, robot dò line đời để thay cho người làm chuyện 1.9 Hướng phát triển đề tài Tương lai không xa, công nghệ VANET phát triển mạnh mẽ đời xe buýt thông minh hay taxi tự động điều không tránh khỏi Nguyên lý hoạt động robot dò line lúc góp phần không nhỏ vào thành công hệ sau Sắp xếp hàng hoá siêu thị, hay đơn giản để vui chơi giải trí robot dò line đăng tên 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 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 Đạ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 Đại học quốc gia Tp.Hồ Chí Minh [3] Hình ảnh https://muabanlinhkien.com Tiếng Anh: [4] CCS manual nguồn https://www.ccsinfo.com [5] Arduino nano nguồn https://www.arduino.cc/ Robot dò line SVTH: Nguyễn Quốc Bảo ĐỒ ÁN Trang 13/15 PHỤ LỤC A #define inA1 //Định nghĩa chân in1 động A #define inA2 //Định nghĩa chân in2 động A #define inB1 //Định nghĩa chân in1 động B #define inB2 //Định nghĩa chân in2 động B #define linesens1 10 //Định nghĩa chân cảm biến line #define linesens2 11 //Định nghĩa chân cảm biến line #define linesens3 12 //Định nghĩa chân cảm biến line #define linesens4 13 //Định nghĩa chân cảm biến line void setup() { Serial.begin(9600); pinMode(inA1, OUTPUT);//Set chân in1 dc A output pinMode(inA2, OUTPUT);//Set chân in2 dc A output pinMode(inB1, OUTPUT);//Set chân in1 dc B output pinMode(inB2, OUTPUT);//Set chân in2 dc B output pinMode(linesens1, INPUT);//Set chân cảm biến input pinMode(linesens2, INPUT);//Set chân cảm biến input pinMode(linesens3, INPUT);//Set chân cảm biến input pinMode(linesens4, INPUT);//Set chân cảm biến 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 inL1, inL2 chân tín hiệu điều khiển động di chuyển bên phải trái //sen1 đến sen4 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 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 lùi break; } } void robotMover (byte inR1, byte inR2, byte inL1, byte inL2, byte action) { /* inR1 inR2 chân tín hiệu động bên phải inL1 inL2 chân tín hiệu động bên trái action= đứng yên action =1 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 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 signal pins to control the motor // en is the enable pin // the defauspeed is the highest // direct includes: // 0:Stop // 1:Move on 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ứ digitalWrite(in1, HIGH); digitalWrite(in2, LOW); Robot dò line SVTH: Nguyễn Quốc Bảo ĐỒ ÁN Trang 16/15 break; case 2:// Quay chiều thứ 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 cảm biến trái màu đen right= IFSensor (PinNumb3)+IFSensor (PinNumb4); //kiểm tra cảm biến phải 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 trả là không lệch Âm lệch trái Dương lệch phải */ } 1.2% Robot dò line SVTH: Nguyễn Quốc Bảo ... (PinNumb 3)+ IFSensor (PinNumb 4); //kiểm tra cảm biến phải màu đen Serial.print("left= "); Serial.println(left); Serial.print("right= "); Serial.println(right); if (( left!= 0) || (right!= 0)) return... direct switch (direct) { case 0:// Dừng không quay digitalWrite(in1, LOW); digitalWrite(in2, LOW); break; case 1:// Quay chiều thứ digitalWrite(in1, HIGH); digitalWrite(in2, LOW); Robot dò line SVTH:... 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,