Tải bản đầy đủ (.doc) (17 trang)

giám sát mạch chuyển đổi điện áp ghép nối máy tính qua giao diện rs 232

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (402.79 KB, 17 trang )

Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
Chương 1 : Giới thiệu các phần tử sử dụng:
1.1) RS 232:
Cổng nối tiếp RS 232 là giao diện phổ biến rộng rãi nhất. Người dùng máy
tính PC còn gọi cổng này là COM 1, còn COM 2 để tự do cho các ứng dụng
khác. Việc truyền dữ liệu qua cổng RS 232 được tiến hành theo cách nối tiếp,
nghĩa là các bit dữ liệu được gửi đi nối tiếp nhau trên một đường dẫn. Ưu điểm
của cổng nối tiếp là có khả năng truyền được đi xa, ít bị gây nhiễu so với khi sử
dụng cổng song song, và tiết kiệm được dây dẫn.
Ở đây ta xét loại 9 chân, có hình dáng và chức năng như hình dưới.
1.2) MAX 232
Hầu như tất cả các thiết bị số như vi điều khiển đều sử dụng các mức logic
TTL hay CMOS, trong khi điện áp truyền thông RS 232 là -25V đến 25V. Vì
vậy, để kết nối một thiết bị với một kênh RS 232 ta phải thay đổi mức điện áp
của RS 232 trở lại mức từ 0 đến 5V hoặc ngược lại. Bộ chuyển đổi được sử
dụng rộng rãi là MAX-232 (và tương thích với bộ vi xử lý). IC này cũng có hai
Sinh Viên : Phạm Minh Đức 1
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
luồng nhận và hai luồng gửi trên cùng một thiết bị. IC MAX232 có chân 16 với
một điện thế cung cấp 5V. Pin 16 được sử dụng như điện áp đầu vào (FCC),
pin 15 như mặt đất. Pin 8 và 13 được sử dụng như là đầu vào (nhận) RS-232,
trong khi các chân 7 và 14 như đầu ra (gửi) RS232. Cấu hình các chân của IC
MAX232 được thể hiện trong hình:
Ghép nối giữa RS 232 và MAX 232:
Sinh Viên : Phạm Minh Đức 2
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
1.3) Họ VDK 8051
Ghép nối với MAX 232:
Sinh Viên : Phạm Minh Đức 3


Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
1.4) ADC 0809
Vi mạch ADC0809 là một bộ biến đổi A/D 8 bit với 8 kênh vào Analog làm
việc độc lập với nhau. Các đầu vào analog này được so với điện thế 0V. Việc
chọn một trong 8 kênh được thực hiện bởi các đầu vào địa chỉ (A,B,C).
Các thông số kỹ thuật đặc trung cho vi mạch ADC 0809:
• Không đòi hỏi điều chỉnh điểm 0
• Quét động 8 kênh bằng logic địa chỉ
• Thời gian biến đổi : 100us
• Dải tín hiệu lối vào là Analog thi điện áp nguồn nuôi là 5V: 0-5V
• Tất cả tín hiệu vào ra số tương thích chuẩn TTL
• Độ phân giải 8 bit
• Dòng tiêu thụ: 0.3 mA
Sơ đồ chân của vi mạch:
Nguyên tắc làm việc của mạch như sau: để bắt đầu 1 quá trình chuyển đổi
thì cần 1 xung dương đến chân START, xung dương này đồng thời đưa đến
chân ALE để chốt địa chỉ tại các chân A,B,C vào vi mạch  cho phép xác định
kênh analog cần biến đổi; trong quá trình biến đổi chân EOC ở mức logic thấp,
khi quá trình biến đổi kết thúc tín hiệu tại chân này chuyển sang mức cao để
Sinh Viên : Phạm Minh Đức 4
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
báo hiệu kết thúc quá trình chuyển đổi; lúc này để đọc dữ liệu đã biến đổi ta cần
đưa 1 xung dương vào chân OE, dữ liệu sẽ đưa lên các chân D0-D7.
1.5) AD 7524
Cấu trúc bên trong và bảng chân lý:
Sinh Viên : Phạm Minh Đức 5
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính

Sinh Viên : Phạm Minh Đức 6
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
Chương 2 : Xây dựng modul ghép nối
2.1 Cấu hình phần cứng:
Dựa vào nguyên lý hoạt động các phần tử ta xây dựng được sơ đồ nguyên lý
như sau
Sinh Viên : Phạm Minh Đức 7
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
Sinh Viên : Phạm Minh Đức 8
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
2.2) Giao diện với người sử dụng:
Code:
Dim hs As Single
Private Sub Kenh1_Click()
MSComm1.Output = Chr(30)
MSComm1.Output = Chr(0)
Timer1.Enabled = True
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = False
Timer5.Enabled = False
Timer6.Enabled = False
End Sub
Private Sub Kenh2_Click()
MSComm1.Output = Chr(30)
MSComm1.Output = Chr(1)

Timer1.Enabled = False
Timer2.Enabled = True
Sinh Viên : Phạm Minh Đức
9
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
Timer3.Enabled = False
Timer4.Enabled = False
Timer5.Enabled = False
Timer6.Enabled = False
End Sub
Private Sub Kenh3_Click()
MSComm1.Output = Chr(30)
MSComm1.Output = Chr(2)
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = True
Timer4.Enabled = False
Timer5.Enabled = False
Timer6.Enabled = False
End Sub
Private Sub Kenh4_Click()
MSComm1.Output = Chr(30)
MSComm1.Output = Chr(3)
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = True
Timer5.Enabled = False

Timer6.Enabled = False
End Sub
Private Sub Kenh5_Click()
MSComm1.Output = Chr(30)
MSComm1.Output = Chr(4)
Timer1.Enabled = False
Timer2.Enabled = False
Sinh Viên : Phạm Minh Đức
10
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
Timer3.Enabled = False
Timer4.Enabled = False
Timer5.Enabled = True
Timer6.Enabled = False
End Sub
Private Sub Kenh6_Click()
MSComm1.Output = Chr(30)
MSComm1.Output = Chr(5)
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = False
Timer5.Enabled = False
Timer6.Enabled = True
End Sub
Private Sub Thoat_Click()
e = MsgBox("Are you sure????", vbYesNo, "EXIT")
If e = vbYes Then End

End Sub
Private Sub Stop_Click()
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = False
Timer5.Enabled = False
Timer6.Enabled = False
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
Sinh Viên : Phạm Minh Đức
11
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Private Sub Option1_Click()
MSComm1.Output = Chr(20)
MSComm1.Output = Chr(40)
hs = 10 / 255
End Sub
Private Sub Option2_Click()
MSComm1.Output = Chr(20)
MSComm1.Output = Chr(80)
hs = 5 / 255
End Sub

Private Sub Option3_Click()
MSComm1.Output = Chr(20)
MSComm1.Output = Chr(160)
hs = 2 / 255
End Sub
Private Sub Option4_Click()
MSComm1.Output = Chr(20)
MSComm1.Output = Chr(3)
hs = 1 / 255
End Sub
Private Sub Option5_Click()
MSComm1.Output = Chr(20)
MSComm1.Output = Chr(4)
Sinh Viên : Phạm Minh Đức
12
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
hs = 0,5 / 255
End Sub
Private Sub Option6_Click()
MSComm1.Output = Chr(20)
MSComm1.Output = Chr(5)
hs = 0,2 / 255
End Sub
Private Sub Timer1_Timer()
MSComm1.Output = Chr(10)
Text1.Text = MSComm1.Input * hs
End Sub
Private Sub Timer2_Timer()

MSComm1.Output = Chr(10)
Text2.Text = MSComm1.Input * hs
End Sub
Private Sub Timer3_Timer()
MSComm1.Output = Chr(10)
Text3.Text = MSComm1.Input * hs
End Sub
Private Sub Timer4_Timer()
MSComm1.Output = Chr(10)
Text4.Text = MSComm1.Input * hs
End Sub
Private Sub Timer5_Timer()
MSComm1.Output = Chr(10)
Text5.Text = MSComm1.Input * hs
End Sub
Sinh Viên : Phạm Minh Đức
13
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
Private Sub Timer6_Timer()
MSComm1.Output = Chr(10)
Text6.Text = MSComm1.Input * hs
End Sub
Code cho 89c51:
#include <sfr51.inc>
ORG 00H
LJMP MAIN
org 23h
ljmp ngat

org 30h
main:
mov scon,#01010000b
setb ea
setb es
mov tmod,#21h
mov th1,#-3
setb tr1
SJMP $
ngat:
jb ti,xoa
clr ri
mov a,sbuf
cjne a,#10,kt2
setb p1.3
lcall delay2us
clr p1.3
lap:
jb p1.4,sendpc
sjmp lap
sendpc:
Sinh Viên : Phạm Minh Đức
14
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
setb p1.5
lcall delay2us
clr p1.5
mov sbuf,p0

reti
xoa:
clr ti
reti
kt2:
cjne a,#20,kt3
clr ea
jnb ri,$
clr ri
mov a,sbuf
clr p3.4
mov p2,a
setb p3.4
setb ea
reti
kt3:
cjne a,#30,thoat
clr ea
jnb ri,$
clr ri
mov a,sbuf
mov p1,a
setb ea
thoat:
reti
delay2us:
nop
nop
ret
Sinh Viên : Phạm Minh Đức

15
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy
Tính
end
2.3) Giải thích chương trình:
Ta có 6 kênh, ta sử dụng 6 timer để đo tín hiệu 1 kênh liên tục.
Ta quy ước khi truyền tín hiệu là 10 xuống cổng COM, tức là khi VDK nhận
được giá trị là 10 thì nó sẽ phải gửi lên cổng COM 1 giá trị nào đó.
Khi tín hiệu truyền xuống VDK qua cổng COM là 20 có nghĩa là thông báo
chọn dải điện áp đo.
Khi tín hiệu truyền xuống VDK qua cổng COM là 30 có nghĩa là thông báo
chọn kênh đo.
Ta sử dụng 6 kênh từ 0-5.
Nguyên lý hoạt động:
Ở đây ta có 2 đầu đo, một là “đầu đo điện áp cao” (lớn hơn bằng 5V gồm
2 dải điện áp 0-10V; 0-5V) và “đầu đo điện áp thấp” (nhỏ hơn 5V gồm 4 dải
điện áp 0-2V; 0-1V; 0-0,5V ; 0-0,2V). Do vậy trong khi sử dụng, ta cần chú
ý xác định dải điện áp đo rồi sử dụng đầu đo cho phù hợp.
Đầu đo điện áp thấp ta sử dụng qua khuếch đại thuật toán để nâng điện áp
lên chuẩn 5V, phù hợp với ADC 0804. Còn đầu đo điện áp cao ta sử dụng
DAC khuếch đại lập trình được có đảo (Ứng với dải đo 0-10V thì ta gửi
xuống số 8 bit là 40, tương tự với 0-5V là 80 )
Bắt đầu chương trình, mặc định của hệ thống là ta sử dụng kênh 1 với dải
do là 0-10V. Muốn dùng dải đo nào ta click vào dải đo đó, hoặc nếu muốn
thay đổi kênh đo, ta chỉ việc bấm vào nút tương ứng. Khi ta ấn vào 1 kênh
thì timer tương ứng với kênh đó sẽ được kích hoạt (các timer khác dừng hoạt
động), lúc này timer sẽ gửi 1 tín hiệu là 10 xuống VDK qua cổng COM và
chờ nhận tín hiệu từ VDK gửi lên sau đó hiển thị giá trị điện áp đo được ra ô
text tương ứng (với kênh lựa chọn). Khi thay đổi dải đo, thì tại đây, VDK

cũng sẽ nhận được lệnh để xuất tín hiệu chọn dải đo đúng với yêu cầu.
• Khả năng ứng dụng: Mạch ghép nối này có thể sử dụng để chuyển nhiều
tín hiệu điện áp (tương tự) vào trong máy tính thông qua cổng RS232,từ đó
ta có thể điều chỉnh được các tín hiệu tương tự này theo ý muốn. Ngoài ra
mạch ghép nối này cũng có thể áp dụng trong lĩnh vực các mạch đo lường,
cơ cấu đo là tương tự, và tín hiệu đo được được gửi trả về máy tính xử lý.
Sinh Viên : Phạm Minh Đức
16
Lớp : ĐTĐ49-ĐH2
Bài Tập Lớn ĐKSX Tích Hợp Máy Tính
Kết Luận
Qua thời gian làm BTL em đã hoàn thành nhiệm vụ được giao. Qua đó em
hiểu thêm nhiều về cách ghép nối các IC, visual basic, vi xử lý,…Tuy nhiên do
trình độ hiểu biết còn hạn chế nên BTL của em không tránh khỏi sai sót, em
mong được sự chỉ bảo thêm từ các thầy cô giáo và từ các bạn.
Em xin chân thành cảm ơn các thầy cô giáo trong bộ môn Điện Tự Động CN
và đặc biệt là sự chỉ bảo tận tình của thầy giáo Lưu Hoàng Minh.
Sinh Viên
Phạm Minh Đức
Sinh Viên : Phạm Minh Đức 17
Lớp : ĐTĐ49-ĐH2

×