Tuy nhiên máy tínhkhông chỉ dừng lại với thiết bị ngoại vi nói trên mà có những yêu cầu cao hơn, như kết nối vớicác máy móc trong công nghiệp…và đã được các nhà sản xuất lưu tâm tới và h
Trang 1-TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CƠ KHÍ - & -
BÁO CÁO ĐỒ ÁN MÔN GHÉP NỐI MÁY TÍNH
Đề tài: Thiết kế bộ dòng điện và vẽ đồ thị trên máy tính sử dụng
Trang 2-LỜI NÓI ĐẦU
Trong các máy tính thế hệ hiện nay có một số thiết bị ngoài thông dụng như: Mànhình, bàn phím, chuột, máy in…với các thiết bị ngoài đó máy tính đều có khối ghép nối tươngứng và chúng được tích hợp luôn trên một bo mạch gọi là main board Tuy nhiên máy tínhkhông chỉ dừng lại với thiết bị ngoại vi nói trên mà có những yêu cầu cao hơn, như kết nối vớicác máy móc trong công nghiệp…và đã được các nhà sản xuất lưu tâm tới và họ để trống vô
số các con đường có thể ghép nối với bus của máy tính như: RS232, LPT, COM, USB, cáckhe PCI …Đây chính là con đường ai muốn nghiên cứu mở rộng phạm vi kết nối của máytính kết hợp sử dụng với bộ vi điều khiển có thể lập trình được Qua nội dung môn học đượcnghe thầy giảng dậy và tìm hiểu tài liệu, và trong phạm vi đồ án nhỏ này chúng em thực hiệnviệc kết nối với máy tính qua cổng COM với bo mach ngoài, cụ thể là bo mạch ngoài dùng viđiều khiển để đo và điều khiển nhiệt độ và nhận nhiệt độ khống chế từ máy tính rồi hiển thịkết quả đo được trên máy tính thông qua cổng COM
Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm ứngdụng vi điều khiển để giao tiếp với máy tính
Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sáchtham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót Vì vậy nhómrất mong được sự góp ý của thầy cô và các bạn
Chúng em xin trân thành cảm ơn!
Trang 3Sơ đồ nguyên lý của mạch thiết kế.
Nguyên lý hoạt động của mạch
Trang 4-PHẦN I: GIỚI THIỆU KHÁI QUÁT
I.Giới thiệu về đồ án “Thiết kế bộ dòng điện và vẽ đồ thị trên máy tính sử dụng cổng nối tiếp”:
Đây là mô hình của ứng dụng xác định dòng điện của thiết bị tiêu thụ có thể được ứng dụng trong các mô hình thí nghiệm trong các lĩnh vực có liên quan mà yêu cầu độ chính xác không cao hoặc trong các thiết bị thí nghiệm cho trường học Trong đồ án chúng em có sử dụng điệntrở công suất để xác định điện áp nhằm xác định dòng điện chạy qua Sau đó dòng điện sẽ được gửi lên hiển thị giá tri và vẽ đồ thị trên màn hình máy tính qua cổng nối tiếp sử dụng phần mềm VB
II.Ý tưởng và sơ đồ khối:
-Đo điện áp của trở công suất đưa vào ADC
-Khối biến đổi A/D có nhiệm vụ số hoá tín hiệu ra của cảm biến nhiệt để đưa vào bộ
MAX232
Trang 5Visual basic nhận giá trị điện áp được biến đổi bởi ADC0804 được truyền tới từ 89s52 , rồi
-xử lý tính, hiển thị và vẽ giá trị thu được trên màn hình máy tính
Để tính dòng điện chúng em có sử dụng công thức :
U= IxR ; => I=U/R;
III.Phương hướng thực hiện và nguyên lý hoạt động:
Đầu tiên cho dòng điện chạy qua điện trở công suất, sau đó đo điện áp của trở công suất Đưa điện áp vào LM358 LM358 có trở nội rất lớn làm dòng đưa vào ADC0804 nhỏ mà vẫn giữ nguyên điện áp cần đo Điện áp(tín hiệu lien tục) đưa vào ADC0804 sẽ biến đổi thanh tín hiệu số ở dạng nhị phân 8bit VĐK sẽ đọc giá trị của ADC rồi gửi lên máy tính
Trang 6Bit Tên Chức năng
5 Chân /PSEN (program Store Enable )
/PSEN là chân điều khiển đọc chương trình ở bộ nhớ ngoài, nó được nối với chân /OE
để cho phép đọc các byte mã lệnh trên ROM ngoài
/PSEN sẽ ở mức thấp trong thời gian đọc mã lệnh Mã lệnh được đọc từ bộ nhớ ngoàiqua bus dữ liệu (port 0) thanh ghi lệnh để được giải mã
Khi thực hiện chương trình trong ROM nội thì /PSEN ở mức cao
6 Chân ALE (Address Latch Enable )
ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điềukhiển Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như 74373, 74375 chốtbyte địa chỉ thấp ra khỏi bus đa hợp địa chỉ/dữ liệu ( Port 0 )
7 Chân /EA (External Access )
Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngoài của viđiều khiển Nếu /EA ở mức cao (nối với Vcc), thì vi điều khiển thi hành chương trình trongROM nội N ếu /EA ở mức thấp (nối GND) thì vi điều khiển thi hành chương trình từ bộ nhớngoài
8.RST (Reset)
Ngõ vào RST trên chân 9 là ngõ reset của chíp Khi tín hiệu này được đưa lên mức cao(trong ít nhất 2 chu kỳ máy), các thanh ghi trong bộ vi điều khiển được tải những giá trị thíchhợp để khởi động hệ thống
9.XTAL1, XTAL2
AT89S52 có một bộ dao động trên chíp, nó thường được nối với bộ dao động thạchanh có tần số lớn nhất là 33MHz, thông thường là 12MHz
10 Vcc, GND
Trang 7-AT89S52 dùng nguồn một chiều có dải điện áp từ 4V đ ến 5,5V được cấp qua chân 40
và 20
11.Chân 40 nối với nguồn nuôi 5V
12.Chân 20 nối Mass
Về tổ chức bộ nhớ gồm có bộ nhớ chương trình và bộ nhớ dữ liệu Ngoài ra các thanhghi chức năng và chế độ hoạt động được nói rõ trong các tài liệu về vi điều khiển 8051 Ở đâychỉ nêu khái quát về hình dạng và sơ đồ chân của chíp AT89S52 dùng trong mạch điều khiểnnhiệt độ thôi
2.Giới thiệu về mạch biến đổi ADC:
Mạch biến đổi A/D có nhiệm vụ biến đổi điện áp tương tự từ cảm biến nhiệt thành tínhiệu số để gửi đến vi điều khiển Để lựa chọn sử dụng các vi mạch A/D người ta thường căn
Đầu ra được đệm bằng các cổng 3 trạng thái nên có thể ghép trực tiếp vào bus dữ liệu
mà không cần mạch đệm dữ liệu ở bên ngoài;
Thời gian biến đổi cỡ 100µs/mẫu;
Không cần hiệu chỉnh điểm 0;
Khi điện áp nguồn nuôi là 5V thì tín hiệu đầu vào cực đại là 5V;
Tất cả các tín hiệu đều tương thích mức TLL;
Dòng tiêu thụ cỡ nhỏ, cỡ 1,9mA.Hình ảnh mô tả ADC0804:
Trang 8-3.Giới thiệu về Max232:
Bộ vi điều khiển AT89S52 có khả năng giao tiếp với thế giới bên ngoài thông qua cổng nốitiếp Vấn đề trở ngại duy nhất khi giao tiếp với máy tính là mức logic ở bộ vi điều khiển và ở cổngCOM của máy tính khác nhau, cụ thể như sau:
SO SÁNH ĐIỆN ÁP CỦA CÁC MỨC LOGIC GIỮA RS232 VÀ TTL
Đối tượng Mức logic Mức điện áp tương ứng
Hình ảnh của vi mạch MAX232 như sau:
MAX232 được lắp với cổng COM của máy tính như sau:
Trang 9Sơ đồ chân cổng Com :
Trang 10-Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry Associations)
Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA.Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps, 9600 bps và
19200 bps
Trang 11-5 Điện trở công suất:
Điện trở công xuất : Là các điện trở có công xuất lớn hơn từ 1W, 2W, 5W, 10W
Khi mắc điện trở vào một đoạn mạch, bản thân điện trở tiêu thụ một công xuất P tính được theo công thức
P = U x I = I x I x R
Theo công thức trên ta thấy, công xuất tiêu thụ của điện trở phụ thuộc vào dòng điện đi qua điện trở hoặc phụ thuộc vào điện áp trên hai đầu điện trở
Công xuất tiêu thụ của điện trở là hoàn toàn tính được trước khi lắp điện trở vào mạch
Nếu đem một điện trở có công xuất danh định nhỏ hơn công xuất nó sẽ tiêu thụ thì điện trở sẽ
bị cháy
Nên khi mắc điện trở các pác chú ý đến công suất của điện trở
Thông thường ta lắp điện trở vào mạch có công xuất danh định > = 2 lần công xuất mà nó sẽ tiêu thụ
6.Một số các thuộc tính của MScomm:
MSComm là một điều khiển ActiveX dùng trong truyền thông nối tiếp Các tính chất của điềukhiển này được dùng để thiết lập giao tiếp với các thiết bị ngoại vi qua cổng RS232
Điều khiển MSComm trong Visual Basic
Thiết lập tham số cho cổng:
+ CommPort: dạng object.CommPort = value Value là chỉ số của cổng Com có giá trị từ 1 ‐
> 16 và mặc định có giá trị =1
+ InBuferSize: thiết lập hoặc trả lại kích thước của bộ đệm nhận, tính = byte Mặc định là
1024 byte Khác với đặc tính InBufferCount là số byte đang chờ trong bộ đệm nhận
+ InputLen : object.InputLen [ = value ] thiết lập hoặc trả lại số byte mỗi lần thuộc tính Input
đọc trong bộ đệm nhận Mặc định giá trị Value=0 tức là thuộc tính Input sẽ đọc hết nội dung của bộ đệm nhận khi thuộc tính này được gọi Nếu số kí tự trong bộ đệm nhận không = InputLen thì thuộc tính Input sẽ trả lại kí tự rỗng “”
+ InputMode: object.InputMode [ = value ]
Value = 0 hay = comInputModeText dữ liệu nhận được dạng văn bản kiểu kí tự theo chuẩn ANSI Dữ liệu nhận được sẽ là một sâu Value=1 hay = comInputModeBinary dùng nhận mọikiểu dữ liệu như kí tự điều khiển nhúng, kí tự NULL, Giá trị nhận được từ Input sẽ là một mảng kiểu Byte
+ NullDiscard: object.NullDiscard [ = value ] tính chất này quyết định kí tự trống có được
truyền từ cổng đến bộ đệm nhận hay không Nếu value= True kí tự này không được truyền value = false kí tự trống sẽ được truyền Kí tự trống được định nghía theo chuẩn ASCII là kí
tự 0 – chr$(0)
+ OutBuferSize: giống như InBuferSize, mặc định là 512
+ ParityReplace: thiết lập và trả lại kí tự thay thế kí tự không đúng trong lỗi giống nhau + PortOpen: thiết lập và trả lại tính trạng của cổng(đóng hoặc mở)
object.PortOpen [ = value ] value = true cổng mở value =false cổng đóng và xóa toàn
bộ dữ liệu trong bộ đệm nhận và truyền
+ RthresHold: object.Rthreshold [ = value ] value kiểu số nguyên Thiết lập số kí tự nhận
được trước khi gây lên sự kiện comEvReceive Mặc định = 0 tức là không có sự kiện
Trang 12OnComm khi nhận được dữ liệu Thiết lập = 1 tức là sự kiện OnComm xảy ra khi bất kì kí tự nào được chuyển đến bộ đệm nhận
-+ Settings: object.Settings [ = value ] thiết lập hoặc trả lại các thông số tần số baud, bít dữ
liệu, bít chẵn lẻ, bít stop
+ SThreshold: thiết lập và trả lại số kí tự nhỏ nhất được cho phép trong bộ đệm gửi để xảy ra
sự kiện OnComm = comEvSend Theo mặc định giá trị này = 0 tức là khi truyền sẽ không gây ra sự kiện OnComm Nếu thiết lập thông số này =1 thì sự kiện OnComm xảy ra khi bộ đệm truyền rỗng Sự kiện OnComm = comEvSend chỉ xảy ra khi mà số kí tự trong bộ đệm truyền nhỏ hơn hoặc = Sthreshold Nếu số kí tự trong bộ đệm này luôn lớn hơn Sthreshold thì
sự kiện này không thể xảy ra
Truyền nhận dữ liệu:
+ CommEvent: trả lại phần lớn sự kiện giao tiếp hoặc có lỗi
+ InBufferCout: trả lại số kí tự đang có trong bộ đệm nhận Ta có thể xoá bộ đệm nhận bằng
cách đặt thuộc tính này =0 Không nhầm với thuộc tính InBufferSize là tổng kích thước của
bộ đệm nhận
+ Input: nhận và xoá dữ liệu trong bộ đệm nhận
Nếu InputMode là comInputModeText thì giá trị trả về sẽ là một xâu tức có kiểu String , dữ liệu dạng text trong một biến kiểu Variant Nếu InputMode = comInputModeBinary thì thuộc tính này sẽ trả lại dữ liệu dạng nhị phân dưới dạng một mảng kiểu byte trong một biến
Variant
+ OutBufferCount: trả lại số kí tự trong bộ đệm truyền
+ Output: ghi dữ liệu vào bộ đệm truyền có thể truyền kiểu text hoặc kiểu nhị phân Nếu
truyền bằng kiểu text thì cho một biến Variant = kiểu String, nếu truyền kiểu nhị phân thì cho cho Output= variant = một mảng kiểu Byte
Bắt tay( handshaking):
+ Break : thiết lập hoặc xoá tín hiệu object.Break [ = value] value = true hoặc false Khi set
value= true thì thông số Break này sẽ gửi một tín hiệu break Tín hiệu break trì hoàn việc truyền dữ liệu và đưa đường truyền vào trạng thái break tới khi mà value = false
+ CDHolding: quết định xem sự truyền này đến đâu bằng cách truy vấn đường CD( Carrier
Detect) Carrier Detect là tín hiệu gửi từ modem tới máy tính kết nối với nó thống báo rằng nóđang online Nếu giá trị = true thì nó đường CD đang ở mức cao, nếu = false thì đường dây này đang ở mức thấp Tính chất này không có trong lúc thiết kế chỉ có trong khi chạy chương trình.Carrier Detect được biết như là Receive Line Signal Detect (RLSD)
+ CTSHolding: quết định khi nào bạn gửi dữ liệu bằng cách truy vấn trạng thái đường Clear
To Send (CTS) Thông thường tín hiệu CTS được gửi từ modem tới máy tính kết nối với nó
để báo rằng đang quá trình truyền dữ liệu Thuộc tính Readonly chỉ xuất hiện khi chạy
chương trình Đường Clear To Send dùng trong RTS/CTS (Request To Send/Clear To Send) bắt tay phần cứng CTSHolding cho bạn một cách để tự tay dò đường Clear To Send nếu bạn cần biết trạng thái của nó
+ DSRHolding: biết trạng thái của đường Data Set Ready (DSR) Tín hiệu Data Set Ready
truyền từ modem tới máy tính nối với nó để thông báo rằng modem đã sẵn sàng hoạt động Tính chất này dùng khi viết Data Set Ready/Data Terminal Ready handshaking routine cho máy Data Terminal Equipment (DTE)‐ máy trang bị đầu cuối dữ liệu
+ DTREnable: tính chất này quyết định khi nào cho phép đường Data Terminal Ready
(DTR) trong truyền thông Tín hiệu DTR gửi từ máy tính tới modem đẻ báo rằng máy tính sẵnsàng là nơi nhận dữ liệu Khi DTREnable = true thì đường Data Terminal Ready set lên cao khi cổng mở, và thấp khi cổng đóng Nếu DTREnable = false thì đường đó luôn mức thấp Trong phần lớn trường hợp set đường Data Terminal Ready thành thấp để hang up telephone
+ InBufferCout: trả lại số kí tự đang có trong bộ đệm nhận Bạn có thể xoá bộ đệm nhận bằng
cách đặt thuộc tính này =0 Không nhầm với thuộc tính InBufferSize là tổng kích thước của
bộ đệm nhận
Trang 13Nếu InputMode là comInputModeText thì giá trị trả về sẽ là một xâu tức có kiểu String , dữ liệu dạng text trong một biến kiểu Variant Nếu InputMode = comInputModeBinary thì thuộc tính này sẽ trả lại dữ liệu dạng nhị phân dưới dạng một mảng kiểu byte trong một biến
-Variant
+ OutBufferCount: trả lại số kí tự trong bộ đệm truyền
+ Output: ghi dữ liệu vào bộ đệm truyền có thể truyền kiểu text hoặc kiểu nhị phân Nếu
truyền bằng kiểu text thì cho một biến Variant = kiểu String, nếu truyền kiểu nhị phân thì cho cho Output= variant = một mảng kiểu Byte
Bắt tay( handshaking):
+ Break : thiết lập hoặc xoá tín hiệu object.Break [ = value] value = true hoặc false Khi set
value= true thì thông số Break này sẽ gửi một tín hiệu break Tín hiệu break trì hoàn việc truyền dữ liệu và đưa đường truyền vào trạng thái break tới khi mà value = false
+ CDHolding: quết định xem sự truyền này đến đâu bằng cách truy vấn đường CD( Carrier
Detect) Carrier Detect là tín hiệu gửi từ modem tới máy tính kết nối với nó thống báo rằng nóđang online Nếu giá trị = true thì nó đường CD đang ở mức cao, nếu = false thì đường dây này đang ở mức thấp Tính chất này không có trong lúc thiết kế chỉ có trong khi chạy chương trình.Carrier Detect được biết như là Receive Line Signal Detect (RLSD)
+ CTSHolding: quết định khi nào bạn gửi dữ liệu bằng cách truy vấn trạng thái đường Clear
To Send (CTS) Thông thường tín hiệu CTS được gửi từ modem tới máy tính kết nối với nó
để báo rằng đang quá trình truyền dữ liệu Thuộc tính Readonly chỉ xuất hiện khi chạy
chương trình Đường Clear To Send dùng trong RTS/CTS (Request To Send/Clear To Send) bắt tay phần cứng CTSHolding cho bạn một cách để tự tay dò đường Clear To Send nếu bạn cần biết trạng thái của nó
+ DSRHolding: biết trạng thái của đường Data Set Ready (DSR) Tín hiệu Data Set Ready
truyền từ modem tới máy tính nối với nó để thông báo rằng modem đã sẵn sàng hoạt động Tính chất này dùng khi viết Data Set Ready/Data Terminal Ready handshaking routine cho máy Data Terminal Equipment (DTE)‐ máy trang bị đầu cuối dữ liệu
+ DTREnable: tính chất này quyết định khi nào cho phép đường Data Terminal Ready
(DTR) trong truyền thông Tín hiệu DTR gửi từ máy tính tới modem đẻ báo rằng máy tính sẵnsàng là nơi nhận dữ liệu Khi DTREnable = true thì đường Data Terminal Ready set lên cao khi cổng mở, và thấp khi cổng đóng Nếu DTREnable = false thì đường đó luôn mức thấp Trong phần lớn trường hợp set đường Data Terminal Ready thành thấp để hang up telephone
+ Handshaking: thiết lập và trả lại giao thức bắt tay phần cứng object.Handshaking [ = value
] Các giá trị của value:
Send/Clear To Send) comRTSXOnXOff 3 Dùng cả bắt tay Request To Send and
XON/XOFF
Handshaking chỉ là giao thức truyền thông nội tại quyết định bởi dữ liệu nào được truyền từ cổng phần cứng tới bộ đệm nhận
+ RTSEnable: quết định khi nào cho phép đường Request To Send (RTS), Tín hiệu RTS từ
máy tính tới modem để yêu cầu được tryền dữ liệu Khi RTSEnable = true thì đường RTS mức cao khi cổng mở, tích mức thấp khi cổng đóng Và hiển nhiên khi RTSEnable thì đường RTS luôn mức thấp