Hệ thống ghép nối máy tính điều khiển mô-tơ

Một phần của tài liệu Bai9_ PID (Trang 26 - 30)

3. Điều khiển PID tốc độ của mô-tơ một chiều qua chơng trình phần mềm ghép nối máy tính

3.1. Hệ thống ghép nối máy tính điều khiển mô-tơ

Hệ thống điều khiển tốc độ mô-tơ theo luật PID còn có thể đợc phát triển trên cơ sở kỹ thuật ghép nối máy tính với các cổng vào/ra số và các bộ định thời (timer) chính xác. Sơ đồ phần cứng của hệ thống đợc chỉ ra trên hình 14. Mô-đun phần mềm điều khiển dùng bộ đếm C2 của chip PIT-8254 để tạo ra chuỗi xung TTL, có tần số cỡ 2,3 kHz điều chế độ rộng xung WPM (Width Pulse Modulation) đa tới lối vào mạch cầu H cấp điện quay mô-tơ. Tốc độ mô-tơ thay đổi do độ rộng xung biến đổi. Bộ lập mã quang (Encoder) gắn với trục quay mô-tơ xuất ra 500 xung / 1 vòng quay. Tín hiệu này đợc cấp tới lối vào CLK1 của bộ đếm C1 chip PIT-8254. Mô-đun đo tần số qua bộ đếm này cấp giá trị tốc độ quay của mô-tơ (vòng/ phút - rpm) đo đợc tới mô-đun so sánh với tốc độ đặt. Sai lệch lối ra đợc cấp tới mô-đun PID để điều khiển trở lại độ rộng xung WPM.

Hình 14. Sơ đồ phần cứng ghép nối bộ điều khiển PID

Về phần mềm, trong trờng hợp này máy vi tính cùng bản mạch ghép nối PIT-8254 đóng vai trò một thiết bị ảo (virtual instruments) với các mô-đun đợc phát triển nh trình bày trên hình 15.

92 Mạch cầu H Mô-tơ Cảm biến tốc độ (bộ lập mã quang) PC Timer 8254 (C2) CLK 1 OUT0 Tải Timer 8254 (C1) sóng WPM

chuỗi xung tỷ lệ với tốc độ Điều khiển PID Điều chế độ rộng xung cầu HMạch Đo tốc độ Hiển thị tốc độ Tốc độ đặt KP KI KD Mô-tơ Cảm biến tạo xung + - E z x OUT Timer So sánh

Hình 15. Sơ đồ các mô-đun phần mềm chơng trình điều khiển PID

Để thực hiện sơ đồ này, các mô-đun phần mềm sau đã đợc phát triển trên ngôn ngữ hình tợng LABVIEW chạy trong Windows:

1. Mô-đun phát và biến đổi độ rộng xung: phát ra từ OUT2 của

bộ đếm C2 chip PIT-8254 chuỗi xung có biên độ không đổi (mức logic TTL 0-5 V) nhng có độ rộng xung biến đổi đợc để điều khiển khối điện tử công suất mạch cầu H.

Sóng vuông 1 MHz và 2,3 KHz đợc đa vào các lối vào tơng ứng CLK2 và GATE2 của bộ đếm C2. Khi bắt đầu đợc chọn chế độ đếm 1, lối ra OUT2 ở mức lôgic “1”. Bộ đếm đợc đếm khi xuất hiện sờn lên của xung cửa G2. Khi đó lối ra OUT2 sẽ nhảy xuống mức lôgic 0, bộ đếm sẽ đếm lùi từ số đếm đợc nạp (n) tới 0. Kết thúc đếm, lối ra OUT2 sẽ lại nhảy lên mức “1”. Nh vậy thời gian (t) tạo ra độ rỗng xung ở lối ra OUT2 phụ thuộc vào số đếm đợc nạp (n) và bằng chu kỳ xung nhịp sóng 1MHz nhân với n. Vì vậy, đại lợng ngợc lại, độ rộng xung đợc tính nh sau:

độ rộng xung = (1 – n/T)  100 %.

Đoạn chơng trình sau trong ngôn ngữ C cho kết quả phát sóng WPM với độ rộng xung phụ thuộc số đếm đợc nạp (thí dụ, so_dem = 200) nh sau:

# include <stdio.h> # include <dos.h>

# include “PCI.h” // th viện các file điều khiển thiết bị card PIT-8254 // địa chỉ cơ sở card là B800h

// thanh ghi điều khiển: B80B

// C0: B808, C1: B809, C2: B80A void main() void main() { 93 C2 CLK2 1MHz G2 2,3 kHz OUT2 T OUT 2 t G2

unsigned so_dem;

outportb (0xB80B, 0xB2); // 1011 0010 khởi động C1, mode 1

so_dem = 200; // “so_dem” là số đếm ban đầu

outportb (0xB80A, so_dem & 0xFF); // nạp byte thấp số đếm outportb (0xB80A, so_dem >>8); // nạp byte cao }

2. Mô-đun đo tốc độ mô-tơ: có nhiệm vụ đếm các xung từ cảm

biến (encoder) đợc đa tới cổng vào CLK1 của chip PIT-8254, tính ra giá trị tốc độ tức thời của mô-tơ để cấp tới mô-đun so sánh và mô-đun hiển thị tốc độ. Sử dụng 2 bộ đếm C0 và C1 cùng máy phát 1MHz cho bộ đo này nh hình sau:

Tạo xung cửa cho bộ đếm C1 là sóng 1MHz đợc chia 50.000 lần qua bộ đếm C0 để có các cửa có độ dài 0,025 s. Tần số chuỗi xung cần đo sẽ bằng số xung đếm đợc qua cửa này chia cho 0,025. Vì một đĩa lập mã (encoder) xuất ra 500 xung/1 vòng quay, nên tốc độ vòng quay trong một phút (rpm) bằng tần số này chia cho 500 và nhân với 60.

Đoạn chơng trình sau tơng ứng trong ngôn ngữ C cho ta kết quả đo tần số sóng bằng 2 bộ đếm C1 và C0 của chip PIT-8254:

outportb (0xB80B, 0x36); // 0011 0110 khởi động C0, mode 3

outportb (0xB808, 50000 &0xFF); // nạp byte thấp số đếm 50.000

outportb (0xB80A, 50000 >>8); // nạp byte cao

outportb (0xB80B, 0x70); // 0111 0000 khởi động C1, mode 0 do 94 C0 CLK0 1MHz G0 +5V OUT0 C1 CLK1 Sóng từ Encoder cần đo tần số G1

{outportb (0xB80B, 0xE2); // 1110 0010 Chốt trạng thái C0

} while (inportb (0xB808) >>7 = 0; // đợi đến khi G1 = OUT0 bằng 1, cửa G1 mở

do

{outportb (0xB80B, 0xE2); // 1110 0010 Chốt trạng thái C0 } while (inportb (0xB808) >>7 = 1; // đợi đến khi G1 = OUT0 bằng 0, cửa G1 đóng

outportb (0xB809, FFFF & 0xFF); // nạp byte thấp số đếm 65.535 cho C1

outportb (0xB809, FFFF >>8); // nạp byte cao

do

{outportb (0xB80B, 0xE2); // 1110 0010 Chốt trạng thái C0

} while (inportb (0xB808) >>7 = 0; // đợi đến khi G1 = OUT0 bằng 1, cửa G1 mở

do

{outportb (0xB80B, 0xE2); // 1110 0010 Chốt trạng thái C0

} while (inportb (0xB808) >>7 = 1; // đợi đến khi G1 = OUT0 bằng 0, cửa G1 đóng

byte_thap = inportb (0xB809); // đọc byte thấp số đếm của C1 byte_cao = inportb (0xB809); // đọc byte cao

Số_xung = 65535 – (byte_cao * 256 + byte_thap); // số xung qua C1 Tan_so = So_xung / 0.025;

Toc_do_motor = Tan_so x 60 / 500;

3. Mô-đun đồ hoạ hiển thị tốc độ: hiển thị sự phụ thuộc thời

gian của tốc độ tức thời mô-tơ lên màn hình thiết bị ảo.

4. Mô-đun so sánh: có nhiệm vụ nhập tốc độ đặt và so sánh với tốc

độ tức thời để cho ra lợng sai lệch E cấp tới mô-đun PID.

5. Mô-đun PID: thực hiện thuật toán điều khiển PID với 3 hệ số KP,

KIKD có thể nhập vào từ các phím điều chỉnh ảo trên mặt máy ảo.

Gọi:

giá trị sai lệch  giá trị đặt – giá trị tốc độ đo đợc

error_0  giá trị sai lệch tại thời điểm lấy mẫu số liệu lần trớc.

error_1  giá trị sai lệch tại thời điểm lấy mẫu số liệu hiện tại.

Theo định nghĩa 3 loại điều khiển số, ta có:

- Với điều khiển tỷ lệ P, lối ra của mô-đun bằng: KP  error_1

- Với điều khiển tích phân, lối ra của mô-đun bằng:

KI  (error_1 + tổng các error trớc đó)

- Với điều khiển vi phân, lối ra của mô-đun bằng:

KD  (error_1 – error_0)

Một phần của tài liệu Bai9_ PID (Trang 26 - 30)

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

(33 trang)
w