II.Từ khái niệm đến hình dung hệ thống Mục tiêu của phần này là giúp bạn đọc hình dung các công đoạn hiện thực và áp dụng một bộ điều khiển vào thực tế, không đi sâu vào giải thích các
Trang 1II.Từ khái niệm đến hình
dung hệ thống
Mục tiêu của phần này là giúp bạn đọc hình
dung các công đoạn hiện thực và áp dụng một
bộ điều khiển vào thực tế, không đi sâu vào
giải thích các phương trình toán học Các bài
viết khác sẽ lần lượt giải quyết các vấn đề chi
tiết
Không gì dễ hiểu bằng một ví dụ cụ thể Ở
đây, ta lấy ví dụ về điều khiển động cơ DC
Tổng thể hệ thống
Tổng thể hệ thống điều khiển động cơ DC bao
gồm 4 phần:
- Động cơ DC
- Bộ nguồn để cấp dòng/áp
- Cảm biến để đo vận tốc/vị trí
- Bộ điều khiển để sai khiến bộ nguồn
Động cơ DC phải được cấp dòng/áp thì mới có
thể hoạt động, nhưng không phải cứ cấp tùy ý
là có thể chạy đúng như yêu cầu
Cảm biến có nhiệm vụ đo đạc vận tốc/vị trí, để
hồi tiếp về cho bộ điều khiển biết
Bộ điều khiển dựa vào yêu cầu mong muốn và
vận tốc/ vị trí hiện thời do cảm biển hồi tiếp về
để tính toán xem cần cấp bao nhiêu dòng/áp
thì máy sẽ hoạt động như yêu cầu
Bộ nguồn có nhiệm vụ là hễ bộ điều khiển
muốn cấp bao nhiêu thì nó sẽ cấp bấy nhiêu
Còn chúng ta đương nhiên là người ra yêu cầu
Mô hình động cơ DC
Nguyên lý động cơ DC được giới thiệu ở đây http://vi.wikipedia.org/wiki/%C4%90%E1%B B%99ng_c%C6%A1_%C4%91i%E1%BB%8 7n_m%E1%BB%99t_chi%E1%BB%81u
Bằng các nghiên cứu về máy điện DC, người
ta chỉ ra rằng quan hệ giữa vận tốc ra và dòng/áp cấp vào theo các pt như sau :
𝐸 = 𝑘𝑒Ω (1)
𝐼(𝑠)
𝑉 𝑠 − 𝐸(𝑠)=
1
𝑅 + 𝐿𝑠=
1 𝑅
1 +𝑅 𝑠𝐿 (2) 𝑇(𝑡) = 𝑘𝑐𝐼(𝑡) (3)
Ω(𝑠) 𝑇(𝑠) =
1
𝑓 + 𝐽𝑠=
1 𝑓
1 +𝑓 𝑠𝐽 (4)
Lưu ý : đôi khi ta có một hệ thống mà ta không biết bên trong là cái gì, vậy ta không thể nào dùng các định lý khoa học để tìm ra các phương trình hàm truyền dễ dàng Ta phải làm ngược lại là đo đạc vào-ra rồi suy ra
mô hình của hệ thống Công việc này gọi là nhận dạng
hệ thống (identification)
Matlab/Simulink là công cụ không thể thiếu để phân tích và thiết kể, nó cho phép ta biểu diễn các phương trình trên dưới dạng sơ đồ khối (figure 2)
Sau khi xây dựng xong mô hình trên Simulink,
ta cần kiểm chứng xem nó đã đúng chưa, bằng cách cho Simulink chạy thử để xem đáp ứng ra
có hợp lý chưa Nếu đã đúng rồi thì ta đã xong bước mô hình hóa
Figure 1 : lý thuyết máy điện DC
Trang 2Thiết kế bộ điều khiển cổ điển-Nguyên
lý bộ PID
Bộ điều khiển được hiểu là một chiến thuật
tính toán tín hiệu điều khiển, sao cho đầu ra
được như mong muốn
Gọi là cổ điển vì chúng được phát minh từ rất
lâu, vào khoảng đầu thế kỷ 20 Dấu hiệu nhận
biết là đa số chúng được thiết kể trong miền
tần số (miền Laplace – miền s)
Có cũng không nhiều lắm các loại bộ điều
khiển cổ điển mà ta có thể kể ra như : PID,
sớm trễ pha, hồi tiếp trạng thái,…Trong đó
PID được dùng nhiều nhất vì giải quyết được
phần lớn các bài toán trong công nghiệp và có
thiết kế đơn giản, tiết kiệm Vì lý do đó, và
cũng vì trong thực tế PID thường được dùng
để điều khiển động cơ DC, ta sẽ nói qua về bộ
PID ngay bây giờ
PID = Proportional-Integral-Derivative (Tỉ
lệ-Tích phân-Vi phân)
Bộ PID là một sự phát triển ý tưởng từ luật
điều khiển ở hình 2 (nói theo ý người viết chứ
không phải theo lịch sử phát triển) theo nghĩa
như sau:
Bộ P : tín hiệu điều khiển tỉ lệ thuận với sai
lệch Sai lệch càng nhiều thì bộ P sẽ chỉ đạo
bộ nguồn cấp dòng/áp càng mạnh để mau đưa
đáp ứng về cái ta mong muốn, khi sai lệch còn
ít thì bộ P giảm tín hiệu điều khiển Cho nên
tín hiệu điều khiển mà bộ P chỉ đạo là :
𝑢𝑝 = 𝐾𝑝𝜀
Bộ D : tín hiệu điều khiển tỉ lệ với đạo hàm
của đáp ứng ra nhưng ngược dấu Nó có tác dụng như một cái phanh, làm cho máy hoạt động một cách “cẩn thận” hơn Giống như ta vừa chạy xe vừa giữ phanh Bộ D giúp hệ thống bớt “trượt”, nghĩa là bớt chạy lố
𝑢𝐷 = 𝐾𝑑𝑑𝜀
𝑑𝑡= −𝐾𝑑
𝑑𝑦 𝑑𝑡
Bộ I : tín hiệu điều khiển tỉ lệ với tích phân sai
số Bên trên ta đã nói bộ D giữ phanh giúp cho máy bớt “trượt” Nhưng có thể xảy ra trương hợp khi chưa chạy tới điểm mong muốn mà máy đã dừng do lực hãm phanh mạnh quá Khi máy dừng ở một điểm mãi thì tích phân sai số theo thời gian tăng, dẫn đến uI tăng, đẩy máy chạy tiếp đến đích
𝑢𝐼= 𝐾𝐼 𝜀𝑑𝑡
𝑡 0 Tổng hợp lại :
𝑢 = 𝑢𝑃 + 𝑢𝐼+ 𝑢𝐷 Thiết kế bộ PID là công việc tìm KP ,KI ,KD
Có nhiều phương pháp thiết kế bộ điều khiển PID Có phương pháp theo kiểu “ăn liền” như Ziegle-Nichols, không cần hiểu bản chất, chỉ cần đo đạc 1 vài thông số theo dạng có sẵn, rồi
áp dụng công thức của Z-N là ra được các thông số Tuy nhiên nếu không rơi vào dạng
có sẵn thì chịu Cho nên, nếu bạn muốn học
Figure 2 : mô hình máy điện DC
Trang 3đktđ “chuẩn” thì bạn nên tìm hiểu những cách
khác : thiết kế dựa trên cực của hệ thống; dựa
trên độ dự trữ biên độ và pha của hệ thống;
theo thời gian đáp ứng, độ vọt lố, băng thông
của hệ thống,… đây đều là những phương
pháp cơ bản Trong đó khái niệm cực của hệ
thống là trung tâm nhất, mọi thứ đều có thể
giải thích theo cực của hệ thống
Như đã nói, bài viết này giới thiệu tổng quan,
không nhằm tính toán, sẽ có bài khác để làm
rõ vấn đề thiết kế
Hiện thực hóa bộ điều khiển
Bộ điều khiển analog:
Bộ điều khiển PID ở trên cũng chỉ là 1 biểu
thức hàm truyền trong miền s, chung quy cũng
chỉ là vi, tích phân Mà như vậy thì nó sẽ được
thực hiện dễ dàng với vài con opamp, điện trở,
cuộn dây, tụ điện
Hãy làm một cái mạch có áp ra/áp vào bằng
hàm truyền của bộ PID Nó chính là bộ điều
khiển Các thông số Kp,Ki,Kd có thể thay đổi
dễ dàng bằng các biến trở
Bộ đk analog thì dễ thiết kế, các thông số của
nó chính là các thông số đã tìm ra ở trên Tuy
nhiên, nếu muốn thay bộ điều khiển thì phải
thay luôn cả cái mạch
Bộ điều khiến số sẽ được giới thiệu kỹ hơn vì
có thể thay đổi dễ dàng bằng code, và ngày
càng được dùng nhiều do sự phát triển của các
hệ thống truyền thông công nghiệp
Bộ điều khiển số :
Các thông số của bộ điều khiển số không còn
giống với các thông số bên trên nữa Chúng có
cách thiết kế khác-thiết kế trên miền z
Bộ điều khiển số được hiện thực hóa nhờ các
chip vi xử lý như PIC, AVR, FPGA,…Ý
tưởng của bộ điều khiển số cũng giống như
môn “phương pháp tính” ở các trường đại học
Lấy mẫu : vị trí/vận tốc của động cơ DC là liên tục trong thời gian Nhưng ta đo chúng với
1 tần số f, chu kỳ T Cứ sau thời gian T ta mới đọc chúng 1 lần
Thay vì tích phân sai số một cách liên tục thì
ta cộng dồn nó tại các thời điểm lấy mẫu n*T
uI(n) = uI(n-1) + ε(n) Thay vì phi vân sai số thì ta lấy hiệu của nó tại thời điểm n*T và (n-1)*T
ud(n) = ε(n) - ε(n-1) Các phép này được vi xử lý giải quyết nhanh chóng nhờ vào các biến lưu giá trị của đại lượng tại thời điểm trước đó
Tần số lẫy mẫu là mấu chốt ở đây
Vì sao ? Vì lấy mẫu là ta đã làm mất đi thông tin
Nếu lấy mẫu với tần số đủ lớn thì không sao,
hệ thống tuy là “số” nhưng cũng xem tương đương như là analog Nhưng nếu lấy mẫu quá lớn, ta bị vấn đề về giới hạn tính toán của chip Chip không thể tính nhanh như vậy được, khi chip chưa tính xong chu kỳ trước mà đã bị
“hối” tính tiếp cho chu kỳ sau thì … Nói chip hoạt động được ở 20MHz có nghĩa là nó tính được nhị phân 1+1 = 10 trong 50ns
Nhưng nếu lấy mẫu với tần số quá nhỏ, ví dụ như “1 ngày/1mẫu”, thì chip sẽ nhẹ nhàng, nhưng… Vậy nên, định lý Shannon nói rằng phải lấy mẫu với tần số lớn hơn 2 lần tần số của tín hiệu cần lấy mẫu
Thực ra định lý này hơi mơ hồ khi áp dụng vào lấy mẫu trong hệ thống đktđ Bởi vì “tần
số của tin hiệu cần lấy mẫu” bằng bao nhiêu? Bởi vậy ta chọn tần số lấy mẫu lớn hơn 2 lần tần số cắt của hàm truyền hở (tức là H(s)-mô hình động cơ)
Tuy nhiên, lấy mẫu càng lớn thì càng dễ tính toán các thông số để hệ thống ổn định Cho nên ta phải đắn đo giữa 2 cái giới hạn cho tần
Trang 4số lấy mẫu : đủ lớn để không mất thông tin, đủ
bé để chip tính toán được
Nguồn và PWM
Sau khi thiết kế xong bộ điều khiển, đầu ra của
nó chính là tín hiệu điều khiển, nó báo cho bộ
nguồn biết cần cấp bao nhiêu dòng/áp cho
động cơ
Tuy nhiên, vấn đề là ở chỗ, các nguồn (DC)
của chúng ta chỉ cấp được 2 mức dòng/áp là
Io/Vo-khi mở và 0-khi tắt Mà tín hiệu đk do
bộ đk tính ra đâu phải chỉ có 2 mức, nó là một
hàm liên tục theo thời gian
Cho nên PWM xuất hiện
Ý tưởng của PWM là : vì tôi chỉ cấp được 2
mức, mà anh muốn một giá trị bất kỳ, thôi thì
để tôi đóng 1 tí và ngắt 1 tí, để có cái trung
bình bằng cái mà anh mong muốn Nếu cái “1
tí” của tôi mà lâu quá thì không tốt, nhưng nếu
giả sử cái anh muốn hầu như chỉ thay đổi
không bao nhiêu trong vòng 1ms, thì nếu tôi
đóng ngắt 1000 lần trong 1ms đó thì coi như là
tôi bằng anh
Chính là như vậy Nhưng khi nào thì anh
đóng, khi nào anh ngắt trong 1ms đó ?
Hãy đưa tôi cái mà anh muốn, tôi đi so sánh nó
với 1 xung răng cưa chu kỳ 1/1000 ms, nếu cái
anh muốn lớn hơn thì tôi báo là 1, nếu nhỏ hơn
thì tôi báo là 0
Nếu tôi báo là 1 thì anh cho điện áp 5V vào cái
cổng điều khiển của con transistor để nó đóng
mạch, dòng qua mạch là Io Nếu tôi báo 0 thì
anh đưa 0V vào là nó ngắt Trung bình lại thì
anh có cái mà anh mong muốn – giá trị bất kỳ
PWM là kỹ thuật được dùng khắp mọi nơi
Mấu chốt của nó chính là con transistor, ta chỉ
dùng 1 tín hiệu nhỏ nhưng lại đóng ngắt được
1 dòng lớn, và lại có thể đóng ngắt rất nhanh
Nếu không có các linh kiện điện tử công suất
này thì chắc xã hội không được như ngày hôm
nay
Đến đây là xong rồi, ta đã tính toán dòng/áp sao cho máy hoạt động như yêu cầu, và đã sai khiến bộ nguồn cấp dòng/áp đó, còn chờ gì nữa, cắm điện vào và chạy thôi
22/11/2012 Klong19
Tham khảo : Bài viết chỉ bao gồm các kiến thức cơ bản có ở khắp nơi nên người viết nghĩ không cần thiết chỉ ra nguồn tham khảo Nếu có tham khảo cụ thể nguồn nào khi viết thì sẽ được liệt kê ở đây: