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.
Trong 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.
53 trang |
Chia sẻ: lethao | Lượt xem: 3881 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Ứng dụng Pid trong điều khiển con lắc ngược, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ảm thời gian quá độ
Khâu PD giảm độ vọt lố, không ảnh hưởng sai số và
Khâu PID với thông số thích hợp có thể hiệu chỉnh để
hệ thống ổn định với sai số xác lập bằng 0, độ vọt lố và thời gian quá độ đạt yêu
cầu mong muốn.
10
•
•
•
¨ Ưu điểm của bộ PID:
lớn.
hiệu điều khiển.
càng nhanh.
e(t) lớn : thông qua up(t), tín hiệu diều khiển u(t) càng
e(t) chưa bằng 0: thông qua uI(t), PID vẫn còn tạo tín
e(t) thay đổi lớn : thông qua uD(t), phản ứng của u(t)
2.3. Bộ điều chỉnh PID số (rời rạc).
a.Sơ đồ khối.
r(t)
e(t)
T
e(k)
PID số
u(k)
ZOH
G(s)
y(t)
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:
11
U(t) thay bằng UK=U(k).
P
I
D
UK= UK+ UK+ UK
Khâu tỉ lệ:
Up(t) = Kp.e(t) thay bởi UKP = Kp.eK
Khâu vi phân:
=
U (t) K
de(t)
D
U = K
e
K −eK 1
D
D
dt
thay bởi
K
D
T
Khâu tích phân:
I
U = K e (t)dt
I
I
+ K T
e
K
I K
U = U
K 1+eK
thay bởi
¨ Phương trình PID số :
K
K 1 I
2
I
+
e
−
UK=K e (UP K
KT K 1+eK) K
e eKK 1
K 1 I
12
2
D
T
3.1.Động cơ DC
3.1.1.Định nghĩa:
CHƯƠNG 3
CÁC THIẾT BỊ
Độ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
13
Cấ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
14
+
I
+
1
MG2
Ckt
Uu
2
Ukt
Rf
-
Rkt
-
Hình 3.4: Sơ đồ nối dây của động cơ KTĐL
3.1.2. Phương trình đặc tính cơ:
o Uư = Eư + (Rư + Rf)*Iư
Trong đó:
Uư :đệin áp phần ứng (V)
Eư : sức điện động phần ứng (V)
Rư :điện trở mạch phần ứng (Ó)
Rf : điện trở phụ trong mạch phần ứng (Ó)
Iư : dòng điện trong mạch phần ứng (A)
o
Rư = rư + rcf + ri + rct
Trong đó:
rư : điện trở cuộn dây phần ứng
rcf : điện trở cuộn dây cực từ phụ
ri : điện trở cuộn bù
rct : điện trở tiếp xúc của chổi điện
Sức điện động Eư của phần ứng động cơ được xác định theo biểu thức :
15
A
-
+
=
pN
ù
ù
o
Eu
2ða
Ö = KÖ
Trong đó:
P : số đôi cực từ chính
N : 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ừ thông kích từ dưới một cực (Wb)
Ô : tốc độ góc rad/s
pN
K =2ða : hệ số cấu tạo của động cơ
U +
RuRf
o
u −
ù =KÖ
Ö
K
I
u
Đâ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:
o MĐT =KÖIu
Nếu bỏ qua tổn thất cơ tổn thất thép thì moment cơ trên trục động cơ bằng moment
điện từ ký hiệu là M
U +
RuR
o
u −
ù =KÖ
( )Ö2fM
Đây là phương trình đặc tính cơ của động cơ điện DC kích từ độc lập
Giả thiết phản ứng phần ứng được bù đủ từ thông thông Ф = const, thì các phương
trình đặc tính cơ điện và phương trình đặc tính cơ là tuyến tính. Đồ thị của chúng được
biểu diễn trên hình 5, 6
16
ù
ùo
ùdm
IDM
INM
I
Hình 3.5: Đặc tính cơ điện của động cơ DC kích từ độc lập
Hình 3.6: Đặc tính cơ của động cơ DC kích từ độc lập
¨ Ứng dụng.
-Robot.
-Điều khiển X,Y.
-Dùng trong cơ khí chính xác.
17
3.2.Encoder:
Thông thường encoder có:
+ 1 chân VCC
+ 1 chân GND
+ có có 3 lối ra: A, B ( căn cứ vào đây để biết hướng, vận tốc) và Z ( điểm 0
hay dây trung tính)
Hình 3.7: động cơ DC có gắng encoder
1.
2.
3.
Cung cấp nguồn hệ thống
Bộ điều khiển số
Module điều khiển
3.2.1 Các loại encoder:
a. Encoder số:
Mỗi một Encoder số bao gồm một đĩa tròn với các vạch kẻ mẫu ở trên. Các vạch
mẫu này được đọc bơpỉ các đầu cảm biến. Đĩa này thường đi kèm với trục quay của nó,
trục này làm quay những mẫu phát tín hiệu cho mỗi vị trí nhận được. Cách ghi các mã
trên đĩa phụ thuộc vào các mẫu trên nó
Phâni theo cấu tạo vật lý thì hiện nay Encoder thường có ba loại: Encoder tiếp
xúc, Encoder từ trường và Encoder quang
18
b.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
d.Encoder quang:
Encoder quang là loại thông dụng nhất nhờ có độ chính xác cao và dùng ánh sáng
của bán dẫn. Encoder có ba bộ phận: đĩa segment có những phần trong suốt cho ánh sáng
đi qua và những phần không cho ánh sáng đi qua, một nguồn sáng cùng với một hệ thống
hỗ trợ chiếu sáng,bộ phận cảm biến ánh sáng
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.
Hình 3.8:Một số Encoder quang
19
e.Bộ giải mã tuyệt đối:
Là loại thiết bị mã hóa mà các tín hiệu mã đầu ra song song để chỉ thị góc quay
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ự
thiKhi ị mã hóa này được sử dụng với cùng một thiết bị khác, thì vị trí 0 của
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.
20
f. 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
Là loại thiết bị mã hóa có dãy xung ra phù hợp với góc của trục quay. Thiết bị mã
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
đĩKhia quay theo chiều kim đồng hồ thì xung track 1 (B) trễ pha hơn xung track 2
(A)
21
g. 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
Đầu A vượt quá B (độ lệch pha) = 90O + 45O (T/4 + T/8)
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
22
3.3.Mạch kích Atmega8
+5V
MOSI
1
J2
MOSI 1
MISO 2
J1
MOSI
J3
1 2
3 4
+5V
+5V
MISO 2
SCK 3
+5V
SCK
3
RESET
5 6
R2 100
R1
47K
RESET 1
J4 DIPSOC-14x2
PC6(RESET)
28
PC5
RESET 4
5
6
MODULE ISP LED SEGMEN
PB2 4
5
6
ISP INTERFACE
SCK
MISO
7 8
9 10
ICISP
SW1
PC5 (ADC5/SCL) 27
PC4 (ADC4/SDA) 26
PC3 (ADC3) 25
PC4
ADC3
ADC2
+5V
RESET
C1
104
+5V
7
PC2 (ADC2)
PC1 (ADC1)
PC0 (ADC0)
PB5 (SCK)
PB4 (MISO)
PB3 (MOSI/OC2)
24
23
19
18
17
16
ADC1
ADC0
SCK
MISO
MOSI
PB2
R3 R4
4.7K 4.7K
PC5 4
J7
+5V PB2
4
J6
PC5
PC4
1
3
J5
2
4
2
L1
VCC
PB2 (SS/OC1B
PB1 OC1A
PB0 (ICP1)
15
14
OC1A
PB0
PC4 3
2
1
OC1A 3
2
1
PWM INTERFACE
ADC3 5
ADC2 7
ADC1 9
ADC0 11
6
8
10
12
C2 47uH
104
1
13
PD7 (AIN1) 12
PD6 (AIN0)
11
PD7
PD6
T1
I2C INTERFACE
J9
+5V INT1 4
+5V PB7
PB6
4
3
2
J8
ADC INPUT
20
AVCC
PD5 (T1)
PD4 (XCK/T0)
6
5
T0
INT1
INT0 3
2
1
1
+5V
+5V
C3
104
8
GND
PD3 (INT1) 4
PD2 (INT0)
INT0
INTERRUPTS INTERFACE
I/O INTERFACE
J11
3
22
GND
PD1 (TXD)
PD0 (RXD)
3
2
10
TXD
RXD
JP1
2 1 PB7
+5V T1
T0
4
3
J10
LED1
LED2
2
1
EXT VREF
U1
C4
104
21
+5V
AREF
PB7 (XTAL2/TOSC2)
PB6 (XTAL1/TOSC1)
9
C5
18p
X1
7.372M
JP2
2 1 PB6
C6
18p
+5V PD7
PD6
2
1
COUNTER INTERFACE
J12
4
3
2
1
COMPARE INTERFACE
+5V
R8
22K
R11
+5V
R7
22K
R10
PB2
INT1
R5
390
OC1A
R6
390
JP3
+5V
R9
C7
1
C1+ VCC
16
1K
INT0
SW2
C9
1K
ADC02 1
AIN_E
10K
0.1uF
C8
SW3
3
4 C1-
C2+
C13
0.1uF
2
V+ 6
V-
0.1uF
C12
0.1uF
C11
0.1uF
5
9
4
RS232
PB0
JP4
BUT1
C10
0.1u
BUT2
0.1u
5
RXD_232 12
C2- GND
15
14
8
3
7
2RF_EN
TXD_232 11 R1OUTT1OUT 13
9 T1IN R1IN 7
2
6
+5V
10
R2OUTT2OUT
T2IN R2IN
MAX232
8
1
COM1
SW5
+5V
R13
22K
R15
1K
T0
SW4
R12
22K
R14
1K
C14
T1
J15
R16 0
+5V_USB
J14
RS232_RXD SEL
RXD_232 6 5
BUT3
C15
BUT4
0.1u
6
RF_EN
6
RXD_USB
4
3
5
4
3 TXD_USB
2 RXD_USB
1
MODULE USB-RS232
+5V
TXD_RF
RXD_RF
5
4
3
2
1
MODULE RF
RXD_RF 2 1
J13
RS232_TXD SEL
TXD_232 6 5
TXD_USB4 3
TXD_RF 2 1
J16
RXD
TXD
+5V_USB
JP5
+5V
+5V
0.1u
J17
1
2
3
BD104(SMD) D1
- +
2 4
U2 L78M05/TO220
1VINVOUT3
+5V_REG
2
+5V_REG
PWR LED1
R17
+C16
47uF/6V3
C17
104
PWR_JACK
PD6 1 2
JP7
C18
470uF/25V
R19
47K
R21
15K
C19
104
+5V
R18
47K
1 2 PD7
JP6
R20
38K
390
Title
MODULE ATMEGA8
Size Document Number
C Le Tan Cuong
Hình 3.14: Mạch nguyên lý ATMEGA8
Date:
Thursday , October 08, 2009 Sheet 1 of 1
23
1
3
1
3
1
3
ATI
SP
2
GN
D
3.4.Mạch cầu H
U1A
1
3
2
4001
1
2
U2A
3
4001
U5A
R1
4.7k
12V
5
1
2
U3
VCC
IN
D1
DIODE
VB
HO
8
7
6
C1+
4.7u
5
1
D2
DIODE
U4
VCC
IN
VB
HO
8
7
+ C2
4.7u
PWM
DIR
R2
4.7k
1
2
5V
3
4001
R3
4.7k
+ C3
4.7u
3
SD VS
COM LO
IR 2184
4
2
3
SD VS
COM LO
IR2184
6
4
24V
J2
2
1
R8
220R
1
1
2
U7 PV900V
U6A
3
4001
5V
0.1uF
C5
R9
3K3
J3
2
1
R4 4.7R
R6 4.7R
24V
IRF540
24V
Q1
IRF540
Q3
+ C4
470u
12V
R5
4.7R
R7
4.7R
U8 78L05
5V
Q2
IRF3205
J1
1
2
MOTOR
Q4
IRF540
MOTOR
J4
1
CON1
2
4
PWM
POWER
C6
104
R10
680
D3
12V
Q5
BD139
C7
1INOUT3
R11
560
C8
10uF 16V
R14 330
5V
R12 1k
D5
DIR LED
U9
PC817
R13
3k3
DIR
10uF 16V
Title
POWER LED
D4
Size Document Number
B
Rev
Hình 3.15: Mạch nguyên lý mạch cầu H
Date:
Monday , May 17, 2010
Sheet
1 of 1
24
1
2
4
3
14
7
3
6
5
2
GN
D
3.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
25
CHƯƠ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.
26
Hình 4.2. Cấu trúc của Vi điều khiển AVR
27
4.2. Cấu trúc AVR
4.2.1.Các tính năng chính:
Microcontroller sử dụng chíp ATMega32 của Atmel, tần số thạch anh 16MHz
RJ45 socket sử dụng lọai tích hợp biến áp.
Giao tiếp Ethernet sử dụng chip ENC28J60 MAC/PHY của Microchip, provides 10Base-
T Ethernet
AVR và Chip Ethernet giao tiếp qua giao thức SPI. Giao diện ethernet có thể gửi và nhận
bất kỳ gói thông tin nào TCP/UDP/IP, Appletalk, NetBIOS, v.v
Các thông tin và cấu hình có thể được thiết lập qua cổng COM, 115200 baud 8n1 như IP
ADDRESS, NETMASK, GATEWAY...
Nguồ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).
Nằm trong vùng nhớ I/O, thanh ghi SREG có địa chỉ I/O là 0x003F và địa chỉ bộ
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ị
xóa sau khi reset, các bit này cũng có thể được đọc và ghi bởi chương trình. Chức năng
của từng bit được mô tả như sau:
28
Thanh 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).
29
Bit 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
30
-
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.
31
-
-
-
-
-
-
-
-
-
-
-
-
-
-
CodeVision 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:
Module LCD kiểu kí tự.
Giao tiếp I2C của Phillips.
Cảm biến nhiệt LM75 của National Semiconductor.
Các IC Phillips PCF8563, PCF8583, Dallas DS1302 và đồng hồ thời gian thực
DS1307.
Giao tiếp 1 dây của Dallas.
Cảm biến nhiệt DS1802 / DS18S02.
Thermometer / Thermostat DS1621.
EEPROM DS2430 và DS2433.
SPI.
Quản lý nguồn năng lượng.
Delay.
Chuyển đổi mã Grey.
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
chức năng được hỗ trợ gồm có:
Thiết lập giao tiếp bộ nhớ ngoài.
Phân biệt nguồn reset.
32
-
-
-
-
-
-
-
-
-
-
-
-
Khởi tạo ngõ vào/ra.
Khởi tạo ngắt ngoài.
Khởi tạo Timer/Counter.
Khởi tạo Watchdog Timer.
Thiết lập truyền dữ liệu USART.
So sánh analog.
ADC.
Giao tiếp SPI.
I2C, cảm biến LM75,…
Giao tiếp 1 dây (1 wire).
LCD.
4.3.1. Lập trình với CodeVisionAVR:
CodeVision là phần mềm có giao diện thân thiện với người dùng. Các phần của
CodeVision đều dễ dàng sử dụng và người dùng có thể quen với các thao tác sau 1 vài lần
thực hiện. Phần lớn các chức năng như tạo File, mở/đóng File, lưu File,… đều không có
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:
Tạo File mới:
Thực hiện thao tác File/New, màn hình xuất hiện hộp thoại:
33
-
Hì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.
Tạo một Project mới:
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:
Hình 4.5 – Hộp thoại Confirm
Để tạo một project mới hoàn toàn, bạn chọn No. Sau đó đặt tên cho project mới và
chọn add để lấy file nguồn vào project.
34
Việ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
35
Hình 4.7 – Lưu Project
Chọn Generate, Save and Exit. Sau đó sẽ xuất hiện cửa sổ yêu cầu bạn lưu tên file.
Khi đã thực hiện xong các bước trên, chương trình sẽ hiện ra cửa sổ soạn thảo với các
đoạn mã C có sẵn phù hợp với những lựa chọn bạn đã thiết lập trong CodeWizard.
Cửa sổ soạn thảo CodeVision:
36
Hình 4.8 – Cửa sổ soạn thảo CodeVision
Cách viết chương trình trong CodeVision hoàn toàn giống với chương trình C bình
thường, từ khai báo thư viện, hàm, biến, con trỏ,… Vì thế, người viết chương trình chỉ
cần biết sử dụng ngôn ngữ C là có thể dễ dàng lập trình với CodeVision.
Khi đã viết xong chương trình, bạn thực hiện soát lỗi bằng cách chọn trên thanh
toolbar nút Project/Check Syntax. Nếu có lỗi phát sinh thì chương trình sẽ hiển thị các
thông báo ở cửa sổ Message phía dưới.
Khi đã kiểm soát và thấy không có lỗi, bạn Compile chương trình bằng cách nhấn
Project/Compile hoặc nhấn F9. Chương trình tự động tạo ra file nạp cho vi điều khiển.
37
4.3.2. Cấu trúc một chương trình viết bằng CodeVisionAVR:
// Khai báo các thư viện
#include
#include
……………………………
//Thực hiện các chương trình ngắt
//Bao gồm ngắt ngoài, ngắt truyền nhận, ngắt tràn Timer/Counter,…
interrupt [EXT_INT0] void ext_int0_isr(void)
{
//Đoạn code trong chương trình ngắt
……………………………
}
//Khai báo biến toàn cục
……………………………
//Khai báo hoặc viết các hàm, chương trình con
……………………………
//Chương trình chính
void main(void)
38
{
}
//Khai báo biến cục bộ
…………………………
//Khởi tạo trạng thái ban đầu của vi điều khiển
.......................................
//Cho phép ngắt toàn cục
#asm(“sei”)
//Vòng ận
while (1)
{
//Viết code cho chương trình chính
};
Đặc biệt, khi cần chèn một đoạn code Assembly vào chương trình thì ta thao tác
như sau:
#asm
//Đoạn code asm
#end asm
39
4.3.3 Các kiểu dữ liệu của CodeVision:
40
CHƯƠNG 5
THIẾT KẾ BỘ PID CHO CON LẮC NGƯỢC
5.1.Thiết kế bộ PID số:
Thông số KP, KI ,KD của phương trình PID số thường đươc chọn trên cơ sở đã
xác định được mô hình toán học của đối tượng và yêu cầu của bài toán thiết kế.
Trong trường hợp mô hình toán học của đối tượng không xác định được. Các
thông số của bộ điều khiển xác định theo phương pháp thực nghiệm.
Các phương pháp điều khiển PID số:
5.1.1Phương pháp Ziegler-Nichols:
Zieger – Nichols đưa ra phương pháp xác định thông số tối ưu của bộ PID hoặc từ
đáp ứng quá độ của đối tượng (phương pháp Zieger-Nichols thứ nhất) hoặc từ đáp ứng
quá độ của hệ thống kín (phương pháp Zieger-Nichols thứ hai).
¨ Phương pháp Zeigler – Nichols thứ nhất:
Ziegler – Nichols đã đưa ra phương pháp xác định thông số tối ưu của bộ PID là
dựa trên đồ thị hàm quá độ của đối tượng hoặc dựa trên các giá trị tới hạn thu được qua
thực nghiệm
Sử dụng hàm quá độ của đối tượng :
Phương pháp này còn có tên là phương pháp thứ nhất của Ziegler – Nichols. Nó có
nhiệm vụ xác định các thông số Kp, TN, TV cho các bộ điều khiển P, PI và PID trên cơ sở
dối tượng có thể mô tả xấp xỉ bởi hàm truyền đạt dạng :
K e -T st
G (s) = T s + 1
Sao cho hệ thống nhanh chóng về trạng thái xác lập và độ vọt lố ämaxkhông
vượt quá một giới hạn cho phép, khoảng 40% so với
41
h
(∞ =
) lim h(t)
t→∞
ä
= Äh
max
≤ 40%
max
h ∞
( )
Ba tham số Tt ( thời gian trễ ), K ( hệ số khuếch đại ) và T (hằng số thời gian quán
tính) của mô hình xấp xỉ có thể xác định được gần đúng từ đồ thị hàm quá độ h(t) của đối
tượng. Nếu đối tượng có dạng như (hình 14) mô tả thì từ đồ thị hàm h(t) đó ta đọc ra
được.
- Tt là khoảng thời gian tín hiệu ra h(t) chưa có hản ứng ngay với tín hiệu kích
thích 1(t) tại đầu vào
- K là giá trị giới hạn
h
(∞ =
) lim h(t)
t→∞
- Gọi A là điểm kết thúc khoảng thời gian trễ, tức là điểm trên trục hoành có
hoành độ bằng Tt. Khi đó T là khoảng cần thiết sau Ttđể tiếp tuyến của h(t) tại A đạt
được giá trị K.
a
b
Hình 5.1: Xác định tham số cho mô hình xấp xỉ bậc nhất có trễ
Trường hợp hàm quá độ h(t) không có dạng lý tưởng như ở hình 14a, nhưng co
dạng gần giốn như hình c
Các file đính kèm theo tài liệu này:
- Ung dung Pid trong dieu khien con lac nguoc.doc
- Ung dung Pid trong dieu khien con lac nguoc.pdf