CHƯƠNG 3 : XÂY DỰNG MƠ HÌNH ROBOT TỰ HÀNH
3.4. Xây dựng bộ điều khiển PID
3.4.2. Điều khiển vận tốc động cơ bằng PID
a. Tính vận tốc thực của động cơ
Để tính tốn được vận tốc thực của động cơ, chúng ta cần đi tìm số xung mà động cơ quay trong 1 phút.
Cơng thức tính số xung/phút của động cơ: ppm: số xung/phút của động cơ
deltapulse: số xung đọc được giữa 2 lần ngắt liên tiếp
sampletime (s): thời gian lấy mẫu (thời gian giữa 2 lần ngắt liên tiếp) s 60 e deltapul e ppm sampletim (3.2)
Vì việc tính tốn vận tốc được thực hiện trong một ngắt định kỳ, kể từ khi vận tốc góc là số gia tăng trong một thời gian nhất định. Khoảng thời gian gián đoạn này phải ít hơn so với thời gian tối thiểu cần thiết cho ½ số vịng quay ở tốc độ tối đa.
Tốc độ tối đa khi có tải của động cơ là 285RPM.
Cơng thức được sử dụng để tính tốn khoảng thời gian ngắt: 60
0,1( ) 2 285
t s
(3.3)
Vậy thời gian lấy mẫu phải: sampletime < 100(ms).
Từ đó ta có được cơng thức tính vận tốc thực của động cơ: s 60 seperrev e deltapul e rpm pul sampletim (3.4) Trong đó:
pulseperrev: số xung/vịng của động cơ
deltapulse: số xung đọc được giữa 2 lần ngắt liên tiếp
sampletime (s): thời gian lấy mẫu (thời gian giữa 2 lần ngắt liên tiếp) rpm: số vòng quay của động cơ trong 1 phút
b. Điều khiển tốc độ động cơ bằng bộ PID
Đầu tiên ta cần có vận tốc thực của động cơ:
V = rpm (vịng/phút) Sau đó là vận tốc đạt được tại thời điểm đang xét:
V set point – V_sp : Đây là giá trị vận tốc mà ta mong muốn. Từ đó ta tính được sai số error hiện tại:
56
Tính tốn các thành phần của bộ PID:
Khi thực hiện bộ điều khiển PID trong thực tế, các biến đầu vào (error) thu được bằng cách lấy mẫu đầu ra của các tỷ lệ mẫu. Sau đó, các thuật tốn PID cũng được tính ở tỷ lệ mẫu. Tỷ lệ mẫu được gọi là thời gian lấy mẫu (sample time). Chọn sampletime = 0,001(s)
Output = Khâu P + Khâu I + Khâu D (3.6) Output là tín hiệu đầu ra: xung PWM
Khâu P:
_
p part Kp error (3.7)
Khâu I:
_ _ _
i part i part last Ki error sampletime (3.8)
Khâu D:
_
_ Kd error pre error
d part
sampletime
(3.9)
Sau đó cập nhật lại các biến cần thiết:
i_part_last = i_part (3.10)
pre_error = error (3.11)
Thời gian lấy mẫu đã được chuyển đổi sao cho phù hợp với ngơn ngữ trong Arduino.
Tín hiệu đầu ra:
PWM = (int)(p_part + i_part + d_part)
Vì xung PWM nhận tín hiệu tương tự (0 -255) nên ta cần hiệu chỉnh nó cho phù hợp:
If (PWM >=255), PWM=255 If (PWM <=0), PWM =0
57
c. Tìm thơng số bộ PID bằng phương pháp tinh chỉnh tay
Đặt Ki = Kd = 0.
Tăng Kp đến khi hệ thống dao động tuần hoàn. Đặt thời gian tích phân bằng chu kỳ dao động . Điều chỉnh lại giá trị Kp cho phù hợp.
Nếu có dao động thì điều chỉnh giá trị Kd.
Phương pháp thử và sai số được áp dụng để chỉnh các thông số của bộ PID cho đến khi đạt được chất lượng đáp ứng mong muốn.
Qúa trình tinh chỉnh dựa trên cơ sở ảnh hưởng của các thông số kp, ki, kd đến chất lượng của đáp ứng đầu ra.
Khi tăng các giá trị thông số Kp, Ki, Kd của bộ PID sẽ làm ảnh hưởng đến chất lượng đáp ứng như sau:
Thông số Thời gian tăng
(Rise time)
Độ vọt lố
(Overshoot)
Thời gian quá độ
(Settling time)
Sai số xác lập
(S.S. error)
Kp Giảm Tăng Ít thay đổi Giảm
Ki Giảm Tăng Tăng Giảm
Kd Ít thay đổi Giảm Giảm Không thay
58
d. Lập trình điều khiển tốc độ động cơ bằng bộ điều khiển PID
Sau khi tiến hành phương pháp thử và sai số (trial and error) ta tìm được bộ thông số PID như sau:
Kp = 2,2 Ki = 0,0005 Kd = 0,000125
Thử nghiệm với setpoint ban đầu: 200v/p
Hình 3.18. Vận tốc trả về hiển thị trên cổng COM
Vận tốc của động cơ đạt được qua bộ điều khiển PID: 192/200 (vòng/phút). Chênh lệch giữa vận tốc thực và vận tốc mong muốn tương đối thấp.
Việc điều khiển tốc độ động cơ bằng bộ điều khiển PID giúp cho việc di chuyển của Robot trở nên ổn định hơn. Từ việc điều chỉnh vận tốc, chúng ta có thể điều chỉnh được hướng di chuyển của Robot bằng cách điều khiển thời gian động cơ quay với vận tốc thực.
Tuy nhiên do bộ điều khiển PID được tinh chỉnh tay nên độ chính xác và tính ổn định của tốc độ động cơ là tương đối. Hướng di chuyển cũng như góc quay của Robot cịn thiếu ổn định và tính chính xác chỉ là tương đối.
59