1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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 2 0

Đ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 31
Dung lượng 1,3 MB

Nội dung

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 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 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 tố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 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ụ đề 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 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" "hồn hảo", tương đương với 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 tốn mê cung: • Thuật tốn chọn đường ngẫu nhiên • Thuật tốn bám theo tường • Thuật tốn Pledge • Thuật tốn Trémaux • Thuật tố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 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 1.2 Giải Thuật PID 1.2.1 Sơ đồ khối 1.2.2 Lý thuyết thuật toán PID Một điều khiển vi tích phân tỉ lệ (bộ điều khiển PID- Proportional Integral Derivative) 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 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 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 điều khiển ba khâu: giá trị tỉ lệ, tích phân đạo hàm, viết tắt P, I, 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 q trình thơng qua phần tử điều khiển vị trí van điều 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ố tại, I phụ thuộc vào tích lũy sai số khứ, 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) đầ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ệ, 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, 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, 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ố 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 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 10 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 17 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õ) / vào đánh số từ tới 13 (trong có pin PWM, đánh dấu ~ trước mã số pin) Song song đó, ta có thêm pin nhận tín hiệu analog đánh kí hiệu từ A0 - A5, 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 18 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 19 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) 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 20 Để đ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 21 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 } 3.4 Ứng Dụng 22 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 23 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/ 24 Link YOUTUBE Hướng Dẫn Full Phần https://goo.gl/TtSyiN 25 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========== 26 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; 29 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); 30 } 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: 16/05/2023, 20:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w