Professional Documents
Culture Documents
Thuyết minh
Thiết kế và vận hành mô hình
máy đo và cắt chiều dài.
I.Giới thiệu chung:
1.1 .Sơ đồ nguyên lý mô hình máy đo và cắt chiều dài:
1.2. Bộ điều khiển mô hình máy cắt dùng để điều khiển 1 động cơ điện 1
chiều cùng với con lăn kéo chiều dài đối tượng cần cắt được cuộn trong
Robbin , động cơ chạy với tốc độ tùy thuộc chiều dài, thời gian cài đặt. Điều
khiển 1 dao cắt để cắt đối tượng khi động cơ đã kéo đúng chiều dài. Trong
quá trình mô hình vận hành tín hiệu phản hồi được lấy về từ Encoder đưa vào
bộ điều khiển xử lý, xuất tín hiệu điều khiển động cơ và dao cắt.
1.3. Bộ điều khiển sử dụng điện áp +5V lấy từ điện áp 220v(50Hz) qua bộ
chỉnh lưu áp .
1.4. Động cơ điện 1 chiều để kéo đối tượng sử dụng áp+ 24V, kích tư +
24V, vì động cơ củ nên thông số không đầy đủ. Một dao cắt được làm từ Role
sử dụng áp +110V.
1.5.Ngoài ra trong mô hình còn sử dụng hệ thống hãm bằng cơ khí gắn
liền với Robbin.
II.Nguyên lí làm việc:
1.1 Nguyên lí làm việc của thiết bị điều khiển mô hình máy cắt
mô tả trong hình dưới đây:
100 KP.EN
DUTY _ CYCLE (1)
U max
Trong đó:
Kp: hệ số khuyếch đại tỉ lệ theo phương pháp điều khiển
vòng kín PID mà trong trường hợp này ta chỉ sử dụng khâu P. Hệ số KP phụ
thuộc vào đặc tính động cơ.
EN : Sai số giữa tín hiệu đặt và tín hiệu phản hồi.
100T 1
DUTY _ CYCLE (3)
T
Tín hiệu điều khiển Udk1 được tạo ra nhờ bộ điều khiển số. Nó có dạng
xung với tần số T cố định. Biên độ thay đổi giữa 2 mức 0V, 5V. Khi
DUTY_CYCLE thay đổi thì áp ra mạch động lực Udc cung cấp cho động
cơ thay đổi khi đó tốc độ động cơ thay đổi theo.
Dựa vào biểu thức (1), Kp không đổi , DUTY_CYCLE thay đổi theo
EN :
U max T 1
Ta có: Udc (4)
T
1.3. Điều khiển dao cắt: Dao cắt đóng ngắt theo Udk2.
Udk2 là tín hiệu số giống như Udk1 , khi DUTY_CYCLE = 0, Udk2
=0, Relay hở, dao cắt đóng xuống. Khi DUTY_CYCLE > 0, Relay đóng
dao được kéo lên.
1.4. Đặc tuyến điều khiển động cơ có dạng sau:
Điều khiển đo chiều dài thực chất là điều khiển vị trí. Điều khiển cho
động cơ quay tới góc quay xác định mà không có vọt lố do tính chất của
máy.
Đặc tuyến cần điều khiển có dạng sau:
Có rất nhiều phương pháp điều khiển để đạt được đặc tính mong muốn
như hình 3, đạt độ chính xác cao mà giá thành lại rẻ, như phương pháp PID
tương tự, số, điều khiển mờ v.v. Phương pháp PID bằng thực nghiệm của
Zeigler và Nichols , đòi hỏi cần có các thiết bị đo chính xác và các điều kiện
nghiêm ngặt đưa hệ thống vào chế độ dao động lúc đó chúng ta mới xác định
các thông số của bộ điều khiển, nếu ta biết đối tượng ta là gì thì rất dễ dàng
điều khiển. Phương pháp điều khiển mờ ta không cần xác định đối tượng của ta
như thế nào, ta chỉ cần dựa vào kinh nghiệm điều khiển đối tượng, ta thành lập
bộ luật điều khiển và tùy thuộc vào tình huống mà hệ thống đưa ra 1 luật trong
bộ luật điều khiển đối tượng. Bộ điều khiển càng chính xác nếu người điều
khiển có nhiều kinh nghiệm. Các phương pháp này được trình bày chi tiết hơn
ở chương sau. Do hạn chế về thời gian, thiết bị đo, kinh nghiệm với luận văn
này chỉ sử dụng phương pháp điều khiển P số.
Phương pháp P số ta phải xác định KP trong biểu thức (1) . Khi KP đã
xác định ta có giá trị DUTY_CYCLE thay đổi theo EN.
Điều cần quan tâm lúc này là làm thế nào để xác định KP.
Ta có:
100 KP.NSP
0 DUTY_CYCLE .
U max
U max
KP . (4)
NSP
T 'T '1
HSTGG
T'
Tại t=T’1
100 KP.EN
d1 (5)
U max
100 KP.NFP
d1 D
U max
Từ ( 5) ta có:
NFP
HSTGG (7)
NSP NFP
Trong đó:
d1 :Ta chọn tùy ý tùy thuộc vào thời gian đặt, tốc độ kéo đối
tượng.
HSTGG: Phụ thuộc vào quán tính của động cơ.
0 d1 100, 0 HSTGG 1
Ví dụ: Ta muốn động cơ quay đến giá trị 5000 xung tính theo ngõ ra
Encoder , trong thời gian 5 giây .
Ta có: T’=5s, NSP=5000xung, Umax=24V, xác định KP ?
Giải:
Chọn d1=100, HSTGG=0.5.
KP=(100*24(1+0.5))/(100*5000) = 36/5000 (V/vòng).
Với các số liệu trên thì quá trình điều khiển diễn ra như sau.
Trong thời gian 2,5s đầu tiên động cơ chạy với tốc độ tương ứng áp đặt
vào 24V. 2,5s còn lại tốc độ động cơ sẽ giảm cho đến khi dừng hẳn thì lúc này
thời gian cũng vừa đủ 5s.
Như đã trình bày sử dụng phương pháp điều khiển số khâu P
Lưu đồ giải thuật khâu hiệu chỉnh P:(trình bày phần sau).
Chương trình điều khiển được viết bằng ngôn ngữ máy cho vi xử lý 8952.
Điện áp Udk1 được lấy từ PC0 của 8255 kết nối với Vi xử lý. Điện áp
này được đưa đến mạch động lực điều khiển điện áp cung cấp cho động cơ.
Udk1 có dạng hình 2, được tạo ra bằng phần mềm có lưu đồ giải thuật (trình
bày phần sau).
NFP số xung phản hồi về qua mạch đếm xung số xung chứa tối đa trong
2 byte, ngõ ra mạch đếm xung đưa vào PortA(byte thấp) và PortB(Byte cao)
8255. Sau đó đưa vào vi xử lí thông qua mạch chốt.
Lưu đồ giải thuật đọc xung phản hồi( trình bày phần sau).
Dữ liệu cần đặt được lấy vào thông qua các phím nhấn. Lưu đồ giải thuật
đọc 1 phím nhập dữ liệu vào (trình bày phần sau):
Sau khi đã có các dữ liệu vào ta tiến hành tính toán đưa ra
DYTU_CYCLE, tạo áp Udk1, đồng thời ta cũng cho hiển thị chiều dài, số
lượng cần cắt trong quá trình hoạt động. Chương trình thực hiện nhiều công
việc cùng lúc ,vừa phải đếm xung phản hồi, vừa tạo áp Udk1 liên tục, vừa phải
hiển thị Led, đồng thời phải thường xuyên phải kiểm tra phím nhấn. Lưu đồ
giải thuật toàn bộ chương trình :
III.Các lưu đồ giải thuật điều khiển hệ thống:
Dựa vào các lưu đồ này ta tiến hành thiết kế mạch cứng và viết chương
trình điều khiển.
Chương 2.
Thiết kế phần cứng.
Khối điều khiển bao gồm mạch giao tiếp giữaVi Xử Lí với RAM
(62256), mạch giao tiếp máy tính qua IC 75176, mạch mở rộng Port qua IC
8255. Quá trình giải mã địa chỉ tránh xung đột khi giao tiếp với các khối trên
nhờ IC chốt 74573 và IC 74138.
1) Mạch vi xử lí:
P0 được nối với JP6 ,chức năng I/O.
Chân 9 nối mạch Reset. Khi chân Reset được nhấn Mạch vi xử
lí trở về trạng thái như lúc mới cấp nguồn.
Chân 31 nối JP1 có 2 chế độ:
Khi JP2 nối cho Vi xử lí chạy chương trình trong ROM ngoài.
Khi JP2 không nối cho vi xử lí chạy chương trình trong ROM
nội.
Chân 12 ->15 nối đến JP11. Khi cần sử dụng ngắt ta nối đến
các chân nối này.
Chân 18, 19 : Nối mạch dao động:
Mạch gồm 2 tụ điện C1, C2 30 pF và thạch anh 11.059 MHz,
tạo cho Vi Xử Lí có tần số hoạt động 12MHz, khi 2 tụ điện
thay đổi thì tần số dao động vi xử lí thay đổi theo.
Chân 10,11: Giao tiếp nối tiếp. Mức áp 1 vào ra là 5V, mức áp
vào ra là 0V.
U14
40
JP6
P1.0 P1.0 1 39 AD0
P1.1 1 2 P1.1 2 P1.0/T2 P0.0 38 AD1
3 4 P1.1/T2-EX P0.1
VCC
P1.2 P1.2 3 37 AD2
P1.3 5 6 P1.3 4 P1.2 P0.2 36 AD3
P1.4 7 8 P1.4 5 P1.3 P0.3 35 AD4
P1.5 9 10 P1.5 6 P1.4 P0.4 34 AD5
P1.6 11 12 P1.6 7 P1.5 P0.5 33 AD6
P1.7 13 14 P1.7 8 P1.6 P0.6 32 AD7
15 16 P1.7 P0.7
PORT1 21 A8
P2.0 22 A9
C4 10u P2.1 23 A10
9 P2.2 24 A11
R1 RST P2.3 25 A12
100 S1 P2.4 26 A13
P2.5 27 A14
31 P2.6 28 A15
EA/VPP P2.7
T1 15 17 /RD
R2 T0 14 T1 RD 16 /WR
8.2k /INT1 13 TO WR 29 /P SEN
/INT0 12 INT1 PSEN 30 ALE
INTO ALE/P R
18
X2 11 TX
19 TXD 10 RX
X1 RXD
GND
R3
1 2 AT89C52
20
4.7k JP1 X1
1
VCC 2
1 .059MEG
C1 C2
30p 30p
JP11
/INT0 /INT0
/INT1 1 2 /INT1
T0 3 4 T0
T1 5 6 T1
7 8
Y0: 0000H
Y1: 2000H
Y2: 4000H
Y3: 6000H
Y4: 8000H
Y5: A000H
Y6: C000H
Y7: E000H
Được tạo ra từ 3 bit cao nhất của Byte địa chỉ cao(P2) của Vi xử Lí .
Kết hợp ngỏ ra chốt địa chỉ IC 74573, 8 bit địa chỉ thấp và các ngỏ còn lại
của P2 (P2.0->P2.5) .
YI: A15:A16:A17
P2.4 ->P2.0: A14-> A8
D7->D0: A7->A0
Địa chỉ truy xuất ứng với từng ngỏ ra YI:
VCC
JP12
AD0 VCC AD0
AD1 1 2 AD1
3 4
20
AD2 AD2 U21
AD3 5 6 AD3 AD0 2 19 A0
AD4 7 8 AD4 AD1 3 D0 Q0 18 A1
9 10 D1 Q1
VCC
AD5 AD5 AD2 4 17 A2
AD6 1 12 AD6 AD3 5 D2 Q2 16 A3
AD7 13 14 AD7 AD4 6 D3 Q3 15 A4
15 16 AD5 7 D4 Q4 14 A5
AD6 8 D5 Q5 13 A6
AD7 9 D6 Q6 12 A7
D7 Q7
JP13 ALE 11 1
LE OE
GND
A8 A8
A9 1 2 A9 74AC573
A10 3 4 A10
10
A11 5 6 A11
A12 7 8 A12
A13 9 10 A13
A14 1 12 A14
A15 13 14 A15
15 16
VCC
16
U20 JP10
A13 1 15 0000 -1FFFH
A14 2 A Y0 14 2000-3FFFH 1 2
B Y1 3 4
VCC
74LS138 SELECTADD
8
26
U18 JP9
AD0 34 4 PA0 PA0
AD1 33 D0 PA0 3 PA1 1 2 PA1
D1 PA1 3 4
VCC
AD2 32 2 PA2 PA2
AD3 31 D2 PA2 1 PA3 5 6 PA3
AD4 30 D3 PA3 40 PA4 7 8 PA4
AD5 29 D4 PA4 39 PA5 9 10 PA5
AD6 28 D5 PA5 38 PA6 11 12 PA6
AD7 27 D6 PA6 37 PA7 13 14 PA7
D7 PA7 15 16
A0 9 JP8
A1 8 A0 18 PB0 PB0
A1 PB0 19 PB1 1 2 PB1
PB1 20 PB2 3 4 PB2
/RD 5 PB2 21 PB3 5 6 PB3
/WR 36 RD PB3 22 PB4 7 8 PB4
WR PB4 23 PB5 9 10 PB5
PB5 24 PB6 11 12 PB6
PB6 25 PB7 13 14 PB7
PB7 15 16
JP7
14 PC0 PC0
PC0 15 PC1 1 2 PC1
/CS1 6 PC1 16 PC2 3 4 PC2
CS PC2 17 PC3 5 6 PC3
35 PC3 13 PC4 7 8 PC4
7 RESET PC4 12 PC5 9 10 PC5
GND PC5 11 PC6 11 12 PC6
PC6 10 PC7 13 14 PC7
PC7 15 16
8255
/A8
VCC A2 8 13 AD2
A3 7 A2 D3 15 AD3
A4 6 A3 D4 16 AD4
A5 5 A4 D5 17 AD5
A6 4 A5 D6 18 AD6
A7 3 A6 D7 19 AD7
A7 D8
14
11
U17 A8 25 BACKUP
1 A9 24 A8 28
2 12 A10 21 A9 VCC
13 A8 A11 23 A10 27 /WR
3 A12 2 A11 WE
A13 26 A12 22
10 74LS00 A15 A14 1 A13 OE
4 A14
9 5
8000-FFFFH
20
/PSEN
CE
GND
8
7
6
KM 62256A
14
/RD
JP14
/RD 4 3
2 1
IC1393A
C1 1 3 D4 VCC
VCC 14 A QA 4 D5 U12 JP5 JP2
GND VCC QB VCC VCC CLR
20
7 5 D6
CLR 2 GND QC 6 D7 D0 2 19 AD0 AD0 1 2 AD0 CLR 1
CLR QD C2 D1 3 1D 1Q 18 AD1 AD1 3 4 AD1 2
2D 2Q 5 6
VCC
74HC573/SO
C1 D8 2 19 AD8 AD8 1 2 AD8
D9 3 1D 1Q 18 AD9 AD9 3 4 AD9
IC2393B
2D 2Q 5 6
VCC
74HC573/SO
Gồm 2 IC 74393, 2 IC chốt 74573. Mạch chỉ có tác dụng đếm lên, khi
tràn tự động trở về 0. Ngỏ Counter đưa xung cần đếm vào. Ngỏ CLR có
nhiệm vụ xóa tất cả ngỏ ra 74393 về 0, tích cực mức 0 có dạng xung, 2 ngỏ
vào chốt CS1, CS2 có nhiệm vụ lấy đúng 1 giá trị tại 1 thời điểm, cả 2
chân ở mức 0 khi chốt.
Chú ý: Cần phải mắc thêm điện trở kéo lên ở ngỏ ra 2 IC 74573, tránh nhiễu
khi đọc vào. Ngỏ ra mạch đếm nối vào Port A,B của 8255.
6) Khối hiển thị:
o Điện áp đưa vào PC0, giả sử tại 1 thời điểm PC0 mức 1, lúc đó Q1 dẫn, Q2
ngắt vì điện áp mức 0 do phải qua cổng đảo. Q1 dẫn , Optron 1 dẫn, cặp
Darlington phía trên dẩn, kéo ngỏ ra lên áp 24V. Giả sử tại 1 thời điểm
PC0 mức 0, lúc đó Q2 dẫn do phải qua cổng đảo, Q1 ngắt vì điện áp mức
0. Q2 dẫn, Optron 2 dẫn, cặp Darlington dưới dẩn, kéo ngỏ ra xuống 0V.
o Quá trình cứ tiếp diễn như vậy trong 1 chu kì, ta có áp ra là áp biến đổi. Mà
đối tượng sử dụng áp này là động cơ 1 chiều, do đó cần phải xác định chu
kì đóng ngắt thích hợp, sao cho động cơ nhìn điện áp này là điện áp 1 chiều
với các điều kiện cho phép.
+24V
+5v
R3
220 4N35
1 4 Q5
R7
2 120K D718
Q1
R1 D3
PC0 C828 N5404
A617
3
10k Q4
R4
+5v +24V
1K
D1 R3
4007
220
0 0 00
4N35 Udk1
1 4
3
R8 Q6
U13A R2 Q3 I4
1 2 828 H1061
1k
7404
10k D718
Q7
R10
D2 120k D4
N5404
4007
0 00 00
R5 220 K1 K2
4 4
4N35 3 3
1 4 1 1
2 2
2
RELAY SPST RELAY SPST
R8 Q6
3
R2 Q3 I4
PC4 Udk2 828 H1061
1k
10k
R10
D2 120k
4007
0 01 01 02
t
1 .
U (t ) K P e(t ) e(t )d T D e(t )
T I 0
( 6.1 )
Trong đó e(t) là tín hiệu vào, u(t) là tín hiệu ra của bộ điều khiển, kp là hệ
số khuếch đại của luật điều khiển, T1 hằng số thời gian tích phân và TD là hằng số
thời gian vi phân.
Đối với hệ thống có độ dự trữ ổn định lớn, nếu muốn tăng độ chính xác
điều khiển ta chỉ cần tăng hệ số khuếch đại của luật điều khiển tỉ lệ [7].
Hệ thống sẽ không có sai lệch tĩnh khi tín hiệu vào là hàm bậc thang đơn
vị và hằng số thời gain tích phân TI được chọn khác không. Luật điều khiển tích
phân còn gọi là điều khiển chậm sau vì sai số điều khiển được tích lũy cho đến
khi đủ lớn thì quyết định điều khiển mới được đưa ra.
Tăng khả năng tác động nhanh của hệ, giảm bớt thời gian quá điều chỉnh
bằng cách thay đổi hằng số thời gian của luật điều khiển vi phân, còn được gọi là
điều khiển vượt trước.
Luật điều khiển trong phương trình (6.1) thường còn được biểu diễn dưới
dạng hàm truyền đạt như sau:
T D P) k i (1 T D1 p)(1 T D 2 p)
1
W ÑK ( p) K P (1 (
TIP p
6.2 )
Từ năm 1975 trở lại đây, do sự phát triển không ngừng của kỹ thuật điện
tử và kỹ thuật vi xử lý, các PID số ngày càng được sử dụng rộng rãi trong công
nghiệp. PID số được mô tả qua phương trình vi sai phân sau:
u u
k k 1
r 0 ek r1 ek 1 r 2 ek 2 ( 6.3 )
1 2
W ( z ) r 0 r1 z r 2 z
*
( 6.4 )
1 z 1
Với bộ điều khiển PID, người sử dụng dễ dàng tích hợp các luật điều
khiển khác như luật điều khiển tỉ lệ ( luật P ), điều khiển tỉ lệ-tích phân ( luật
PI ), luật điều khiển tỉ lệ-vi phân ( luật PD ). Bộ điều khiển PID luôn là một phần
tử không thể thay thế được trong các quá trình tự động khống chế nhiệt độ, mức,
tốc độ… Ngay cả khi lý thuyết điều khiển tự động hiện đại được ứng dụng vào
việc thiết kế, các bộ điều khiển như bộ diều khiển mờ, bộ điều khiển Nơron, bộ
điều khiển bền vững thì việc kết hợp giữa các phương pháp điều khiển hiện đại
và bộ điều khiển PID kinh điển vẫn đem lại những hiệu quả bất ngờ mà không có
khả năng đem lại.
Một trong những ứng dụng của bộ điều khiển PID trong điều khiển thích
nghi và điều khiển mờ là thường xuyên phải chỉnh lại các tham số của nó cho
phù hợp với sự thay đổi không biết trước của đối tượng cũng như của môi trường
nhằm đảm bảo được các chỉ tiêu chất lượng đã đề ra cho hệ thống. Nếu như ta đã
tự động hóa được công việc thay đổi tham số này thì bộ điều khiển PID đó sẽ là
một bộ điều khiển bền vững với mọi tác động của nhiễu nội cũng như nhiễu
ngoại lên hệ thống .
Cũng chính vì vậy mà các thiết bị điều khiển quá trình như DSC Disbute
Control system, PLC Programable Logic Control, PSC Process Control System
của các hãng sản xuất thiết bị tự động trên thế giới không thể thiếu được module
điều khiển PID hoặc cứng hoặc mềm.
Để sử dụng tốt các module này, người thiết kế phải nắm được các phương
pháp chọn luật điều khiển và các tham số cho bộ điều khiển.
Bộ điều khiển PID vi tích phân tỷ lệ rất hay dùng trong các hệ thống điều
khiển công nghiệp vì nó có ưu điểm sau : PID là sự kết hợp những ưu điểm của 3
khâu P, PI , PD trước hết ta cần tìm hiểu chức năng của từng khâu :
1. Điều khiển PID liên tục :
Điều khiển PID là cấu trúc điều khiển thông dụng nhất trong các quy trình
điều khiển . đầu ra của điều khiển là tổng hợp của ba thành phần:
Thành phần thứ nhất up(t) là tỷ lệ giữa sai số đầu ra của hệ thống
thực với giá trị tham chiếu (giá trị đặt).
Thành phần thứ hai uI(t) là tích phân theo thời gian của sai số .
Thành phần thứ ba uD(t) là đạo hàm của sai số .
Hàm điều khiển :
1 de
u (t ) u 0 K e(t )
Ti e( )d T
d u 0 u p (t ) u I (t ) u D (t )
d
Thông số K là độ lợi của điều khiển, TI là tích phân thời gian và là biến tích
phân. Giá trị u0 là giá trị xác định trung bình biên độ tín hiệu xác thực .
Một vài quy trình điều khiển đặt biệt là quy trình cũ có khoảng tỷ lệ đặt thay
vì độ lợi điều khiển. Khoảng tỷ lệ được xác định là PB=100/K . định nghĩa chỉ áp
dụng khi K là không thứ nguyên.
Công thức của hàm điều khiển không chỉ giới hạn thực tế ở đầu ra. Điều
khiển sẽ đạt trạng thái bão hoà khi ngõ ra đạt giới hạn vật lý u max hoặc umin . Trong
thực tế ngõ ra của tỷ điều khiển tỷ lệ như sau :
Phần tích phân của hàm điều khiển được dùng để khử sai số của trạng thái
ổn định. Chức năng của nó có thể được giải thích bằng trực giác như sau : Giả sử
hệ thống ở trạng thái ổn định vì vậy tất cả các tín hiệu đều là hằng số, đặt biệt là
e(t) và u(t) . Trạng thái ổn định chỉ được duy trì nếu tích phân u I(t) là hằng số,
mặt khác u(t) có thể thay đổi . Điều này chỉ có thể xảy ra nếu e(t) bằng 0
Hàm điều khiển cũng có thể được biểu diễn theo phép biến đổi Laplace
như sau :
U ( s ) U 0 ( s ) U ( s ) U I ( s ) U D ( s )
1 E (s)
U ( s ) U 0 ( s ) K 1 Td S E ( s ) K (1 T1 s T1Td s 2 )
Ti S T1 s
Bậc của tỷ số nhỏ hơn bậc của mẫu số và độ lợi của hàm điều khiển tiến
về vô cùng ở tần số cao. Đây là hệ quả của giới hạn đạo hàm. Trong thực tế đạo
hàm khó có thể đạt được chính xác, nhưng có thể coi một cách gần đúng đối với
hệ thống bậc nhất với hằng số thời gian Tf
1 Td s
U ( s ) U p ( s ) U 1 ( s ) U D ( s ) K 1 E ( s)
T1 s 1 T f s
Td
Tf với N = 5 10. Độ lợi phần đạo hàm điều khiển có giới hạn là
N
KN ở tần số cao. Hàm PID được viết lại như sau :
T1 s (1 T f s)U ( s) K T1 s(1 T f s ) 1 T f s T1T f s 2 E ( s )
Đây là trường hợp đặt biệt của điều khiển thông thường. Chia cho T ITf ,
PID được viết lại như sau :
s
R(s) s 2
Tf
T 2
S ( s ) T ( s ) K 1 d s K 1 1 s K
T T
f f T1 TI T f
Đặc tính giới hạn của điều khiển PID : điều khiển PID được áp dụng thành
công trong hầu hết các tiến trình điều khiển .
Thời trễ : Thời trễ luôn xãy ra trong thực tế. Thời rễ làm chp thông tin của
quá trình điều khiển truền tới bộ điều khiển trễ hơn so với mong muốn, do đó
thông tin bị mất ý nghĩa. Thời trễ giới hạn đặt tính của hệ thống nào có thời trễ
được điều khiển bởi PID thường hoạt động châm hơn.
2. Dạng rời rạc của bộ điều khiển PID
Bộ điều khiển trong hệ thống số cần được rời rạc ở một vài mức. Bộ điều
khiển liên tục sẽ được rời rạc ở dạng số thích hợp . Trong việc thiết kế bộ điều
khiển liên tục, thì chính nó cũng được rời rạc. Cho hệ số lấy mẫu ngắn bên trong
thời gian vi phân có thể được xấp xỉ bởi một sai phân có giới hạn và tích phân
qua việc lấy tổng. Chúng ta sẽ quan tâm mỗi dạng ở một thời điểm, sai số được
tính toán ở mỗi khoảng lấy mẫu.
e(kh) = u(kh) – y(kh)
Chu kỳ lấy mẫu h được xem như một hằng số và những sự biến đổi tín
hiệu trong suốt thời gian lấy mẫu thì không quan tâm.
3. Sự hiệu chỉnh thực tế của bộ điều khiển :
Một chu kỳ lấu mẫu quá dài có thể ảnh hưởng đến việc điều khiển hồi tiếp
như bị nhiễu. Một trường hợp đặt biệt là nếu chu kỳ lấu mẫu lâu hơn thời gian
đáp ứng của quá trình thì nhiễu có thể ảnh hưởng đến quá trình xử lý và sẽ mất
trước khi bộ điều khiển có thể nhận được một hoạt động chính xác . vì vậy một
điều rất quan trọng là quan tâm đến động học và đặc tính nhiễu cũng ảnh hưởng
đến sự lựa chọn chu kỳ lấy mẫu .
Trong việc xử lý tín hiệu mục đích là lấy mẫu tín hiệu và phục hồi nó từ
dạng thời gian rời rạc. Lý thuyết lấy mẫu không xem thời gian tính toán là mối
quan tâm để làm cấu trúc lại thời gian, tín hiệu được lấy mẫu có thể mất thời
gian khá lâu. Nói thêm nữa là ta giả sử tín hiệu được chu kỳ hoá. Trong những
ứng dụng điều khiển các tín hiệu thường không theo chu kỳ và thời gian tính
toán cho việc cấu trúc trúc lại tín hiệu bị giới hạn .
4. Chức năng cụ thể của các thành phần trong PID:
Khâu hiệu chỉnh tích phân tỷ lệ (P)
Được đưa vào hệ thống nhằm làm giảm sai số xác lập, với đầu vào thay
đổi theo hàm nấc sẽ gây vọt lố cao do đó vị trí sẽ không đúng theo yêu cầu .
Đây là bộ điều khiển mà biến đặt tỷ lệ với độ sai lệch từ điểm đặt bên
trong dãy tỷ lệ cho phạm vi vị trí đặt.
Khi vị trí hiện tại thấo hơn mức giới hạn thấp nhất của dãy tỷ lệ, biến đặt
là 100%. Khi vị trí trong dãy tỷ lệ, biến đặt giảm dần tỷ lệ với độ lệch và giảm
50%. Khi vị trí hiện tại bằng với điểm đặt và không có lệch. Khi đó khâu P cho
phép điều khiển vị trí phẳng với nhấp nhô nhỏ hơn điều khiển ON_OFF.
Điều khiển tỷ lệ chia thời gian:
Thiết bị ngỏ ra dạng xung ở trạng thái ON_OFF có thể dùng thiết bị ngõ
ra của bộ điều khiển vị trí. Những ngõ ra này gồm : Relay output, SSR(solid
State Relay)output và voltage Output. Nếu như thiết bị này dùng để lặp trạng
thái ON_ OFF trong dải tỷ lệ ở chu kỳ như hình trên thì thời gian T on ở ngõ ra tỷ
lệ với độ lệch .
Tỷ số từ lúc ON tới lúc OFF là 1:1 và biến là 50 0/0 khi chu kỳ relay
ngõ ra từ lúc ON tới OFF với vị trí điều khiển bằng điểm đặt .Một chu kỳ từ ON
tới OFF của thiết bị ngõ ra được gọi là chu kỳ tỷ lệ và hoạt động điều khiển theo
chu kỳ tỷ lệ được gọi là hoạt động điều khiển chia tỷ lệ thời gian .
( 6.5 )
Với Ti là các số thực thõa mãn T1 >= T2 >= Tn >= 0 và hằng số thời gian
trễ Tt là một số thực hữu hạn không âm. Không mất tính tổng quát nếu ta giả
thiết T1 là hằng số thời gian lớn nhất và T2 là hằng số thời gian lớn thứ hai.
Nếu 0 <= b <= T3 thì bộ điều khiển thích hợp sẽ là P hoặc PI. Trong
trường hợp 0 <= b <= T4 người ta thường chọn bộ điều khiển PD hoặc PID.
2) Dạng khâu động học có thành phần tích phân
(1 bp )e T t (1 bp )e T t
p
W ( P ) k idt n
= k idt
p (1 p T i )
n
i 1
p(1 a1 ... a n p)
(6.6)
Với những điều kiện hạn chế giống như (6.5).
Để thuận lợi cho việc thiết kế hệ thống với luật điều khiển I cho đối tượng
dạng 1 và không có luật điều khiển I cho đối tượng 2, Reinisch đã đề nghị
đưa hàm truyền phải có của hệ hở về dạng gần đúng sau:
1
W ( p) ( 6.7 )
pT (1 c1 p c2 p)
với 2 trường hợp phân biệt c2 = 0 hoặ c2 # 0. tham số T được tính bởi:
(6.8)
và c1 được xác định từ các tham số của đối tượng như sau :
c1 T I b T t a1 b T t
i 1
(6.9)
Tham số ki của bộ điều khiển PID sẽ được xác định từ T theo (6.8). Các
tham số TD1, TD2 còn lại thì được tính đơn giản là TD1=T1 và TD2=T2.
Điều khiển đối tượng dạng 1
Để chọn T cho đối tượng dạng1 ta đi từ độ quá điều chỉnh cực đại mong
muốn max thông qua hệ số chỉnh định = f(max) theo công thức :
1
T c1 => k ( 6.10 )
i
k c
dt 1
với a và c xác định từ max theo bảng dưới, hằng số có thể được xác
định theo các cách :
b) c 2
,2
nếu bộ điều khiển được sử dụng là P hoặc PI. ( 6.13 )
c 1
,,
c) c 2
,, 2
nếu bộ điều khiển được sử dụng là PD hoặc PID (
c 1
6,14 ).
trong đó:
c a b T
, ,,
1 1 1
, c c T , c c T T
1 1 1 1 1 1 2
( 6.15 )
2
T , c,2 c2 T 1 c1, ,
c a T
2
( b )(
2 a b ) 1
2 1
t
,, , ,,
c c T c T c
2 2 1 1 2 1
( 6.16 )
Ví dụ 1: cho 1 đối tượng thuộc dạng 1( theo phương trình (6.5)) với
mô hình:
6 p
W ( p) e
(1 16 p 40 p)
Hãy thiết kế luật điều khiển và chọn tham số sao cho độ quá điều chỉnh
max không vượt quá 10%.
Để điều khiển đối tượng trên ta có thể sử dụng các bộ điều khiển I, P hoặc
PI.
Theo như bảng trên thì yêu cầu max <= 10% dẫn đến = 1,4 và c=1. hơn
nữa đối tượng có các tham số kdt =1, b=0, a1=14s, a2=40s2, T1=10s, T2 = 4s và
T=6. Bởi vậy theo (6.15) và (6.16) thì c1=20s, c1’= 10s, c1=6s, c2’=98 s2, c2”=74
s2. Suy ra có những giá trị sau:
c 2
,2
=0.98 nếu bộ điều khiển được sử dụng làP hoặc PI.
c 1
Giả sử rằng ta sử dụng bộ điều khiển I. Vậy thì do = a + c = 1.9 nên từ
(6.10) ta có k1=0,03 và TD1=TD2=0
Nếu bộ điều khiển mà ta sử dụnglà PI thì các tham số cần xác định của bộ
điều khiển làki và TD1. Từ = a + c =2,38 ta suy ra được k1=0,05 và TD1=TD2=0.
Điều khiển đối tượng dạng 2
Ưu điểm của phương pháp Reinisch là ngay cả trong trường hợp đối
tượng có thành phần tích phân ( dạng 2 ), các giá trị cần thiết cho công việc tính
toán tham số bộ điều khiển như c1, c1’, c1”, c2, c2’, c2” cũng được tính giống như
cho đối tượng dạng 1.
Đối với vấn đề điều khiển đối tượng dạng 2, Reinisch đề xuất sử dụng bộ
điều khiển P hoặc PD ( không có I ) và do đó theo công thức hàm truyền đạt
(6.2) của bộ điều khiển thì chỉ còn 2 tham số kp và TD là phải xác định.
Với những giá trị trung gian c1, c1’, c1”, c2, c2’, c2”, tính theo (6.12) /
(6.16), ta có :
b) c 2
,2
nếu bộ điều khiển được sử dụng là PD. (6.18)
c 1
Từ đó suy ra :
1
1) k cho bộ điều khiển P.
i
k c
idt 1
1
2) k i
,, và TD=T1 cho bộ điều khiển PD.
k idt c1
trong đó = a + c và a,c được tính từđộ quá điều chỉnh cực đại mong
muốn max theo bảng cho trong trường hợp (6.7)
Ví dụ 2: Tìm bộ điều khiển cho đối tượng thuộc dạng 2 với mô hình:
6 p
W ( p) e
p(1 16 p 40 p)
để max 10%. Giống như ở ví dụ 1, các giá trị trung gian là c1=20s, c1’=
10s, c1=6s, c2=198 s2, c2’=98 s2, c2”=74 s2. Bởi vậy nếu chọn bộ điều khiển
PD thì
,,
c 2
=2.05 hay =3,45
,, 2
c1
và do đó
kp=0,05 , TD=10.
Phương pháp thực nghiệm
Trong trường hợp không thể xây dựng phương pháp mô hình cho đối
tượng thì phương pháp thiết kế thích hợp là phương pháp thực nghiệm. Thực
nghiệm chỉ có thể tiến hành nếu hệ thống đảm bảo điều kiện: khi đưa trạng thái
làm việc của hệ đến biên giới ổn định thì mọi giá trị của tín hiệu trong hệ thống
điều phải nằm trong giới hạn cho phép.
Phương pháp Zeigler và Nichols
Trước khi tiến hành thực nghiệm, hệ thống phải được lắp đặt theo sơ đồ ở
hình 6.1, bao gồm đối tượng và bộ điều khiển theo luật PID. Sau khi lắp đặt
xong, thực nghiệm được tiến hành theo các bước sau :
1) Cho hệ thống làm việc ở biên giới ổn định
_ Điều khiển đối tượng theo luật P, tức là cho TD 0 và T1 .
_ Tăng hệ số khuếch đại kp của luật điều khiển P cho đến khi hệ thống ở
biên giới ổn định. Xác định hệ số kpth và chu kỳ dao động tới hạn Tth.
2) Chọn luật điều khiển và tính toán tham số từ kpth, Tth theo bảng sau:
Luật điều
k p
T I
T
khiển D
T
k T
th
pth th
Luật P 0.5
Luật PI 0.45 0.8
Luật PID 0.6 0.5 .12
Trong nhiều trường hợp, việc xác định chu kỳ dao động riêng gặp khó
khăn và không đảm bảo độ chính xác thì phương pháp giới thiệu sau đây sẽ khắc
phục nhược điểm đó.
Phương pháp Jassen và Offerein
Thực nghiệm theo phương pháp này tiến hành theo các bước sau đây:
1) Cho hệ thống làm việc ở biên giới ổn định
_ Điều khiển đối tượng theo luật P ( TD 0 và T1 )
_Xác định hệ số kpth
2) Chọn tham số cho luật PI
_ Cho hệ làm việc với luật PI và hệ số kp = 0,45kpth, T1 tùy chọn
_ Giảm hằng số thời gian tích phân T1 cho đến khi hệ thống làm việc ở
biên giới ổn định. Xác định hằng số thời gian tích phân TIth ở chế độ
này.
1
_ Chọn T D
3 T D max
,T1 = 3TIth
3) Chọn luật điều khiển PID
_ Cho hệ thống làm việc theo luật PID với kp = k pth - ( đủ nhỏ ), TD
và T1 tùy chọn.
_ Tăng hằng số thời gian vi phân cho đến khi hệ thống đạt được độ quá
điều chỉnh cực đại lớn nhất max max. Xác định TDMAX.
_ Chọn TD = 1/3 TDMAX và T1= 4,5TD.
_Giảm kp cho đến khi hệ thống đạt được đặc tính động học mong muốn.
IV. Điều khiển vị trí dùng logic mờ :
Các phương pháp kinh điển đã điều khiển được các đối tượng kỹ thuật rất
hoàn thiện và đặt tính động học của toàn bộ hệ thống rất tốt. Nhưng để xử lý
thêm các tín hiệu đo và tăng thêm khả năng chuẩn đoán cho hệ thống, cần thay
thế ở bước đầu tiên bộ điều khiển kinh điển bằng bộ điều khiển mờ và phát triển
thêm hệ điều khiển dựa trên cơ sở của bộ điều khiển mở này 9ể có được các tính
chất điều khiển mong muốn. Cùng với logic mờ các bộ điều khiển chung cho
phép tạo ra một khả năng điều khiển đối tượng phong phú và đa dạng. Bộ điều
khiển vị trí dùng logic mờ có thể được xây dựng trên cơ sở bộ điều khiển PI mờ.
Đầu vào của hệ thống là tín hiệu sai lệch vị trí và đấu ra là điện áp điều khiển U c
cung cấp cho mạch tạo xung điều rộng.
Hệ mờ nhận 2 tín hiệu vào là sai lệch vị trí và sai phân sai lệch .
Sau khi tiến hành mờ hoá 2 biến vào này, dựa trên bảng luật điều khiển hệ
mờ sẽ quyết định nên tăng hay giảm điện áp điều khiển thông qua biến ra vi phân
điện áp.
Khâu tích phân sẽ làm nhiệm vụ tính ra điện áp điều khiển U chính xác để
cấp cho mạch tạo xung điều rộng.
Công việc thiết kế sẽ bao gồm việc chọn tập mờ cho 3 biến ngôn ngữ vào ra
và xây dựng bảng luật điều khiển thích hợp.
CHƯƠNG 4:
A. ĐỘNG CƠ DC
Tuỳ theo cách kích thích từ, động cơ điện một chiều có những đặt tính làm
việc và đặt tính động cơ khác nhau. Trong các đặt tính đó thì đặt tính quan trọng nhất là
đặt tính cơ. Đó là đặt tính biểu thị quan hệ giữa tốc độ quay và moment =f(M).
I.Đặt tính cơ của động cơ DC kích từ độc lập hoặc
kích từ kích thích song song:
1. Phương trình đặt tính cơ
Mạch kích từ thường được mắc song song với mạch phần ứng nguồn điện
một chiều có công suất lớn. Động cơ được gọi là động cơ kích từ song song:
Khi mạch điện phần ứng và mạch điện kích từ được mắc vào hai nguồn
điện một chiều độc lập thì động cơ đó được gọi là động cơ lích từ độc lập:
Trong cả hai sơ đồ kích từ song song và kích từ độc lập, phương trình điện
áp phần ứng động cơ đều có dạng :
Uư = Eư + (Rư + Rf ) Iư
Trong đó :
Uư : Điện áp phần ứng(V)
Eư : Sức điện động phần ứng (V)
Rư : Điện trở cuộn dây phần ứng ()
rư : Điện trở cuộn dây phần ứng
rcf : Điện trở cuộn cực từ phụ
rb : Điện trở cuộn bù
rct : Điện trở tiếp xúc của chổi điện.
Rf : Điện trở phụ kích từ trong mạch phần ứng()
Iư : Dòng điện mạch phần ứng (A)
Sức điện động Eư của phần ứng động cơ được xác định theo biểu thức :
Eư = (pN)/(2a)= 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 từ(Wb)
: tốc độ góc (rad/s)
K : hệ số cấu tạo của động cơcó biểu thức :
pN
K
2a
mặt khác ta có:
2a
60
do đó từ biểu thức (2) ta có:
pN 2a
E . . (3)
2a 60
pN
E n
60a
vậy : E ư = Ke n
với : Ke : hệ số sức điện động của động cơ.
pN
Eö
60a
Từ (1) và (2) ta có:
U u Ru R f
Iu (4)
K K
Biểu thức (4) là đặc tính cơ điện của động cơ.
Mặt khác moment điện từ Mđt của động cơ được xác định bởi :
Mđt = KIư
M dt
Suy ra : Iu
k
Thay giá trị Iư vào (4) ta được :
U u ( Ru R f )
M dt (6)
K ( K ) 2
Nếu bỏ qua các tổn thất cơ và tổn thất thép thì moment cơ trên trục động
cơ bằng moment điện từ, ta ký hiệu là M, nghĩa là: Mđt = Mcơ = M
U u ( Ru R f )
M
K ( K ) 2
Đây là phương trình đặc tính cơ của động cơ điện một chiều kích từ độc
lập.
Giả thiết phản ứng phần ứng được bù đủ, từ thông = const, thì các
phương trình đặt tính cơ điện (4) và phương trình đặt tính cơ (7) là tuyến tính.
Đồ thị của chung được biểu diễn trên hình a và b
và M = KInm =Mnm
Inm : được goọi là dòng điện ngắn mạch.
Mặc khác, phương trình đặc tính (4) , (7) cũng có thể viết dưới dạng:
U u RI u
0
K K
Uu RM
0
K (K ) 2
Trong đó : R = Rư + Rf
Uu
0
K
RI u RM
K ( K ) 2
: được gọi làđộ sụt tốc đống với giá trị của M
2. Xét ảnh hưởng của các tham số đến đặt tính cơ:
Từ phương trình đặc tính cơ (7) ta thấy có 3 tham số cơ bản ảnh hưởng đến
đặc tính cơ:
Từ thông động cơ
Điện áp phần ứng Uư
Điện trở phần ứng động cơ.
a. Anh hưởng của điện trở phần ứng :
Giả thiết : Uư =Uđm = const
Và : = đm =const
Muốn thay đổi điện trở phần ứng ta nối thêm điện trở phụ R f vào mạch
phần ứng. Trong trường hợp này tốc độ không tải lý tưởng.
U dm
0 const
K dm
Độ cứng của đặc tính cơ :
M ( K dm ) 2
Var
Ru R f
Khi Rf càng lớn, càng nhỏ nghĩa là đặc tính cơ càng dốc. Ưng với R f = 0
ta có đặc tính cơ tự nhiên :
( K dm ) 2
TN
Ru
NT có giá trị lớn nhất nên đặc tính cơ tự nhiên có độ cứng hơn tất cả các
đường đặc tính có điện trở phụ. Như vậy khi thay đổi điện trở phụ R f ta được
một họ đặc tính biến trở có dạng như hình vẽ. Ưng với một phụ tải M c nào đó,
nếu Rf càng lớn thì tốc độ động cơ càng giảm, đồng thời dòng điện ngắn mạch và
moment ngắn mạch càng giảm. Cho nên người ta thường dùng phương pháp này
để hạn chế dòng điện và điều chỉnh tốc độ động cơ phía dưới tốc độ cơ bản.
b. Anh hưởng của điện áp phần ứng:
Giả thiết từ thông : = đm =const
Điện trở phần ứng : Rư = const
Khi thay đổi điện áp theo hướng giảm so với Uđm ta có :
Ux
Tốc độ không tải : 0 Var
K dm
( K dm ) 2
Độ cứng đặc tính cơ : TN =const
Ru
Như vậy khi thay đổi điện áp đặt vào phần ứng động cơ ta được một họ
đặc tính cơ song song với đặc tính cơ tự nhiên như hình vẽ.
Ta thấy rằng khi thay đổi điện áp (giảm áp ) thì moment ngắn mạch, dòng
điện ngắn mạch của động cơ giảm và tốc độ động cơ cũng giảm ứng với một phụ
tải nhất định. Do đó phương pháp này cũng để điều chỉnh tốc độ động cơ và hạn
chế dòng điện khi khởi động.
c. Anh hưởng của từ thông :
Ỏ động cơ điện một chiều kích từ nối tiếp, dòng điện kích từ chính là
dòng điện phần ứng Ikt = Iư= I
Phương trình đặc tính cơ : Uư = Eư + IưRư = K + IưRư
Trong đó: Rư = rư + rctf + rct + rkt
Từ phương trình trên ta có biểu thức :
U u RI u
K K
Uu R M
u 2
K ( K )
Vì : M = KIư
Từ thông iến đổi phụ thuộc vào dòng điện trong mạch kích từ phụ
thuộc vào đặc tính từ hoá ( đường 1). Đây là một đường phi tuyến, để đơn giản ta
có thể giả thiết từ thông phụ thuộc tuyến tính theo dòng điện kích từ như ở
đường (2).
Trong một phạm vi khá rộng ta có thể biểu thị :
= K Ikt
Với : K là hệ số tỷ lệ- chỉ là hằng số trong vùng I< 0.8 I đm, còn khi I>(.8
0.9)Iđm thì hơi giảm xuống do ảnh hưởng bão hoà của mạch từ.
Biểu thức (5) chính là phương trình đặt tính cơ điện của động cơ và (5) là
phương trình đặc tính cơ của động cơ. Đặc tính cơ điện của động cơ một chiều
kích từ nối tiếp:
Đặc tính cơ của động cơ điện một chiều kích từ nối tiếp :
Từ đồ thị ta thấy các đặc tính này có dạng Hyperbol và mềm ở phạm vi
dòng điện có giá trị nhỏ hơn định mức. Ơ vùng dòng điện lớn, do mạch bão hoà
nên từ thông hầu như không đổi và đặc tính có dạng gần như tuyến tính.
Giả thiết động cơ không tải (I=0, M=0) thì tốc độ không tải lý tưởng sẽ vô
cùng lớn. Nhưng thực tế do có ma sát, các tổn thất phụ và động cơ có từ dư ( dư
= 210)đm nên khi không tải thì tốc độ không tải của động cơ vẫn có giá trị là:
Uu
K dm
Tốc độ ot này thường rất lớn s với tốc độ định mức, nên thực tế không
cho phép động cơ một chiều kích từ nối tiếp làm việc ở chế độ không tải.
Ngoài ra nhìn vào đặc tính cơ của động cơ một chiều kích từ nối tiếp và
cấu tạo của nó ta có nhận xét sau :
Đặc tính của động cơ một chiều kích từ nối tiếp mềm
và độ cứng thay đổi theo phụ tải. Do đó thông số tốc độ của động cơ ta có thể
biết được sự thay đổi của phụ tải. Tuy nhiên không nên sử dụng động cơ này cho
những truyền động có yêu cầu ổn định cao mà nên sử dụng nó cho những truyền
động có yêu cầu tốc độ.
Động cơ kích từ nối tiếp có khả năng quá tải lớn vè
Moment. Nhờ cuộn kích từ nối tiếp nên ở vùng dòng điện phần ứng lớn hơn định
mức thì từ thông động cơ lớn hơn định mức, do đó moment của nó tăng nhanh
hơn với sự tăng dòng điện. Như vậy với mức độ quá dòng điện như nhau thì
động cơ một chiều kích từ nối tiếp có khả năng quá tải về môment và khả năng
khởi động tốt hơn động cơ một chiều kích từ độc lập. Nhờ có ưu điểm đó mà
động cơ kích từ nối tiếp rất thích hợp cho những truyền động làm việc thường có
quá tải lớn và yêu cầu moment khởi động lớn như máy nâng vận chuyển, máy
cán thép .
Vì từ thông của động cơ chỉ phụ thuộc vào dòng điện
phần ứng nên khả năng chụi tải của động cơ không bị ảnh hưởng bởi sụt áp của
lưới điện. Loại động cơ này thích hợp cho những truyền động dùng ngành giao
thông có đường cung cấp điện dài.
III. Các phương pháp điều chỉnh tốc độ động cơ điện
một chiều :
1. Vấn đề điều chỉnh tốc độ
Hầu hết các máy sản xuất đều đòi hỏi phải có nhiều cấp độ khác nhau. Việc
chọn cấp tốc độ là do yêu cầu thực tế đặt ra. Về phương diện này động cơ điện một
chiều có nhiều ưu việc hơn so với các loại động cơ khác. Đó chính là đặc tính điều
chỉnh tốc độ dễ dàng nhờ đó mà có cấu trúc mạch điều khiển động lực khá đơn giản và
đồng thời việc điều chỉnh có chất lượng tốt.
2. Điều chỉnh tốc độ bằng cách thay đổi từ thông :
Điều chỉnh từ thông kích thích cảu động cơ điện một chiều chính là điều chỉnh
moment điện từ M=k.Iư và sức điện động Eư k Iư của động cơ.
Đối với động cơ kích từ nối tiếp thì từ thông có thể thay đổi bằng những phương
pháp sau đây:
Mắc Sun dây cuộn kích thích bằng một điện trở:
Nếu dòng điện kích từ lúc đầu là I t = I thì dòng điện kích thích sau khi áp
dụng các biện pháp trên sẽ giảm xuống còn It = KI với hệ số k :
Rst
K 1 : Nếu mắc Sun dây cuốn kích thích
Rt Rst
't
K 1 : Nếu thay đổi số vòng dây của dây cuốn kích thích
t
Do đó : = KKI < đm = KI
Phương pháp này chỉ điều chỉnh được < đm và tốc độ sẽ thay đổi được
trong vùng trên định mức và đường đăc tính se nằm về phía trên của đặc tính tự
nhiên.
Nếu mắc Sun phần ứng thì tổng trở của toàn mạch về phía trên sẽ giảm đi,
dòng điện I = It và từ thông tăng lên và tốc độ quay sẽ giảm xuống. Rõ ràng
phương pháp này điều chỉnh được tốc độ dưói vùng định mức và đường đặc tính
cơ tương ứng nằm ở phía dưới của đặc tính cơ tự nhiên. Vì R t rất bé nên Rsư hầu
như đặt dưới toàn bộ điện áp của mạch nên tổn hao rất lớn và hiệu suất động cơ
giảm đi nhiều. Mặt khác hiệu quả của hiệu chỉnh tốc độ bằng cách tăng từ thông
còn bị hạn chế bởi sự bảo hoà của mạch từ nên phương pháp này ít được sử
dụng.
3. Điều chỉnh tốc độ bằng cách thêm điện trở vào mạch phần
ứng
Phương pháp điều chỉnh này chỉ điều chỉnh được tốc độ dưới tốc độ định
mức và kèm theo tổn hao trên điện trở phụ nên làm giảm hiệu suất của động cơ
nên ít được sử dụng
4. Điều chỉnh tốc độ bằng cách thay đổi điện áp phần ứng :
Phương pháp này chỉ điều chỉnh được tốc độ dưới tốc độ định mức và
không cho phép tăng địen áp quá định mức nhưng lại giữ được hiệu suất cao do
không gây tổn hao khi điều chỉnh. Phương pháp này dùng bộ biến đổi phức tạp
như cần có thiết bị nguồn như máy phát điện một chiều kích từ độc lập, các bộ
điều khiển dùng phương pháp chỉnh lưu …
5. Điều chỉnh tốc độ bằng phương điều rộng xung :
Điều áp bao gồm những xung có độ rộng thay đổi được và biên độ là
hằng số. Yêu cầu làm mạch có khả năng đóng ngắt tần số cao, có thể đóng ngắt
cho từng ngắt khác nhau. Các loại mạch này thích hợp cho mạch động lực dùng
Transistor công suất, việc ngắt nhiều lần, nếu ta thay đổi được sóng hài bậc cao.
Trong các phương pháp điều chỉnh tốc độ động cơ điện một chiều, ta nhận
thấy để điều chỉnh tốc độ cần có dãi điều chỉnh rộng, đòi hỏi chất lượng điều chỉnh
tốc độ cao. Do đó chọn phương pháp điều chỉnh tốc độ động cơ bằng phương pháp
điều rộng xung là thay đổi được tON và fxung = 1/T = const.
B. Bộ giải mã vị trí
I. 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ởi 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 ra 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ân loại theo cấu tạo vật lý thì hiện nay Encoder thường có 3 loại :
Encoder tiếp xúc, Encoder từ trừơng và Encoder quay.
1. 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à đầu đọc
thông qua chổi than. Loại này có nhược điểm là tạo ra ma sát, hao mòn, bụi
bẩn do mọt 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ộ đếm lên/xuống cho trạng thái cao nhất của bit.
2. 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.
3. 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ó 3 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
( Photocell ).
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.
Hiện nay trên thị trường có 2 loại Encoder số :
Bộ giải mã tuyệt đối ( Absolute Encoder ) :
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 để điếm xung mà vẫn có thể biết góc
quay của trục thiết bị mã hóa.
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. Anh sáng có thể xuyên qua
những phần trong suốt đến bộ cảm biến quang ( Photo transistor ), khi đĩa quay
thì bộ cảm biế bật lên 1 và phần ánh sáng bị chặn bởi những phần đục làm cảm
biến quang xuống 0. Như vậy cảm biến quang sẽ tạo thành những xung tuần tự:
Khi thiết bị 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 xem như góc tọa độ. 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
( Incremental Encoder ).
Thiết bị mã hóa tăng dần ( Incremental 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 để xung ra.
Thiết bị mã hóa cho 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 ngõ 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.
- khi đĩa quay theo chiều kim đồng hồ
-Khi đĩa quay theo chiều kim đồng hồ thì xung track 1 (B) trễ pha
hơn xung track 2 (A).
-Ngược lại, khi đĩa quay ngược chiều kim đồng hồ thì xung track 1
(B) nhanh pha hơn xung track 2 (A).
*Quay thuận chiều kim đồng hồ :
Đầu A vượt quá B ( độ lệch pha ) = 90 +- 45 (T/4 +- T/8)
*Quay ngược chiều kim đồng hồ :
Là Moment cần để khởi động trục quay từ trạng thái nghỉ, Moment khởi
động càng nhỏ thì trục quay càng êm.
2.2. Sơ đồ khối
2.3. Mô tả chức năng của các chân
Vcc : áp nguồn.
GND : đất.
Port 0 : là một port I/O 8-bit hai
chiều, cực máng hở. Khi xuất ra,
mỗi chân port có thể lái 8 đầu vào
TTL. Nếu ghi các mức 1 ra các
chân port thì các chân này có thể
dùng như các đầu vào trở kháng
cao.
Port 0 cũng có thể được cấu hình
thành một bus multiplex giữa địa
chỉ thấp và dữ liệu khi truy cập
chương trình hay dữ liệu từ bên
ngoài. Trong chế độ này, port 0 có
điện trở pullup nội.
Port 0 cũng nhận các byte mã
chương trình khi lập trình Flash và
xuất ra mã chương trình khi kiểm
tra, khi đó cần có điện trở pullup bên ngoài.
Port 1 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 1 có thể
lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên
do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập, những
chân của port 1 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Hơn nữa, P1.0 và P1.1 có thể được dùng như là đầu vào bộ đếm
timer/counter 2 bên ngoài (P1.0/T2) và xung kích (P1.1/T2EX).
Port 1 cũng nhận những byte địa chỉ thấp trong khi lập trình Flash và
trong khi kiểm tra Flash .
Port 2 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 2 có thể
lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên
do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập, những
chân của port 2 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Port 2 phát byte địa chỉ cao trong khi nhận lệnh từ bộ nhớ chương trình
ngoài và trong lúc truy xuất đến bộ nhớ dữ liệu ngoài mà có sử dụng địa chỉ 16
bit (MOVX A, @DPTR). Trong ứng dụng này nó dùng điện trở nội kéo lên
mạnh khi xuất 1. Khi truy xuất bộ nhớ dữ liệu ngoài dùng địa chỉ 8 bit, port 2 sẽ
phát nội dung của thanh ghi P2
Port 2 cũng nhận byte địa chỉ cao trong lúc lập trình Flash và trong lúc kiểm
tra Flash.
Port 3 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 3 có thể
lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên
do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập, những
chân của port 3 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Port 3 cũng có những chức năng của họ MSC-51 được iệt kê ở
bảng sau:
BIT TÊN ĐỊA CHỈ BIT CHỨC NĂNG THAY THẾ
P3.0 RXD B0H Nhận dừ liệu cho port nối tiếp
P3.1 TXD B1H Truyền dừ liệu cho port nối tiếp
P3.2 INT0 B2H Ngắt ngoài 0
P3.3 INT1 B3H Ngắt ngoài 1
P3.4 T0 B4H Ngõ vào từ bên ngoài cho timer/counter 0
P3.5 T1 B5H Ngõ vào từ bên ngoài cho timer/counter 1
P3.6 WR B6H Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Xung đọc bộ nhớ dữ liệu ngoài
Port 3 cũng nhận vài tín hiệu điều khiển trong lúc lập trình Flash và trong
lúc kiểm tra Flash.
RST : là ngõ vào Reset. Khi ngõ này được đưa lên cao (trong ít nhất hai
chu kì máy), các thanh ghi bên trong AT89C51 được tải những giá trị thích hợp
để khởi động hệ thống.
ALE/PROG (Address Latch Enable) : ALE là xung xuất cho phép chốt byte
địa chỉ thấp khi truy cập bộ nhớ ngoài. Chân này còn là ngõ vào của xung lập
trình (PROG) khi lập trình Flash.
Trong hoạt động bình thường, ALE được phát xung với tần số 1/6 tần số dao
động on-chip và có thể được dùng như xung thời gian chuẩn bên ngoài. Tuy
nhiên, cần chú ý là một xung ALE sẽ bị mất khi truy cập bộ nhớ ngoài.
Có thể hủy bỏ chức năng của ALE bằng cách set bit 0 của thanh ghi ở vị trí
8EH. Một khi bit này được set, ALE chỉ tích cực khi có lệnh MOVX hoặc
MOVC. Nếu không có các lệnh này thì ALE ở mức cao. Việc set bit 0 của
thanh ghi ở vị trí 8EH không làm ảnh hưởng đến vi điều khiển khi truy cập bộ
nhớ ngoài.
PSEN (Program Store Enable) : PSEN là xung strobe báo hiệu việc đọc bộ
nhớ chương trình ngoài, PSEN tích cực hai lần (mức thấp) mỗi chu kì máy,
ngoại trừ hai xung PSEN bị mất khi truy xuất dữ liệu ngoài. Khi thi hành
chương trình trong RAM nội, PSEN sẽ ở mức thụ động (mức cao).
EA/VPP (External Access) : EA là ngõ vào để cho phép truy xuất bộ nhớ
chương trình từ bên ngoài khi được nối với GND. Khi EA được treo lên nguồn
VCC, chương trình sẽ được thực thi trong ROM nội. Chân này cũng nhận điện
áp 12v (VPP) trong khi lập trình Flash.
XTAL1 : Đầu vào của bộ khuếch đại dao động đảo và cũng là đầu vào đến
mạch tạo xung clock nội.
XTAL2 : Đầu ra của bộ khuếch đại dao động đảo.
2.4. Các thanh ghi chức năng (SFR-Special Funtion Reisters)
AT89C52 có 26 thanh ghi chức năng được thiết kế như là một thành phần
của RAM on-chip. Do đó mỗi thanh ghi có một địa chỉ của nó, nằm trong vùng
từ 80H đến FFH. Tuy nhiên, vùng này cũng là vùng bộ nhớ nên việc truy cập các
thanh ghi này thông qua các lệnh dùng định vị trực tiếp khác với việc truy cập
vùng nhớ dùng định vị gián tiếp.
Bảng vị trí các thanh ghi chức năng :
Chú ý là không phải tất cả các địa chỉ đều có các thanh ghi, những địa chỉ không
có thanh ghi này có thể không có trên chip. Đọc những địa chỉ này sẽ có những giá
trị ngẫu nhiên và ghi những giá tri này có những tác động không xác định trước.
Phần mềm của người dùng không nên ghi những giá trị 1 đến các vị trí này, bởi vì
chúng có thể được dùng trong tương lai. Trong trường hợp đó, giá trị của các bit
luôn là 0.
Ngoài những thanh ghi tương tự 8051, AT89C52 có thêm :
Các thanh ghi Timer 2 các bit điều khiển và trạng thái chứa trong thanh ghi
T2CON và T2MOD cho Timer 2. Cặp thanh ghi RCAP2H và RCAP2L là những
thanh ghi Capture/Reload trong chế độ capture 16 bit hay chế độ auto-reload 16
bit.
Bus data
D0D7
Đệm Nhóm A PC4P C7
data ½ port C
Nhóm B
½ port C PC0PC3
RD
Kiểm
WR
soát đọc
CS
ghi
RST
A1 Điều khiển Nhóm B
nhóm B Port B PB0PB7
A2
- Bộ đệm truyền data : Bộ đệm 8 bit , hai chiều , ba trạng thái dùng để giao tiếp
bus data 8255 với bus data CPU.
- Bộ kiểm soát đọc ghi : kiểm soát tất cả sự truyền đạt bên trong và ngoài của từ
điều khiển và data nhận tín hiệu A0,A1 từ bus địa chỉ , các tín hiệu RD ,WR,
CS, RST từ bus địa chỉ phát ra các lệnh cho hai nhóm A và B
WR
- Khối từ điều khiển : Để điều khiển hoạt động hai nhóm A và B ta phải xuất từ
điều khiển đến thanh ghi điều khiển 8255 , từ điều khiển bao gồm các thông tin
về chọn mode , set bit ,reset bit… Nó sẽ khỏi động cấu hình hoạt động cho
8255, thanh ghi điều khiển chỉ ghi vào chứ không đọc ra được.
CS
- Các port : 8255 gồm 3 port , ký hiệu A,B,C, mỗi port gồm 8 bit có thể lập trình
được để xác định chế độ hoạt động thích hợp, các port A và B gồm bộ đệm
chốt ngõ ra 8 bit và chốt ngõ vào 8 bit. Port C có chốt ngõ ra 8bit và đệm
không chốt ngõ vào 8 bit , port C được phân ra làm hai phần : 4 bit cao
PC4PC7 cùng với port A hình thành nhóm A, bốn bit thấp PC0PC4 cùng
port B hình thành nhóm B .
- Các tín hiệu điều khiển :
+ CS :chọn chip , tích cực mức 0
PB0 + RD :đọc data , tích cực mức 0
P + WR : ghi data, tích cực mức 0
+ RST : Reset, xóa các thanh ghi điều điều khiển và các port A,
B7 B ,C về mode nhập , tích cực mức 1.
+ Chọn mode:
A1 A0 port
0 0 A
RTS 0 1 B
1 0 C
1 1 từ điều khiển
- Nguồn cung cấp : 5V
8255 có nhiều mode làm việc , tuy nhiên mode là mode được sử dụng phổ
biến trong các ứng dụng của nó, đây là mode xuất nhập đơn giản : các port có thể được
lập trình là ngõ vào hay ngõ ra.
D7 D6 D5 D4 D3 D2 D1 D0
PCPC3
A0 0:out put, 1: input
A1
Port B
RD 0:output, 1: input
Mode nhóm B:
O:mode 0, 1:mode 1
Chọn mode
0: BSR mode PC4PC7
1: I/O mode 0:output,1 : input
Port A
0:output, 1: input
WR Mode nhóm A
00:mode0,01:mode 1
CS
A1
14
20 GND
CE
RAM 62256
III. IC 75176:
Là IC chuyển đổi tín hiệu điện áp so với mass thành tín hiệu điện áp vi sai .
Sơ đồ chân linh kiện :
4 1
2 D I R O 6
3 R E A 7
D E B
8
+VC C
WR 75176
IV. MAX 232:
CS Là vi mạch chuyển đổi tín hiệu theo chuẩn RS232 sang chuẩn TTL và ngược lại.
Trong thực tế có rất nhiều vi mạch chuyển đổi từ RS_232 sang TTL và ngược
lại. Thế nhưng MAX232 có ưư điểm hơn các vi mạch khác và rất phổ biến hiện nay, ưu
điểm của MAX 232 là chỉ sử dụng nguồn đơn cực +5V.
Bên trong MAX 232 có một bộ nhân đôi điện áp để tạo ra điện áp +10V và một
bộ tạo ra điện áp âm. Như vậy nó tạo ra bộ nguồn +/10V,đáp ứng được mức điện áp cho
RS_232.
Sơ đồ chân linh kiện :
13 12
8 R 1 IN R 1O U T 9
11 R 2 IN R 2O U T 14
PB0 10 T 1 IN T1O U T 7
T 2 IN T2O U T
P
1
3 C +
C 1-
B7 4
C 2+
5
2 C 2-
6 V +
V -
Giải thích tín hiệu : M A X232
RTS
R2IN: ngõ vào RS_232 R2OUT: ngõ ra TTL
T2OUT: ngõ ra RS_232T2IN: ngõ vào TTL
R1IN: ngõ vàoRS_232R1OUT: ngõ ra TTL
T1OUT : ngõ ra RS_232T1 IN :ngõ vào TTL
C1+, C1: tụ C1= 10F bên ngoài
C2+, C2: tụ C2= 10F bên ngoài
+V: nguồn +10V
V: nguồn 10V
VCC,GND: nguồn cung cấp đơn cực +5V
V. IC 74573 :
Là IC chốt có ngõ ra 3 trạng thái.
sơ đồ chân và bảng sự thật :
A0
A1
2 19
3 D 1 Q 1 18
4 D 2 Q 2 17 OC C Input (D) Output (Q)
5 D 3 Q 3 16
D 4 Q 4 L H H H
6 15
D 5 Q 5 L H L L
7 14
8 D 6 Q 6 13 L L X Q1
9 D 7 Q 7 12 H X X Z
D 8 Q 8
11
1 C
O C
VI. IC 74138
S N 7 :4 A S 5 7 3
1 15
2 A Y 0 14
3 B Y 1 13
C Y 2 12
Y 3 11
6 Y 4 10
4 G1 Y 5 9
5 G 2A Y 6 7
G 2B Y 7
74LS138
INPUTS
OUTPUTS
ENABLE SELECT
G1 G2 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
X H X X X H H H H H H H H
L X X X X H H H H H H H H
H L L L L L H H H H H H H
H L L L H H L H H H H H H
H L L H L H H L H H H H H
H L L H H H H H L H H H H
H L H L L H H H H L H H H
H L H L H H H H H H L H H
H L H H L H H H H H H L H
H L H H L H H H H H H H L
VII . IC74LS393.
U ?A
1 3
A Q A 4
Q B 5
2 Q C 6
C LR Q D
74LS393
IC này có 2 kênh 1, mỗi kênh là 1 bộ đếm 4 bit, được dùng làm bộ đếm,
chia tần số, các ứng dụng khác. Mỗi bộ đếm chứa 4 Fiplop bên trong. Các
Fiplop này được kích cạnh xuống vào ngõ A.
C. Chương trình điều khiển
PORTA1 EQU 4000H
PORTB1 EQU 4001H
PORTC1 EQU 4002H
CTRWL1 EQU 4003H
AL EQU 30H
AH EQU 31H
BL EQU 32H
BH EQU 33H
XL EQU 34H
XH EQU 35H
YL EQU 36H
YH EQU 37H
ZL EQU 38H
ZH EQU 39H
TEMP EQU 40H
KPL EQU 41H
KPH EQU 42H
EORL EQU 43H
EORH EQU 44H
DUTY_CYCLE EQU 45H
PULSL EQU 46H
PULSH EQU 47H
PULFL EQU 48H
PULFH EQU 49H
CONSTN EQU 50H
CONSTD EQU 51H
TEMP2L EQU 52H
TEMP2H EQU 53H
TEMP3L EQU 54H
TEMP3H EQU 55H
CL EQU 56H
CH EQU 57H
CBC EQU 58H
DU EQU 59H
TEMP4L EQU 60H
SCKP1 EQU 61H
SCKP2 EQU 62H
LD1L EQU 63H
LD1H EQU 64H
CDAIT EQU 65H
CDAIC EQU 66H
SLCATT EQU 67H
SLCATC EQU 68H
TGCATT EQU 69H
TGCATC EQU 6AH
ORG 0000H
JMP MAIN
ORG 001BH
LJMP ISR_TOKP
ORG 0030H
MAIN: CALL NAP_DULIEU
CALL INIT
SETB TF1
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;DIEU KHIENDONG CO, DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
AGAIN: CALL PWM
CALL DISPLAY
JNB 03H,AGAIN
CLR ET1
MOV A,#80H
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NGAT DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOV DPTR,#CTRWL1
MOVX @DPTR,A
INC 3EH
MOV A,3EH
CJNE A,SLCATT,AGAIN4
AGAIN4: JNC AGAIN3
MOV A,3EH
MOV B,#10
DIV AB
SWAPA
ORL A,B
MOV 3CH,A
MOV 6EH,#100
AGAIN1: CALL PWM
CALL DISPLAY
MOV 6FH,#100
DJNZ 6FH,$
DJNZ 6EH,AGAIN1
MOV DPTR,#CTRWL1
MOV A,#02H
MOVX @DPTR,A
MOV A,#03H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; DONG DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOV A,#90H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
CLR 03H
SETB ET1
JMP AGAIN
AGAIN3: MOV A,#80H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
CALL PWM
CALL DISPLAY
SJMP AGAIN3
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
INIT: MOV TMOD,#11H
MOV TH1,#HIGH(-10000)
MOV TL1,#LOW(-10000)
SETB TR1
MOV IE,#88H
MOV A,#100
MOV B,#24
DIV AB
CLR 00H
CLR 01H
CLR 02H
CLR 03H
CLR 10H
CLR 11H
CLR 12H
CLR 13H
CLR 14H
CLR 15H
SETB 30H
CLR 31H
CALL DKD
MOV 5AH,#1
MOV 5BH,#0
MOV 5CH,#0
MOV 5DH,#0
MOV 5EH,#0
MOV 5FH,#0
MOV 7CH,#0
MOV 7DH,#2 ;VI TRI LED TRUY
XUAT
MOV 7EH,#0
MOV 7FH,#0
MOV 3CH,#0
MOV 3EH,#0
MOV DUTY_CYCLE,#0
MOV 3DH,#1
MOV 4AH,#40H
MOV 4BH,#30H
MOV 4CH,#20H
MOV 4DH,#10H
MOV 4EH,#60H
MOV 4FH,#50H
MOV R0,#3AH
MOV R1,#4AH
MOV R3,#0
MOV CONSTN,A
MOV CONSTD,B
MOV PULSL,CDAIT
MOV PULSH,CDAIC
MOV PULFL,#00H
MOV PULFH,#00H
MOV KPL,#1
MOV KPH,#0
MOV A,#92H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV A,#05H
MOVX @DPTR,A
MOV A,#07H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
MOV A,#03H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
MOV A,#90H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; CT NGAT ISR_TOKP
;DOC XUNG,TINH TOAN DUTY_CYCLE
;CHU KI NGAT 10mS
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ISR_TOKP: CLR TR1
MOV TL1,#LOW(-10000)
MOV TH1,#HIGH(-10000)
SETB TR1
CALL DOC_XUNG
MOV PULFL,R6
MOV PULFH,R7
MOV XL,PULSL
MOV XH,PULSH
MOV YL,PULFL
MOV YH,PULFH
CALL SUBB16
MOV EORL,ZL
MOV EORH,ZH
MOV AL,EORL
MOV AH,EORH
MOV BL,#0
MOV BH,#0
CALL COMPAB
JNB 01H,EXIT7
JMP LABEL
EXIT7: LJMP EXIT2
;LENH THUC HIEN KHI A>B
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;TEMP2:=TEMP2H:TEMP2L:=E[N]*KP
LABEL: MOV XL,EORL
MOV XH,EORH
MOV YL,KPL
MOV YH,KPH
CALL MUL_16
MOV TEMP2L,ZL
MOV TEMP2H,ZH
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;(CONST:=CONSTD:CONSTN:=100/(Umax=24))*TEMP2
MOV XL,ZL
MOV XH,ZH
MOV YL,CONSTN
MOV YH,#0
CALL MUL_16
MOV TEMP3L,ZL
MOV TEMP3H,ZH
MOV XL,TEMP2L
MOV XH,TEMP2H
MOV YL,CONSTD
MOV YH,#0
CALL MUL_16
MOV R6,ZL
MOV R7,ZH
MOV B,#24
CALL DIV_16_8
MOV XL,R6
MOV XH,R7
MOV YL,TEMP3L
MOV YH,TEMP3H
CALL ADD16
;TRUONG HOP TREN TINH VOI KP=(1....9)
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;DUOI DAY SE TINH THEM CHO SO CHIA CUA KP
MOV CL,#1
MOV CH,#0
MOV XL,ZL
MOV XH,ZH
MOV CBC,SCKP1
CALL TG_DUNG
MOV CL,#1
MOV CH,#0
MOV XL,ZL
MOV XH,ZH
MOV CBC,SCKP2
CALL TG_DUNG
MOV DUTY_CYCLE,ZL
MOV AL,DUTY_CYCLE
MOV AH,#0
MOV BL,#50
MOV BH,#0
CLR 01H
CALL COMPAB
CLR 00H
CLR 02H
JNB 01H,LABEL2
MOV DUTY_CYCLE,LD1T
CLR 01H
LABEL2: MOV R5,DUTY_CYCLE
CJNE R5,#7,STOP
STOP: JNC EXIT2
MOV DUTY_CYCLE,#0
CLR ET1
SETB 03H
JMP EXIT4
CLR 01H
EXIT2: JNB 02H,EXIT3
;LENH THUC HIEN KHI A<B
MOV DUTY_CYCLE,#0
CLR 02H
EXIT3: JNB 00H,EXIT4
;LENH THUC HIEN KHI A=B
MOV DUTY_CYCLE,#0
CLR 00H
EXIT4: MOV R7,#0
MOV R6,DUTY_CYCLE
ACALL BINTOBCD
CALL CDL
RETI
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON DOC_XUNG
;DOC XUNG TU PORTA,B CUA 8255
; NGO RA PC1,PC2,PC3 DIEU KHIEN XOA,CHOT XUNG KHI LAY XUNG
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DOC_XUNG: MOV A,#04H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV A,#06H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV DPTR,#PORTA1
MOVX A,@DPTR
MOV R6,A
MOV A,#05H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV DPTR,#PORTB1
MOVX A,@DPTR
MOV R7,A
MOV A,#07H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
RET
;*****************************************************************
;CHUONG TRINH CON DIEU RONG XUNG
; CHU KI DIEU RONG T= 200*R3uS
; T1\T*100= DUTY_CYCLE
;THOI GIAN THUC THI LA 1324uS
;*****************************************************************
PWM: MOV R2, DUTY_CYCLE
CJNE R2,#01H,MAIN_L2
MAIN_L2: JC MAIN_L3
MOV A,#01H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
ACALL DELAY
MAIN_L3: MOV A,#100
SUBB A,DUTY_CYCLE
MOV R2,A
CJNE R2,#01H,MAIN_L4
MAIN_L4: JC MAIN_L5
MOV A,#00H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
ACALL DELAY
MAIN_L5: RET
;*****************************************************************
DELAY: MOV R3,#5
DELAY_L1: DJNZ R3,DELAY_L1
DJNZ R2,DELAY
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Chuong trinh so sanh 2 so 16 bit
; A=AHAL B=BHBL
; IF A>B THEN 00 =1
; IF A<B THEN 01 =1
; IF A=B THEN 02 =1
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
COMPAB: MOV A,AH
CJNE A,BH,BIGGER
MOV A,AL
CJNE A,BL,BIGGER
SETB 00H ; A=B
JMP EXIT
BIGGER: JC SMALLER
SETB 01H
JMP EXIT
SMALLER: JNC EXIT
SETB 02H
EXIT: RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Chuong trinh cong 2 so 16 bit
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X+Y
; Z=ZH_ZL
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ADD16: MOV A,XL
ADD A,YL
MOV ZL,A
MOV A,XH
ADDC A,YH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH TRU HAI SO NGUYEN 16 BIT
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X-Y
; Z=ZH_ZL
;*****************************************************************
SUBB16: MOV A,XL
SUBB A,YL
MOV ZL,A
MOV A,XH
SUBB A,YH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH NHAN HAI SO NGUYEN 16 BIT
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X*Y
; Z=ZH_ZL
;*****************************************************************
MUL_16: MOV A,XL
MOV TEMP,A
MOV B,YL
MUL AB
MOV ZL,A
MOV A,YL
XCH A,B
XCH A,XH
MUL AB
ADD A,XH
MOV XH,A
MOV A,XH
MOV A,YH
MOV B,TEMP
MUL AB
ADD A,XH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT
;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B
;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU
;*****************************************************************
DIV_16_8: PUSH 02H
PUSH ACC
MOV R2,#16
CLR A
DIVIDE: XCH A,R6
CLR C
RLC A
XCH A,R6
XCH A,R7
RLC A
XCH A,R7
RLC A
CJNE A,B,NOT_EQUAL
SJMP A_GREATER_EQ_B
NOT_EQUAL: JC BELOW
A_GREATER_EQ_B:
SUBB A,B
XCH A,R6
ORL A,#1
XCH A,R6
BELOW: DJNZ R2,DIVIDE
XCH A,B
POP ACC
POP 02H
RET
;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** ***
;CT CON DELAY 1000US, DUNG TIMER 0
;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** ***
DELAY1: MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** **
; CTC BINTOBCD
; CHUYEN DOI TU SO NHI PHAN 16 BIT (<9999) SANG SO BCD
;INPUT : R7:R6 = SO NHI PHAN 16 BIT
;OUTPUT: R7:R6 = SO BCD, R7:R6=NGHIN,TRAM ,CHUC ,DON VI
; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** **
BINTOBCD:
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV_16_8
PUSH B
MOV B,#10
ACALL DIV_16_8
PUSH B
MOV B,#10
MOV A,R6
DIV AB
PUSH B
SWAP A
POP B
ORL A,B
MOV R7,A
POP ACC
SWAP A
POP B
ORL A,B
MOV R6,A
POP B
POP ACC
RET
;*****************************************************************
;CT CON CDT,CDC,XUAT PHUC VU XUAT LED
;*****************************************************************
CDT: MOV A,@R0
ANL A,#0FH
RET
CDC: MOV A,@R0
SWAP A
ANL A,#0FH
RET
XUAT: ORL A,@R1
MOV P1,A
RET
;*****************************************************************
;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT
;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B
;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU
;KET QUA SAI SO(O SO DU B) DOI VOI SO LE LON HON 128
;*****************************************************************
DIV_16_81: PUSH ACC
MOV A,B
JNB ACC.7,NH128
JNB ACC.0,EVEN
INC A
CJNE A,#0,EVEN
MOV A,#0FEH
EVEN: MOV B,#2
DIV AB
MOV B,A
MOV TEMP4L,A
CALL DIV_16_8
MOV DU,B
MOV B,#2
CALL DIV_16_8
MOV A,B
JZ LAMT1
MOV A,TEMP4L
ADD A,DU
MOV B,A
LAMT1: POP ACC
JMP EXIT5
NH128: CALL DIV_16_8
POP ACC
EXIT5: RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON TG_DUNG
;Chuong trinh tinh (A/B)*C=A1*C+B1*C/B=A1*C+A2*C+E(sai so) (C<B)
;INPUT: A=XL:XH, B=B, C:YL:YH
;OUTPUT: PHAN NGUYEN:ZL:ZH, PHAN DU B
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TG_DUNG: MOV R6,XL
MOV R7,XH
MOV B,CBC
CALL DIV_16_81
MOV XL,R6
MOV XH,R7
MOV TEMP3L,B
MOV YL,CL
MOV YH,CH
CALL MUL_16
MOV TEMP2L,ZL
MOV TEMP2H,ZH
MOV XL,TEMP3L
MOV XH,#0
MOV YL,CL
MOV YH,CH
CALL MUL_16
MOV R6,ZL
MOV R7,ZH
MOV B,CBC
CALL DIV_16_81
MOV XL,R6
MOV XH,R7
MOV TEMP3H,B
MOV YL,TEMP2L
MOV YH,TEMP2H
CALL ADD16
MOV B,TEMP3H
RET
CDL: MOV 3AH,R6
MOV 3BH,R7
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON HIEN THI CHIEU DAI KHI CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DISPLAY: MOV A,3DH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,ELSE
CALL CDC
CALL XUAT
INC R0
JMP BQ1
ELSE: CALL CDT
CALL XUAT
BQ1: INC R1
INC 3DH
MOV A,3DH
CJNE A,#7,ELSE1
MOV 3DH,#1
MOV R0,#3AH
MOV R1,#4AH
ELSE1: RET
DKD: CLR 26H
CLR 25H
CLR 24H
CLR 23H
CLR 22H
CLR 21H
MOV 7AH,#200
MOV 7BH,#200
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
CHUONG TRINH CON NAP XUAT DU LIEU
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
NAP_DULIEU: NOP
QUETPHIM: MOV R2,#100
BACK0: JB P2.2,PHIM_1
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
; TANG GIA TRI CAC LED(3->6) : 0 ->9->0
;TANG GIA TRI CAC LED(2) : 0 ->4->0
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
DJNZ R2,BACK0
MOV A,7DH
ADD A,#59H
MOV R0,A
INC @R0
MOV A,@R0
CJNE A,#10,$+7
JC $+4
MOV @R0,#0
CJNE R0,#5BH,$+10
CJNE A,#5,$+7
JC $+4
MOV @R0,#0
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 6 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_1: JNB 26H,QLED6ON
MOV A,5FH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED6OFF
CLR 26H
MOV 7BH,#200
QLED6ON: MOV A,5FH
ORL A,#40H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#6,QLED6OFF
DJNZ 7AH,QLED6OFF
MOV 7AH,#200
SETB 26H
QLED6OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;GIAM GIA TRI CAC LED(3->6) : 9 ->0->9
;GIAM GIA TRI CAC LED(2) : 4 ->0->4
;XUAT LAI DATA DA NHAP THEO THU TU GIAM DAN THEO TUNG
CHE ;DO
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK1: JB P2.3,PHIM_2
DJNZ R2,BACK1
MOV A,7DH
ADD A,#59H
MOV R0,A
DEC @R0
MOV A,@R0
CJNE A,#255,$+5
MOV @R0,#9
CJNE R0,#5BH,$+8
CJNE A,#255,$+5
MOV @R0,#4
MOV A,7DH
CJNE A,#2,$+7
JNB 30H,$+4
CALL XUATDATA
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 5 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_2: JNB 25H,QLED5ON
MOV A,5EH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED5OFF
CLR 25H
MOV 7BH,#200
QLED5ON: MOV A,5EH
ORL A,#30H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#5,QLED5OFF
DJNZ 7AH,QLED5OFF
MOV 7AH,#200
SETB 25H
QLED5OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHON LED TU PHAI SANG TRAI : 6->2->6
;LED DUOC CHON NHAP NHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK2: JB P2.4,PHIM_3
DJNZ R2,BACK2
DEC 7DH
CALL DKD
MOV A,7DH
CJNE A,#2,$+8
MOV 5AH,#1
SETB 30H
JMP $+5
MOV 5AH,#0
CLR 30H
MOV A,7DH
CJNE A,#1,$+5
MOV 7DH,#6
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 4 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_3: JNB 24H,QLED4ON
MOV A,5DH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED4OFF
CLR 24H
MOV 7BH,#200
QLED4ON: MOV A,5DH
ORL A,#20H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#4,QLED4OFF
DJNZ 7AH,QLED4OFF
MOV 7AH,#200
SETB 24H
QLED4OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHON LED TU TRAI SANGPHAI : 2->6->2
;LED DUOC CHON NHAP NHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK3: JB P2.5,PHIM_4
DJNZ R2,BACK3
INC 7DH
CALL DKD
MOV A,7DH
CJNE A,#2,ST11
MOV 5AH,#1
SETB 30H
ST11: MOV 5AH,#0
CLR 30H
MOV A,7DH
CJNE A,#7,ST
MOV 7DH,#2
ST: NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED3 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_4: JNB 23H,QLED3ON
MOV A,5CH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED3OFF
CLR 23H
MOV 7BH,#200
QLED3ON: MOV A,5CH
ORL A,#10H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#3,QLED3OFF
DJNZ 7AH,QLED3OFF
MOV 7AH,#200
SETB 23H
QLED3OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;LUU GIA TRI CAN NAP THEO TUNG CHE DO
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK4: JB P2.6,PHIM_5
DJNZ R2,BACK4
INC 5AH
MOV A,5AH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,$+8
MOV 5AH,#0
CLR 30H
JMP $+7
MOV 5AH,#1
SETB 30H
CALL NAPDATA
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED2 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
; CHI DINH CHE DO TU : 0->4
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_5: JNB 22H,QLED2ON
MOV A,5BH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED2OFF
CLR 22H
MOV 7BH,#200
QLED2ON: MOV A,5BH
ORL A,#60H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#2,QLED2OFF
DJNZ 7AH,QLED2OFF
MOV 7AH,#200
SETB 22H
QLED2OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
; KET HOP VOI LED1=1 THOAT KHOI CHUONG TRINH NHAP DATA
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK5: JB P2.7,THOAT
DJNZ R2,BACK5
INC 7FH
MOV A,7FH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,$+8
MOV 7FH,#0
CLR 31H
JMP $+5
MOV 7FH,#1
SETB 31H
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED1 : GOM 2 GIA TRI (0,1)
; 0: NAP GIA TRI ,0->1 :LUU GIA TRI
; 1:KET HOP VOI PHIM 5 XEM DATA DA NHAP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
THOAT: JNB 21H,QLED1ON
MOV A,5AH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED1OFF
CLR 21H
MOV 7BH,#200
QLED1ON: MOV A,5AH
ORL A,#50H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#1,QLED1OFF
DJNZ 7AH,QLED1OFF
MOV 7AH,#200
SETB 21H
QLED1OFF: JNB 30H,$+3
JMP $+4
JMP QUETPHIM
JNB 31H,TTQP1
CLR 30H
CLR 31H
MOV 7EH,#0
MOV 7FH,#0
JMP $+3
TTQP1: JMP QUETPHIM
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHUONG TRINH CON NHAP DATA
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
NAPDATA: MOV A,5BH
CJNE A,#0,NAPDATA0
MOV A,5EH
SWAP A
ORL A,5FH
MOV LENGTHL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV LENGTHH,A
NAPDATA0: MOV A,5BH
CJNE A,#1,NAPDATA1
MOV A,5EH
SWAP A
ORL A,5FH
MOV TGCCL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV TGCCH,A
NAPDATA1: MOV A,5BH
CJNE A,#2,NAPDATA2
MOV A,5EH
SWAP A
ORL A,5FH
MOV SLCCL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV SLCCH,A
NAPDATA2: MOV A,5BH
CJNE A,#3,NAPDATA3
MOV A,5EH
SWAP A
ORL A,5FH
MOV SCKP1,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV SCKP2,A
NAPDATA3: MOV A,5BH
CJNE A,#4,NAPDATA4
MOV A,5EH
SWAP A
ORL A,5FH
MOV LD1L,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV LD1H,A
NAPDATA4: NOP
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHUONG TRINH CON XUAT DATA DA NHAP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
XUATDATA: MOV A,5BH
CJNE A,#0,XUATDATA0
MOV A,LENGTHL
ANL A,#0FH
MOV 5FH,A
MOV A,LENGTHL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,LENGTHH
ANL A,#0FH
MOV 5DH,A
MOV A,LENGTHH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA0: MOV A,5BH
CJNE A,#1,XUATDATA1
MOV A,TGCCL
ANL A,#0FH
MOV 5FH,A
MOV A,TGCCL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,TGCCH
ANL A,#0FH
MOV 5DH,A
MOV A,TGCCH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA1: MOV A,5BH
CJNE A,#2,XUATDATA2
MOV A,SLCCL
ANL A,#0FH
MOV 5FH,A
MOV A,SLCCL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,SLCCH
ANL A,#0FH
MOV 5DH,A
MOV A,SLCCH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA2: MOV A,5BH
CJNE A,#3,XUATDATA3
MOV A,SCKP1
ANL A,#0FH
MOV 5FH,A
MOV A,SCKP1
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,SCKP2
ANL A,#0FH
MOV 5DH,A
MOV A,SCKP2
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA3: MOV A,5BH
CJNE A,#4,XUATDATA4
MOV A,LD1L
ANL A,#0FH
MOV 5FH,A
MOV A,LD1L
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,LD1H
ANL A,#0FH
MOV 5DH,A
MOV A,LD1H
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA4: NOP
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CT CON KIEM TRA 2 NUT STOP/START,PAUSE KHI CT DANG CHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
Q1P: MOV R3,#100
BACK7: JB P2.7,EXITQ2P
DJNZ 2,BACK7
SETB 31H
EXITQ2P: NOP
RET
END