SỬ DỤNG ARDUINO CHO BÀI TOÁN ĐIỀU KHIỂN DẪN ĐƯỜNG ROBOT DI ĐỘNG

63 5 0
SỬ DỤNG ARDUINO CHO BÀI TOÁN ĐIỀU KHIỂN DẪN ĐƯỜNG ROBOT DI ĐỘNG

Đ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

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN ĐIỆN TỬ NGUYỄN VIẾT KHÁNH SỬ DỤNG ARDUINO CHO BÀI TOÁN ĐIỀU KHIỂN DẪN ĐƯỜNG ROBOT DI ĐỘNG ĐỒ ÁN TỐT NGHIỆP Đà Nẵng, 2022 TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN ĐIỆN TỬ ĐỒ ÁN.

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN- ĐIỆN TỬ NGUYỄN VIẾT KHÁNH SỬ DỤNG ARDUINO CHO BÀI TOÁN ĐIỀU KHIỂN DẪN ĐƯỜNG ROBOT DI ĐỘNG ĐỒ ÁN TỐT NGHIỆP Đà Nẵng, 2022 TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN- ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP SỬ DỤNG ARDUINO CHO BÀI TOÁN ĐIỀU KHIỂN DẪN ĐƯỜNG ROBOT DI ĐỘNG CHUYÊN NGÀNH: ĐIỆN TỰ ĐỘNG GVHD : T.S TRẦN THUẬN HOÀNG SVTH : NGUYỄN VIẾT KHÁNH LỚP : K23 EDT MSSV : 2321175118 Đà Nẵng, 2022 LỜI CẢM ƠN Qua bốn năm phấn đấu học hỏi không ngừng, cuối em hoàn thành đồ án tốt nghiệp Để đạt thành này, phải kể đến công lao to lớn tồn thể thầy cơ, bạn bè tận tình dạy dỗ giúp đỡ em suốt trình học tập từ em bước vào trường nhiều bỡ ngỡ Qua em xin gửi lời cảm ơn chân thành đến toàn thể thầy giáo, cô giáo trường Đại học Duy Tân, đặc biệt thầy T.S Trần Thuận Hồng – Người ln ln giúp đỡ, hướng dẫn tận tình em suốt trình làm đồ án Em học hỏi thầy phương pháp làm việc khoa học, tính kiên trì, sáng tạo nghiên cứu nhiều kiến thức bổ ích Em xin gửi lời cảm ơn chân thành đến thầy cô trung tâm Điện-Điện Tử CEE Trường Đại Học Duy Tân Các thầy cô truyền đạt hướng dẫn chúng em kiến thức tảng quan trọng ngành học giúp chúng em vận dụng phát huy vào thực tế đồ án Em xin cảm ơn anh, chị công tác trung tâm Điện-Điện Tử CEE tạo điều kiện, giúp đỡ truyền đạt nhiều kinh nghiệm quý giúp em hoàn thành tốt đồ án Em xin kính chúc thầy giáo, cô giáo, anh chị bạn mạnh khỏe, hạnh phúc thành công sống ! LỜI CAM ĐOAN Tác giả xin cam đoan: Bản khóa luận tồn cơng sức tác giả bỏ nghiên cứu nghiêm túc, thực sự hướng dẫn tận tình thầy TS Trần Thuận Hồng Nội dung khóa luận có tham khảo sử dụng tài liệu, thông tin internet xác nhận theo danh mục tài liệu tham khảo cuối khóa luận Một lần tác giả xin khẳng định trung thực lời cam kết Đà Nẵng, Ngày 17 tháng 12 năm 2022 Người cam đoan Nguyễn Viết Khánh MỤC LỤC MỞ ĐẦU 1 Tính cấp thiết đề tài .1 Ý nghĩa khoa học thực tiễn .1 Đối tượng .2 Phương pháp nghiên cứu .2 Nội dung nghiên cứu CHƯƠNG 1: TỔNG QUAN VỀ ROBOT VÀ ROBOT DI ĐỘNG 1.1 Robot 1.2.1 Cấu trúc 1.2.2 Một số ứng dụng robot di động CHƯƠNG 2: THIẾT KẾ VÀ TÌM HIỂU LINH KIỆN 2.1 Giải pháp thiết kế .7 2.1.1 Sơ đồ khối 2.1.2 Phân tích chức khối 2.1.3 Nguyên lý hoạt động hệ thống 2.2 Lựa chọn thiết bị 2.2.1 Giới thiệu chung Ardiuno 2.2.2 Bo mạch Arduino Uno R3 2.2.3 Vi điều khiển 10 2.2.4 Mạch điều khiển động 12 2.2.5 Động DC 14 2.2.5 Cảm biến encoder(cảm biến lập mã trục quay) 14 2.2.6 Bánh xe thụ động khung xe robot 15 2.2.7 Ắc quy YT5A 16 2.2.8 Màn hình LCD 16X2 mạch giao tiếp I2C 18 CHƯƠNG 3: PHÂN TÍCH THUẬT TỐN ODOMETRY VÀ ỨNG DỤNG TRONG ĐỊNH VỊ ROBOT 21 3.1 Sử dụng encoder để đo quãng đường .21 3.2 Định vị robot odometry 22 3.3 Giới thiệu phần mềm Arduino IDE 27 3.3.1 Giao diện 27 3.3.2 Vùng lệnh 27 CHƯƠNG 4: THIẾT KẾ VÀ CHẾ TẠO ROBOT 29 4.1 Thiết kế phần cứng 29 4.1.1 Thiết kế khung robot 29 4.1.2 Khung robot hoàn chỉnh thực tế 29 4.2 Thiết kế hệ thống điều khiển robot 30 4.2.1 Truyền liệu qua Serial Monitor 30 4.2.2 Chương trình vi điều khiển 33 4.3 kết thực nghiệm mơ hình robot .35 4.3.1 Môi trường thực nghiệm 35 4.3.2 Các kịch thực nghiệm 36 4.3.3 Mô tả thông số đo: 36 4.3.4 Kết thực nghiệm thảo luận 37 PHẦN KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN 44 TÀI LIỆU THAM KHẢO 54 DANH MỤC HÌNH ẢNH Hình 1.1 Ba phận robot Hình 1.2 Sơ đồ khối cấu trúc robot di động Hình 2.1 Sơ đồ khối dẫn đường robot Hình 2.2 Vi điều khiển Atmega 328 10 Hình 2.3 Sơ đồ chân Atmega 328 12 Hình 2.4 Module điều khiển động VNH2SP30 13 Hình 2.5 Sơ đồ nguyên lý module VNH2SP30 13 Hình 2.6 Động DC Servo SE38BE27-001 24 14 Hình 2.7 Cảm biến lập mã quang 15 Hình 2.8 Bánh xe thụ động 16 Hình 2.9 Bình ắc quy 12V-5Ah/10Hr 16 Hình 3.2 Hệ toạ độ khơng gian phịng 23 Hình 3.3 Đo đường rơ-bốt di động biến liên quan 24 Hình 3.1 Lưu đồ thuật tốn 26 Hình 3.4 Giao diện phần mềm Arduino IDE 27 Hình 3.5 Các nút lệnh Arduino IDE 27 Hình 4.1 Bản vẽ khung robot 29 Hình 4.2 Mặt đáy khung robot thực tế 29 Hình 4.3 Mặt cạnh bên khung robot thực tế 30 Hình 4.4 Mặt robot 30 Hình 4.5 Sơ đồ đấu dây phần điều khiển 33 Hình 4.6 Môi trường thử nghiệm .35 Hình 4.7 Thơng số hiển thị LCD .36 Hình 4.8 Điểm xuất phát 37 Hình 4.9 Vị trí sau giây di chuyển robot 38 Hình 4.10 Điểm xuất phát 39 Hình 4.11 Vị trí phía trước sau giây .39 Hình 4.12 Vị trí robot sau quay trái thẳng giây 40 Hình 4.13 Vị trí bắt đầu 41 Hình 4.14 Vị trí robot sau quay trái thẳng giây 41 Hình 4.15 Vị trí robot sau quay trái thẳng giây 42 Hình 4.16 Vị trí robot sau quay trái thẳng giây 42 DANH MỤC BẢNG Bảng 4.1 Kết đo kịch 37 Bảng 4.2 Kết đo kịch 38 Bảng 4.3 Kết đo kịch 40 MỞ ĐẦU Tính cấp thiết đề tài Robot xu hướng nghiên cứu phát triển nhiều nước giới Rất nhiều loại robot tân tiến đời robot chăm sóc người nhà, robot nội chợ, robot bệnh viện, robot hướng dẫn sân bay Một đặc điểm chung robot môi trường hoạt động chủ yếu nhà Một robot di chuyển thơng minh robot có khả tự động di chuyển linh hoạt môi trường có nhiều chướng ngại vật mà khơng xảy tượng, cụ thể vật dụng nhiều hình dạng bàn, ghế, tủ Trên giới có nhiều nghiên cứu giới với thuật giải phương pháp khác cho dẫn đường rô bốt môi trường nhà Những nghiên cứu đa dạng, sử dụng nhiều loại cảm biến khác phục vụ nhiều mục đích khác Tuy nhiên, hệ thống phổ biến thường có tính đặc thù cho loại robot có hình dạng, kiểu dáng định đặc tính cảm biến sử dụng Vì vậy, tính mở rộng hệ thống tốn quan tâm Gần dây, có nhiều sản phầm cảm biến công nghệ cao đời nhằm nâng cao tính mở rộng hệ thống, đổi lại giá thành cao Ý nghĩa khoa học thực tiễn Những tiến công nghệ lĩnh vực robot có đóng góp to lớn nhiều lĩnh vực công nghiệp xã hội thời gian gần Ngày nay, nhiều ứng dụng hệ thống robot tìm thấy tự động hóa nhà máy, hệ thống giám sát, hệ thống kiểm soát chất lượng, AGV (phương tiện tự động dẫn đường), chống thảm họa, hỗ trợ y tế, v.v Ngày có nhiều ứng dụng robot nhằm mục đích cải thiện sống hàng ngày robot bị bắt gặp thường xuyên hết trước thực nhiệm vụ khác Đối với nhiều ứng dụng vậy, khả di chuyển tự động robot vấn đề quan trọng bắt buộc Robot di động tự động robot thực nhiệm vụ mơi trường có cấu trúc khơng có cấu trúc mà khơng có hướng dẫn liên tục người Robot di động hồn tồn tự động có khả năng: Thu thập thông tin môi trường Làm việc thời gian dài mà khơng có can thiệp người Di chuyển toàn phần mơi trường hoạt động mà khơng cần hỗ trợ người Tránh tình có hại cho người, tài sản thân, trừ phần thơng số kỹ thuật thiết kế Robot di động tự động 40 Hình 4.12 Vị trí robot sau quay trái thẳng giây Kịch 3: Với khoảng cách bánh xe L=330(mm), đương kính bánh xe R=49.5(mm) Cho robot chạy phía trước giây, quay trái thẳng giây, quay trái thẳng giây, quay trái thẳng giây để tạo quỹ đạo hình chử nhật Sau kết lần đo được: Lần thực Toạ độ X(mm) Toạ độ Y(mm) Toạ độ Toạ độ Ythực(mm) Xthực(mm) 308 -322 32 -124 297 -144 26 46 294 140 42 113 392 -188 76 83 314 -145 22 106 217 -379 -37 -183 342 -103 176 15 Bảng 4.3 Kết đo kịch 41 Hình 4.13 Vị trí bắt đầu Hình 4.14 Vị trí robot sau quay trái thẳng giây 42 Hình 4.15 Vị trí robot sau quay trái thẳng giây Hình 4.16 Vị trí robot sau quay trái thẳng giây 43 Hình 4.17 Vị trí robot sau quay trái thẳng giây 44 PHẦN KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN Sau thời gian làm đề tài với hướng dẫn tận tình thầy TS Trần Thuận Hồng, đề tài em thực vấ đề sau: +Tổng quan robot; +Thiết kế thuật toán ODOMETRY; +Thiết kế chế tạo robot Arduino Đồ án tốt nghiệp thực cố gắng nỗ lực thân đạo tận tình ban giáo viên hướng dẫn , nhiên thiếu sót khiếm khuyết tránh khỏi Em mong nhận ý kiến đóng góp thầy giáo hội đồng toàn thể bạn để đồ án em hoàn thiện Việc thiết kế robot dẫn đường robot encoder hoàn thành vào hoạt động, cho kết quảng đường vị trí chưa phát huy hết tính Do kiến thức em có giới hạn nên khơng thể nâng cấp chức tiếp Nếu có điều kiện em tiếp tục phát triển hệ thống đáp ứng nhu cầu ngày cao người Em hi vọng ứng dụng robot ứng dụng vào đời sống ngày không đơn mơ hình 45 PHỤ LỤC #include #define BRAKE #define CW #define CCW #define CS_THRESHOLD 15 // Definition of safety current //MOTOR #define MOTOR_A1_PIN #define MOTOR_B1_PIN //MOTOR #define MOTOR_A2_PIN #define MOTOR_B2_PIN #define PWM_MOTOR_1 #define PWM_MOTOR_2 #define CURRENT_SEN_1 A5 #define CURRENT_SEN_2 A3 #define EN_PIN_1 A0 #define EN_PIN_2 A5 #define MOTOR_1 #define MOTOR_2 #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); int encoder1 = 2; int encoderb1 = 10; long counter1; int encoder2 = 3; int encoderb2 = 11; long counter2; float delta_O = 0; float R = 0; 46 float L = 0; float A = 0; float O = 0; float X = 0; float Y = 0; float S = 0; short usSpeed = 150; //default motor speed unsigned short usMotor_Status1 = BRAKE; unsigned short usMotor_Status2 = BRAKE; float k = 0.41776; void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); lcd.setCursor(3, 0); lcd.print("ViTriRobot"); pinMode(encoder1, INPUT); pinMode(encoder2, INPUT); pinMode(encoderb1, INPUT); pinMode(encoderb2, INPUT); attachInterrupt(0, countpulse1, RISING); attachInterrupt(1, countpulse2, RISING); pinMode(MOTOR_A1_PIN, OUTPUT); pinMode(MOTOR_B1_PIN, OUTPUT); pinMode(MOTOR_A2_PIN, OUTPUT); pinMode(MOTOR_B2_PIN, OUTPUT); pinMode(PWM_MOTOR_1, OUTPUT); pinMode(PWM_MOTOR_2, OUTPUT); pinMode(CURRENT_SEN_1, OUTPUT); pinMode(CURRENT_SEN_2, OUTPUT); pinMode(EN_PIN_1, OUTPUT); 47 pinMode(EN_PIN_2, OUTPUT); cli(); // tắt ngắt toàn cục /* Reset Timer/Counter1 */ TCCR1A = 0; TCCR1B = 0; TIMSK1 = 0; /* Setup Timer/Counter1 */ TCCR1B |= (1 = PI / - 0.1) break; VTHT(); delay(100); } Stop(); delay(500); //di thang dithang(); for(int i = 0; i < 30; i++) { VTHT(); delay(100); } Stop(); delay(500); //xoay trai 90 angle = O; quaytrai(); while (1) { float delta = O - angle; if (delta >= PI) delta -= * PI; if (delta < -PI) delta += * PI; if (abs(delta) >= PI / - 0.1) break; VTHT(); delay(100); } Stop(); delay(500); 50 //di thang dithang(); for(int i = 0; i < 25; i++) { VTHT(); delay(200); } Stop(); delay(500); //xoay trai 90 angle = O; quaytrai(); while (1) { float delta = O - angle; if (delta >= PI) delta -= * PI; if (delta < -PI) delta += * PI; if (abs(delta) >= PI / - 0.1) break; VTHT(); delay(100); } Stop(); delay(500); //di thang dithang(); for(int i = 0; i < 30; i++) { VTHT(); delay(100); } Stop(); delay(500); //xoay phai 90 51 angle = O; quayphai(); while (1) { float delta = O - angle; if (delta >= PI) delta -= * PI; if (delta < -PI) delta += * PI; if (abs(delta) >= PI / - 0.1) break; VTHT(); delay(100); }*/ Stop(); delay(200000); } void Stop() { usMotor_Status1 = BRAKE; usMotor_Status2 = BRAKE; motorGo(MOTOR_1, usMotor_Status1, 0); motorGo(MOTOR_2, usMotor_Status2, 0); } void dithang() { usMotor_Status1 = CCW; usMotor_Status2 = CW; motorGo(MOTOR_1, usMotor_Status1, 50); motorGo(MOTOR_2, usMotor_Status2, 50); } void quayphai() { usMotor_Status1 = CCW; usMotor_Status2 = CCW; motorGo(MOTOR_1, usMotor_Status1, 40); motorGo(MOTOR_2, usMotor_Status2, 40); } 52 void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm) //Function that controls the variables: motor(0 ou 1), direction (cw ou ccw) e pwm (entra e 255); { if (motor == MOTOR_1) { if (direct == CW) { digitalWrite(MOTOR_A1_PIN, LOW); digitalWrite(MOTOR_B1_PIN, HIGH); } else if (direct == CCW) { digitalWrite(MOTOR_A1_PIN, HIGH); digitalWrite(MOTOR_B1_PIN, LOW); } else { digitalWrite(MOTOR_A1_PIN, LOW); digitalWrite(MOTOR_B1_PIN, LOW); } analogWrite(PWM_MOTOR_1, pwm); } else if (motor == MOTOR_2) { if (direct == CW) { digitalWrite(MOTOR_A2_PIN, LOW); digitalWrite(MOTOR_B2_PIN, HIGH); } else if (direct == CCW) { digitalWrite(MOTOR_A2_PIN, HIGH); digitalWrite(MOTOR_B2_PIN, LOW); } else { digitalWrite(MOTOR_A2_PIN, LOW); digitalWrite(MOTOR_B2_PIN, LOW); } analogWrite(PWM_MOTOR_2, pwm); } } 53 NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN Đà Nẵng, ngày… tháng… năm NGƯỜI HƯỚNG DẪN TS Trần Thuận Hoàng 54 TÀI LIỆU THAM KHẢO [1] https://itzone.com.vn/vi/article/su-dung-serial-monitor-de-giao-tiep-giuaarduino-va-pc/ [2] http://arduino.vn/bai-viet/42-arduino-uno-r3-la-gi [3] https://text.xemtailieu.net/tai-lieu/cai-thien-do-chinh-xac-he-thong- dinh-vi-cho-robot-di-dong-dua-tren-phuong-phap-hop-nhat-nhieu-cam-bien2517202.html [4] https://www.slideshare.net/man2017/nghin-cu-phng-php-tng-hp-cm-bin- dng-cho-k-thut-dn-ng-cc-robot-di-ng [5] DATN-Tran Anh Tuan.pdf ... ĐẠI HỌC DUY TÂN KHOA ĐIỆN- ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP SỬ DỤNG ARDUINO CHO BÀI TOÁN ĐIỀU KHIỂN DẪN ĐƯỜNG ROBOT DI ĐỘNG CHUYÊN NGÀNH: ĐIỆN TỰ ĐỘNG GVHD : T.S TRẦN THUẬN HOÀNG SVTH : NGUYỄN VIẾT KHÁNH... đoán điều khiển: Phần cứng điều khiển robot di động chủ yếu dựa vào mạch ứng dụng vi xử lý Thường máy vi tính , mạch vi điều khiển Phần mềm với đường chương trình xử lý, điều khiển đặc trưng cho. .. tương tác với Hệ thống điều khiển robot phải tích hợp phần tử cho robot đạt mục đích mong muốn 1.2.2 Một số ứng dụng robot di động Khả di động giúp cho robot có nhiều ứng dụng đòi hỏi phải giải

Ngày đăng: 22/12/2022, 10:13

Tài liệu cùng người dùng

Tài liệu liên quan