Thiết kế bộ điều khiển PID và mô phỏng trên MATLAB

Một phần của tài liệu ĐỒ ÁN MÔN HỌC ĐỀ TÀI THIẾT KẾ VÀ ĐIỀU KHIỂN ROBOT BA BẬC TỰ DO (Trang 52 - 61)

II. Điều khiển động cơ bước

3) Thiết kế bộ điều khiển PID và mô phỏng trên MATLAB

a) Mô hình toán học:

Mô hình động cơ bước nam châm vĩnh cửu (PMS)

Phần này cung cấp một dẫn xuất ngắn gọn của một mô hình phi tuyến của động cơ bước 2 pha PM.

Phương trình động lực học của trục rotor được đưa ra bởi:

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 53

trong đó: – mô men quán tính của trục rotor

F – hệ số ma sát nhớt

– mô men tải

Phương trình (1) tạo cơ sở cho mô hình động lực học chung của rotor động cơ bước PM. Do đó với động cơ PM có P cặp cực rôto và hai pha ( ) tại 0 và ( / 2), các phương trình không gian trạng thái sau có thể được suy ra:

=

= (− sin + cos ) − −

= − + sin

+ (2)

= − − cos −

trong đó: là gia tốc góc của tải

là đạo hàm dòng điện qua cuôn dây a

là đạo hàm dòng điện qua cuôn dây b

Phương trình xét trục nối đàn hồi:

Xem xét trường hợp khi tải được kết nối với động cơ qua một trục cứng dài có độ cứng k, thì quán tính của động cơ sẽ là và quán tính tải sẽ là như trong hình 3.

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 54

Hình 3 - Sơ đồ nối trục đàn hồi

Trong trường hợp này, phương trình tải trọng và trục đàn hồi sẽ là:

= (3)

= 1 [− ( − ) − ( − )]

Một kỹ thuật điều khiển cổ điển cho PMSM dựa trên biến đổi vectơ (u) và (i) được biểu diễn trong hệ quy chiếu gắn với stato cố định (a, b) thành các vectơ biểu diễn trong một khung (d, q) xoay dọc theo vectơ lực dẫn động giả tưởng sao cho:

= cos sin

−sin cos

Phương trình trạng thái (2) thể hiện dưới dạng dòng điện và điện áp trong tọa độ xoay (d, q) trở thành: = = − − − 1 [ ( − ) + ( − )] = − + . + (4) = − − . − +

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 55

b) Mô phỏng với MATLAB Simulink

Trong MATLAB, chạy file Thong_so_mo_hinh_hoa_Stepper_motor.m

chứa các thông số của động cơ bước.

% momen quan tinh cua dong co

Jm = 0.08; % kg.m^2

% he so can nhot cua khop noi truc

B = 3; % Nms/rad % dien cam cua cuon day

L = 3; % Henry % dien tro cua dong co

R = 3; % Omh % so cap cuc

P = 6; % khong thu nguyen % he so cua dong co

Km = 2; % Nm/rad

% he so can nhot cua truc dong co

F = 0.01; % Nms/rad % momen tai

TL = 5; % Nm

k = 0.9;

Tiến hành mô phỏng hệ phương trình (4) với Simulink

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 56

Hình 4 – Sơ đồ Simulink mô phỏng động cơ bước

Hình 5 – Khối Subsystem “Dong co buoc“

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 57

Hình 6 – Tham số PID điều khiển vận tốc góc

Hình 7 - Kết quả đáp ứng vận tốc góc

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 58

Hình 9 - Kết quả đáp ứng vị trí góc quay

Nhận xét: Đánh giá bộ điều khiển

Từ kết quả đáp ứng nhận được trên các đồ thị, ta rút ra một số nhận xét: + Bộ điều khiển vị trí góc quay tương đối đạt yêu cầu khi độ quá điều chỉnh và thời gian đáp ứng nhỏ

+ Bộ điều khiển vận tốc góc chưa đạt yêu cầu do độ quá điều chỉnh rất lớn. Do vậy, bộ điều khiển này phải cần tiếp tục nghiên cứu và khắc phục

c) Điều khiển động cơ bước thực tế với vi điều khiển: Phần cứng:

- Arduino UNO

- Driver điều khiển động cơ A4988 - Breadboard

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 59

- Dây nối

Kết nối driver, động cơ bước vào Arduino như sau:

Code Arduino tham khảo

// Run a A4998 Stepstick from an Arduino UNO.

// Paul Hurley Aug 2015 - http://www.instructables.com/id/Drive- a-Stepper-Motor-with-an-Arduino-and-a-A4988-/

int x;

#define BAUD (9600)

void setup() {

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 60

Serial.begin(BAUD);

pinMode(6,OUTPUT); // Enable pin - chân khởi động - nối vào GND sẽ giúp ta bật động cơ bước, nối vô VCC động cơ bước được thả ra. Nôm na: GND = servo.attach, VCC = servo.detach

pinMode(5,OUTPUT); // Step pin pinMode(4,OUTPUT); // Dir - pin digitalWrite(6,LOW); // Set Enable low }

void loop() {

digitalWrite(6,LOW); // Đặt Enable ở trạng thái LOW digitalWrite(4,HIGH); // Đặt Dir ở trạng thái HIGH Serial.println("Cho chay 200 steps (1 vong)"); for(x = 0; x < 200; x++) // Cho chay 1 vong {

digitalWrite(5,HIGH); // Output high delay(10); // chờ

digitalWrite(5,LOW); // Output low delay(100); // chờ

}

Serial.println("Pause");

delay(1000); // dừng 1 s rồi quay tiếp }

Bùi Văn Mạnh – KT Cơ Điện tử 03-k60 Page 61

Một phần của tài liệu ĐỒ ÁN MÔN HỌC ĐỀ TÀI THIẾT KẾ VÀ ĐIỀU KHIỂN ROBOT BA BẬC TỰ DO (Trang 52 - 61)

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

(76 trang)