Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
2,27 MB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VINH KHOA ĐIỆN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài: THIẾT KẾ HỆ THỐNG ĐỊNH VỊ CHO ROBOT TỰ HÀNH BẰNG LINE Sinh viên thực hiện: NGUYỄN NGỌC MẠNH Lớp: DHTDHCK14A1 Mã số sinh viên: 140519001 Giảng viên hướng dẫn: THÁI HỮU NGUYÊN Nghệ An, 1-2023 i h TRƯỜNG ĐH SPKT VINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN Độc lập – Tự – Hạnh phúc ii h LỜI CẢM ƠN Để hoàn thành báo cáo này, chúng em xin gửi lời cảm ơn đến Ban giám hiệu Trường Đại học Sư phạm Kỹ thuật Vinh tạo điều kiện sở vật chất với phòng học đẹp, có wifi, để phục vụ cho việc học tập tìm kiếm thơng tin chúng em Với lòng biết ơn sâu sắc nhất, chúng em xin gửi đến quý Thầy Thái Hữu Nguyên thầy cô giảng viên Trường Đại học Sư phạm Kỹ thuật Vinh với tri thức tâm huyết để truyền đạt cho chúng em kiến thức quý báu để chúng em học tập, nghiên cứu chế tạo sản phẩm Trong học kì, em khơng thể hồn thành dự án khơng có giảng dạy tận tâm, giúp đỡ nhiệt tình thầy Thái Hữu Nguyên Với lòng biết ơn sâu sắc nhất, nhóm em xin gửi đến Thầy Chúc Thầy thành công tâm huyết với nghề để tiếp tục truyền đạt kiến thức quý báu cho chúng em trình học tập trường xa ngồi sống Do chưa có nhiều kinh nghiệm nên tránh khỏi thiếu sót hạn chế, mong nhận ý kiến đóng góp từ phía thầy để dự án hoàn thiện Chúng em xin chân thành cảm ơn! [Gõ ở đây] h [Gõ ở đây] h Lời Nói Đầu Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, văn minh đại Sự phát triển kỹ thuật điện tử tạo hàng loạt thiết bị với đặc điểm bật xác cao, tốc độ nhanh, gọn nhẹ yếu tố cần thiết góp phần cho hoạt động người đạt hiệu cao Các điều khiển sử dụng vi điều khiển đơn giản để vận hành sử dụng lại điều phức tạp Các vi điều khiển theo thời gian với phát triển công nghệ bán dẫn tiến triển nhanh, từ vi điều khiển bit đơn giản đến vi điều khiển 32 bit, sau 64 bit Điện tử trở thành ngành khoa học đa nhiệm vụ Điện tử đáp ứng địi hỏi khơng ngừng từ lĩnh vực công – nông – lâm – ngư nghiệp nhu cầu cần thiết hoạt động đời sống ngày Robot có vai trò quan trọng đời sống đặc biệt ứng dụng cơng nghiệp, sản xuất kinh tế, quốc phịng… Vì em chọn đề tài “Thiết kế hệ thống định cho robot tự hành line ” để làm đồ án tốt nghiệp Mặc dù cố gắng thiết kế làm mạch thời gian ngắn lực hạn chế nên mạch cịn sai sót Em mong thầy (cơ) giáo góp ý để em sớm hồn thành đồ án Em xin chân thành cảm ơn! [Gõ ở đây] h Chương Tổng quan 1.1 Giới thiệu robot tự hành Robot tự hành loại robot có khả di chuyển thực tác vụ mà không cần can thiệp người Robot tự hành thường trang bị cảm biến, máy tính phận khác để giúp chúng tự động hóa việc di chuyển thực tác vụ Hình 1-1: Robot tự hành cơng nghiệp Ứng dụng : Ngoài ra, robot tự hành sử dụng ứng dụng dịch vụ, chẳng hạn lĩnh vực y tế giáo dục Trong lĩnh vực y tế, robot tự hành sử dụng để giúp bác sĩ y tá thực tác vụ đưa thuốc cho bệnh nhân giúp bệnh nhân di chuyển Trong lĩnh vực giáo dục, robot tự hành sử dụng để giúp giáo viên giảng dạy giúp trẻ em học tập Robot tự hành sử dụng ứng dụng khắc phục thiên tai tìm kiếm cứu hộ Ví dụ, robot tự hành sử dụng để tìm kiếm cứu hộ nạn nhân vụ tai nạn vụ động đất, lụt lội cháy nổ Hình 1-2: Robot cứu hỏa 1.2 Giới hạn thách thức : Tuy nhiên, robot tự hành đem lại số thách thức Một số khả xử lý thông tin robot Một robot tự hành cần phải có khả xử lý liệu nhanh chóng xác để đưa định thực tác vụ [Gõ ở đây] h cách hiệu Đồng thời, việc thiết kế hệ thống điều khiển điều hành thách thức nhà sản xuất robot tự hành Ngoài việc đảm bảo an toàn đảm bảo tính an tồn cho robot tự hành thách thức lớn Robot tự hành thường phải di chuyển mơi trường đầy rủi ro gặp phải trở ngại bất ngờ, điều gây nguy hiểm cho robot người xung quanh Vì vậy, nhà sản xuất robot tự hành phải thiết kế hệ thống an toàn cảm biến hệ thống dừng khẩn cấp để đảm bảo tính an toàn cho robot người sử dụng Một thách thức khác robot tự hành khả tương tác với người Robot tự hành phải có khả tương tác giao tiếp với người cách hiệu để thực tác vụ cách hiệu Việc thiết kế giao diện ngườimáy hiệu dễ sử dụng thách thức lớn nhà sản xuất robot tự hành Ngồi ra, việc đảm bảo tính bảo mật riêng tư thông tin thu thập robot tự hành thách thức đáng ý Robot tự hành thường thu thập nhiều liệu môi trường người xung quanh, việc đảm bảo tính bảo mật riêng tư thơng tin quan trọng để tránh việc lạm dụng thông tin xâm nhập vào đời sống riêng tư người Tuy nhiên, với phát triển công nghệ, nhà sản xuất robot tự hành cố gắng giải thách thức đưa giải pháp hiệu để phát triển ứng dụng robot tự hành rộng rãi tương lai Các công ty công nghệ lớn Google, Amazon Tesla đầu tư mạnh vào nghiên cứu phát triển robot tự hành với hy vọng tạo bước đột phá đáng kể lĩnh vực Hình 1.3: Xe tự hành Tesla Tóm lại, robot tự hành loại robot phát triển với nhiều tiềm ứng dụng rộng rãi Tuy nhiên, việc đảm bảo tính an tồn, tính hiệu tính bảo mật robot tự hành thách thức đáng 1.3 giới thiệu robot dò line : [Gõ ở đây] h Hình 1.4 : robot dò line Robot dò line loại robot tự hành thiết kế để di chuyển bề mặt phẳng theo dõi đường viền đánh dấu bề mặt Đây ứng dụng phổ biến robot tự hành thường sử dụng lĩnh vực sản xuất công nghiệp, dịch vụ thực phẩm, giáo dục giải trí Robot dò line thường trang bị cảm biến quang học để theo dõi đường viền xác định vị trí robot bề mặt Các cảm biến quang học thường đặt đầu robot giúp robot theo dõi đường viền cách phát khác biệt màu sắc đường viền màu sắc bề mặt xung quanh Khi di chuyển đường viền, robot dò line thường sử dụng số thuật tốn điều khiển để trì hướng di chuyển đường viền giữ cho vận tốc di chuyển mức độ ổn định Nhiều robot dò line trang bị hệ thống điều khiển tự động thơng minh để đảm bảo tính xác hiệu việc theo dõi đường viền 1.4 Ứng Dụng robot dò line : Robot dò line có nhiều ứng dụng q trình sản xuất công nghiệp Chúng thường sử dụng để di chuyển chuyển đổi vật phẩm từ vị trí đến vị trí khác q trình sản xuất, giúp tiết kiệm thời gian lượng Robot dò line sử dụng trình kiểm tra chất lượng để đảm bảo sản phẩm đạt chuẩn khơng bị lỗi Robot dị line sử dụng ứng dụng dịch vụ thực phẩm nhà hàng cửa hàng thực phẩm tự động Chúng lập trình để di chuyển dòng sản phẩm thực phẩm đảm bảo sản phẩm đến với khách hàng đầy đủ Ngồi ra, robot dị line sử dụng giáo dục giải trí Chúng sử dụng thi robot để đua đường viền công cụ học tập tuyệt vời để giúp học sinh, sinh viên học lập trình điều khiển robot Ngồi ra, robot dị line sử dụng phòng chơi trẻ em khu vui chơi giải trí, giúp trẻ em tận hưởng thời gian vui chơi học tập cách điều khiển robot Đây ứng dụng phổ biến robot tự hành thường sử dụng lĩnh vực sản xuất công nghiệp, dịch vụ thực phẩm, giáo dục giải trí Robot dị line thường trang bị cảm biến quang học để theo dõi đường [Gõ ở đây] h viền xác định vị trí robot bề mặt Các cảm biến quang học thường đặt đầu robot giúp robot theo dõi đường viền cách phát khác biệt màu sắc đường viền màu sắc bề mặt xung quanh Khi di chuyển đường viền, robot dò line thường sử dụng số thuật tốn điều khiển để trì hướng di chuyển đường viền giữ cho vận tốc di chuyển mức độ ổn định Nhiều robot dò line trang bị hệ thống điều khiển tự động thơng minh để đảm bảo tính xác hiệu việc theo dõi đường viền Robot dò line có nhiều ứng dụng q trình sản xuất công nghiệp Chúng thường sử dụng để di chuyển chuyển đổi vật phẩm từ vị trí đến vị trí khác q trình sản xuất, giúp tiết kiệm thời gian lượng Robot dò line sử dụng trình kiểm tra chất lượng để đảm bảo sản phẩm đạt chuẩn khơng bị lỗi Robot dị line sử dụng ứng dụng dịch vụ thực phẩm nhà hàng cửa hàng thực phẩm tự động Chúng lập trình để di chuyển dòng sản phẩm thực phẩm đảm bảo sản phẩm đến với khách hàng đầy đủ Ngồi ra, robot dị line sử dụng giáo dục giải trí Chúng sử dụng thi robot để đua đường viền công cụ học tập tuyệt vời để giúp học sinh, sinh viên học lập trình điều khiển robot Ngồi ra, robot dị line sử dụng phòng chơi trẻ em khu vui chơi giải trí, giúp trẻ em tận hưởng thời gian vui chơi học tập cách điều khiển robot 1.5 Kết luận : Trong báo cáo Robot dò line thiết kế để tự động di chuyển đường kẻ màu đen trắng thiết kế sẵn Ý tưởng đề xuất viết cách sử dụng cảm biến để nhận diện theo vạch kẻ chúng với mục đích đến vị trí đề ban đầu Robot dò line tránh chướng ngại vật thiết kế phát chướng ngại vật đường di chuyển xung quanh chúng mà khơng gây va chạm Nó phương tiện robot hoạt động Bộ vi điều khiển Arduino sử dụng cảm biến hồng ngoại, cảm biến khoảng cách để phát chướng ngại vật Dù ứng dụng nhỏ, sở để phát triển dự án lớn tối tân [Gõ ở đây] h CHƯƠNG CƠ SỞ LÝ THUYẾT Để thiết kế vận hành robot dò line, tất yếu tố kỹ thuật cấu thành robot cần quan tâm: sơ đồ nguyên lý, loại cảm biến, động cơ, cấu trúc điều khiển giải thuật điều khiển sử dụng 2.1Sơ đồ nguyên lý Rất nhiều sơ đồ nguyên lý ứng dụng cho việc chế tạo robot dò line Để đạt tốc độ khả bám đường, sơ đồ nguyên lý loại xe đua điều khiển từ xa (RC racing cars) sử dụng Có hai loại sơ đồ nguyên lý chung cho loại xe đua chuyên chạy mặt đường phẳng: - Loại 1(Hình 1.1) sử dụng trục truyền động cho trục trước sau xe (Khung xe hãng Awesomatrix, TAMIYA TT01, Overdose Divall…) - Loại 2(Hình 1.2) sử dụng đai truyền động cho trục trước sau xe (Khung xe hãng Sakura D3 CS, Serpent VETEQ 02, TA04 EPRO…) a) Khung xe hãng Overdose Divall b) Sơ đồ nguyên lý sử dụng trục truyền động Hình 1.1 Sơ đồ nguyên lý RC cars sử dụng trục truyền động [Gõ ở đây] h Hình 5.8 Phạm vi quét led thu led phát cảm biến đặt liền kề Khoảng cách led phát vầ thu liền kề phải đảm bảo: Khoảng cách led cảm biến mm Do khoảng cách tối thiểu cảm biến là: d = l+5 ≥ 13.64mm Ngồi hoạt động có trường hợp cảm biến nằm vùng bất định giá trị analog cảm biến đưa Do khơng xác định xác vị trí cảm biến so với tâm đường line Vùng bất định cảm biến mơ tả lại sau: Hình 5.9 Vùng bất định cảm biến Trên Hình 5.8 ta thấy cảm biến dịch chuyển sang phải đoạn 26-d ln có led nằm đường line, tín hiệu analog đo nhau, tương tự cảm biến di chuyển sang trái đoạn 2d-26 có led nằm đường line Ta phải chọn giá trị d cho khoảng cách nhỏ Trang 36 h Vậy ta chọn d = 17 mm 5.7 Tính toán số lượng cảm biến Ta nhận thấy sử dụng giải thuật xấp xỉ bậc cần cặp cảm biến để nhận dạng tâm đường line Vì giả sử tâm đường line trùng với tâm nội suy từ cảm biến cần cặp cảm biến, đồng thời xe lệch bên trái/phải ta cần thêm cặp cảm biến bên để nhận dạng phía lệch xe Từ lập luận ta nhận thấy Hình 5.10 với việc sử dụng cảm biến ta hồn tồn xác định phía lệch xe Hình 5.10 sơ đồ bố trí sử dụng cảm biến 5.8 Hiệu chỉnh cảm biến Tín hiệu analog cho mỡi cảm biến khác nhau, làm viêc cùng điều kiên cho giá tri ̣khác Do ta phải tiến hành calip cảm biến Trang 37 h 5.9 Xác định vị trí tâm đường line Sử dụng giải thuật xấp xỉ bậc Hình 5.12 Giải thuật xấp xỉ bậc 5.10 Mơ hình thí nghiệm Ta tiến hành kiểm tra khả đáp ứng LED với nhận định nên bên Sử dụng mơ hình bên Kết mối quan hệ giá trị tính tốn giá trị thực vị trí tâm đường line so với tâm cảm biến thể hình bên (Hình 5.14) Với giá trị sai số e2max 1,7 mm, sai số e2min 0,8 mm, sai số trung bình tính toán so với sai số lý tưởng 1,2 mm Từ kết trả sai số từ Hình 5.13, ta thu đường tuyến tính xấp xỉ sau: y = 0,51x 0,31 Với đường xấp xỉ này, sai số e2 thỏa mãn yêu cầu đề đặt Trang 38 h Hình 5.13 Giải thuật xấp xỉ bậc Position x (mm) Hình 5.14 Đồ thị quan hệ giá trị tính tốn giá trị thực tâm đường line Trang 39 h 5.11 Giải thuật điều khiển xe Ở phần trình bày sơ đồ khối điều khiển, lưu đồ giải thuật, giải thuật nhận biết vị trí xe sa bàn 5.11.1 Sơ đồ khối điều khiển Robot sử dụng giải thuật điều khiển tập trung để điều khiển chức riêng biệt Trong vi điều khiển (AVR) atmega328p đảm nhiệm tất nhiệm vụ gồm có: - Đọc xử lí tín hiệu sensor - Điều khiển động thông qua driver động Sau tín hiệu trả từ sensor dạng số vi điều khiển xử lý đưa sai số e2 e3, áp dụng tiêu chuẩn ổn định lyapunov để đưa vận tốc động trái động phải Vận tốc động trái phải vi điều khiển (AVR) xử lý truyền tín hiệu điều khiển dạng xung pwm cho driver tương ứng Vi điều khiển (AVR) nhận xung encoder trả áp dụng giải thuật PID để đảm bảo vận tốc xe đáp ứng giá trị tính tốn Hình 5.15 Sơ đồ cấu trúc tập trung 5.11.2 Giải thuật điều khiển PID Trang 40 h Hình 5.16 Sơ đồ giải thuật PID điều khiển tốc độ động Đầu vào hệ thống xác định lỗi vị trí xe so vói vị trí điểm setpoint đặt - Kp : điều chỉnh độ vọt lố xe Điều chỉnh hệ số ảnh hưởng đến việc xe bám line có bị nhiều tín hiệu vọt lố làm xe lắc quanh điểm line -Kd : thơng số để điều chỉnh đáp ứng xe có sai số đến hệ số ảnh hưởng đến việc đáp ứng nhanh hay chậm xe Tốc độ thay đổi sai số q trình tính tốn cách xác định độ dốc sai số theo thời gian (tức đạo hàm bậc theo thời gian) nhân tốc độ với độ lợi tỉ lệ Biên độ phân phối khâu vi phân (đôi gọi tốc độ) tất hành vi điều khiển giới hạn độ lợi vi phân -Ki : khâu tích phân (đơi cịn gọi reset) tỉ lệ thuận với biên độ sai số lẫn quảng thời gian xảy sai số Tổng sai số tức thời theo thời gian (tích phân sai số) cho ta tích lũy bù hiệu chỉnh trước Tích lũy sai số sau nhân với độ lợi tích phân cộng với tín hiệu đầu điều khiển Biên độ phân phối khâu tích phân tất tác động điều chỉnh xác định độ lợi tích phân Trang 41 h 5.12 Lập trình chương trình // IR Sensors int sensor1 = 2; int sensor2 = 4; int sensor3 = 7; int sensor4 = 8; // Left most sensor // Right most sensor // Initial Values of Sensors int sensor[4] = {0, 0, 0, 0}; // Motor Variables int ENA = 3; int motorInput1 = 5; int motorInput2 = 6; int motorInput3 = 9; int motorInput4 = 10; int ENB = 11; //Initial Speed of Motor int initial_motor_speed = 88; // PID Constants float Kp = 25; float Ki = 0; float Kd = 15; float error = 0, P = 0, I = 0, D = 0, PID_value = 0; float previous_error = 0, previous_I = 0; int flag = 0; void setup() { pinMode(sensor1, INPUT_PULLUP); pinMode(sensor2, INPUT_PULLUP); pinMode(sensor3, INPUT_PULLUP); pinMode(sensor4, INPUT_PULLUP); pinMode(motorInput1, OUTPUT); pinMode(motorInput2, OUTPUT); pinMode(motorInput3, OUTPUT); pinMode(motorInput4, OUTPUT); pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); Serial.begin(9600); delay(500); //setting serial monitor at a default baund rate of 9600 Trang 42 h Serial.println("Started !!"); delay(1000); } void loop() { read_sensor_values(); // Serial.print(error); if (error == 100) { // Make left turn untill it detects straight path //Serial.print("\t"); //Serial.println("Left"); { read_sensor_values(); analogWrite(ENA, 110); //Left Motor Speed analogWrite(ENB, 90); //Right Motor Speed sharpLeftTurn(); } while (error != 0); } else if (error == 101) { // Make right turn in case of it detects only right path (it will go into forward direction in case of staright and right "| ") // untill it detects straight path //Serial.print("\t"); //Serial.println("Right"); analogWrite(ENA, 110); //Left Motor Speed analogWrite(ENB, 90); //Right Motor Speed forward(); delay(200); stop_bot(); read_sensor_values(); if (error == 102) { { analogWrite(ENA, 110); //Left Motor Speed analogWrite(ENB, 90); //Right Motor Speed sharpRightTurn(); read_sensor_values(); } while (error != 0); } } else if (error == 102) { // Make left turn untill it detects straight path //Serial.print("\t"); //Serial.println("Sharp Left Turn"); { analogWrite(ENA, 110); //Left Motor Speed analogWrite(ENB, 90); //Right Motor Speed sharpLeftTurn(); read_sensor_values(); if (error == 0) { stop_bot(); delay(200); } } while (error != 0); Trang 43 h } else if (error == 103) { // Make left turn untill it detects straight path or stop if dead end reached if (flag == 0) { analogWrite(ENA, 110); //Left Motor Speed analogWrite(ENB, 90); //Right Motor Speed forward(); delay(200); stop_bot(); read_sensor_values(); if (error == 103) { /**** Dead End Reached, Stop! ****/ stop_bot(); flag = 1; } else { /**** Move Left ****/ analogWrite(ENA, 110); //Left Motor Speed analogWrite(ENB, 90); //Right Motor Speed sharpLeftTurn(); delay(200); { //Serial.print("\t"); //Serial.println("Left Here"); read_sensor_values(); analogWrite(ENA, 110); //Left Motor Speed analogWrite(ENB, 90); //Right Motor Speed sharpLeftTurn(); } while (error != 0); } } } else { calculate_pid(); motor_control(); } // analogWrite(ENA, initial_motor_speed); //Left Motor Speed // analogWrite(ENB, initial_motor_speed); //Right Motor Speed // if ((digitalRead(sensor1) == 0)&&(digitalRead(sensor4) == 0)){forward();} // if ((digitalRead(sensor1) == 1)&&(digitalRead(sensor4) == 0)){sharpRightTurn();} // if ((digitalRead(sensor1) == 0)&&(digitalRead(sensor4) == 1)){sharpLeftTurn();} // if ((digitalRead(sensor1) == 1)&&(digitalRead(sensor4) == 1)){stop_bot();} // stop } void read_sensor_values() { sensor[0] = !digitalRead(sensor1); sensor[1] = !digitalRead(sensor2); sensor[2] = !digitalRead(sensor3); sensor[3] = !digitalRead(sensor4); Serial.print(sensor[0]); Serial.print("\t"); Trang 44 h Serial.print(sensor[1]); Serial.print("\t"); Serial.print(sensor[2]); Serial.print("\t"); Serial.println(sensor[3]); if ((sensor[0] == 1) && (sensor[1] == 0) && (sensor[2] == 0) && (sensor[3] == 0)) error = 3; else if ((sensor[0] == 1) && (sensor[1] == 1) && (sensor[2] == 0) && (sensor[3] == 0)) error = 2; else if ((sensor[0] == 0) && (sensor[1] == 1) && (sensor[2] == 0) && (sensor[3] == 0)) error = 1; else if ((sensor[0] == 0) && (sensor[1] == 1) && (sensor[2] == 1) && (sensor[3] == 0)) error = 0; else if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 1) && (sensor[3] == 0)) error = -1; else if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 1) && (sensor[3] == 1)) error = -2; else if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 0) && (sensor[3] == 1)) error = -3; else if ((sensor[0] == 1) && (sensor[1] == 1) && (sensor[2] == 1) && (sensor[3] == 0)) // Turn robot left side error = 100; else if ((sensor[0] == 0) && (sensor[1] == 1) && (sensor[2] == 1) && (sensor[3] == 1)) // Turn robot right side error = 101; else if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 0) && (sensor[3] == 0)) // Make U turn error = 102; else if ((sensor[0] == 1) && (sensor[1] == 1) && (sensor[2] == 1) && (sensor[3] == 1)) // Turn left side or stop error = 103; } void calculate_pid() { P = error; I = I + previous_I; D = error - previous_error; PID_value = (Kp * P) + (Ki * I) + (Kd * D); } previous_I = I; previous_error = error; void motor_control() { // Calculating the effective motor speed: Trang 45 h int left_motor_speed = initial_motor_speed - PID_value; int right_motor_speed = initial_motor_speed + PID_value; // The motor speed should not exceed the max PWM value left_motor_speed = constrain(left_motor_speed, 0, 255); right_motor_speed = constrain(right_motor_speed, 0, 255); /*Serial.print(PID_value); Serial.print("\t"); Serial.print(left_motor_speed); Serial.print("\t"); Serial.println(right_motor_speed);*/ analogWrite(ENA, left_motor_speed); //Left Motor Speed analogWrite(ENB, right_motor_speed - 30); //Right Motor Speed //following lines of code are to make the bot move forward } void forward() { /*The pin numbers and high, low values might be different depending on your connections */ digitalWrite(motorInput1, LOW); digitalWrite(motorInput2, HIGH); digitalWrite(motorInput3, LOW); digitalWrite(motorInput4, HIGH); } void reverse() { /*The pin numbers and high, low values might be different depending on your connections */ digitalWrite(motorInput1, HIGH); digitalWrite(motorInput2, LOW); digitalWrite(motorInput3, HIGH); digitalWrite(motorInput4, LOW); } void right() { /*The pin numbers and high, low values might be different depending on your connections */ digitalWrite(motorInput1, LOW); digitalWrite(motorInput2, LOW); digitalWrite(motorInput3, LOW); digitalWrite(motorInput4, HIGH); } void left() { Trang 46 h /*The pin numbers and high, low values might be different depending on your connections */ digitalWrite(motorInput1, LOW); digitalWrite(motorInput2, HIGH); digitalWrite(motorInput3, LOW); digitalWrite(motorInput4, LOW); } void sharpRightTurn() { /*The pin numbers and high, low values might be different depending on your connections */ digitalWrite(motorInput1, HIGH); digitalWrite(motorInput2, LOW); digitalWrite(motorInput3, LOW); digitalWrite(motorInput4, HIGH); } void sharpLeftTurn() { /*The pin numbers and high, low values might be different depending on your connections */ digitalWrite(motorInput1, LOW); digitalWrite(motorInput2, HIGH); digitalWrite(motorInput3, HIGH); digitalWrite(motorInput4, LOW); } void stop_bot() { /*The pin numbers and high, low values might be different depending on your connections */ digitalWrite(motorInput1, LOW); digitalWrite(motorInput2, LOW); digitalWrite(motorInput3, LOW); digitalWrite(motorInput4, LOW); } Trang 47 h CHƯƠNG 7: THỰC NGHIỆM VÀ ĐÁNH GIÁ Chương đánh giá kết thực nghiệm mơ hình so với mô đưa kết Kết thực tế của xe đường 0.71 m/s đáp ứng 71% yêu cầu đề đặt m/s Thời gian thực hết vòng chạy 15s Nhưng cho xe chạy với tốc độ 1m/s thi sai số tăng lên, lý dẫn đến sai số tăng bao gồm: - Sai số lắp đặt ảnh hưởng đến độ đồng trục hai động - Sai số tốc độ hai động - Ảnh hướng hệ số ma sát bánh mắt trâu - Qn tính xe q trình quẹo cua - Sai số hệ thống cảm biến cảm biến khác biệt mơi trường thí nghiệm thực nghiệm - Sai số hệ thống cảm biến chiều cao gá đặt độ song song với mặt phẳng xe Để khắc phục sai số này, giải pháp đề bao gồm: - Khung xe đồ gá chế tạo mica mơ hình thực nghiệm, để kiểm sốt sai số q trình gia cơng lắp đặt - Thực thí nghiệm nhằm đánh giá sai số vận tốc động để đưa vào mơ - Thực nghiệm thí nghiệm để đánh giá ảnh hưởng môi trường thực nghiệm lên giá trị đọc hệ thống cảm biến để thực biện pháp xử lý phù hợp Trang 48 h Trang 49 h Trang 50 h