b) Sơ đồ nối ghép của MAX232 với 8051 theo moden không
3.5. Ngôn ngữ lập trình Visual basic 6.0
3.5.1. Giới thiệu
Visual Basic là ngôn ngữ lập trình phổ biến nhất ngày nay, là ngôn ngữ lập trình trên môi trờng Windows ra đời sớm nhất và đã tạo ra một cuộc cách mạng trong công nghiệp phần mềm. Có thể nói VB mạnh về tất cả (đợc hỗ trợ rất nhiều khả năng về cơ sở dữ liệu, các kỹ thuật phần mềm mới nh OLE, COM, DCOM... ) nhng chính vì khả năng này nên tốc độ nhìn chung là chậm.
Với Visual Basic, công việc tạo giao diện trên máy tính trở nên dễ dàng hơn rất nhiều so với việc tạo giao diện bằng ngôn ngữ C trớc đây. Chỉ với một vài thao tác Click – Drag đơn giản, ta có thể bổ sung vào các cửa sổ còn trống các lệnh đơn, các hộp văn bản, các nút lệnh, các nút tuỳ chọn... Sau khi tạo giao diện thì công việc chỉ là viết mã cho các đối tợng này (gọi là các điều khiển: control). Nh vậy ta có thể nói, với VB công việc tạo giao diện đồ hoạ cho các ứng dụng đã đợc VB đảm nhận.
Visual Basic cho phép ứng dụng tạo liên kết với các ứng dụng Windows khác rất dễ dàng, cho phép dễ dàng tạo ra các ứng dụng thiên về quản lý dữ liệu và mạng.
Visual Basic cho phép ngời sử dụng giao tiếp với th viện liên kết động DLL. Điều này giúp giảm kích cỡ chơng trình, tập tin thực thi và đặc biệt làm cho chơng trình có khả năng nâng cấp dễ dàng hơn.
3.5.2. Truyền thông nối tiếp dùng VB 6.0 a. Điều khiển truyền thông:
Bình thờng khi chạy phần mềm visual basic ta chỉ thấy có một số thành phần quen thuộc trên hợp công cụ (toolbox). Nhng visual basic cho phép nhiều thành phần có thể đợc bổ sung thêm vào. Điều khiển truyền thông Mscomm của viual basic là một trong số các đối tợng có thể đợc bổ sung để tham gia vào một số ứng dụng trong việc chuyển nhận dữ liệu qua cổng nối tiếp.
Trong visual basic 5.0 và 6.0 ta có thể bổ sung thành phần MSCOMM đề cập ở trên nh sau: chọn project=> components (Ctrl-T),của sổ sau sẽ xuất hiện:
Hình3.4: Cách chọn thêm thành phần microsoft comm control ở visual basic 6.0 Đánh dấu chọn thành phần microsoft comm control 6.0 nh hình trên, sau đó nhấn OK. Khi đó thành phầnMscomm sẽ xuất hiện trong hợp công cụ nh chỉ ra ở hình dới đây:
Điều khiển Mscomm
Hình3.5 Thành phần Mscomm trong hợp công cụ (toolbox)
Điều khiển truyền thông cung cấp hai khả năng trao đổi thông tin:
Điều khiển sự kiện:
Truyền thông điều khiển sự kiện là phơng pháp tốt nhất đợc sử dụng trong quá trình việc trao đổi thông tin nối tiếp khi nó giải phóng máy tính để làm các công việc khác.
Ta cũng có thể hỏi vòng các sự kiện và lỗi bằng cách kiểm tra giá trị của đặc tính comEvent sau mỗi chu kỳ của chơng trình để xác định xem liệu có một sự kiện hoặc một lỗi đã xuất hiện.
Visual basic sử dụng các bộ điều khiển cửa sổ chuẩn cho các cồng truyền thông tin nối tiếp (nh serial.dll và serial.vxd ). Điều khiển truyền thông đợc bổ sung cho ứng dụng của một cổng nối tiếp, nói khác đi mỗi điều khiển truyền thông mà ta dùng chỉ có thể điều khiển một cổng nối tiếp. Nếu cần truy nhập nhiều cổng trong một ứng dụng thì ta phải nhiều điều khiển truyền thông. Địa chỉ cổng và địa chỉ ngắt có thể thay đổi nhở control panel trong windows. Các tham số (nh tốc độ truyền bit, chẳn lẽ,…)đều đó có thể thay đổi bằng cách lựa chọn : control panel=> sestem=> device manager=> port(com và lpt)=> port setting. Việc thiết lập cổng truyền thông (IRQ và địa chỉ cổng) có thể thay đổi bằng cách lực chọn : control panel=>sestem=>device manager=> port(com và LPT)=>resources. Việc này đã đợc nói đến ở phần cổng nối tiếp.
b. Đặc tính (Properti)
Hình bên đây chỉ ra các đặc tính của nó. Theo mặc định, cổng thứ nhất tạo ra đối t- ợng có tên Mscomm1, đối tợng ứng với cổng thứ hai đợc gọi là Mscomm2 ,… có thể nhìn thấy các đặc tính chính của đối tợng là: Commport, Dtrenable, Eofenable,Hnadshaking, Inbuffersize, Index,Inputlen, Inputmode, Left, Name, Nulldiscard, Outbuffersize, Parityreplace, Rthreshold, Rtsenable, Settings, Sthreshold, Tag, Top. Ta thấy điều khiển truyền thông có nhiều đặc tính, nhng để có thể làm việc với điều khiển truyền thông, trớc hết ta cần hiểu kỹ các đặc tính chính đợc liệt kê trong bảng sau.
Bảng 3.4 : Bảng các đặc tính của điều khiển MSComm
Các đặt tính Sự mô tả
Commport Đặt và trả lại số cổng truyền thông
Input Trả lại và loại bỏ các ký tự khỏi xâu đệm nhận
Output Viết một xâu ký tự tới vào bộ đệm truyền
Portopen Mở đóng một cổng và đặt thông số cho cổng
Thí dụ sau đây chỉ ra cách truyền thông qua cổng nối tiếp có thể đợc tiến hành nh thề
nào bằng cách sử dụng một Modem.
Private sub form_load
‘biến để lu trữ chuỗi nhập vào
Dim instring as string
‘sử dụng com1
Mscomm1.comport =1
‘9600 baud, no parity, 8 bit data, 1 stop bit
Mscomm1.setting = ”9600 ,N,8,1”
‘ra lệnh cho msc đọc hết bộ đệm nhận khi dùng lệnh input
mscomm1.inputlen =0 ‘mở cổng
Mscomm1.portopen = true
‘gởi lệnh attention tới modem
Mscomm1.output = ”ATV1Q0”&CHR$(13)
‘để chắc rằng modem đã trả lời OK đợi dữ liệu trả lời gởi về cổng nối tiếp“ ”
do Doevents
Buffer$ = buffer$ & mscomm1.input
Loop until instr (buffer$ &, ”OK” &vbCLRF)
‘đọc dữ liệu trả lời OK đóng cổng nối tiếp“ ”
Mscomm1.portopen = false End sub
Sau đây ta sẽ lần lợt tìm hiểu một số đặt tính quan trọng của điều khiển truyền thông
Setting Prorety :
Đặt tính setting đặt và trả lại các thông số truyền thông cho cổng RS_232, nh tốc độ baud, tính chẳn lẻ số bit data và số bit stop
Cú pháp của câu lệnh là :
[form.]mscomm.setring [=paramstring$]
Nếu paramstring$ không hợp lệ (valid) thì khi mở cổng điều khiển truyền thông sẽ phát sinh lỗi 380 (lỗi giá trị thuộc tính không hợp lệ).
Parastring$ là một chuỗi chứa 4 thông số thiết lập cho truyền thông RS-232 và có dạng nh sau:
”BBBB,P,D,S”
ở đây BBBB xác định tốc độ baud, P là bit chỉ tính chẳn lẻ, D là số bit data,và S là các bit dừng (stop bits). Giá trị mặc định của paramstring$ là:
”9600,N,8,1”
Bảng sau đây liệt kê các giá trị baud hợp lệ:
Bảng 3.5 Bảng liệt kê các giá trị baud hợp lệ
Thông số tốc độ baud
110 2400 19200 57600
300 4800 28800 115200
600 9600 38400 128000
1200 14400 56000 256000
Bảng sau đây mổ tả các giá chẳn lẽ hợp lệ:
Bảng 3.6 Bảng mô tả các giá trị chẳn lẽ hợp lệ: Giá trị Mô tả E Even(chẳn) M Mark (dấu)
N None (không kiểm tra chẳn lẻ-default)
O Odd (lẻ)
S Space (trống)
Số bit dữ hợp lệ trong một lần truyền (khung truyền ) là :4,5,6,7,8,(default) Số bit Stop hợp lệ là:1,1.5,2
Thí dụ sau cho phép đặt thông số cho cổng truyền ở tốc độ baud là 4800,không kiểm tra bit chẳn lẻ, 8 bit dữ liệu, 1 bit dừng:
Mscomm1.Settings = ”4800,N,8,1”.
Kiểu data của Mscomm1.Settings là String.
Commport Property:
Đặc tính này đặt và trả số cổng truyền thông. Cú pháp của câu lệnh là:
[Form.] Mscomm.commport [= portnumber %]
Trong khi thiết kế (design time) ta có thể đặt portnumber% bằng một giá trị nằm trong khoảng từ 1 đến 16 (giá trị mặc định là 1). Trớc khi dùng lệnh portopen phải thiết lặp cổng bằng commport. Nếu ta dùng đặc tính PortOpen trớc khi thiết lập cổng bằng Commport thì điều khiển truyền thông sinh ra lỗi 68 (cổng không tồn tại).
Kiểu dữ liệu: Integer
Portopen Property:
Đặc tính portoper đặt và trả lại trạng thái của cổng truyền thông ( đóng hoặc mở). Đặc tính này không có trong thời gian thiết kế chơng trình. Cú pháp của câu lệnh là:
[Form.]Mscomm.PortOpen [= True/False]
Thông số thiết lập là true là mở cổng, còn false là để đóng cổng và xóa nội dung các bộ đệm nhận và truyền. Mscomm tự động đóng cổng nối tiếp khi ứng dụng kết thúc (terminated).
Trớc khi dùng các đặc tính này (portopen), phải đặt thông số cổng bằng đặc tính CommPort với một giá trị hợp lệ, nếu ta quên đi đặc tính này lỗi 68 sẽ phát sinh.
Thí dụ sau đây mở cổng truyền thông số 1 (Com1) với tốc độ baud là 4800 buad, không kiểm tra tính chẳn lẻ, 8 bit dữ liệu, 1 bit stop.
Mscomm1.Settings =“4800,N,8,1” Mscomm1.Commport =1
Mscomm1.PortOpen =true Kiểu data: kiểu logic (Boolean)
Các Đặt Tính Phục Vụ Nhập Dữ Liệu (Input, Inbuffercount Và Inbuffersize):
• Input :
Đặc tính input trả lại và xóa bỏ một chuỗi ký tự từ bộ đệm nhận. Đặc tính này không có sẵn trong thiết kế và là chỉ đọc (read _only) khi chạy chơng trình. Cú pháp của câu lệnh là:
[Form.] Mscomm.Input
Đặc tính InputLen quy định số ký tự đợc đọc bởi câu lệnh Input. Để xác định số các ký tự trong bộ đệm, đặc tính InputBufferCount đợc kiểm tra. Đặc tính InputLen là 0 để đọc toàn bộ nội dung của bộ đệm nhận.
Đặc tính InputMode quyết định kiểu data thu về qua đặc tính Input.Nếu đặc tính này đợc set là CommInputMode Text thì đặc tính Input sẽ trả về dữ liệu kiểu Text vào 1 biến Variant. Nếu InputMOde là comINputModeBinary thì Input sẽ trả về dữ liệu nhị phân trong mảng các byte vào một biến Variant.
Thí dụ dới đây chỉ ra cách đọc dữ liệu từ bộ đệm nhận.
Mscomm1.InputLen = 0‘đọc toàn bộ nội dung của bộ đệm nhận’
kiểm tra có data hay không‘ ’
If Mscomm1.inbufferCount then ‘đọc dữ liệu ‘
End if
Kiểu data : variant
InBufferSize:
Đặc tính InBufferSize đặt và trả lại kích thớt bộ đệm nhận, tính theo số byte. Cú pháp là câu lệnh:
[Form.]Mscomm. InBufferSize [=numbyte%]
Đặc tính này có liên quan đến kích thớc bộ đệm nhận. Giá trị mặc định là 1024 bytes. Kích thớc của bộ đệm phải đợc đặt sao cho có thể cất giữ đợc số lớn nhất của các ký tự sẽ đợc nhận trớc khi chơng trình ứng dụng có thể đọc chúng từ bộ đệm, trừ khi ta làm việc ở chế độ bắt tay (handshaking).
Kiểu data của đặc tính này là: Integer
• InbufferCount:
Đặc tính InbufferCout trả lại các số ký tự trong bộ đệm nhận. Nó cũng có thể đợc sử dụng để xóa bộ đệm bằng cách đặt số của các ký tự bằng 0. Đặc tính này không có trong thời gian thiết kế chơng trình (design time). Cú pháp câu lệnh nh sau:
[Form.] Mscomm.InbufferCout [ =count%]
Ta có thể xóa bộ đệm bằng cách đặt đặc tính InBufferCount = 0 Kiểu dữ liệu của đặc tính này là: Integer
Các Đặc Tính Phục Vụ Việc Xuất Dữ Liệu(Output,OutBufferCount Và OutBufferSize):
• Output property:
Đặc tính output sẽ viết một chuỗi ký tự vào bộ đệm đờng truyền, đặc tính này không có trong thời gian thiết kế chơng trình. Cú pháp câu lệnh là:
[Form.]Mscomm.Output [ = outstring$]
Thí dụ sau đây cho biết cách gửi các ký tự mà ngời dùng gõ vào từ bàn phím:
Private Sub Form_Load(keyAscii As Integer) Mscomm1.Output = Chr$(keyAscii)
End Sub
Đặc tính Output có thể xuất dữ liệu dạng Text hay Binary. Để gửi data dạng Text ta phải khai báo một biến kiểu Variant và cho nó chứa chuỗi mẫu gửi, sau đó gán biến này cho đặc tính Output. Để gửi data dạng Binary ta phải truyền một biến kiểu Variant chứa một mảng các byte cho đặc tính Output.
Thông thờng, nếu ta gửi một chuỗi theo chuẩn ANSI tới ứng dụng, ta có gửi data dạng Text. Nếu ta có data mà ta chứa ký tự điều khiển đợc nhúng (embedded) nh các ký tự NULL,…thì ta sẽ truyền dữ liệu theo dạng Binary.
Kiểu dữ liệu của đặc tính này : Variant.
• OutBufferSize Property:
Đặc tính OutBufferSize đặt và trả lại kích thớc của các ký tự trong bộ đệm truyền. Cú pháp câu lệnh:
[form.] Mscomm.OutBufferSize [= numbtype%]
Giá trị mặc định của đặc tính này là 512 bytes. Chú ý:
- Không đợc nhầm lẫn giữa hai đặc tính OutBufferSize và OutBufferCount với nhau. Đặc tính OutBufferCount nói lên số bytes hiện đang có trong bộ đệm truyền, còn
OutBufferSize quy định tổng kích thớt của bộ đệm truyền.
- Không để kích thớc bộ đệm truyền quá lớn. Tuy nhiên nếu để quá nhỏ thì xảy ra hiện tợng tràn dữ liệu (trừ khi làm việc ở chế độ bắt tay). Thông thờng nên bắt đầu với kích th- ớc bộ đệm truyền là 512 bytes. Nếu lỗi tràn xảy ra thì tăng kích thớc bộ đệm cho thích hợp với ứng dụng hiện tại.
Kiểu dữ kiệu cho đặc tính này là: Integer
• OutBufferCount Property:
Đặc tính OutBufferCount trả lại số kí tự trong bộ đệm truyền. Nhờ đặc tính này mà ta có thể xóa nội dung bộ đệm truyền bằng cách đặt giá trị của OutBufferCount = 0. Cú pháp của cấu lệnh là:
[Form.] Mscomm. OutBufferCount [= value%]
Kiểu dữ liệu của đặc tính này là: Integer
Ngoài các đặc tính trên thì VB 6.0 còn một số đặc tính khác nhng không sử dụng trong phạm vi của đồ án nên em sẽ không trình bày ở phần này
Chơng IV: Thiết kế và thi công
Trong các chơng trên em đã trình bày những kiến thức cơ bản liên quan đến đồ án. Trong chơng này em sẽ trình bày cụ thể phần thiết kế chi tiết
4.1 Nhiệm vụ
Nhiệm vụ của đề tài là thiết kế cân điện tử có thể cân đợc từ 0kg-25. 000kg. Do đó yêu cầu thiết kế gồm:
- Thiết kế khối nguồn cung cấp cho mạch điện - Thiết kế mạch khuếch đại đo lờng
- Thiết kế bộ chuyển đổi tơng tự - số (ADC). - Thiết kế mạch giao tiếp.tính
- Viết chơng trình điều khiển cho vi điều khiển và chơng trình giao tiếp với máy tính - Mô phỏng chơng trình trên máy
4.2 Sơ đồ khối tổng quát của hệ thống
Do điều kiện thiết bị và thời gian không cho phép nên em không đủ điều kiện để thiết kế một cân điện tử hoàn thiện nh em đã trình bày ở chơng một vì vậy trong phần này em sẽ tiến hành tính toán thiết kế một mạch có thể cân đợc khối lợng theo yêu cầu và tiến hành mô phỏng trên máy tính theo yêu cầu với đầy đủ các khối chức năng nh thực tế.
Sơ đồ khối tổng quát của hệ thống:
Hình 4.1 Sơ đồ khối tổng quát hệ thống Chức năng của các khối trong hệ thống:
- Khối Loadcell: Thực hiện đo khối lợng, chuyển đổi tín hiệu lực đầu vào thành tín hiệu điện áp ở đầu ra để đa vào khối khuếch đại.
Máy tính
Loadcell
Khuếch đại ADC 0809
Hiển thị Vi điều khiển Bàn phím Giao tiếp máy tính Nguồn 12V đến khuếch đại +5V đến các khối khác Máy tính Đối t ợng đo khối l ợng +10V đến Loadcell
- Khối khuếch đại: Thực hiện khuếch đại tín hiệu điện áp ở đầu ra của cảm biến thành dải điện áp phù hợp để đa vào khối chuyển đổi tơng tự – số.
- Khối chuyển đổi tơng tự – số (ADC): Thực hiện chuyển đổi tín hiệu vào dạng tơng tự (điện áp) thành tín hiệu số.
- Khối vi điều khiển: Điều hành mọi hoạt động của hệ thống: đọc dữ liệu từ ADC, xử lý và đa ra khối hiển thị, thực hiện giao tiếp với máy tính
- Khối hiển thị: Hiển thị giá trị khối lợng cân đợc.
- Khối nguồn: Cung cấp nguồn cho tất cả các thiết bị trong hệ thống.
- Khối giao tiếp với máy tính: Thực hiện truyền dữ liệu giữa máy tính và vi điều khiển - Máy tính: Hiển thị số liệu cân đợc từ cảm biến
4.3 Tính chọn các thiết bị4.3.1 Khối Loadcell.4.3.1 Khối Loadcell.4.3.1 Khối Loadcell. 4.3.1 Khối Loadcell.
Do yêu cầu cân khối lợng khoảng 25 tấn nên ta chọn cảm biến loadcell VLC ” A123 có thông số và hình dạng sau.
A= 260 mm B= 210 mm d= 11mm e=50 SR=220
Hình 4.2 Hình dạng và kích thớc của Loadcell VLC-A123
Các thông số của loadcell:
- Khả năng chịa quá tải: 45.000kg - Độ nhạy: 2mV/V
-Điện áp cấp cho Loadcell: 10VDC -Sai số tuyến tính: 0.01%F.S
- Khả năng quá tải an toàn: 150% - Khả năng quá tải tối đa: 300% - Tiêu chuẩn bảo vệ: IP68
- Vật liệu sử dụng: Thép không gỉ
- Hoạt động tốt trong môi trờng công nghiệp
4.3.2 Khối khuếch đại
Dải điện áp đầu ra của Loadcell rất nhỏ , đối với loadcell có thông số nh trên thì điện áp ra ứng với khối lợng tối đa là 20mv
Yêu cầu đặt ra là xây dựng một mạch KĐ điện áp để KĐ điện áp đầu ra của loadcell sao cho phù hợp với điện áp đầu vào của ADC. Giả sử ta có hàm truyền của mạch KĐ có dạng:
Ur = a.Uc + b (4.1) Trong đó a, b là các hệ số KĐ.
Dải điện áp làm việc của ADC 0809 biến thiên từ 0 – 5V, tơng ứng với dải điện áp