Giao tiếp simulink matlab và arduino thông qua serial port và ứng dụng vào bài toán điều khiển tốc độ động cơ DC bằng PID

20 45 0
Giao tiếp simulink matlab và arduino thông qua serial port và ứng dụng vào bài toán điều khiển tốc độ động cơ DC bằng 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

ĐẠI HỌC C QUỐC QU GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG TRƯ ĐẠI HỌC BÁCH KHOA BÁO CÁO ĐỀ TÀI Giao tiếp Simulink Matlab Arduino thông qua Serial port ứng dụng ng vào toán điều khiển n ttốc độ động DC ng PID GVHD: Thầy Nguyễn Lê Dũng Thựcc hi hiện: Vũ Đức Hùng MSSV: 1812476 Tp Hồ 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 ng linh vvực khác Trong công nghiệp, p, động đ DC ứng dụng ng vi việc chế tạo băng tải, i, bàn xoay, hay lĩnh l vực Robot, động DC đượcc ssử dụng để làm bánh xe, giúp hệ thống ng di chuyển ch Do việc điều khiển độộng hoạt động theo mong muốn trở thành nhu ccầ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 nh liên tục t tín hiệu điều khiển đầu vào để giữ cho động hoạt động theo giá trị mong muốn mu 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 ng DC, ta có th thể đo đạc tốc độ động ng DC Từ T hồi tiếp để tính sai số gi giá trị tham chiếu giá trị đo đượcc để đ đ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ô phỏỏng động DC, Arduino mạch điều u khiển Arduino sử dụng ng Arduino Uno Vì khơng làm thiết bị thật nên ta sẽẽ sử dụng phần mềm com0com để tạoo ccổng COM ảo, phục vụ giao tiếp nối tiếp p gi Matlab Simulink Arduino II Cơ sở lí thuyết Điều khiển tốcc độ đ động DC Động DC có cấu tạo o ggồm nam châm vĩnh cữu có từ thông không đđổi Ta điều chỉnh điện áp đặtt vào phần ph ứng để thay đổi tốc độ động ng Phương pháp để điều chỉnh điện n áp điều chế độ rộng xung PWM Xung trạng ng thái cao/thấp cao/th lặp lặp lại Tỉ lệ phầnn trăm gi thời gian mức cao chu kỳ củ xung chu kỳ nhiệm vụ (duty cycle) Có nhiều u phương pháp để đ tạo xung khác nhau, ta ssẽ sử dụng phương pháp tạo o xung b phần mềm Cụ thể, ta sử dụng hàm "analogWrite" củaa Arduino để tạo xung PWM Tương ứng vớii giá tr trị từ 0-255 củaa Hàm analogWrite chu kỳ k nhiệm vụ (Duty cycle) từ 0-100% 100% Bộ điều khiển n PID PID điều khiển 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 củaa khâu điều khiển lên hệ thống: +Khâu tỉ lệ (Kp): Làm giảm gi 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 ng khó xác llập +Khâu tích phân (Ki): Loại Lo bỏ sai số xác lập Ki lớ ớn đột vọt lố cao, thời gian xác lập 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 Kp Ki P 0.5Kc PI 0.45Kc 1.2Kp/Pc PID 0.6Kc 2Kp/Pc Kd KpPc/8 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 cịn 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ẻ Ngun 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 toá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 tồ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 nguyên 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 ... 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 để... 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 DC, Arduino mạch điều u khiển Arduino sử dụng ng Arduino Uno Vì không làm thiết bị thật nên ta sẽẽ sử dụng phần mềm com0com để tạoo ccổng COM ảo, phục vụ giao tiếp nối tiếp p gi Matlab Simulink

Ngày đăng: 20/10/2021, 21:42

Hình ảnh liên quan

+Đo chu kỳ dao động Pc của hệ, thực hiện tính toán theo bảng sau: - Giao tiếp simulink matlab và arduino thông qua serial port và ứng dụng vào bài toán điều khiển tốc độ động cơ DC bằng PID

o.

chu kỳ dao động Pc của hệ, thực hiện tính toán theo bảng sau: Xem tại trang 5 của tài liệu.
IV. Sơ đồ nguyên lí - Giao tiếp simulink matlab và arduino thông qua serial port và ứng dụng vào bài toán điều khiển tốc độ động cơ DC bằng PID

Sơ đồ nguy.

ên lí Xem tại trang 10 của tài liệu.
Trong hình trên, ta sẽ cấu hình một số khối như sau: - Giao tiếp simulink matlab và arduino thông qua serial port và ứng dụng vào bài toán điều khiển tốc độ động cơ DC bằng PID

rong.

hình trên, ta sẽ cấu hình một số khối như sau: Xem tại trang 13 của tài liệu.
1. Điều khiển động cơ bằng bộ điều khiển On-Off - Giao tiếp simulink matlab và arduino thông qua serial port và ứng dụng vào bài toán điều khiển tốc độ động cơ DC bằng PID

1..

Điều khiển động cơ bằng bộ điều khiển On-Off Xem tại trang 13 của tài liệu.
VI. Thực hiện quá trình điều khiển - Giao tiếp simulink matlab và arduino thông qua serial port và ứng dụng vào bài toán điều khiển tốc độ động cơ DC bằng PID

h.

ực hiện quá trình điều khiển Xem tại trang 13 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan