tuenhi.n2012 gửi vào
- 127586 lượt xem
Bộ điều khiển PID là một bộ điều khiển vòng kín được sử dụng rộng rãi trong hệ thống điện, hệ thống tự động, điện tử. Mục tiêu của bộ điều khiển PID là điều chỉnh giá trị điều khiển ở ngõ ra Ouput sao cho sai lệch Error e(t) = (SP – PV) giữa giá trị đo được của hệ thống PV (Process Variable) với giá trị cài đặt SP (SetPoint) nhỏ nhất có thể (~ 0), đạt được sự ổn định và có đáp ứng nhanh. Chúng ta sẽ cùng tìm hiểu về P.I.D thông qua việc điều khiển động cơ DC SERVO MOTOR ở hai chế độ: SPEED & POSITION.
I. TÌM HIỂU VỀ P.I.D
Mục tiêu của bộ điều khiển PID là điều chỉnh giá trị điều khiển ở ngõ ra Ouput sao cho sai lệch Error e(t) = (SP – PV) giữa giá trị đo được của hệ thống PV (Process Variable) với giá trị cài đặt SP (SetPoint) nhỏ nhất có thể (~ 0), đạt được sự ổn định và có đáp ứng nhanh. Các bạn có thể tham khảo chi tiết về P.I.D của Brett Beauregard - tác giả của thư viện PID_v1.
Sơ đồ khối của bộ P.I.D điều khiển động cơ DC Servo Motor cho dự án như sau:
Lấy ví dụ: Ta cài đặt SetPoint tốc độ cho servo motor SP = 2,000 vòng/phút. Hệ thống sẽ phát lệnh cho motor chạy, bộ PID sẽ tính toán dựa vào feedback (hồi tiếp) từ Encoder qua giá trị Process Variable PV, sao cho Error = SP-PV bằng 0 (error ~0). Hay nói cách khác khi ta cài đặt motor chạy 2,000 vòng/ phút, bộ PID sẽ tính toán sao cho motor chạy đúng 2,000 vòng/ phút với sai số nhỏ nhất và đáp ứng nhanh nhất. Trong điều khiển thực tế, giá trị SP này có thể thay đổi liên tục và bộ PID phải có nhiệm vụ thích ứng với thay đổi này.
Cụ thể với DC motor NISCA NF5475 được dùng cho thử nghiệm này, ta có các thông số sau:
1.1. SPEED CONTROL
Như vậy để motor trên chạy với tốc độ cài đặt SP = 2,000 vòng/phút, bộ PID phải điều xung PWM motor hoạt động sao cho Encoder hồi tiếp về xung quanh giá trị PV = 2,000 * 200 = 400,000 xung/phút. Để motor chạy tốc độ tối đa 4,162 vòng/ phút thì bộ PID phải điều khiển sao cho Encoder hồi tiếp về xung quanh giá trị 4,162*200 = 832,400 xung/phút.
Ở đây, thực tế chúng ta điều khiển motor qua biến trở 5Kohm, ứng với 0% (0 rpm) và 100% (4,162 rpm) do vậy ta phải scaling tín hiệu SP và PV sao cho đúng tỉ lệ thì bộ điều khiển PID mới hoạt động đúng. Giá trị tốc độ cài đặt 2,000 vòng/phút ở trên nằm ở khoảng giữa của biến trở 5Kohm.
1.2. POSITION CONTROL
Bài toán đặt ra là làm như thế nào để điều khiển góc quay của motor chính bằng vị trí của biến trở và nó hoạt động đúng khi ta xoay biến trở theo chiều kim đồng hồ hay ngược chiều kim đồng hồ.
Tương tự như trên, motor quay một vòng ứng với một vòng quay của biến trở 5Kohm và sẽ tạo ra 200 xung ở Encoder. Khi biến trở xoay đến vị trí cuối (100%), Arduino sẽ đọc về giá trị là 1,024 và Encoder tạo ra 200 xung. Tỉ lệ giữa giá trị đọc từ biến trở (SetPoint) và xung Encoder (Process Variable) là: 1,024/200 = 5.12.
II. B.O.M
Các thiết bị cần chuẩn bị cho dự án bao gồm:
No.
Item
Spec
Q'ty
Unit
Remarks
1
Arduino Uno/ Mega
1
pcs (cái)
2
L298N
1
pcs
3
DC Servo Motor
NISCA NF5475E
1
pcs
4
Potentiometer
5Kohm
1
pcs
5
Power Supply 12/24 VDC
1
pcs
6
Power Supply 5 VDC
1
pcs
III. SƠ ĐỒ NGUYÊN LÝ
3.1. SƠ ĐỒ KHỐI CỦA DỰ ÁN
Ở đây lưu ý:
3.2. SƠ ĐỒ ĐẤU NỐI
Lưu ý: Đối với DC Servo Motor NISCA NF5475E, Encoder cần phải được cấp nguồn 5VDC và nó có hai kênh A, B.
IV. CHƯƠNG TRÌNH
4.1. THƯ VIỆN PID_v1
http://playground.arduino.cc/Code/PIDLibrary
https://github.com/GreyGnome/PinChangeInt
https://github.com/raydike
4.2. SPEED CONTROL
Link Youtube: https://www.youtube.com/watch?v=sM2yTyHvafc&list=PLfrr5s2He43DA7gLnXX5XRed0wyqBtcz-&index=2
Chương trình:
4.3. POSITION CONTROL
Link Youtube: https://www.youtube.com/watch?v=Whsgfi3JGYM&index=1&list=PLfrr5s2He43DA7gLnXX5XRed0wyqBtcz-
Chương trình:
V. LỜI KẾT