ỨNG DỤNG PID TRONG ĐIỀU KHIỂN CON LẮC NGƯỢC
Trang 1CHƯƠNG 1 GIỚI THIỆU VỀ ĐỀ TÀI
1.1 Đặt vấn đề
Trong giảng dạy, có rất nhiều phương pháp để điều khiển tốc độ động cơ DC nhưng thuật toán PID tỏ ra hiệu quả nhất, thường được dùng minh họa cho các ví dụ thiết
kế hệ thống trong môn học điều khiển tự động
Luật điều khiển PID là một thuật toán điều khiển dễ và đơn giản ở các khía cạnh:
lý thuyết đơn giản, dễ chế tạo, dễ áp dụng, dễ sử dụng mà vẫn đạt hiệu quả là đáp ứng được việc điều khiển một quá trình nào đó ở giá trị mong muốn nên được dùng nhiều trong công nghiệp như điều khiển nhiệt độ, áp suất, lưu lượng v.v
Con lắc ngược được ứng dụng rất nhiều trong kỹ thuật và có thể sử dụng thuật toán
PID để điều khiển hệ thống này Vì vậy nhóm chọn đề tài nghiên cứu là “ỨNG DỤNG
PID TRONG ĐIỀU KHIỂN CON LẮC NGƯỢC”
Mô hình con lắc ngược có hai mô hình chính là Rotary và Liner, trong đề tài này
nhóm điều khiển mô hình Liner
1.2 Tình hình nghiên cứu trong và ngoài nước
Bộ điều khiển PID hiện nay có hai loại: analog và digital
Các bộ điều khiển PID có trên thị trường của các hãng lớn thường được đóng gói thành sản phẩm hoàn chỉnh, khi lắp đặt vào hệ thống không cần phải làm gì thêm ngoài việc thiết lập các thông số hoạt động
Công trình nghiên cứu về thiết kế bộ điều chỉnh PID số trong các tài liệu nghiên cứu ở nước ngoài chủ yếu là thiết kế hoàn chỉnh một module điều khiển duy nhất từ thành phần
xử lý tín hiệu, xử lý và tính toán trung tâm, công suất v.v Bên cạnh đó, phần mềm (chương trình điều khiển) trên máy tính chủ yếu vẫn là giao diện kiểu Terminal
Trang 2Trong nước cũng có nhiều đề tài nghiên cứu và ứng dụng bộ điều khiển PID, nhưng phổ biến vẫn là dạng PID analog, bộ điều khiển PID số vẫn còn ít và chưa thật hoàn chỉnh
Trang 3Đối tượngđiều khiển
Thiết bị điều khiển
Hình 2.1: cấu trúc cơ bản của hệ thống diều khiển
Trang 4Trong đó :
Trang 5¾ Điều khiển bù nhiễu
Đối tượngđiều khiểnu(t)
z(t)
y(t)
điều khiển
Hình 2.2: sơ đồ diều khiển bù nhiễu
Hệ thống lường trước nhiễu để tính toán, bù trừ sai số trước khi nhiễu ảnh hưởng đến đối tượng Vì không thể lường hết các nhiễu nên điều khiển bù nhiễu chất lượng không cao
¾ Điều khiển san bằng sai lệch
Bộ điều khiển
Đối tượngđiều khiểnThiết bị đo
z(t)
y(t)r(t)
Hình 2.3: Sơ đồ điều khiển cân bằng sai lệch
Trang 6Tín hiệu ra y(t) được đo và phản hồi về so sánh với tín hiệu vào r(t) Bộ điều khiển
sử dụng độ sai lệch vào-ra để tính toán tín hiệu điều khiển u(t) Nguyên tắc này có thể triệt tiêu các nhiễu không biết trước và không đo được Tuy nhiên, nó điều khiển sau khi nhiễu đã thực sự ảnh hưởng đến đối tượng
¾ Điều khiển phối hợp
Bộ điều khiển
Đối tượngđiều khiểnThiết bị đo
z(t)
y(t)r(t)
Hình 2.4: sơ đồ điều khiển phối hợp
¾ Nguyên tắc điều khiển theo chương trình
Tín hiệu ra thay đổi theo một hàm thời gian định trước
Trang 7¾ Nguyên tắc điều khiển thích nghi
Đối tượngđiều khiểnu(t)
z(t)
y(t)
điều khiểnChỉnh định
Hình 2.5: sơ đồ điều khiển thích nghi
Khi cần điều khiển các đối tượng phức tạp, có thông số dễ bị thay đổi, hoặc nhiều đối tượng đồng thời mà phải đảm bảo cho một tín hiệu có giá trị cực trị, hay một chỉ tiêu tối ưu nào đó
2.2.Bộ điều chỉnh PID liên tục
KD.s
Bộ PIDr
Hình 2.6: sơ đồ khối bộ điều khiển PID liên tục
Trang 9Hình 2.9: biểu đồ đặc tính quá độ của bộ PID
Khi không có thành phần I,D ta được bộ điều khiển P Tương tự ta có bộ điều khiển
PI, PD
Trang 10f So sánh các khâu hiệu chỉnh PI, PD, PID
Trang 11¾ Ưu điểm của bộ PID:
lớn
hiệu điều khiển
Hình 2.11: sơ đồ khối bộ PID rời rạc
b.Phương trình vi phân PID liên tục
Rời rạc hóa phương trình vi phân bộ điều chỉnh PID liên tục, thu được bộ điều chỉnh PID số như sau:
Trang 12U(t) thay bằng UK=U(k)
Trang 13CHƯƠNG 3 CÁC THIẾT BỊ 3.1.Động cơ DC
3.1.1.Định nghĩa:
Động cơ điện một chiều (DC) đã được sử dụng trong công nghiệp trong nhiều năm qua Cùng với các bộ điều khiển DC, động cơ điện một chiều cung cấp sự điều khiển rất chính xác Động cơ điện một chiều được sử đụng ở những nơi yêu cầu moment mở máy lớn hoặc yêu cầu điều chỉnh tốc độ bằng phẳng và phạm vi rộng như băng tải, thang máy, máy ép, những ứng dụng trong ngành hàng hải, cán vật liệu, giấy, cao su…
Động cơ sevor DC là động cơ DC thông thường có hồi tiếp encorder hoặc tachometer
Hình 3.1: động cơ DC servo
Trang 14Cấu tạo chung của động cơ DC gồm: vỏ, trục, ổ bi, phần cảm (stato), phần ứng (roto), cổ góp và chổi điện
Hình 3.2: cấu tạo động cơ điện 1 chiều kích từ độc lập
Nguồn điện một chiều DC tác động lên cuộn ứng qua cổ góp Cường độ từ trường không thay đồi Tốc độ động cơ chỉ có thể điều khiển thông qua dòng roto Có thể đảo chiều chuyển động bằng cách đảo chiều dòng điện qua roto
Hình 3.3: Động cơ DC từ tường vĩnh cửu
Trang 16N : số thanh dẫn tác dụng của cuộn dây phần ứng
a : số đôi mạch nhánh song song của cuộn dây phần ứng
Τ : tốc độ góc rad/s
a
pN K
R R K
Đây là phương trình đặc tính cơ điện của động cơ
Mặt khác moment điện từ của động cơ được xác định bởi:
Trang 183.2.Encoder:
+ 1 chân GND
hay dây trung tính)
Trang 19b.Encoder tiếp xúc:
Điểm tiếp xúc thực tế của loại Encoder này là giữa đĩa và đọc thông qua chổi than Loại này có nhược điểm là tạo ma sát, hao mòn, bụi bẩn do mụi than, xuất hiện điện trợ tiếp xúc, gây ra rung động … làm giảm độ chính xác và tuổi thọ
Độ phân giãi của Encoder phụ thuộc vào đường rãnh và độ chính xác nhỏ nhất của một rãnh có thể có được trên đĩa, độ phân giải có thể đạt 10 rãnh trên đĩa Độ phân giãi có thể tăng lên bằng cách ghép nhiều tầng đĩa hoặc dùng bộ dếm 9lên xuống cho trạng thái cao nhất của bit
c.Encoder từ trường:
Đối với Encoder từ trường thì đĩa quay của nó được tráng một lớp vật liệu từ, trong
đó những vạch mẫu không được phủ.Các vạch này được đọc bằng một đầu đọc nam châm.Rõ ràng với ưu điểm này thì Encoder từ trường có tuổi thọ cao hơn Encoder tiếp xúc
Hầu hết Encoder được sản xuát với độ chính xác cao, một Segment có bề dáy xấp
xỉ 12 micros Độ phân giải của Encoder quang thông thường có thể đạt đến 14 bits
Trang 20e.Bộ giải mã tuyệt đối:
tuyệt đối của trục Loại này không cần bộ đếm để đếm xung mà vẫn có thể biết góc quay của trục thiết bị mã hóa
Hình 3.9: Đĩa Encoder quang
Cũng giống như nhiều loại Encoder khác, bộ giải mã tuyệt đối gồm một đĩa tròn, trên đó có những khoảng trong suất và đục Ánh sáng có thể xuyên qua những phần trong suất đến bộ cảm biến quang, khi đĩa quay thì bộ cảm biến bật lên 1 và phần ánh sáng bị chặn bởi phần đục làm cảm biến quang xưống 0 Như vậy cảm biến quang sẽ tạo thành những xung tuần tự
trục xam như góc tọc độ Khi trục của thiết bị mã hóa quay về tọa độ góc này thì góc quay
có thể được hiển thị trên bộ chỉ thị của máy Tín hiệu đầu ra của thiết bị mã hóa không bị ảnh hưởng bởi nhiễu của thiết bị đóng, ngắt và không yêu cầu điều chỉnh góc quay chính xác Hơn nữa, thậm chí nếu tín hiệu mã hóa đầu ra khộng thể đọc vì trục quay quá nhanh, thì góc quay chính xác được ghi khi tốc độ quay giảm xuống, hoặc ngay khi nguồn cho thiết bị mả hóa bị ngắt Thêm nữa, mã hóa sẽ không hoạt động do sự rung động của các thiết bị sử dụng nó
Loại thiết bị mã hóa tuyệt đối, có độ phân giải cao hơn và cho ra các giá trị thay đổi trong phạm vi rộng hơn so với thiết bị mã hóa tăng dần
Trang 21f Thiết bị mã hóa tăng dần:
Hình 3.10: Thiết bị mã hóa tăng dần trong Encoder
hóa này không có xung ra khi trục không làm việc Do đó cần có một bộ đếm để đếm xung ra
Thiết bị mã hóa ch biết vị trí của trục quay bằng số xung được đếm Dạng thiết bị
mã hóa này chỉ có 1 hay 2 kênh nhõ ra:
Loại 1 chiều (chỉ có đầu kênh A) là loại chỉ sinh ra xung khi trục quay
Loại 2 chiều (có đầu ra kênh A và B) cũng có thể cho biết chiều của trục quay, nghĩa là thuận chiều kim đồng hồ Ngoài ra còn có đầu dây trung tính (xung Z) cho mỗi vòng quay, có nghĩa là nếu quay được 1 vòng thì xung Z lên 1
(A)
Trang 22g Quay thuận chiều kim đồng hồ:
Hình 3.11: Các kênh tín hiệu ra của Encoder
Hình 3.12: Các kênh tín hiệu ra của Encoder khi động cơ quay thuận
h.Quay ngược chiều kim đồng hồ:
Hình 3.13: Các kênh tín hiệu ra của Encoder khi động cơ quay nghịch
Trang 23J4 DIPSOC-14x2
1
2 4 6 7
8
9 10
11 12 14
28 25
22
21 20
19 16 PC6(RESET)
PD0 (RXD)PD1 (TXD)PD2 (INT0) PD4 (XCK/T0) VCC
GND
PB6 (XTAL1/TOSC1) PB7 (XTAL2/TOSC2)
PD5 (T1) PD6 (AIN0) PB0 (ICP1)
PC5 (ADC5/SCL) PC4 (ADC4/SDA) PC3 (ADC3) PC0 (ADC0)
GND
AREF AVCC
PB5 (SCK) PB4 (MISO) PB3 (MOSI/OC2) PB2 (SS/OC1B PB1 OC1A
Thursday , October 08, 2009 Title
Size Document Number Rev
C12 0.1uF
SW3 BUT1
R11 1K
INTERRUPTS INTERFACE
1 4
R14 1K
TXD_232
T1 PD6
COM1
1 7 4
C19 104
+5V
OC1A SCK
SW2 BUT2
SW1
RESET
SW4 BUT4
R20 38K
PC5
PD6 ADC0
R13 22K
J6
PWM INTERFACE
1 4
RXD_RF
PD7
JP2
1 2
J2
MODULE ISP LED SEGMEN
6 3
RS232
MOSI
T0
R9 10K
R3 4.7K
R10 1K
R12 22K
PC4
PB6
C9 0.1u
SCK
INT0
X1 7.372M
+ C16 47uF/6V3
PB0
R6 390
R8 22K
C6 18p
C1
104
Hình 3.14: Mạch nguyên lý ATMEGA8
Trang 24U9 PC817
DIR
D4 POWER LED
+
C1 4.7u
D5 DIR LED
R5 4.7R
PWM
Q2 IRF3205
D2
DIODE
R3 4.7k
Q1 IRF540
5V
5V
+ C2 4.7u
Q3 IRF540
12V
J1
MOTOR
1 24V
R7 4.7R
D3 12V
R10 680
R11 560
24V
R12 1k
R8 220R
12V
C7 10uF 16V
+ C3 4.7u
R13 3k3
U3
IR 2184
8 1
Trang 253.5.Kết cấu cơ khí
Hình 3.16: Phần cứng của cơ khí của con lắc ngược
3.6 Mạch Điều Khiến
Hình 3.17: Mạch điều khiển
Trang 26CHƯƠNG 4 VÀI NÉT VỀ AVR VÀ PHẦN MỀM CODEVISIONAVR 4.1 Tổng Quan AVR
Vi điều khiển AVR do hãng Atmel ( Hoa Kì ) sản xuất được gới thiệu lần đầu
năm1996 AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR ( như AT tiny 13, ATtiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR ( chẳn hạn AT90S8535, AT90S8515,…) có kích thước bộ nhớ vào loại trung bình và mạnh hơn
là dòng Mega ( như ATmega32, ATmega128,…) với bộ nhớ có kích thước vài Kbyte đến vài trăm Kb cùng với các bộ ngoại vi đa dạng được tích hợp trên chip, cũng có dòng tích hợp cả bộ LCD trên chip ( dòng LCD AVR ) Tốc độ của dòng Mega cũng cao hơn so với các dòng khác Sự khác nhau cơ bản giữa các dòng chình là cấu trúc ngoại vi, còn nhân
thì vẫn như nhau, Hình 4.1 Đặt biệt, năm 2008, Atmel lại tiếp tục cho ra đời dòng AVR
mới là XmegaAVR, với những tính năng mạnh mẽ chưa từng có ở các dòng AVR trước đó
Có thể nói XmegaAVR là dòng MCU 8 bit mạnh mẽ nhất hiện nay
Hình4.1 Các dòng AVR khác nhau: Tiny, AVR và Mega
Cấu trúc cơ bản của vi điều khiển AVR được thể hiện ở hình 4.2
Trang 27Hình 4.2 Cấu trúc của Vi điều khiển AVR
Trang 28Nguồn cung cấp sử dụng DC Adaptor 7 đến 12V DC
Các OI không sử dụng của ATMega32 được đưa ra ngoài, sẵn sàng kết nối với thiết bị
ngoại vi khác ngoài ra còn cung cấp sẵn ngõ ISP để nạp chương trình chip MCU
Đa số linh kiện SMD được sử dụng cho kích thước nhỏ gọn Led báo nguồn và Led chỉ báo Ethernet tích hợp sẵn rất tiện lợi theo dõi
4.2.2 Các thanh ghi chính của VDK :
Thanh ghi trạng thái - SREG (STATUS REGISTRY)
nhớ là 0x005F (thường đây là vị trí cuối cùng của vùng nhớ I/O) là một trong số các thanh ghi quan trọng nhất của AVR, vì thế mà tôi dành phần này để giới thiệu về thanh ghi này Thanh ghi SREG chứa 8 bit cờ (flag) chỉ trạng thái của bộ xử lí, tất cả các bit này đều bị
Trang 29Thanh ghi MCUCR chứa các bits cho phép chúng ta chọn 1 trong 4 MODE trên
cho các ngắt ngoài Dưới đây là cấu trúc thanh ghi MCUCR được trích ra từ datasheet của chip atmega8
MCUCR là một thanh ghi 8 bit nhưng đối với hoạt động ngắt ngoài, chúng ta chỉ
quan tâm đến 4 bit thấp của thanh ghi này (4 bit cao dùng cho Power manager và Sleep Mode), 4 bit thấp là các bit Interrupt Sense Control (ISC), 2 bit ISC11, ISC10 dùng cho INT1 và ISC01, ISC00 dùng cho INT0 Hãy nhìn vào bảng tóm tắt bên dưới để biết chức năng của các bit trên, đây là bảng “chân trị” của 2 bit ISC11, ISC10 Bảng chân trị cho các bit ISC01, ISC00 hoàn toàn tương tự
Thanh ghi điều khiển ngắt chung – GICR (General Interrupt Control Register) (trên các chip AVR cũ, như các chip AT90Sxxxx, thanh ghi này có tên là thanh ghi mặt
nạ ngắt thông thường GIMSK, bạn tham khảo thêm datasheet của các chip này nếu cần sử dụng đến) GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 2 bit cao (bit 6 và bit 7) là được
sử dụng cho điều khiển ngắt, cấu trúc thanh ghi như bên dưới (trích datasheet)
Trang 30Bit 7 – INT1 gọi là bit cho phép ngắt 1(Interrupt Enable), set bit này bằng 1 nghĩa
bạn cho phép ngắt INT1 hoạt động, tương tự, bit INT0 điều khiển ngắt INT0
Thanh ghi cờ ngắt chung – GIFR (General Interrupt Flag Register) có 2 bit INTF1
và INTF0 là các bit trạng thái (hay bit cờ - Flag) của 2 ngắt INT1 và INT0, nếu có 1 sự kiện ngắt phù hợp xảy ra trên chân INT1, bit INTF1 được tự động set bằng 1 (tương tự cho trường hợp của INTF0), chúng ta có thể sử dụng các bit này để nhận ra các ngắt, tuy nhiên điều này là không cần thiết nếu chúng ta cho phép ngắt tự động, vì vậy thanh ghi này thường không được quan tâm khi lập trình ngắt ngoài Cấu trúc thanh ghi GIFR được trình bày trong hình ngay bên dưới
Các thanh ghi khai báo
I/O
Trang 31-
4.3 CODEVISIONAVR
4.3.1 Giới thiệu phần mềm CodeVisionAVR:
Trình biên dịch CodeVisionAVR là một trong rất nhiều trình biên dịch C hỗ trợ cho vi điều khiển AVR của Atmel Không như các trình biên dịch khác được điều chỉnh cho phù hợp với tập lệnh AVR, CodeVisionAVR được viết chỉ dành riêng cho AVR Do đó, chương trình tạo ra bởi CodeVisionAVR luôn có sự chính xác cao và không bỏ phí bất kỳ chức năng nào của AVR So với các trình biên dịch khác, CodeVisionAVR tạo ra đoạn
mã có dung lượng nhỏ hơn nhưng hiệu quả hơn Hơn nữa, CodeVisionAVR có thành phần CodeWizard – một công cụ hỗ trợ tạo code vô cùng hiệu quả đổi với người lập trình CodeVisionAVR bao gồm gần như toàn bộ các thành phần của ngôn ngữ ANSI C có thể dùng trong cấu trúc AVR Chương trình còn tích hợp thêm vài chức năng khác để hỗ trợ cho cấu trúc đặc biệt của AVR và những yêu cầu của hệ thống nhúng
Trang 32CodeVision hỗ trợ chương trình nạp trực tiếp cho vi điều khiển AVR theo tiêu chuẩn SPI, qua cổng COM, I2C, cổng máy in và cổng USB Chức năng Terminal cho phép người lập trình có thể thực hiện việc giao tiếp giữa máy tính với vi điều khiển qua cổng COM
Trong các thư viện sẵn có của CodeVision, ngoài các thư viện chuẩn của ngôn ngữ C, còn có các thư viện hỗ trợ đặc biệt như sau:
CodeVision còn có chức năng tự động tạo mã chương trình (Code Wizard), cho phép tạo ra các chương trình con với các chức năng đặc biệt, giúp người lập trình tiết kiệm thời gian và có được những đoạn chương trình con có độ chính xác và chuẩn mực cao Các
Trang 33- Khởi tạo ngõ vào/ra
sự khác biệt với các phần mềm chạy trên nền Windows Do đó, người dùng dễ dàng làm quen và sử dụng CodeVision một cách thành thạo
Các thao tác quan trọng trong khi sử dụng CodeVision:
Thực hiện thao tác File/New, màn hình xuất hiện hộp thoại:
Trang 34Hình 4.3 – Hộp thoại New File
Nhấn chọn Source và chọn OK, màn hình soạn thảo sẽ hiện ra với tên file là untiltled.c Người lập trình có thể lưu file với tên khác tùy chọn
Nhấn File/New, xuất hiện hộp thoại:
Hình 4.4 – Hộp thoại New File
Chọn Project và OK, xuất hiện hộp thoại tiếp theo:
Trang 35Việc tạo project bằng CodeWizard:
Chọn File/New, sau đó chọn Project Khi xuất hiện hộp thoại Confirm như trên thì chọn Yes để vào CodeWizard Xuất hiện khung lựa chọn như sau:
Hình 4.6 – Cửa sổ CodeWizard
Các Tab xuất hiện để người lập trình chọn lựa, từ loại chip, tần số xung clock đến việc thiết lập các ứng dụng của AVR như: LCD, ngõ vào / ra, ngắt, timer, counter, giao tiếp I2C, SPI, 1 wire, 2 wire, analog comparator, USART…
Sau khi thiết lập các thông số theo ý muốn, nhấn File