Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
1,14 MB
Nội dung
ĐẠI HỌC QUUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO ĐỀ TÀI Giao tiếp Simulink Matlab Arduiino thông qua Serial port ứng dụng vào toán điều khiển tốc độ động DC PID GVHD: Thầy Nguyễn Lê Dũng Thực hiiện: Vũ Đức Hùng MSSV: 18124766 Tp Hồ Chí Minh, tháng 2021 Tóm tắt Arduino tảng mở dễ dàng cho người bắt đầu học lập trình nhờ hỗ trợ đông đảo từ nguồn tảng khác Arduino hỗ trợ nhiều cách giao tiếp thông dụng với I/O devices, chẳng hạn TCP/IP, giao tiếp qua cổng nối tiếp (Serial port) Trong này, giao tiếp nối tiếp sử dụng để thực việc truyền nhận liệu Matlab simulink Arduino Bằng việc gửi nhận liệu Arduino Matlab simulink, ta theo dõi tốc độ động tận dụng điều khiển PID cung cấp Simulink để điều khiển tốc độ động DC có gắn encoder Trong phần này, ta không sử dụng khối thư viện Simulink Support Package for Arduino Hardware Bởi sử dụng Arduino thiết bị điều khiển vịng kín Bên cạnh đó, ta điều khiển tốc độ động điều khiển On-Off để thấy rõ khác biệt hai điều khiển I Giới thiệu Động DC thiết bị phổ biến, sử dụng cáác linh vực khác Trong công nghiệp, động DC ứng dụng việc chế tạo băng tải, bàn xoay, hay lĩnh vực Robot, động DC sử dụng để làm bánh xe, giúp hệ thống di chuyển Do việc điều khiển động hoạt động theo mong muốn trở thhành nhu cầu tất yếu Để ứng dụng hệ thống điều khiển kín vào động cơ, ta cần tín hiệu hồi tiếp điều khiển để hiệu chỉnh liên tục tín hiệu điều khiển đầu vào để giữ cho động hoạt động theo giá trị moong muốn Encoder thiết bị hỗ trợ cho vấn đề Bằng cách đọc tín hiệu từ Encoder gắn với động DC, ta đo đạc tốc độ động DC Từ hồi tiếp để tính sai số giá trị tham chiếu giá trị đo để điều chỉnh tín hiệu điều khiển Trong đề tài này, ta sử dụng phần mềm Proteus để mô động DC, Arduino mạch điều khhiển Arduino sử dụng Arduinoo Uno Vì khơng làm thiết bị thật nên ta sử dụng phần mềm com0com để tạo cổng COM ảo, phục vụ giao tiếp nối tiếp Matlab Simulink Arduino II Cơ sở lí thuyết Điều khiển tốc độ động DC Động DC có cấu tạo gồm nam châm vĩnh cữu có từ thơng khơng đổi Ta điều chỉnh điện áp đặt vàào phần ứng để thay đổi tốc độ động Phương pháp để điều chỉnh điện áp điều chế độ rộng xung PWM Xung trạng thái caao/thấp lặp lặp lại Tỉ lệ phần trăm thời gian mức cao chu kỳ xung chu kỳ nhiệm vụ (duty cycle) Có nhiều phương pháp để tạo xung khác nhau, ta sử dụng phương pháp tạo xung phần mềm Cụ thể, ta sử dụng hàm "analogWrite" Arduinno để tạo xung PWM Tương ứng với giá trị từ 0-255 Hàm analogWrite chu kỳ nhiệm vụ (Duty cycle) từ 0-100% Bộ điều khiển PID PID điều khiển vịng kín Đây điều khiển kết hợp khâu: Tỉ lệ (Proportional), tích phâân (Intergral), vi phân (Derivative) Sơ đồ điều khiển PID: Luật điều khiển PID: u(t) = Kp( e(t) + ( ) +Td Ảnh hưởng khâu điều khiển lên hệ thống: +Khâu tỉ lệ (Kp): Làm giảm thời gian lên sai số xác lập Tuy nhiên Kp lớn làm tăng độ vọt lố, hệ thống dao động khó xáác lập +Khâu tích phân (KKi): Loại bỏ sai số xác lập Ki lớn đột vọt lố cao, thời gian xác lập tăng +Khâu vi phân (Kd): Hệ thống đáp ứng nhanh, độ vọt lố nhỏ Tuy nhiên sử dụng riêng lẻ mà phải kết hợp với hai khâu Cách xác định thông số điều khiển: Dùng Phương pháp ZieglerNichols: +Đầu tiên ta cho Ki=Kd=0 Sau tăng dần Kp hệ thống dao động tuần hoàn Đặt Kp Kc +Đo chu kỳ dao động Pc hệ, thực tính tốn theo bảng sau: Loại điều khiển P PI PID Bộ điều khiển PID số (rời rạc): Bộ điều khiển số hóa để tận dụng sức mạnh vi xử lí Do đề tài này, ta sử dụng khối nhận thông tin từ Arduino với thời gian lấy mẫu nên ta sử dụng PID số để không xuất lỗi thực điều khiển Sơ đồ điều khiển: Việc lựa chọn tham số cho điều khiển PID số tương tự Encoder Encoder hay gọi mã hóa, thiết bị có khả làm biến đổi chuyển động thành tín hiệu số xung1 Encoder gồm hai loại chính: +Encoder tuyệt đối +Encoder tương đối (incremental encoder) Encoder mà ta sử dụng phần Encoder tương đối đơn giản, giá thành rẻ Nguyên lí hoạt động Encoder: Encoder có đĩa với lỗ có độ dài cách Tất kết nối với chân Z chung hai chân riêng biệt A B Khi đĩa quay, chân A chân B liên lạc với chân chung Z hai tín hiệu sóng vng tạo hai chân, biểu hình bên dưới: Hai tín hiệu tạo từ chân A B ngược pha góc 90 độ Nếu encoder quay chiều kim đồng hồ, tín hiệu từ chân A sớm pha chân B Ngược lại, encoder quay ngược chiều kim đồng hồ tín hiệu từ chân B sớm pha chân A Động quay theo chiều kim đồng hồ: https://prosensor.vn/encoder-la-gi-nhung-dieu-can-biet-ve-encoder/ Động quay ngược chiều kim đồng hồ: Cách tính tốc độ động DC: Số xung vịng quay (Pulses per revolution - PPR) thông số encoder Nó số lượng xung đo encoder hồn tất vịng quay 360 độ Đây số đo độ phân giải encoder Phương pháp xác định tốc độ (RPM): Đo tần số Ta đo tần số xung (số xung giây) từ chân A B encoder nhờ vào chức digital input vi xử lí Sau áp dụng cơng thức sau để tính tốc độ (RPM): RPM = đó: tần số xung tính số xung/s; 60 phút = 60s, tốc độ tính RPM III Thiết kế hardware linh kiện cần thiết Sơ đồ thiết kế mô Proteus: •Arduino Uno: board mạch vi điều khiển phát triển Arduino.cc, tảng điện tử mã nguồn mở chủ yếu dựa vi điều khiển AVR Atmega328P Với Arduino xây dựng ứng dụng điện tử tương tác với thông qua phần mềm phần cứng hỗ trợ Các chân input-output Arduino uno Chức đề tài này: Read and Write xử lý tín digital, analog Đọc tín hiệu encoder gửi để tính tốc độ động Send/Receive data với Software Matlab kết nối Serial port •Mạch cầu L293N: trình điều khiển động H-Bridge kép cho phép điều khiển tốc độ hướng hai động DC lúc Mơ-đun điều khiển động DC có điện áp khoảng từ đến 35V, với dịng điện cực đại lên đến 2A Mơ-đun có hai nhóm chân cho động A B, chân cho chân Ground, VCC cho động chân 5V đầu vào đầu Chân IN1, IN2 điều khiển hướng quay tốc độ động PWM IN1 đầu vào khác động quay theo chiều kim đồng hồ Vf ngược lại Chân ENA phép động hoạt động •Động tích hợp encoder :Encoder có chức quay theo động dc sử dụng để xác định tốc độ động cơ, hướng quay động hai xung A, B gửi cho Arduino xử lí •Compim: mơ giao tiếp nối tiếp với cổng COM máy tính IV Sơ đồ nguyên lí Điểm đặt + Bộ điều khiển ∑ _ DC Motor Encoder V Các module sử dụng, lưu đồ giải thuật (flowchart) Các module sử dụng Để truyền gửi liệu từ Matlab qua cổng nối tiếp, ta sử dụng khối thư viện Instrument Control Toolbox Matlab simulink Khối Serial Configuration dùng để cấu hình thơng số cổng nối tiếp cho Simulink Khối Serial Receive dùng để nhận liệu dạng nhị phân qua cổng nối tiếp Khối Serial Send dùng để gửi liệu dạng nhị phân qua cổng nối tiếp Khối Data Type Conversion dùng để chuyển đổi kiểu liệu từ ngõ vào scale ngõ 2 Lưu đồ giải thuật Bắt đầu Simulink nhận giá trị ngõ từ Arduino Tính tốn sai số giá trị đặt giá trị ngõ Tính tốn tín hiệu điều khiển Gửi tín hiệu điều khiển xuống arduino Chờ tới lần lấy mẫu VI Các hàm giao thức Arduino -readFromMatlab(): Nhận liệu gửi từ Maltlab qua Serial Port float readFromMatlab() { int reln = Serial.readBytesUntil("\r\n", buf, buffer_size); for (int i=0; i=0 u=255; else u=0; end Điều khiển động điều khiển PID số (rời rạc) Ta xây dựng khối chức thiết lập thông số giống điều khiển On-Off, thay điều khiển On-Off điều khiển PID V Kết Trên Proteus Tốc độ đặt động 120, tốc độ Baund 115200 LED-RED hiển thị động quay chiều kim đồng hồ LED-BLUE hiển thị động chạy ngược chiều kim đồng hồ, để quay ngược chiều đóng switch nối đến PIN4 Arduino, tốc độ đặt 120rpm Trên simulink Bộ điều khiển On-Off Tốc độ đăt 120 RPM Đáp ứng hệ thống: Tín hiệu điều khiển u Nhận xét: Bộ điều khiển On-Off điều khiển hồi tiếp đơn giản Nó đơn giản thay đổi tín hiệu điều khiển từ đóng hồn tồn sang mở hồn toàn phụ thuộc vào sai số giá trị đặt giá trị đo Tuy nhiên, điều khiển này, sai số xác lập lớn, hệ thống ổn định Việc đóng mở liên tục dẫn tới tượng chattering Để tránh việc xảy ra, điều khiển On-off thường có vùng chết (deadband) điểm đặt Bộ điều khiển PID Setpoint 120 RPM, Kp=10, Ki=0, Kd=0 Tín hiệu điều khiển u Đáp ứng hệ thống Setpoint 120 RPM, Kp=6.8, Ki=27, Kd=0 Tín hiệu điều khiển u Đáp ứng hệ thống Nhận xét: Với điều khiển PID, đáp ứng hệ thống cải thiện Tuy nhiên, hệ số điều khiển khác ảnh hưởng đến chất lượng hệ thống Vì cần lựa chọn hệ số điều khiển phù hợp để có chất lượng hệ thống tốt VI Kết luận Thông qua đề tài, ta biết cách giao tiếp Matlab Simulink với Arduino thơng qua cổng Serial Bằng việc này, ta có truyền nhận liệu Matlab Simulink Arduino với Từ đó, tận dụng tính Matlab để điều khiển đối tượng dễ dàng Bên cạnh đó, ta nắm ngun lí hoạt động encoder để ứng dụng vào trình đo tốc độ động DC, cách điều chế độ rộng xung (PWM) để điều khiển động quay theo tốc độ mong muốn, thực điều khiển động quay theo hai điều khiển On-Off PID Mặc dù đề tài không thực với thiết bị thật, thông qua việc mô phỏng, ta hiểu cách thực đề tài thực tế, giảm thiểu sai sót q trình thực Tài liệu tham khảo: https://prosensor.vn/encoder-la-gi-nhung-dieu-can-biet-ve-encoder/ https://www2.hcmuaf.edu.vn/data/phucnt/file/bo-dieu-khien_pid.pdf 3.http://documents.opto22.com/1784_RPM_Measurement_Techniques_Technic al_Note.pdf https://github.com/leomariga/Simulink-Arduino-Serial https://www.youtube.com/watch?v=wj-EGwmY6Fo https://www.youtube.com/watch?v=DVwNZQu5jTk&t=352s