Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
Chương 3
THIẾT KẾ PHẦN CỨNG VÀ PHẦN MỀM CHO HỆ THỐNG ĐO
LƯỜNG VÀ ĐIỀU KHIỂN NHIỆT ĐỘ ĐA KÊNH
1. Thiết kế mạch chuyển đổi A/D, D/A 8 kênh, dữ liệu truyền thông qua
cổng nối tiếp (COM).
Sơ đồ tổng quát:
Như vậy để tích hợp một mạch gồm có bộ chuyển đổi A/D, D/A truyền
thông qua cổng nối tiếp trên một bo mạch ta phải có các vi mạch cơ bản là: 1 bộ
chuyển đổi A/D (Analog – Digital), một bộ chuyển đổi D/A (Digital – Analog),
bộ chuyển tín hiệu từ nối tiếp sang song song và ngược lại, 1 vi mạch dồn kênh
(MUX) nếu vi mạch A/D chỉ có một đầu vào, 1 vi mạch phân kênh (DEMUX)
nếu vi mạch D/A chỉ có một kênh ra và một số vi mạch phụ khác. Sau đây ta lần
lượt tìm hiểu từng đối tượng; mỗi loại đối tượng trên đều có rất nhiều loại nên
các đối tượng dưới đây là các đối tượng được lùa chọn từ 1 trong các loại trên
như đã giới thiệu trong Chương 1.
1.1. Bộ chuyển đổi tương tự sang sè (A/D) ADC0809.
Sở dĩ ta chọn vi mạch này vì dây là bộ chuyển đổi A/D có 8 đầu vào nên nó
rất tốt cho một hệ thống có 8 kênh đo, ADC0809 gồm 2 phần: bộ chuyển đổi
A/D và một mạch chọn kênh vào, chúng được tích hợp trên một vi mạch nên độ
tin cậy rất cao khi thiết kế cho một hệ thống đo lường và điều khiển lớn. Sự lùa
chọn này là tối ưu so với việc ghép nối từ một bộ biến đổi A/D 1 đầu vào với
một vi mạch dồn kênh.
Bộ biến đổi A/D ADC 0809 rất giống với bộ biến đổi ADC0804 đã trình
bày ở Chương 1. Sù khác nhau cơ bản là ở con số các kênh lối vào đã được tăng
lên. Tổng cộng người sử dụng có 8 kênh làm việc hoàn toàn độc lập với nhau để
lùa chọn. Ở đây cần chú ý là các điện áp được so sánh với điện thế 0V. Còn một
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 56
H×nh 3.1: S¬ ®å tæng qu¸t mét bo m¹ch chuyÓn ®æi A/D, D/A qua cæng COM.
Điện áp so sánh được đưa qua tần lặp lại điện áp để đến chân ra V
REF
+, chân này
có điện trở lối vào cỡ 2.5kΩ. Tám kênh lối vào Analog được dẫn đến các chân
IN0÷IN7. Mẫu bit ở các lối vào địa chỉ A,B,C sẽ xác định xem kênh nào được
lùa chọn. khi đó, việc lùa chọn tuân theo quy định sắp xếp dưới đây:
C B A Kênh lối vào
được kích hoạt.
0 0 0 IN0
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 57
Adc0809
clock
Vcc
gnd
Vref+
Vref−
%&
%'
%(
%)
%*
%+
%,
%-
eoc
&
'
(
)
đường dẫn có thể được đọc tiếp.
1.2. Bộ biến đổi số sang tương tự (D/A) AD7524.
Bộ biến đổi D/A AD7524 là bộ biến đổi có bus dữ liệu là 8 bit, một đầu ra,
nên để thiết kế cho hệ thống có 8 kênh điều khiển thì ta phải có thêm một bộ
phân kênh với tín hiệu chọn kênh do máy tính phát ra.
Bộ biến đổi AD7524 làm việc theo nguyên tắc như trình bày ở chương1.
Điện trở R của mạng điện cỡ 10kΩ. Hình 3.3 chỉ ra một mạch điện điển hình
của bộ biến đổi D/A – AD7524.
Các lối ra OUT1 và OUT2 là các điểm chung của dòng điện. Dòng tiêu thụ
của vi mạch AD7524 khoảng 1mA khi điện áp nguồn là 5V. Điện áp nguồn ở
chân ra VDD có thể được lùa chọn trong khoảng 5÷15V. Tất cả các lối vào đều
tương thích TTL. Các chân ra CS (Chip Select) và WR (Write) khi ghi vào một
byte dữ liệu cần phải có mức Low. Sau đó, chân WR chuyển trở lại mức High và
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 58
(5÷,(5
&(+)
&
'
(
)
*
+
,
-
!
5
.4
.40
,
7
5−
.,%
,
5
,8
,−
+−
+8
,-µ
9
,-µ
,-
,-µ
(
,-µ
)
,-µ
,%
.,
:')+-
&
'
(
)
*
+
,
-
%+
,
,
H×nh 3.5: Module ghÐp nèi víi cæng nèi tiªp cña m¸y tÝnh.
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
byte dữ liệu được lưu trữ lại trong bộ biến đổi D/A. Khi sử dụng vi mạch
AD7524 thì điều đặc biệt đáng quan tâm là ở chân U
REF
(điện áp so sánh) có thể
cho phép đấu vào cả điện áp dương cũng như điện áp âm. Thậm chí điện áp này
cũng có thể là một điện áp xoay chiều.
1.3. Mạch phân kênh (Demultiplexer - DMUX) 8 đầu ra DM74138.
Mạch phân kênh có tác dụng chuyển tín hiệu từ 1 kênh vào ra 1 trong 8
kênh ở đầu ra ứng với 3 bit chọn C,B,A.
1.4. Bộ chuyển đổi tín hiệu từ nối tiếp sang song song và ngược lại.
Module chuyển đổi tín hiệu từ nối tiếp sang song song và ngược lại có linh
kiện trọng tâm là bộ phát nhận không đồng bộ vạn năng CDP6402 và một vi
mạch phụ trợ khác là vi mạch MAX232 của hãng MAXIM để thích ứng với tín
hiệu ở mức −12V÷12V trên giao diện RS232 (COM).
Module này cho phép đọc vào cũng như đưa ra 8 tín hiệu TTL qua giao
diện nối tiếp của máy tính PC.
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 59
&),*
!-
!,
!+
!*
!)
!(
4 RRD Receive Register Disable
Khi tín hiệu này dẫn đến mức High thì các đường dẫn lối ra
D0OUT÷D7OUT chuyển sang trạng thái điện trở cao
5
÷
12
D7OUT
÷
D0OUT
Các bit dữ liệu đã đến theo cách nối tiếp ở chân 20 sẽ xuất
hiện theo cách song song ở các lối ra ba trạng thái (tristate):
D7OUT÷D0OUT.
13 PE Parity Error: Sai số chẵn lẻ
Một mức logic 1 ở chân này báo hiệu là bit chẵn lẻ đã được
lập trình không đồng nhất với bit nhận được. Nếu như bit
chẵn lẻ không được kích hoạt thì chân này nằm ở mức Low.
14 FE Framming Error: Sai sè Framming
Mức High ở chân này báo hiệu là bit dừng đầu tiên là không
có giá trị. FE giữ nguyên High cho đến khi nhận được một
bit dừng có giá trị.
15 OE Sai sè Overrun.
OE sau đó trở nên High, nếu như một byte mới đã được
nhận. Trước khi byte cũ được đọc từ thanh ghi nhận.
16 SFD Status Flag Disable
Một mức cao ở chân này có nghĩa là các lối ra PE, FE, OE,
DE và TBRL trở nên có điện trở cao.
17 RRC Receiver Register Clock:
Ở RRC, tín hiệu giữ nhịp của bộ nhận nối tiếp được dẫn đến.
Tần số cần phải được thiết lập ở giá trị 16 lần lớn hơn tốc độ.
18 DRR Data Received Reset
÷
33
D0IN
÷
D7IN
Các bit dữ liệu ở các lối vào này được gửi trực tiếp đến nơi
nhận.
D0IN là LSB, D7IN là MSB
34 CRL Control Register Load: nạp thanh ghi điều khiển. Một mức
High nạp các bit điều khiển vào thanh ghi điều khiển.
35 PI
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 62
CLS2 CLS1 PI EPE SBS DATA BIT PARITY BIT
0 0 0 0 0 5 LÎ (oDD)
0 0 0 0 1 5 LÎ
0 0 0 1 0 5 CH½N
0 0 0 1 1 5 CH½N
0 0 1 x 0 5 DISABLED
CLS2 CLS1 PI EPE SBS DATA BIT PARITY BIT
0 0 1 X 0 0 DISABLED
0 1 0 0 0 0 LÎ
0 1 0 0 0 0 LÎ
0 1 0 1 0 0 CH½N
0 1 0 1 0 0 CH½N
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
36 SBS
37 CLS2
38 CLS1
39 EPE
1 1 1 X 0 8 DISABLED
1 1 1 X 1 8 DISABLED
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
1.4.2. Vi mạch MAX 232.
Được hãng MAXIM sản xuất để thích ứng với tín hiệu ở mức –12V÷12V
trên giao diện RS232.
Vi mạch này nhận mức RS232 đã được gưởi từ máy tính PC và biến đổi tín
hiệu này thành tín hiệu TTL, để sau đó dẫn tới bộ UART CDP6402. Mặt khác
tín hiệu từ bộ UART được biến đổi thành mức –12V÷12V và gửi tới máy tính
PC. Theo cách này khoảng cách giữa máy tính PC và module biến đổi có thể đạt
đến 20m.
1.5. Ghép nối các module đã giới thiệu ở trên thành một bo mạch.
Xem Hình 3.8 ở trang sau
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 64
+*+
58
7
5−
.,%
,
5
,8
,−
+−
+8
,-µ
9
,-µ
I/P – chuyển đổi dòng điện sang điện áp.
Nguyên lý làm việc:
Hơi từ thiết bị gia nhiệt được bơm tuần hoàn qua van rồi tới lô sấy. Khi
lượng hơi vào lô sấy càng nhiều thì nhiệt độ lô sấy càng tăng. Điều đó đồng
nghĩa với việc điện trở của cảm biến Pt100 cũng tăng vì:
Rt = R
0
(1 + 3,97×10
-
3×t + 5.85×10
-7
×t
2
)
Với:t – nhiệt độ môi trường đặt Pt100. t – nhiÖt ®é m«i trêng ®Æt
Pt100.
Rt – điện trở của Pt100 ở nhiệt độ t
R
0
– điện trở của Pt100 ở 0
0
C (R
0
= 100)
Giá trị điện trở nhận được từ Pt100 sẽ được đưa đến bộ chuyển đổi R/U để
chuyển thành giá trị điện áp cần thiết (thường là:0÷5V). Sau khi qua bộ chuyển
đổi R/U tín hiệu được đưa qua bộ chuyển đổi A/D, tín hiệu Analog được biến
đổi thành các giá trị sô (Digital) rời rạc và đưa vào máy tính. Tại đâytín hiệu sẽ
được máy tính xử lý theo yêu cầu. Tín hiệu điều khiển được đưa qua bộ chuyển
đổi D/A chuyển đổi thành tín hiệu analog. Tín hiệu này qua bộ chuyển đổi I/P
với van bướm, 90
0
với van bi. Đặc tính
là tuyến tính (L) hoặc tỷ lệ phần trăm (P) có thể lùa
chọn kểu tác động trực tiếp (D) hay tác động ngược
(R)
Nguồn cung cấp Mat 800KPA (8bar), khí khô và sạch
Độ chính xác Dải trễ <0.3% tín hiệu vào
Độ trễ <0.5% so với chuyển động của van
Trọng lượng 1.8Kg
Sơ đồ nguyên lý của bộ điều khiển van.
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 68
H×nh 3.10: S¬ ®å nguyªn lý ho¹t ®éng cña bé ®iÒu khiÓn van
,;<=><>?3#1 @AB#1
+;<CD31 9;EF1
*;#G1 ,-;0H>H<1
);IJKKLMI1 ,,;/NC1
(;IOP>1 ,+;5>QR1
';S>>1 ,*;5P>T1
&@AN>UVW<1 ,);/NC<XT1
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
Cam disc (cam hình đĩa):
Bộ phận cam thể hiện mối qua hệ giữa tín hiệu điều khiển và chế độ đặt van
tuỳ theo các loại khác nhau chính vì vậy cần phải chọn lùa đặc tính theo tỷ lệ
phần trăm (P) hay đặc tính tuyến tính (L). Có thể chọn loại có góc quay 60
0
(van
bướm) hay 90
0
thành tính hiệu dòng điện, tín hiệu dòng điện sau đó được đưa qua bộ chuyển
đổi I/P thành tín hiệu điện áp đưa vào van để điều khiển góc mở van.
Sau đây ta lần lượt xét hai mạch chuyển đổi U/I và I/P.
a. Mạch chuyển đổi U/I.
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 69
HØnh 3.12: S¬ ®å nguyªn lý bé biÕn ®æi I/P.
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
Chuyển đổi tín hiệu 0÷5V được phát ra từ bộ D/A sang dòng điện 4÷20mA
để truyền cho bộ chuyển đổi I/P điều khiển van khí nén.
Sơ đồ nguyên lý:
U
vào
: 0÷5V
I
ra
: 4÷20mA
Chọn R
1
là biến trở 20K
R
3
.I
ra
=U
vào
+U
offset
⇒ R
3
,
.
+
.
)
.
*
%
5
H×nh 3.11: s¬ ®å nguyªn lý m¹ch chuyÓn ®æi U/I.
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
Nguyên lý làm việc:
Khi có dòng điện chạy qua cuộn dây bị nam châm hót xuống, vòi phun 4 bị
nắp đậy 3 đậy lại do đó áp suất trong buồng A tăng lên làm van cầu 5 và áp suất
trong buồng B cũng tăng lên dẫn đến áp suất ra cũng tăng lên.
Áp suất ra qua xi phông 6 liên hệ nghịch tác động trở lại cánh tay đòn làm
van mở ra sao cho mômen lực đẩy phản hồi của xiphông cân bằng với mômen
lực hót của nam châm. Kết quả là áp suất P tỷ lệ với dòng điện vào.
Áp suất khí nén ra thay đổi trong khoảng 0.2÷1at. Tại thời điểm ban đầu
điều chỉnh vít sao cho áp suát ra P
r
= 0.2 ứng với dòng điện lúc đó là 4mA. Đây
là giới hạn dưới. Giới hạn trên được điều chỉnh bởi R
1
sao cho khi dòng vào
bằng 20mA thì P
r
+ Rời rạc hoá bộ điều khiển P:
Phương trình bộ điều khiển P:
=> phương trình rời rạc chỉ đơn giản là: u[k]=K
c
.e[k]
+ Rời rạc bộ điều khiển PI:
Phương trình bộ điều khiển PI:
đặt:
=>
<=> 2T
i
.Z.u-2T
i
.u=(2K
c
T
i
+T)Z.e+(T-2K
c
T
i
)e
=> 2T
i
.u[k+1]-2T
i
.u[k]=(2K
c
T
i
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 72
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
sau khi thực hiện rời rạc như trên ra được phương trình sai phân:
u[k+2]=u[k]+B
2
*e[k+2]+B
1
*e[k+1]+B
0
*e[k]
trong đó : B
2
=K
c
+1/(2T
c
)+(2T
d
)/T
B
1
=T/T
c
-(4T
d
)/T
B
0
=B
kệm thời gian hơn hẳn các loại trên.
Visual Basic gắn liền với khái niệm lập trình trực quan (visual), nghĩa là khi
thiết kế chương trình, ta sẽ được nhìn thấy ngay kết quả qua từng thao tác và
giao diện khi chương trình thực hiện. Đây là thuận lợi lớn so với các ngôn ngữ
lập trình khác. Visual Basic cho phép tạo các đối tượng một cách đơn giản,
nhanh chóng với màu sắc, kích thước, hình dáng trang nhã.
Để phát triển một ứng dụng với Visual Basic ta có thể thực hiện theo bốn
bước, tuy nhiên sự phân cách giữa các bước là không rõ ràng.
Bước đầu tiên: ta phải hoạch định những gì người dùng sẽ thấy – nói cách
khác, là thiết kế các màn hình giao diện người – máy.
Bước thứ hai: sau khi thiết kế xong dao diện sẽ lập trình truyền thống.
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 74
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
Visual Basic là ngôn ngữ lập trình theo kiểu đáp ứng các biến cố tức là các
đối tượng trong Visual Basic sẽ nhận biết các biến cố chẳng hạn như biến cố
nhấp chuột, Ên một phím nào đó. Các đối tượng sẽ đáp ứng các biến cố tuỳ theo
mã lệnh mà ta đã lập trình. Điều này làm cho lập trình Visual Basic về cơ bản
khác với lập trình quy ước.
Các chương trình trong lập trình qui ước chạy từ trên xuống. Tức là sự thi
hành bắt đầu từ dòng đầu tiên rồi chuyển theo dòng chảy của của chương trình
đến các phần khác theo yêu cầu.
Bước thứ ba và thứ tư là tìm lỗi và chỉnh sửa các mã lệnh có lỗi.
Tuy nhiên như ta đã nói ở trên là sự phân các giữa các bước là không rõ
ràng. Trong lóc ta đang lập trình các biến cố ta có thể thêm một đối tượng nào
đó vào trong ứng dụng mà ta cảm thấy cần thiết, hoặc lúc ta lập trình có thể tiến
hành tìm lỗi và sửa lỗi phần mà ta đã lập trình được. Điều này làm giảm sự phức
tạp trong tìm lỗi và sửa lỗi đối với các chương trình lớn.
Để có thể tiến hành điều khiển, giám sát các quá trình trong công nghiệp
bằng máy tính, trước hết phải có được mối liên hệ cần thiết giữa máy tính với
Out Port adr.datXuất dữ liệu ra một địa chỉ XuÊt d÷ liÖu ra mét ®Þa chØ
In Port adrĐọc dữ liệu từ một địa chỉ §äc d÷ liÖu tõ mét ®Þa
chØ
Ta phải sử dụng thư viện: PORT.DLL
Thì khi thực hiện một thủ tục ta phải khai báo như sau:
Declare Sub OUTPORT Lib “PORT.DLL” (ByVal Adr As Integer, ByVal Dat As Integer)
Declare Sub INPORT Lib “PORT.DLL” (ByVal Adr As Integer, ByVal Dat As Integer)
Sau đó ta mới thực hiện các thủ tục có sử dụng các hàm vào/ ra trên:
Private Sub Command1_Clik()
OUTPORT 97, (INPORT (97) Or 2)
End Sub
Vậy để sử dụng được các ứng dụng có sử dụng các thư viện DLL trên một
máy tính khác thì trong máy tính đó phải có các thư viện cần thiết. Với đồ án
này việc truyền thông qua cổng nối tiếp có thể sử dụng đối tượng có sẵn trong
Visual Basic là MSComm. Khi ứng dụng MSComm ta phải Ên định một số các
đặc tính của nó cho phù hợp với yêu cầu truyền thông như: tốc độ boud, số
lượng bit dữ liệu, tính chẵn lẻ, số lượng bit dừng đặc biệt là khi thiết lập trạng
thái của các đường vào ra dữ liệu.
Như trên ta thấy ưu điểm của Visual Basic là rất lớn nhưng một điều cần
lưu ý là khi lập trình điều khiển thì vấn đề thời gian thực đối với Visual Basic là
rất hạn chế do các ứng dụng viết bằng Visual Basic chỉ có thể chạy trên nền
WINDOWS. Vì thế với các đồ án lớn, cần quá trình đo lường điều khiển chính
xác tác động nhanh ta chỉ nên ứng dụng Visual Basic như là các đồ án thử
nghiệm như thế ta sẽ tiết kiệm được thời gian trong việc thiết kế một trình điều
khiển để chạy thử. Sau khi chạy thử thành công ta có thể dùa vào trình điều
khiển viết bằng Visual Basic để chuyển đổi viết bằng ngôn ngữ lập trình khác có
khả năng giải quyết được vấn đề thời gian thực như ngôn ngữ: C/C
++
, visual C
+
X_CHANGE = X_REAL_VAR - 420
End Function
Giao diện chính người dùng:
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 77
Trường Đại Học Bách Khoa Hà Nội – Bộ môn điều khiển tự động – 5/2002
Đoạn mã chương trình 4
−
2: Main.frm
Option Explicit
Dim StartEnabled As Boolean
Dim Kc(7), Ti(7), A(7), B(7) As Double
Dim U1(7), E2(7), E1(7) As Double
Dim DeltaU(7), UMax(7), UMin(7) As Double
Private Sub cmdexit_Click()
Dim x1 As Boolean
If (cmdstartall.Caption = "&Stop") Then
Beep: Beep: lblMessage.Caption = " You must first stop MEASURING and
CONTROLLING before you can EXIT PROGRAM ?"
tmrlbl.Enabled = True
Else
x1=Message(" Are you sure you want to EXIT PROGRAM ?", "Message", 0, False)
If x1 = True Then End
End If
End Sub
Private Sub cmdproperties_Click()
If (cmdstartall.Caption = "&Stop") Then
Beep
lblMessage.Caption = " You must stop MEASURING and stop CONTROLLING before you
can change all Parameter !"
Exit Sub
End If
End Sub
Public Sub cmdsingle_Click(Index As Integer)
frmchannel1.Show: frmchannel1.SSPic.Tab = Index
frmchannel1.cboMeasures(Index).SetFocus
End Sub
Private Sub tmrmeasures_Timer()
Dim Temp As Boolean
lblState.Caption = "RUNNING "
If MSCOM2.PortOpen = True Then
'Start Mesuring and Controlling
Dim I As Integer
For I = 0 To 7
If frmProperty.cboMeasures(I).ListIndex = 1 Then
'Start Measures
DeltaU(I) = CharToDouble(frmProperty.txtDeltaU(I).Text, False)
UMax(I) = CharToDouble(frmProperty.txtUMax(I).Text, True)
UMin(I) = CharToDouble(frmProperty.txtUMin(I).Text, True)
'Output address
MSCOM2.DTREnable = True 'change old address
MSCOM2.Output = Str(frmProperty.txtaddress(I).Text)
MSCOM2.DTREnable = False ' Hold new address
Uin(I) = MSCOM2.Input: txtmainrealpoint(I).Text = Str(CharToDouble(Uin(I), True) /
DeltaU(I))
If ((CharToDouble(txtmainrealpoint(I).Text, False) - CharToDouble(txtmainsp(I).Text,
False)) / CharToDouble(txtmainsp(I).Text, False)) * 100 >
CharToDouble(frmProperty.txtOverAdjust(I).Text, False) Then
'OverAdjust Error
frmProperty.cboMeasures(I).ListIndex = 0
Next
'End of Measures and Controls (one cycle)
End If
End Sub
Giao diện người dùng để thay đổi các thông số hệ thống:
∗
Chọn kênh điều khiển, thay đổi điểm đặt (Set Point), độ quá điều chỉnh.
Đồ án tốt nghiệp.
Đinh Xuân Thắng – Lê Văn Hà 80