Mục đích đề tài là ĐIỀU KHIỂNTỐC ĐỘ ĐỘNG CƠ SỬ DỤNG PID SỐ, tuy đây là một đề tài khá quen thuộc nhưng điển khác biệt so với những đề tài trước là sử dụng là sử dụng ngôn ngữ lập t
Trang 1LỜI TỰA
Mục đích đề tài là ĐIỀU KHIỂNTỐC ĐỘ ĐỘNG CƠ SỬ DỤNG PID SỐ,
tuy đây là một đề tài khá quen thuộc nhưng điển khác biệt so với những đề tài trước là
sử dụng là sử dụng ngôn ngữ lập trình là C thông qua chương trình CodevisionAVR
C compiler để lập trình cho vi xử lý ATMega16 nhằm mục đích tối ưu hóa những khả năng của ATMega16
Đồ án thực hiện đề tài gồm 5 phần :
► Phần I: giới thiệu hệ thống điều khiển tốc độ động cơ
► Phần II : Phần cứng
► Phần III : Thiết kế khối hiệu chỉnh PID bằng giải thuật phần mềm
► Phần IV : Phần mềm
► Phần V : Tài liệu tham khảo
Xin chân thành cảm ơn cô Nguyễn Thị Phương Hà, người đã gợi ý và hướng dẫn tôi thực hiện đề tài này
Dù đã cố gắng rất nhiều nhưng trong quá trình thực hiện không thể tránh có sai sót, tôi mong được sự góp ý để có thể hoàn thiện tốt hơn
Người thực hiện Nguyễn Quốc Huy
Trang 2NHẬN XÉT, ĐÁNH GIÁ CỦA GIÁO VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 3MỤC LỤC
Phần I : Giới thiệu hệ thống điều khiển tốc độ động cơ 4
Phần III : Giải thuật mờ thiết kế bộ điều khiển PID cho động cơ 12
Trang 4PHẦN I : GIỚI THIỆU HỆ THỐNG ĐIỀU KHIỂN
TỐC ĐỘ ĐỘNG CƠ DC
Động cơ điện một chiều trong dân dụng thường là các dạng động cơ hoạt động với điện áp thấp, dùng với những tải nhỏ Trong công nghiệp, động cơ điện một chiều được sử dụng ở những nơi yêu cầu moment mở máy lớn hoặc yêu cầu thay đổi tốc độ trong phạm vi rộng
Một phần quan trọng của động cơ điện một chiều là bộ phận chỉnh lưu, nó có nhiệm vụ là đổi chiều dòng điện trong cuộn rotor trong khi chuyển động quay của rotor là liên tục Thông thường bộ phận này là bộ phận gồm có một bộ cổ góp và một
bộ chổi than tiếp xúc với cổ góp Đây cũng chính là nhược điểm chính của động cơ điện một chiều: cổ góp làm cho cấu tạo phức tạp, đắt tiền, kém tin cậy và nguy hiểm trong môi trường dễ nổ, khi sử dụng phải có nguồn điện một chiều kèm theo hoặc bộ chỉnh lưu
Hiện nay có một số xu hướng trong điều khiển động cơ Trong một số trường hợp, vấn đề cần quan tâm chỉ đơn giản là điều khiển tốc độ, gia tốc, mômen hoặc các thuộc tính khác của động cơ trên cơ sở tín hiệu điều khiển đầu vào là từ phía con
người, chẳng hạn như qua bảng điều khiển Việc điều khiển bằng tay như vậy thuộc về phạm trù điều khiển vòng hở Trong một số trường hợp khác, động cơ phải tự động đưa ra các đáp ứng với các tác động thời gian thực Các đáp ứng đối với các tác động này được quan sát và các điều chỉnh cần thiết được tự động tạo ra Vì vậy, nó tạo ra một môi trường điều khiển kín Các điều khiển vòng lặp kín như vậy được gọi là hệ tùy động servo, hay chỉ đơn giản là servo
Điều khiển servo là một quá trình xử lý tín hiệu liên quan đến điều khiển động
cơ trên cơ sở động học của các tín hiệu vào như vị trí, tốc độ hay mômen Trong quá khứ người ta sử dụng các mạch tương tự để thực hiện điều khiển servo, nhưng khả năng thích nghi của các bộ vi xử lý tín hiệu số (DSP) đã tạo ra một công nghệ cho sự lựa chọn trong nhiều ứng dụng Khi dải thông cho điều khiển tốc độ và mômen đơn giản là hẹp một cách tương đối nếu so sánh với mã hóa tiếng nói, MCUs thường đủ nhanh các việc xử lý DSP nhỏ nhặt Trong một số trường hợp, mặc dù chúng phải dựa
vào các bảng tra (look-up tables) để cho các kết quả xấp xỉ, nhưng MCUs không có
tốc độ để thực hiện những thuật toán điều khiển nâng cao được cần đến trong truyền động ổ đĩa cứng có chất lượng cao nhất, các ổ CD-ROM hay DVD Tuy nhiên, các bộ điều khiển đĩa này có yêu cầu cao hơn các bộ điều khiển tốc độ động cơ Chúng phải đảm bảo điều khiển vị trí servo của phần cơ khí đọc (và viết) mà thường là các động
cơ tuyến tính Điều khiển thích nghi là cần thiết cho các trường hợp này để bù sự thay
đổi nhiệt, sự lão hóa (aging) của đĩa và các lực gia tốc vật lý
Trang 5PHẦN II : PHẦN CỨNG
1.CẤU TRÚC TỔNG QUÁT :
Board điều khiển được thiết kế nhằm mục đích diều khiển động cơ có công suất tối đa là 10 Watt ,mạch chính gồm 6 khối như sau :
● Khối xử lý trung tâm : sử dụng vi điều khiển ATMega16
● Khối hiển thị : sử dụng LCD 16x2 giao tiếp với PORTA của vi xử
lý
● Khối cảm biến : Encoder nối trực tiếp vào trục Motor để xác định tốc độ
● Khối công suất : có khả năng điều khiển Motor dùng nguồn DC 24V
● Khối bàn phím : gồm 4 phím nhấn và 4 công tắc on-off dùng để điều khiển và thiết lập các thông số cho bộ điều khiển tốc độ Chức năng của từng phím được thiết lập bằng phần mềm
● Khối cấp nguồn : nguồn chính cung cấp điền áp 5V,12V, và 24V dùng để cung cấp cho mạch điều khiển và mạch công suất
Sơ đồ mô tả mạch :
:
2.KHỐI XỬ LÍ TRUNG TÂM :
Xử lý trung tâm
Khối hiển thị LCD
Khối bàn phím
Khối cảm biến
Khối cấp nguồn
Khối công suất
Trang 6Đóng vai trò bộ điều khiển trung tâm, chịu trách nhiệm về tất cả các họat động của mạch Board mạch chủ với bộ xử lí trung tâm là ATMega16 cung cấp mộ công cụ
có thể thực hiện điều khiển theo bất kì phương pháp nào, chỉ cần có giải thuật và
chuyển đổi thành chương trình nạp vào bộ nhớ của ATMega16
Vi điều khiển ATMega16 được chọn vì MCU này có những ưu điểm trong việc điều khiển động cơ, cụ thể là bộ 2 timer 8 bit và 1 timer 16 bit tất cả đều có bộ chia tần
và PWM (Pulse Width Modulation)
Tổng quan về ATMega16:
ATMega16 là một vi điều khiển 8 bit do hãng ATMEL sản xuất, được chế tạo theo công nghệ low-power CMOS, khả năng tiêu thụ công suất thấp, xử lý nhanh với 16KB Flash(In-System Self-Programmable Flash) Thiết bị này được chế tạo bằng cách sử dụng kĩ thuật bộ nhớ không bốc hơi mật độ cao của ATMEL Flash In-System cho phép bộ nhớ được lập trình bởi một lập trình viên bình thường Bằng cách kết nối một CPU 8 bit với một bộ nhớ Flash 16KB trên một chip đơn, ATMega16 là một MCU mạnh, cung cấp một bộ điều khiển với sự linh động cao và giá thành cạnh tranh đối với nhiều ứng dụng dùnh MCU 8 bit
Sơ đồ chân và các đặc điểm chủ yếu củ ATMega16 :
● 16KB Flash Rom có khả năng ghi/xóa 10.000 lần
● In-System Programming sử dụng On-chip Boot Program
● 2 timer 8bit và 1 timer 16bit tất cả đều có bộ chia tần
● 4 kênh PWM (Pulse Width Modulation)
● 8 kênh biến đổi ADC 10bit
● 6 chế độ tiết kiệm nguồn
● 21 nguồn ngắt cho phép lập trình linh hoạt
● 32 đường I/O lập trình được (4 Port)
● Tần số hoạt động từ : 0 Hz đến 16MHz
Trang 7Mô tả sơ đồ mạch :
Trang 8Vi điều khiển ATMega16 sử dụng thạch anh định tần 4Mhz, một chu kì lệnh sẽ chiếm thời gian là 1 0.25
4.000.000 = μs ATMega16 có 5 nguồn reset, trong
đó có nguồn Power-on reset và External reset dùng nút nhấn SW1
3.KHỐI HIỂN THỊ :
Sử dụng LCD 16x2 giao tiếp với vi xử lý qua PORTA và gaio tiếp ở chế độ 4
bit vì vậy chỉ sử dụng 7 chân I/O của vi xử lý nhưng vẫn có khả năng hiển thị tốc độ động cơ cũng như các thông số khác liên quan đến việc điều chỉnh hay cài đặt ban đầu cho bộ điều khiển
4.KHỐI CẢM BIẾN :
Trang 9
Sử dụng 1 Encoder loại Incremental encoder 100 xung trên một vòng gắn trực tiếp vào trục động cơ, tín hiệu ngỏ ra của encoder là dạng xung vuông mà ứng với mỗi lần động cơ quay đủ một còng thì số xung xuất ra là 100 Ngỏ ra của encoder sẽ được nối vào chân INT0 của MCU ATMega16
5.KHỐI CÔNG SUẤT :
Dùng OPTO(PC817)-MOSFET(IRF540) để đảm bảo hai yêu cầu là cách ly về điện và đáp ứng tần số cao trong đóng ngắt
Sử dụng cặp Transistor bù D468 và B562 là mạch điều khiển điện áp ở chân G của MOSFET đảm bảo ép MOSFET có thể đóng ngắt đúng như tín hiệu điều khiển Nguồn cấp cho mạch công suất là 12VDC nhưng nguồn cấp cho động cơ là 24VDC
OPTO được nối vào chân OC0(PB3) của ATMega16, OC0 là chân chuyên dụng của timer0 8bit ở chế độ Phase Correct PWM
Trang 106.KHỐI BÀN PHÍM :
Gồm 4 phím nhấn và 4 switch được kết nối trực tiếp vào PORTC như hình vẽ :
Các nút nhấn và switch được sử dụng để cài đặt các thông số cần thiết cho bộ điều khiển tốc độ động cơ, đồng thờ cũng được dùng để ra lệnh hiển thị trạng thái của các thông số PID thay đổi khi thực hiện điều khiển
7.KHỐI CẤP NGUỒN :
Khối cấp nguồn cung cấp nguồn DC 5V cho mạch điều khiển và 12V, 24V cho mạch công suất Khối cấp nguồn sử dụng 3 loại IC ổn áp là LM7824, LM7812, và LM7805 cùng với Transistor kéo dòng là Q2SA1302
0
OUT_5
0
D8 D1N4007
0
J6
24VAC/5A
1
Q2SA1302
Q2
J7 5V
1
U4 LM7812
1
2
VIN
VOUT
OUT_12
0
0
R7 4.7-2W
D10 D1N4007
C8 2200uF/35V
J9 24V
1
C11 2200uF/35V
OUT_24
OUT_24
0
R5 100K
C12 0.1uF
U3 LM7824
1
2
VIN
VOUT
Q1
Q2SA1015
C10 8200uF/50V
0
F1 FUSE
D13 D1N4007 U5 LM7805
1
2
VIN
VOUT
C9 2200uF/35V R4
560
0
KHOI NGUON
D1
BRIDGE
2
4
0
0 0
D12 D1N4007
R6 4.7-2W
0
R3 2.2K
Q2SA1302
Q3
J8 12V
1
OUT_12
D9 D1N4007
OUT_5
Trang 11BỘ HIỆU CHỈNH PID CHO ĐỘNG CƠ
Sơ lượt về bộ PID mờ :
Có thể nói trong lĩnh vực điều khiển, bộ PID được xem như một giải pháp đa năng cho các ứng dụng điều khiển Analog cũng như Digital Theo một nghiên cứu cho thấy có khoảng hơn 90% các bộ điều khiển được sử dụng hiện nay là bộ điều khiển PID Bộ điều khiển PID được thiết kế tốt có khả năng điều khiển hệ thống với chất lượng quá độ tốt (đáp ứng nhanh, độ vọt lố thấp) và triệt tiêu được sai số xác lập
Việc thiết kế bộ PID kinh điển thường dựa trên phương pháp Zeigler-Nichols, Offererin, reinish… Tuy nhiên nếu đối tượng điều khiển là phi tuyến thì bộ điều khiển PID kinh điển không thẻ đảm bảo chất lượng điều khiển tại mọi thời điểm làm việc
Do đó để điều khiển các đối tượng phi tuyến này nay người ta thướng ùng kĩ thuật hiệu chỉnh PID mềm (dựa trên phần mềm), đây chính là cơ sở cuủa thiết kế PID mờ hay PID thích nghi
Sơ đồ điều khiển dùng PID mờ :
Mô hình tính toán của bộ PID :
0
( ) ( ) ( ) ( )
t
de t
u t K e t K e x dx K
dt
0
( ) [ ( ) ( ) ]
t P
de t
u t K e t e x dx
( )
P
I
K
s
= + +
2
p I
D
K K
K
α
= I
D
T T
α =
BỘ CHỈNH ĐỊNH MỜ
THIẾT BỊ CHỈNH ĐỊNH
de dt
BĐK PID ĐỐI TƯỢNG
y
u
e
x
Trang 12Các tham số K K K P, I, D đuợc chỉnh định theo từng bộ điều khiển mờ riêng biệt dựa tr7en sai lệch e(t) và đạo hàm de(t) Có nhiều phương pháp khác nhau để hcỉnh định bộ PID như à dựa trên phiếm hàm mục tiêu, chỉnh định trực tiếp, chỉnh định theo Zhao, Tomizuka và Isaka… Nguyên tắc chung là bắt đều với các trị K K K P, I, D theo Zeigler-Nichols, sau đó dựa vào đáp ứng và thay đổi dần để tim ra hướng chỉnh định thích hợp
Luật chỉnh định PID :
● Lân cận a1 ta cần luật điều khiển mạnh để rút ngắn thời gian lên, do vậy chọn : K P lớn, K D nhỏ, và α nhỏ
● Lân cận b1 ta tránh vọt lố lớn nên chọn : K P nhỏ, K D lớn, và α lớn
● Lân cận c1 và d1 giống như lân cận a1 và b1
● Khi giá trị tuyệt đối của sai lệch lớn ta cần có tín hiệu điều khiển mạnh để đưa nhanh sai lệch về 0 Dựa theo nguyên tắc này ta có ma trện quan hệ chỉnh định
, ,
P I
K K α đều có dạng gần đối xứng qua đường chéo chính hoặc trục phụ
Các buớc thiết kế :
1.Xác định biến ngôn ngữ :
● Đầu vào : 2 biến
+ Sai lệch : ET = Đo – Đặt + Tốc độ tăng : DET ET i( 1) ET i( )
T
+ −
= với T là chu kí lấy mẫu
● Dầu ra : 3 biến
+ K P hệ số tỉ lệ
+ K I hệ số tích phân
+ K D hệ số vi phân
Trang 13DET = {âm,zero,dương};
ET = {N,Z,P};
/
K K = {zero,trung bình,lớn}={Z,M,U};
α = {múc 1,mức 2,mức 3}={L1,l2,l3};
● ET∈ − [ 10, 10] + , DET∈ − [ 10, 10] +
+10 -10
ET
Z P N
0 C μ
DET μ
0 C/s
P
K
D
K
Z M U
0 0.5 1
μ
Trang 142.Luật hợp thành mờ :
* Luật chỉnh định K P :
P
N Z P
N U M Z
Z M Z M
ET
P Z M U
* Luật chỉnh định K D :
D
N Z P
N Z M U
Z M U M
ET
P U M Z
* Luật chỉnh định α :
N Z P
N L1 L1 L3
Z L2 L3 L2
ET
P L3 L1 L1
3.Chọn luật và giải mờ :
+ Chọn luật hợp thành theo quy tắc Max-Min
α
μ
Trang 15+ Giải mờ theo phương pháp độ cao
Mô hình bộ điều khiển PID sử dụng giải thuật phần mềm :
Nhận xét : sau khi tiến hành thực nghiệm với hệ thống thực thì ta thấy thuật
toán mờ tính toán các thông số PID cho kết quả khá tốt, khi áp dụng cho bộ điều khiển
PI thì độ vọt lố tối đa là 15% và thời gian xác lập tốc đa là 1.5s Vì bộ nhớ và khả năng tính toán của vi điều khiển ATMEga16 còn hạn chế nên luật hợp thành mờ chỉ có 3x3
và tầm điều khiển là: ET[-10;+10], DET[-10;+10]; nếu ta tăng luật hợp thành mờ lên 5x5 hoăc 7x7 thì tầm điều khiển sẽ được mở rộng và chất lượng hệ thống sẽ tăng lên
α
Bộ mờ 1
Bộ mờ 2
Bộ mờ 3
e(t)
( )
de t
dt
Bộ điều khiển PI
P
K
D
K
du
∫
0
U
P
du dt
Trang 16PHẦN IV : PHẦN MỀM Lưu đồ giải thuật :
STAR
OCR0 = 180 toc_do_dat = 160 delay 1s
SW1= = 1
toc_do_do = pulse_new – pulse_old ET_old = ET_new
ET_new = toc_do_do – toc_do_dat DET = ET_new – ET_old
ET = = 0
Mờ hóa ET, DET
Tính ,K K P D,α
Tính K I
F
T
T
F
Trang 17Chương trình cho vi điều khiển ATMega16 được viết bằng ngôn ngữ C sau đó biên dịch sang file hex rồi nạp vào flash rom của ATMega16:
+ Sử dụng timer0 8 bit để điều rộng xung PWM điều khiển tốc độ động cơ,
trong đó timer0 được thiết lập ở mode Phase Correct PWM và giá trị thanh ghi
OCR0 sẽ được cập nhật để điều chỉnh tốc độ động cơ Xung ngỏ ra OC0 sẽ có tần số được tính theo công thức :
+ Sử dụng timer1 16 bit để định thời sau mỗi 10ms sẽ thực thi chương trình ngắt, trong đó timer0 được thiết lập ở mode CTC(Clear Time on Compare match) và ngắt Output compare A match đuợc thực thi mỗi khi giá trị của thanh ghi TCNT1 bằng giá trị thanh ghi OCR1A Ta sẽ thiết lập sao cho thời gian ngắt là 10ms, cứ sau mỗi 10ms chương trình ngắt sẽ thực thi và tính toán ET và DET Tần số ngắt có thể tính theo công thức :
Trang 18
+ Sử dụng ngắt INT0(external interupt) để nhận tín hiệu từ encoder trả về sau
đó tăng dần biến đếm pulse, cứ sau mỗi 10ms chương trình ngắt timer1 sẽ truy cập vào
biến này đề tính toán tốc độ động cơ
+ Sau khi đã xác định được ET và DET thì nếu ET == 0 ta sẽ quay trởi lại và chờ kết thúc 10ms rồi tiếp tục xác định lại tốc độ động cơ.Nếu ET khác 0 thì ta sẽ thực hiện mờ hoá ET và DET thanh các giá trị μ(ET), (μ DET) [0,1] ∈ bằng cách gọi hàm mờ
hoá
+ Bước tiếp theo ta tiếp tục gọi hàm Tính K , Tính P K D , Tính α
+ Sau khi có cá thông số K K p, D,α ta thực hiện tính KI
+ Sau đó ta sẽ thực hiện tính toán giá trị điện áp U ngỏ ra thông qua giải thuật
bộ điều khiển PI cập nhật vào thanh ghi OCR0 của timer0 và từ đó sẽ quyết định độ rộng xung ở ngỏ ra OC0
Bộ điều khiển PI :du K DET K ET P I
Nhận xét : sử dụng bộ điều khiển PI vì bộ điều khiền PI thực hiện một cách khá
dễ dàng và cho kết quả khá tốt, tuy bộ điều khiển PID sẽ cho kết quả tốt hơn nhưng do khả năng của Vi xử lí ATMega16 bị hạn chế trong khi đó giải thuật thực hiện bộ PID
số khá phức tạp đò hỏi phải có bộ nhớ lập trình lớn và khả năng xử lý mạnh vì vậy nên tôi lựa chọn bộ diều khiển PI vì giải thuật lập trình không quá phức tạp phù hợp với ATMega16.Tuy bộ điều khiển PI cho độ vọt lố khoảng 15% khi sai số ET lớn và thời gian xác lập khá lớn nhưng vẫn đảm bảo yêu cầu chất lượng và ổn định của hệ thống
Trang 19[1] Nguyễn Thị Phương Hà, Lý thuyết điều khiển hiện đại, Nhà xuất bản Đại
Học Quốc Gia Thành Phố Hồ Chí Minh, 2007
[2] Hugh Jack, Automating Munufacturing Systems, GNU Free Documentation
License, 2007
[3] Karl Johan Astrom and Bjorn Wittenmark, Adaptive Control,
Addision-Wesley Publishing Company, 1989
[4] Frank L.Lewis and Vassilis L.Syrmos, Optimal Control, Jonh Wiley &
Sons,Inc , 1995
[5] Tống Văn On, Thíết kế hệ thống với họ 8051, Nhà xuất bản Phương Đông,
2005
[6] J.Harris, Fuzzy Logic Applications in Engineering Science, Published by
Springer, 2006
[7] Michael A.Johnson and Mohammad H.Moradi, PID Control, Springer, 2005