Phác thảo giải thuật

Một phần của tài liệu Đề tài: Thiết kế hệ thống điều khiển tốc độ động cơ DC sử dụng bộ điều khiển PID và PID mờ (Fuzzy– PID) (Trang 31 - 35)

CHƯƠNG IV: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN

4.2.2. Phác thảo giải thuật

4.2.2.1. Đọc Encoder

Về cơ bản, để có thể đọc được giá trị vận tốc, ta có thể:

(i) Tính số sườn xuống trong thời gian 𝑇𝑠 (sampling time) để suy ra vận tốc trung bình của động cơ (𝑥𝑢𝑛𝑔/𝑇𝑠) (ii) Tìm thời gian xuất hiện 2 sườn xuống liên tiếp của Encoder, từ đó cũng suy ra được vận tốc.

Hình 4.2: Đọc Encoder

Phân tích:

- Nếu sử dụng phương án (i), ta cần một timer để định một khoảng thời gian và một counter hoặc sử dụng biến đếm để đếm xung. Dùng phương pháp này có thể bị giới hạn về mặt đáp ứng do Encoder gây ra. Nếu số xung quá lớn gây tràn Counter hoặc bộ nhớ. Nếu encoder độ phân giải thấp thì phải tăng thời gian lấy mẫu 𝑇𝑠 để giảm thiểu sai số đo.

- Nếu sử dụng phương án (ii), ta cần sử dụng timer để đếm khoảng thời gian giữa 2 sườn xuống. Khi đó thì thời gian thực thi sẽ chiếm hầu hết thời gian hoạt động của MCU. Do đó, phương án này không khả quan lắm.

Đề ra phương án tối ưu: Ta sử dụng phương án 1, sử dụng timer với một ngắt ngoài và biến đếm. Encoder có độ phân giải khá lớn, phù hợp với tốc độ định mức của động cơ là hợp lý nhất. Tuy nhiên, với encoder sử dụng trong bài là encoder 100 xung/vòng là khá nhỏ, do đó ta cần thỏa hiệp các điều kiện để đạt được mục đích điều khiển. Tức là ta tăng thời gian lấy mẫu lên mức vừa phải để giảm sai số đo.

Ở đây, ta lấy thời gian lấy mẫu là 25.6ms, sử dụng timer2 chế độ 16bit, autoreload. Xung từ Encoder đưa về MCU tại chân ngắt ngoài INT1. Số xung đếm được sẽ được lưu vào biến 𝑐𝑜𝑢𝑛𝑡 và 𝑝𝑟𝑒_𝑐𝑜𝑢𝑛𝑡. Vận tốc thực sẽ tỉ lệ với (𝑐𝑜𝑢𝑛𝑡 − 𝑝𝑟𝑒_𝑐𝑜𝑢𝑛𝑡). Nếu quy đổi vận tốc về đơn vị 𝑣ò𝑛𝑔/𝑝ℎú𝑡 thì ảnh hưởng của sai số đo sẽ làm cho kết quả kém chính xác, nên sẽ hiển thị luôn số xung đếm được trong thời gian 𝑇𝑠 và so sánh với 𝑠𝑒𝑡𝑝𝑜𝑖𝑛𝑡, thực hiện thuật toán điều khiển.

32

4.2.2.2. Điều chế xung PWM

Vi điều khiển dòng AT89S52 không có chân xuất PWM trực tiếp, do vậy ta phải dùng Timer để tạo xung PWM, đưa vào mạch công suất.

Vấn đề đặt ra là tạo được xung ra có tần số phù hợp với chu kì lấy mẫu 𝑇𝑠 để sau đúng thời gian 𝑇𝑠, MCU thực hiện cập nhật các thông số và tính toán lại một lượt. Khi đó, nếu ta thực hiện cập nhật phần trăm xung đồng bộ với chu kì chương trình thì sai số điều khiển sẽ được giảm bớt đáng kể. Đồng thời, tần số xung PWM này cũng phải thích hợp để tránh trường hợp động cơ thay đổi tốc độ không trơn tru, linh hoạt.

Chu kì chương trình ta lấy là 𝑇𝑠 = 25.6(𝑚𝑠). Ta cũng lấy chu kì xung PWM chính bằng thời gian 𝑇𝑠. Do vậy, Timer sử dụng để tạo xung ở đây ta chọn Timer1 chế độ 16bit. Ta dùng biến 𝑝𝑤𝑚 để làm biến điều khiển, có kiểu 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑐ℎ𝑎𝑟. Giá trị nằm trong khoảng 0 – 255. Do vậy, để thỏa mãn xung ra có chu kì bằng 𝑇𝑠 thì biến độ rộng xung 𝑑𝑢𝑡𝑦 khi quy đổi từ 𝑝𝑤𝑚 sang, ta phải nhân với hệ số 100.

Dưới đây là lưu đồ phác thảo giải thuật điều chế xung PWM (Hình 4.3)

33

4.2.2.3. Quét phím nhập vào từ keyboard

Ma trận phím 4x4 được kết nối với Port 1 của MCU. Giải thuật quét phím là: - Quét hàng: + Cho các hàng bằng 1, cột bằng 0.

+ Kiểm tra hàng có phím được ấn. Chuyển sang quét cột. - Quét cột: + Cho hàng bằng 0, cột bằng 1.

+ Kiểm tra cột có phím được ấn. Suy ra phím được ấn. Sau khi xác định được hàng và cột có phím được ấn. Ta suy ra được phím đã ấn, từ đó trả về giá trị được gán cho phím đó.

Một chú ý trong bài toán quét phím là vấn đề chống nhiễu (nhảy phím, dính phím). Ngoài phương pháp chống nhiễu bằng phần cứng (sử dụng tụ và điện trở) thì có thể sử dụng phương pháp chống nhiễu bằng phần mềm (dựa vào trễ truyền đạt). Dưới đây là chương trình quét phím ma trận, có chống nhiễu bằng phần mềm (Hình 4.4).

34

4.2.2.4. Bộ điều khiển Fuzzy – PID

Hình 4.5: Thuật toán Fuzzy-PID

Về cấu trúc của bộ Fuzzy – PID: xem lại phần 3.2.2.2. Phần này nói về cách xây dựng các tập mờ, các hàm thuộc và phương pháp giải mờ trên đối tượng là vi điều khiển AT89S52. Dưới đây là một ví dụ về xây dựng hàm thuộc (Hình 4.6) Ứng với khoảng [0,1] thì giá trị trả về nằm trong [0,255].

Một phần của tài liệu Đề tài: Thiết kế hệ thống điều khiển tốc độ động cơ DC sử dụng bộ điều khiển PID và PID mờ (Fuzzy– PID) (Trang 31 - 35)

Tải bản đầy đủ (PDF)

(39 trang)