Nếu sử dụng phương án (1), ta cần một timer để định một khoảng thời gian và

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 - 33)

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 T; để 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ử đụng phương án 1, sử dụng tỉimer 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 INTI. Số xung đếm

được sẽ được lưu vào biến cownt và pre_count. Vận tốc thực sẽ tỉ lệ với (count —

pre_coun£). Nếu quy đổi vận tốc về đơn vị uòng /phút 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 T; và so sánh với setpoint, thực hiện thuật toán điều khiển.

4.2.2.2. Điều chế xung PWM

Vi điều khiển đòng AT§9S52 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 7, để sau

đúng thời gian 7¿, 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à T¿ = 25.6(ms). Ta cũng lấy chu kì xung PWM

chính bằng thời gian T¿. Do vậy, Timer sử dụng để tạo xung ở đây ta chọn Timerl chế độ 16bit. Ta dùng biến pwm đề làm biến điều khiển, có kiểu tưnsigned char. Giá trị

nằm trong khoảng 0 — 255. Do vậy, để thỏa mãn xung ra có chu kì bằng T, thì biến độ rộng xung đu£y khi quy đổi từ pwm 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)

Ngất Timer 1

PIN là chân xuất PVM

pwm là biến điều khiển: 0-255

| đưy =pwm*100 | [ đuy = (255 — pwm)*100 |

đuty tương ứng là độ rộng

THỊ = 0xẾ ~ (duty>>§)&0xff xung quy đổi

TL1 = 0x — duty&0xff

Hình 4.3: Lưu đỗ giải thuật điều chế xung PWM

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.

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 - 33)

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

(39 trang)