Báo cáo đồ án điều khiển tự động ROBOT đề tài robot tìm đường mê cung dùng giải thuật PID

31 7 0
Báo cáo đồ án điều khiển tự động ROBOT đề tài robot tìm đường mê cung dùng giải thuật PID

Đ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 SƯ PHẠM KỸ THUẬT TP HCM KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN o0o Báo Cáo Đồ Án Điều Khiển Tự Động ROBOT ĐỀ TÀI: Robot Tìm Đường Mê Cung Dùng Giải Thuật PID SVTH: Nguyễn Khánh Dương Sỳ Quốc Bình GVHD: TS Nguyễn Văn Thái TP HỒ CHÍ MINH, THÁNG 6/2017 Tieu luan NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Giáo viên hướng dẫn: TS Nguyễn Văn Thái Họ tên sinh viên: Nguyễn Khánh Dương Sỳ Quốc Bình Ngành: Cơng Nghệ Kỹ Thuật Điều Khiển Tự Động Hóa Tên đề tài: Robot Tìm Đường Mê Cung Dùng Giải Thuật PID Nhận xét giáo viên hướng dẫn: TP.HCM, tháng năm 2017 TS Nguyễn Văn Thái MỤC LỤC Tieu luan CHƯƠNG CƠ SỞ LÝ THUYẾT…………………………………… …5 1.1 Tổng quan toán bám tường robot di động……………… 1.1.1 Bài toán di chuyển theo tường…………………………… .….6 1.2 Giải Thuật PID……………………………………………… .7 1.2.1 Sơ Đồ Khối Nguyên Lý Hoạt Động………………………… 1.2.2 Lý Thuyết Thuật Toán PID……………………………………….7 CHƯƠNG GIỚI THIỆU CÁC PHẦN TỬ ROBOT………………….…10 2.1 Động Cơ DC ……………………………………………………… 10 2.2 Mạch Cầu H…………………………………………………… … 10 2.3 Cảm biến hồng ngoại…………………………………………… .12 2.4 Arduino Nano……………… ………………………………… .13 2.5 Thiết kế Robot……………………………………………………… 16 CHƯƠNG THUẬT TOÁN ĐIỀU KHIỂN ………………………… …17 3.1 Xung PWM Thuật toán điều khiển PID…… …………… … …17 3.2 Giải Thuật PID………………………………………………….… 20 3.2.1 Lưu Đồ Giải Thuật………………………………… …… …20 3.2.2 Thuật Toán Bám Tường Trái Và Phải ………………….… 21 3.4 Ứng Dụng……………………………………………………… … 22 KẾT LUẬN…………………………………………………………… .23 TÀI LIỆU THAM KHẢO…………………………………………… … 24 PHỤ LỤC……………………………………………………………… …25 Tieu luan Nội dung đề tài: bao gồm chương sau: Chương 1: Cơ sở lý thuyết Nội dung chương trình bày lý thuyết thuật tốn tìm kiếm đường lý thuyết giải thuật PID Chương 2: Giới thiệu phẩn tử Robot Chương chủ yếu trình bày sơ lược cấu trúc hoạt động Board mạch Arduino, cảm biến hồng ngoại, mạch cầu H thiết kế phần khung xe phần điện cho mơ hình robot di động Chương 3: Thuật toán điều khiển Chương trình bày giải thuật tìm đường bám tường, ứng dụng PID để điểu khiển tốc độ động Kết luận hướng phát triển đề tài Chương trình bày kết đạt được, mặt hạn chế hướng phát triển đề tài Tieu luan CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Tổng quan toán bám tường robot di động Ngày nay, Robot học đạt thành tựu to lớn sản xuất công nghiệp Những cánh tay robot có khả làm việc với tốc độ cao, xác liên tục làm suất lao động tăng nhiều lần Chúng làm việc môi trường độc hại hàn, phun sơn, nhà máy hạt nhân, hay lắp ráp linh kiện điện tử tạo điện thoại, máy tính…một cơng việc địi hỏi tỉ mỉ, xác cao Tuy nhiên robot có hạn chế chung hạn chế không gian làm việc Không gian làm việc chúng bị giới hạn số bậc tự tay máy vị trí gắn chúng Ngược lại, Robot tự hành lại có khả hoạt động cách linh hoạt môi trường khác Robot dị đường mê cung nói riêng hay robot tự hành nói chung loại robot có khả tự hoạt động, thực thi nhiệm vụ mà không cần can thiệp người Với cảm biến, chúng có khả nhận biết mơi trường xung quanh Robot tự hành ngày có nhiều ý nghĩa ngành công nghiệp, thương mại, y tế, ứng dụng khoa học phục vụ đời sống người Với phát triển ngành Robot học, robot tự hành ngày có khả hoạt động môi trường khác nhau, tùy lĩnh vực áp dụng mà chúng có nhiều loại khác robot sơn, robot hàn, robot cắt cỏ, robot thám hiểm đại dương, robot làm việc vũ trụ Cùng với phát triển yêu cầu thực tế, robot tự hành tiếp tục đưa thách thức cho nhà nghiên cứu Vấn đề robot tự hành làm để robot tự hành hoạt động, nhận biết môi trường thực thi nhiệm vụ đề Tieu luan 1.1.1 Các thuật toán giải mê cung thuật toán Bám Theo Tường dùng PID Các thuật tốn tìm đường mê cung là phương pháp tự động hóa để giải mê cung Mê cung khơng chứa vịng lặp gọi mê cung "tiêu chuẩn" "hoàn hảo", tương đương với một cây trong lý thuyết đồ thị Vì vậy, nhiều thuật tốn tìm đường mê cung có liên quan chặt chẽ với lý thuyết đồ thị Một cách trực quan, ta kéo dài đường mê cung cách thích hợp, kết thu trơng giống Các thuật toán mê cung:      Thuật toán chọn đường ngẫu nhiên Thuật toán bám theo tường Thuật toán Pledge Thuật toán Trémaux Thuật toán lấp kín đường cụt Trong đề tài thiết kế này, chúng em sử dụng thuật toán bám theo tường dùng phương pháp điều khiển PID Thuật toán bám theo tường quy tắc tiếng để vượt qua mê cung, gọi quy tắc tay trái quy tắc tay phải Nếu mê cung chỉ liên thông đơn giản nghĩa tất tường kết nối với kết nối với đường bao quanh mê cung, cách dị tay lên tường mê cung người đảm bảo khơng bị lạc tìm lối có lối đường bao, khơng có lối quay trở lại lối vào qua tất đường mê cung lần Nếu tường kết nối, kéo giãn biến dạng thành vịng lặp vịng trịn Do đó, tường buộc người theo xung quanh vòng tròn từ điểm đầu đến cuối Tieu luan 1.2 Giải Thuật PID 1.2.1 Sơ đồ khối 1.2.2 Lý thuyết thuật tốn PID Một bộ điều khiển vi tích phân tỉ lệ (bộ điều khiển PID- Proportional Integral Derivative) một cơ chế phản hồi vòng điều khiển (bộ điều khiển) tổng quát sử dụng rộng rãi các hệ thống điều khiển công nghiệp – điều khiển PID điều khiển sử dụng nhiều điều khiển phản hồi Bộ điều khiển PID tính tốn giá trị "sai số" hiệu số giá trị đo thông số biến đổi và giá trị đặt mong muốn Bộ điều khiển thực giảm tối đa sai số cách điều chỉnh giá trị điều khiển đầu vào.  Giải thuật tính tốn điều khiển PID bao gồm thông số riêng biệt, đơi cịn gọi là điều khiển ba khâu: giá trị tỉ lệ, tích phân và đạo hàm, viết tắt là P, I, và D. Giá trị tỉ lệ xác định tác động sai số tại, giá trị tích phân xác định tác động tổng sai số khứ, giá trị vi phân xác định tác động tốc độ biến đổi sai số Tổng chập ba tác động dùng để điều chỉnh trình thơng qua phần tử điều khiển vị trí van điều Tieu luan khiển hay nguồn phần tử gia nhiệt Nhờ vậy, giá trị làm sáng tỏ quan hệ thời gian: P phụ thuộc vào sai số hiện tại, I phụ thuộc vào tích lũy sai số khứ, và D dự đoán sai số tương lai, dựa vào tốc độ thay đổi Khâu tỉ lệ, tích phân, vi phân cộng lại với để tính tốn đầu điều khiển PID Định nghĩa u(t)  là đầu điều khiển, biểu thức cuối giải thuật PID là: Trong thơng số điều chỉnh là: Độ lợi tỉ lệ,  K p Giá trị lớn đáp ứng nhanh sai số lớn, bù khâu tỉ lệ lớn Một giá gị độ lợi tỉ lệ lớn dấn đến trình ổn định dao động Độ lợi tích phân,  K i Giá trị lớn kéo theo sai số ổn định bị khử nhanh Đổi lại độ vọt lố lớn: sai số âm tích phân suốt đáp ứng độ phải triệt tiêu tích phân sai số dương trước tiến tới trạng thái ổn định Độ lợi vi phân,  K d Giá trị lớn giảm độ vọt lố, lại làm chậm đáp ứng độ dẫn đến ổn định khuếch đại nhiễu tín hiệu phép vi phân sai số Tieu luan CHƯƠNG GIỚI THIỆU VỀ CÁC PHẦN TỬ TRONG ROBOT 2.1 Động DC giảm tốc DC động động điện hoạt động với dòng chiều Động DC sử dụng rộng rãi ứng dụng dân cư ngành công nghiệp Thông thường động DC chạy tốc độ kết nối với nguồn điện, kiểm sốt tốc độ hướng động với hỗ trợ mạch điện tử với phương pháp PWM Động sử dụng đề tài có tên gọi GA12 – N20 (1:50) Ý nghĩa thơng số 1:50 tỷ số truyền động thông qua giảm tốc (các bánh răng), động quay 50 vòng (khơng có bánh răng) trục bên ngồi (đã qua bánh răng) quay vịng Thơng số kỹ thuật:  Điện áp cung cấp: 1.5 ~ 12V  Tỷ số truyền 50:1  Tốc độ qua hộp số: 3V ~ 250rpm, 6V ~ 500rpm 12V ~ 1000rpm Kích thước động cơ: Đường kính 12mm, chiều dài động 34mm, đường kính trục 3mm, chiều dài trục 10mm Tieu luan 2.2 Mạch cầu H dùng IC L298N Cầu H mạch điện tử cho phép điện áp đặt lên tải theo hướng , mạch thường sử dụng để thay đổi điện áp trung bình cấp cho động nhờ vào xung PWM, ngồi cầu H cịn dùng để đảo chiều quay động - Tieu luan Cách lập trình cho Arduino Nano Các board Serial Arduino có chứa mạch chuyển đổi RS232 sang TTL Các board Arduino lập trình thơng qua cổng USB, thực thông qua chip chuyển đổi USB-to-serial FTDI FT232 Vài biến thể, Arduino Mini Boarduino khơng thức, sử dụng board adapter cáp nối USB-to-serial tháo rời được, Bluetooth phương thức khác Arduino Nano sử dụng chương trình Arduino IDE để lập trình, ngơn ngữ lập trình cho Arduino tên Arduino (được xây dựng ngôn ngữ C) Tuy nhiên, muốn lập trình cho Arduino Nano cần phải thực số thao tác máy tính  Cần cài Driver Arduino Nano tải Arduino IDE (Intergrated Development Environment) cho máy tính arduino.cc , bước cài đặt hoàn toàn dễ dàng  Sau cài đặt, bạn thấy thông báo dạng "Cổng COMx cài đặt thành công" (chữ "x" thay số nguyên dương, bạn nhớ lấy số này, sau dùng cổng COMx để lập trình cho Arduino Nano)  Sau chọn board Arduino Nano tiến hành lập trình 16 Tieu luan Arduino Nano vi điều khiển ATmega328P sử dụng thạch anh có chu kì dao động 16 MHz. Với vi điều khiển này, ta có tổng cộng 14 pin (ngõ) ra / vào được đánh số từ tới 13 (trong có pin PWM, đánh dấu ~ trước mã số pin) Song song đó, ta có thêm 6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin sử dụng pin / vào bình thường (như pin - 13) Ở pin đề cập, pin 13 pin đặc biệt nối trực tiếp với LED trạng thái board Trên board cịn có nút reset, ngõ kết nối với máy tính qua cổng USB 17 Tieu luan 2.4 Thiết Kế Robot Phần giới thiệu sơ lược phần cứng robot tìm đường Robot tìm đường thiết kế hình gồm phần sau: - Khung xe mica - Bánh xe đa hướng - Động DC có hộp số dùng để truyền động cho bánh xe - Hệ thống cảm biến chọn sử dụng mơ hình cảm biến hồng ngoại - Nguồn pin 12 VDC sử dụng pin Lipo 1500mAh, kèm theo mạch giảm áp - Bo mạch Arduino Nano - Module L298N 18 Tieu luan CHƯƠNG XUNG PWM VÀ THUẬT TOÁN ĐIỀU KHIỂN PID 3.1 Điều chế độ rộng xung PWM Xung trạng thái cao / thấp (HIGH/LOW) mức điện áp lặp lặp lại Đại lượng đặc trưng cho xung PWM (Pulse Width Modulation) bao gồm tần số (frequency) và chu kì xung (duty cycle) Điều khiển động PWM phương pháp dựa nguyên tắc hoạt động cho động chạy chuỗi xung nhanh chóng mở đóng Điện DC chuyển đổi thành tín hiệu sóng vng Tín hiệu sóng vng cho động Nếu tần số chuyển đổi đủ lớn động chạy tốc độ ổn định phụ thuộc vào trục mô-men xoắn Với phương pháp PWM, điều chỉnh tốc độ động thông qua điều chế độ rộng xung, tức thời gian "xung đầy đủ" ("on") chuỗi xung vuông cho động Điều chỉnh ảnh hưởng đến cơng suất trung bình cho động thay đổi cần điều khiển tốc độ động 19 Tieu luan Để điều chế xung PWM arduino ta cần sử dụng hàm có sẵn arduino hàm analogWrite(pin,value) Trong đó:  Pin: chân dùng xuất xung PWM Với Arduino Nano chân hỗ trợ xuất xung PWM chân 3, 5, 6, 9, 10, 11  Value: giá trị xung cần xuất Các chân PWM Arduino Nano cung cấp 8-bit PWM (value=0-255) ngõ hàm analogWrite() 3.2 Giải thuật PID 3.2.1 Lưu đồ giải thuật 20 Tieu luan 3.2.2 Thuật toán bám tường void BamPhai() // hàm bám tường trái tương tự { float Kp = 8.5 , Kd = 2.2 , Ki = 0.05; // chọn thông số qua thực nghiệm float P, I, D; // tạo biến để lưu kết thành phần PID static int lasterror; int out; float SamplingTime = 0.01; // thời gian lấy mẫu thực hết chu kì lệnh int error = 750 - cambienphai; // chọn giá trị đặt (750) giá trị đầu mong muốn thuantrai(); thuanphai(); P = error * Kp; I += Ki * error * SamplingTime; D = (Kd * (error - lasterror )) / SamplingTime; out = P + I + D; lasterror = error; XungENB = 60 - out; XungENA = 60 + out; if (XungENB > 255) XungENB = 255; else if (XungENB < 0) XungENB = 0; if (XungENA > 255) XungENA = 255; else if (XungENA < 0) XungENA = 0; analogWrite(ENB, XungENB );//100 analogWrite(ENA, XungENA);//100 } 21 Tieu luan 3.4 Ứng Dụng Robot giúp công việc công việc sơn dọc mép tường, di chuyển hàng hóa … KẾT LUẬN  Kết đạt được:  Phần cứng: - Thiết kế nhỏ gọn, đáp ứng di chuyển thoải mái mơ hình mê cung - Hệ thống cảm biến cung cấp giá trị tương đối tốt - Động nhỏ gọn khỏe nên việc di chuyển thuận tiện, quán tính đáp ứng nhanh  Giải thuật: - Đo khoảng cách từ robot tới tường, từ xác định vị trí Robot - Luật điều khiển đơn giản hiệu  Hướng phát triển: - Kết hợp cơng nghệ xử lí ảnh vẽ lại hình dạng đường robot tự hành để ứng dụng việc tìm đường đến vị trí nguy hiểm thực tế - Tùy thuộc vào ứng dụng đường mà áp dụng thuật toán khác để đem lại hiệu cao 22 Tieu luan TÀI LIỆU THAM KHẢO [1] https://vi.wikipedia.org/wiki/Thu%E1%BA%ADt_to%C3%A1n_t %C3%ACm_%C4%91%C6%B0%E1%BB%9Dng_%C4%91i_trong_m %C3%AA_cung [2] https://vi.wikipedia.org/wiki/B%E1%BB%99_%C4%91i%E1%BB%81u_khi %E1%BB%83n_PID [3] http://www.stdio.vn/articles/read/467/dieu-khien-2-dong-co-bang-ic-l298 [4.] http://doc.edu.vn/tai-lieu/do-an-thiet-ke-bo-pid-so-dieu-khien-toc-do-dong-co-dc3828/ 23 Tieu luan Link YOUTUBE Hướng Dẫn Full Phần https://goo.gl/TtSyiN 24 Tieu luan PHỤ LỤC #define ENA #define ENB #define in1 #define in2 #define in3 #define in4 10 int cambientrai; int cambientruoc; int cambienphai; int hientai=0, quakhu=0 ; int TT; float XungENB=0,XungENA=0; void doccambien() { cambientrai=analogRead(A0); cambientruoc=analogRead(A1); cambienphai=analogRead(A2); Serial.print(" Trai "); //70 Serial.print(cambientrai); Serial.print(" Truoc "); //50 Serial.print(cambientruoc); Serial.print(" Phai "); //40 Serial.println(cambienphai); } //============Thiết kế cho xe quẹo trái========== 25 Tieu luan void QueoTrai() // cho bám phải { nghichtrai(); nghichphai(); analogWrite(ENA,150);//110 // giá trị đo thực tế analogWrite(ENB,150); delay(10); while (cambientruoc 255) XungENA = 255; else if (XungENA < 0) XungENA = 0; analogWrite(ENB, XungENB );//100 analogWrite(ENA, XungENA);//100 } void BamTrai() // bám trái trái trừ, phải cộng (XungENB,XungENA) { float Kp = 16 , Kd =1.1 , Ki = 0.1;//float Kp = 15 , Kd =0.75 , Ki = 0; float P, I, D; static int lasterror; int out; float SamplingTime = 0.01; 28 Tieu luan int error = 680 - cambientrai; thuantrai(); thuanphai(); P = error * Kp; I += Ki * error * SamplingTime; D = (Kd * (error - lasterror )) / SamplingTime; out = P + I + D; lasterror = error; XungENA = 60 - out; // XungENA = 50 - out; XungENB = 60 + out; // XungENB = 50 + out; if (XungENB > 255) XungENB = 255; else if (XungENB < 0) XungENB = 0; if (XungENA > 255) XungENA = 255; else if (XungENA < 0) XungENA = 0; analogWrite(ENB, XungENB); //100 analogWrite(ENA, XungENA); //100 } void setup() { Serial.begin(9600); pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); pinMode(in1,OUTPUT); pinMode(in2,OUTPUT); pinMode(in3,OUTPUT); pinMode(in4,OUTPUT); 29 Tieu luan } void loop() { hientai=millis(); if(hientai-quakhu>=5000) { TT=1; quakhu=hientai; } else TT=0; doccambien(); if(TT==0) { BamPhai(); if(cambientruoc

Ngày đăng: 07/01/2023, 16:56

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

Tài liệu liên quan