SƠ ĐỒ MẠCH KHỐI GIAO TIẾP

Một phần của tài liệu Thiết kế, chế tạo mô hình tay máy 3 bậc tự do phục vụ công việc cấp phôi tự động (Trang 71)

Truyền thông nối tiếp không đồng bọ theo chuẩn RS 232 có mức logic 1 v à 0 tương ứng với điện áp -12V và +12V. Trong khi đó các linh kiện sử dụng trong họ vi điều khiển có các mức logic 1 v à 0 tương ứng với các mức điện áp 5V và 0V. Vì vậy để truyền thông nối tiếp không đồng bộ theo chuẩn RS 232 giữa máy tính PC và vi điều khiển ta phải dùng linh kiện trung gian để biến đổi điện áp cho tương thích.

Trong mạch sử dụng linh kiện chuyên dụng MAX 232.

MAX 232 có 2 kênh, mỗi kênh có 1 cặp tín hiệu vào và ra. Kê nh 1 có ( R1 IN, T1 IN và R1 OUT, T1 OUT). Kênh 2 có ( R2 IN, T2 IN và R2 OUT, T2 OUT).

MAX 232 mắc theo sơ đồ không đổi trong mọi ứng dụng theo quy định của nhà sản xuất.

Sơ đồ chân của MAX 232

Dưới đây là sơ đồ mạch khối nối tiếp hoàn chỉnh dùng MAX 232.

Trong mạch sử dụng cả 2 đường RXD và TXD của kênh 1 kết nối với COM1 (DB9) trên PC.

Khi sử dụng theo nguyên tắc truyền thông nối tiếp các dây tham khảo truyền số liệu và dây nối đất của nguồn được tách riêng để đảm bảo độ tin cậy của tín hiệu và chống nhiễu.

III. SƠ ĐỒ MẠCH BỘ CHUYỂN ĐỔI ADC 809

Bộ chuyển đổi ADC 809 dùng để chuyển đổi tín hiệu tương tự (analog ) thành tín hiệu số ( digital ) để truyền tín hiệu về vi điều kh iển vị trí hiện tại của tay máy.

Bộ chuyển đổi ADC 809 có 8 kênh đầu vào có nghĩa là kết nối đựơc với 8 cảm biến, nhưng chỉ có 1 đầu ra như vậy tại 1 thời điểm chỉ có 1 cảm biến đ ược giám sát.

IV. THIẾT BỊ CẢM BIẾN

Ở đây cảm biến thực chất là 1 triết áp ( triết áp có nghĩa là triết ra một phần điện áp từ đầu vào tuỳ theo mức độ điều chỉnh). Như vậy tín hiệu tương tự ở đây là điện áp đầu vào, sự thay đổi điện áp đầu vào sẽ được chuyển qua bộ chuyển đổi ADC 809 thành tín hiệu số tương ứng với sự thay đổi điện áp đầu vào.

CHƯƠNG IV

VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN

I: TÓM TẮT CHƯƠNG TRÌNH ĐIỀU KHIỂN

Hoạt động của tay máy được điều khiển bởi các số liệu nhập từ máy tính truyền xuống. Chương trình viết cho máy tính PC bằng ngôn ngữ Visual Basic 6.0. Chương trình viết cho Vi điều khiển bằng ngôn ngữ Assembly.

Giải thích chức năng của các khối trong s ơ đồ.

* Khối giao tiếp truyền thông nối tiếp.

+ Truyền dữ liệu xuống trung tâm xử lý (89C52) để điều khiển các hoạt động như từ bàn phím trên board.

+ Nhận dữ liệu từ vi điều khiển để xuất dữ liệu l ên màn hình máy tính. + Đảm bảo sự liên lạc thông suốt giữa PC và vi điều khiển bằng cách chuyển đổi tín hiệu chuẩn truyền thông RS232 sang chuẩn ph ù hợp với các linh kiện họ vi điều khiển.

* Khối trung tâm xử lý (89C52)

+ Nhận lệnh từ máy tính, chạy chương trình tương ứng với mã lệnh. + Nhận tín hiệu từ cảm biến để xuất lệnh Stop.

+ Điều khiển động cơ DC. + Giao tiếp với máy tính.

* Khối thi hành

+ Điều khiển đóng ngắt và đảo chiều động cơ DC.

* Khối cảm biến

+ Khối cảm biến vị trí.

Nhấn lệnh (máy tính xuất mã lệnh)  Vi xử lý nhận và kiểm tra mã lệnh để thực thi chương trình ứng với mã lệnh đó. Nhận tín hiệu truyền về từ cảm biến để so sánh giá trị nhận được với giá trị nạp từ máy tính và sẽ xuất lệnh stop, đồng thời liên tục truyền tín hiệu vị trí hiện tại của tay máy l ên máy tính để hiển thị lên màn hình điều khiển.

Sơ đồ khối

Trình tự thực hiện công việc của chưong trình. + Đầu tiên trở về vị trí HOME (toạ độ gốc).

- Nâng tay lên cao tới vị trí cao nhất (chạm công tắc h ành trình)quay thân tới khi chạm công tắc hành trình quay cánh tay tới khi chạm công tắc hành trình mở rộng tay kẹp.

+ Đợi lệnh thực thi chương trình tương ứng.

- Quay phần thân  phần tay máy tới vị trí phôi hạ cánh tay xuống để kẹp vật nâng vật lên khỏi mặt bằng để phôi quay phần thân quay phần tay tới vị trí gia công hạ tay xuống để đặt vật nâng tay lên tới vị trí cao nhất và đợi thời gian gia công xong hạ tay xuống để kẹp vật nâng vật lên khỏi mặt bằng để chi tiết quay phần thân quay phần tay tới vị trí thành phẩm hạ tay xuống để đặt vật lặp lại chu trình công việc như trên.

II: VIẾT CHƯƠNG TRÌNH CHO PC1. Màn hình điều khiển 1. Màn hình điều khiển

2. Chương trình

Option Explicit

Dim a, b, Z, T As Boolean Dim AA, BB, CC As Boolean Dim so, data1 As Integer Dim dem As Integer

Private Sub Command1_Click() End

End Sub

Private Sub Command10_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "7"

MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 If AA = True Then

If a = True Then

Text4.Text = Text4.Text + "7"

ElseIf b = True Then Text5.Text = Text5.Text + "7" ElseIf Z = True Then Text6.Text = Text6.Text + "7" Else: Text13.Text = Text13.Text + "7"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "7"

ElseIf b = True Then Text8.Text = Text8.Text + "7" ElseIf Z = True Then Text9.Text = Text9.Text + "7" Else: Text13.Text = Text13.Text + "7"

End If Else

If a = True Then

Text1.Text = Text1.Text + "7"

ElseIf b = True Then Text2.Text = Text2.Text + "7" ElseIf Z = True Then Text3.Text = Text3.Text + "7" Else: Text13.Text = Text13.Text + "7"

End If End If End Sub

Private Sub Command11_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "8"

MSComm1.InBufferCount = 0 If AA = True Then

If a = True Then

Text4.Text = Text4.Text + "8"

ElseIf b = True Then Text5.Text = Text5.Text + "8" ElseIf Z = True Then Text6.Text = Text6.Text + "8" Else: Text13.Text = Text13.Text + "8"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "8"

ElseIf b = True Then Text8.Text = Text8.Text + "8" ElseIf Z = True Then Text9.Text = Text9.Text + "8" Else: Text13.Text = Text13.Text + "8"

End If Else

If a = True Then

Text1.Text = Text1.Text + "8"

ElseIf b = True Then Text2.Text = Text2.Text + "8" ElseIf Z = True Then Text3.Text = Text3.Text + "8" Else: Text13.Text = Text13.Text + "8"

End If End If End Sub

Private Sub Command12_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "9"

MSComm1.InputLen = 0 MSComm1.InBufferCount = 0

If AA = True Then If a = True Then

Text4.Text = Text4.Text + "9"

ElseIf b = True Then Text5.Text = Text5.Text + "9" ElseIf Z = True Then Text6.Text = Text6.Text + "9" Else: Text13.Text = Text13.Text + "9"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "9"

ElseIf b = True Then Text8.Text = Text8.Text + "9" ElseIf Z = True Then Text9.Text = Text9.Text + "9" Else: Text13.Text = Text13.Text + "9"

End If Else

If a = True Then

Text1.Text = Text1.Text + "9"

ElseIf b = True Then Text2.Text = Text2.Text + "9" ElseIf Z = True Then Text3.Text = Text3.Text + "9" Else: Text13.Text = Text13.Text + "9"

End If End If End Sub

Private Sub Command13_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "0"

MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 If AA = True Then

If a = True Then

Text4.Text = Text4.Text + "0"

ElseIf b = True Then Text5.Text = Text5.Text + "0" ElseIf Z = True Then Text6.Text = Text6.Text + "0" Else: Text13.Text = Text13.Text + "0"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "0"

ElseIf b = True Then Text8.Text = Text8.Text + "0" ElseIf Z = True Then Text9.Text = Text9.Text + "0" Else: Text13.Text = Text13.Text + "0"

End If Else

If a = True Then

Text1.Text = Text1.Text + "0"

ElseIf b = True Then Text2.Text = Text2.Text + "0" ElseIf Z = True Then Text3.Text = Text3.Text + "0" Else: Text13.Text = Text13.Text + "0"

End If End If End Sub

Private Sub Command14_Click() MSComm1.OutBufferCount = 0

MSComm1.Output = "P" ' POP du lieu vi tri vao cac o nho MSComm1.InputLen = 0

MSComm1.InBufferCount = 0 End Sub

MSComm1.OutBufferCount = 0 MSComm1.Output = "a" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 a = True If AA = True Then Text4.Text = ""

ElseIf BB = True Then Text7.Tex t = "" Else: Text1.Text = "" End If Command4.Enabled = True Command5.Enabled = True Command6.Enabled = True Command7.Enabled = True Command8.Enabled = True Command9.Enabled = True Command10.Enabled = True Command11.Enabled = True Command12.Enabled = True Command13.Enabled = True Command16.Enabled = False Command17.Enabled = False Command26.Enabled = False End Sub

Private Sub Command16_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "b"

MSComm1.InputLen = 0 MSComm1.InBufferCount = 0

b = True

If AA = True Then Text5.Text = ""

ElseIf BB = True Then Text8.Text = "" Else: Text2.Text = "" End If Command4.Enabled = True Command5.Enabled = True Command6.Enabled = True Command7.Enabled = True Command8.Enabled = True Command9.Enabled = True Command10.Enabled = True Command11.Enabled = True Command12.Enabled = True Command13.Enabled = True Command15.Enabled = False Command17.Enabled = False Command26.Enabled = False End Sub

Private Sub Command17_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "Z" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 Z = True If AA = True Then Text6.Text = ""

Else: Text3.Text = "" End If Command4.Enabled = True Command5.Enabled = True Command6.Enabled = True Command7.Enabled = True Command8.Enabled = True Command9.Enabled = True Command10.Enabled = True Command11.Enabled = True Command12.Enabled = True Command13.Enabled = True Command15.Enabled = False Command16.Enabled = False Command26.Enabled = False End Sub

Private Sub Command2_Click() Timer1.Enabled = True

End Sub

Private Sub Command26_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "T" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 T = True Text13.Text = "" Command4.Enabled = True Command5.Enabled = True Command6.Enabled = True

Command7.Enabled = True Command8.Enabled = True Command9.Enabled = True Command10.Enabled = True Command11.Enabled = True Command12.Enabled = True Command13.Enabled = True Command15.Enabled = False Command16.Enabled = False Command17.Enabled = False End Sub

Private Sub Command27_Click() AA = True BB = False CC = False MSComm1.OutBufferCount = 0 MSComm1.Output = "A" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 End Sub

Private Sub Command28_Click() BB = True AA = False CC = False MSComm1.OutBufferCount = 0 MSComm1.Output = "B" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 End Sub

Private Sub Command29_Click() CC = True BB = False AA = False MSComm1.OutBufferCount = 0 MSComm1.Output = "C" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 End Sub

Private Sub Command3_Click() MSComm1.OutBufferCount = 0

MSComm1.Output = "3" 'ma lenh bang "3" MSComm1.InputLen = 0

MSComm1.InBufferCount = 0 End Sub

Private Sub Command30_Click()

a = False ' Ket thuc nhap alpa, beta hoac Z b = False Z = False Command4.Enabled = False Command5.Enabled = False Command6.Enabled = False Command7.Enabled = False Command8.Enabled = False Command9.Enabled = False Command10.Enabled = False Command11.Enabled = False Command12.Enabled = False Command13.Enabled = False

Command15.Enabled = True Command16.Enabled = True Command17.Enabled = True Command26.Enabled = True End Sub

Private Sub Command4_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "1" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 If AA = True Then If a = True Then Text4.Text = Text4.Text + "1"

ElseIf b = True Then Text5.Text = Text5.Text + "1" ElseIf Z = True Then Text6.Text = Text6.Text + "1" Else: Text13.Text = Text13.Text + "1"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "1"

ElseIf b = True Then Text8.Text = Text8.Text + "1" ElseIf Z = True Then Text9.Text = Text9.Text + "1" Else: Text13.Text = Text13.Text + "1"

End If Else

If a = True Then

Text1.Text = Text1.Text + "1"

ElseIf b = True Then Text2.Text = Text2.Text + "1" ElseIf Z = True Then Text3.Text = Text3.Text + "1"

Else: Text13.Text = Text13.Text + "1" End If

End If End Sub

Private Sub Command5_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "2" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 If AA = True Then If a = True Then Text4.Text = Text4.Text + "2"

ElseIf b = True Then Text5.Text = Text5.Text + "2" ElseIf Z = True Then Text6.Text = Text6.Text + "2" Else: Text13.Text = Text13.Text + "2"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "2"

ElseIf b = True Then Text8.Text = Text8.Text + "2" ElseIf Z = True Then Text9.Text = Text9.Text + "2" Else: Text13.Text = Text13.Text + "2"

End If Else

If a = True Then

Text1.Text = Text1.Text + "2"

ElseIf b = True Then Text2.Text = Text2.Text + "2" ElseIf Z = True Then Text3.Text = Text3.Text + "2" Else: Text13.Text = Text13.Text + "2"

End If End If End Sub

Private Sub Command6_Click() MSComm1.OutBufferCount = 0

MSComm1.Output = "3" 'ma lenh bang "3" MSComm1.InputLen = 0

MSComm1.InBufferCount = 0 If AA = True Then

If a = True Then

Text4.Text = Text4.Text + "3"

ElseIf b = True Then Text5.Text = Text 5.Text + "3" ElseIf Z = True Then Text6.Text = Text6.Text + "3" Else: Text13.Text = Text13.Text + "3"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "3"

ElseIf b = True Then Text8.Text = Text8.Text + "3" ElseIf Z = True Then Text9.Text = Text9.Text + "3" Else: Text13.Text = Text13.Text + "3"

End If Else

If a = True Then

Text1.Text = Text1.Text + "3"

ElseIf b = True Then Text2.Text = Text2.Text + "3" ElseIf Z = True Then Text3.Text = Text3.Text + "3" Else: Text13.Text = Text13.Text + "3"

End If End Sub

Private Sub Command7_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "4" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 If AA = True Then If a = True Then Text4.Text = Text4.Text + "4"

ElseIf b = True Then Text5.Text = Text5.Text + "4" ElseIf Z = True Then Text6.Text = Text6.Text + "4" Else: Text13.Text = Text13.Text + "4"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "4"

ElseIf b = True Then Text8.Text = Text8.Text + "4" ElseIf Z = True Then Text9.Text = Text9.T ext + "4" Else: Text13.Text = Text13.Text + "4"

End If Else

If a = True Then

Text1.Text = Text1.Text + "4"

ElseIf b = True Then Text2.Text = Text2.Text + "4" ElseIf Z = True Then Text3.Text = Text3.Text + "4" Else: Text13.Text = Text13.Text + "4"

End If End If

End Sub

Private Sub Command8_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "5" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 If AA = True Then If a = True Then Text4.Text = Text4.Text + "5"

ElseIf b = True Then Text5.Text = Text5.Text + "5" ElseIf Z = True Then Text6.Text = Text6.Text + "5" Else: Text13.Text = Text13.Text + "5"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "5"

ElseIf b = True Then Text8.Text = Text8.Text + "5" ElseIf Z = True Then Text9.Text = Text9.Text + "5" Else: Text13.Text = Text13.Text + "5"

End If Else

If a = True Then

Text1.Text = Text1.Text + "5"

ElseIf b = True Then Text2.Text = Text2.Text + "5" ElseIf Z = True Then Text3.Text = Text3.Text + "5" Else: Text13.Text = Text13.Text + "5"

End If End If End Sub

Private Sub Command9_Click() MSComm1.OutBufferCount = 0 MSComm1.Output = "6" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 If AA = True Then If a = True Then Text4.Text = Text4.Text + "6"

ElseIf b = True Then Text5.Text = Text5.Text + "6" ElseIf Z = True Then Text6.Text = Text6.Text + "6" Else: Text13.Text = Text13.Text + "6"

End If

ElseIf BB = True Then If a = True Then

Text7.Text = Text7.Text + "6"

ElseIf b = True Then Text8.Text = Text8.Text + "6" ElseIf Z = True Then Text9.Text = Text9.Text + "6" Else: Text13.Text = Text13.Text + "6"

End If Else

If a = True Then

Text1.Text = Text1.Text + "6"

ElseIf b = True Then Text2.Text = Text2.Text + "6" ElseIf Z = True Then Text3.Text = Text3.Text + "6" Else: Text13.Text = Text13.Text + "6"

End If End If End Sub

MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.InputLen = 0 MSComm1.OutBufferCount = 0 MSComm1.PortOpen = True Timer1.Enabled = False AA = False BB = False CC = False End Sub

Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False

End Sub

Private Sub MSComm2_OnComm() End Sub

Private Sub Timer1_Timer() 'Dim kq1 As String MSComm1.OutBufferCount = 0 'MSComm1.Output = "K" MSComm1.InputLen = 0 MSComm1.InBufferCount = 0 dem = dem + 1 If dem = 1 Then MSComm1.Output = "K"

ElseIf dem = 2 Then MSComm1.Output = "L" Else: MSComm1.Output = "M"

dem = 0 End If Do

DoEvents

Loop Until (MSComm1.InBufferCount <> 0) If dem = 1 Then

Text10.Text = Asc(MSComm1.Input)

ElseIf dem = 2 Then Text11.Text = Asc(MSComm1.Input) Else: Text12.Text = Asc(MSComm1.Input)

End

'Asc(string)

'Returns the ANSI character code corresponding to the first letter in a string.

'Dim MyNumber

'MyNumber = Asc("A") Returns 65. 'MyNumber = Asc("a") Returns 97. 'MyNumber = Asc("Apple") Returns 65. 'tuong tu:

'Chr(charcode)

'Returns the character associated with the specified ANSI character code

'MyChar = Chr(65) ' Returns A. 'MyChar = Chr(97) ' Returns a. End Sub

CHƯƠNG II

CHƯƠNG TRÌNH VIẾT CHO VI XỬ LÝ

ORG 00H LJMP MAIN ;--- ORG 0023H LJMP NOI_TIEP ;--- ORG 0100H MAIN: MOV P3,#0FFH

MOV SCON,#01010000B ;THIET LAP CHE DO GIAO TIEP 1 CHO PHEP NHAN DU LIEU

MOV TMOD,#00100000B ;THIET LAP TIMER 1 DE TAO

Một phần của tài liệu Thiết kế, chế tạo mô hình tay máy 3 bậc tự do phục vụ công việc cấp phôi tự động (Trang 71)

Tải bản đầy đủ (PDF)

(137 trang)