Hệ thống thu thập dữ liệu nhiều kênh

Lời Mở Đầu: Hiện nay, máy vi tính đã và đang được sử dụng rộng rãi và phổ biến trong xã hội cũng như trong công nghiệp. Với lợi thế là tốc độ xử lý nhanh, có thể xử lý hàng tỷ phép tính trong một giây, nó đã và đang mang đến những thay đổi to lớn trong khoa học và công nghệ cũng như trong đời sống hàng ngày. Từ việc giúp soạn thảo văn bản, tính toán các bảng biểu, lưu trữ dữ liệu đến việc dùng để điều khiển các dây chuyển công nghiệp hiện đại. Ngày nay, các thiết bị máy móc ngày càng trở nên thông minh, tự động hóa cao, các công việc được thực hiện với hiệu quả cao thì máy tính trở thành bộ phận không thể thiếu. Đối với sinh viên chuyên ngành điện tử, đây là một lĩnh vực hứa hẹn và mở ra nhiều triển vọng. Để góp phần tạo nền tảng ban đầu cho việc học tập, tìm hiểu về ứng dụng máy tính trong điều khiển, chúng tôi xin đề nghị thực hiện đề tài: “Hệ Thống Thu Thập Dữ Liệu Nhiều Kênh”. Trong quá trình thực hiện đề tài này, mặc dù tôi đã rất cố gắng, xong chắc chắn không tránh khỏi những thiếu sót. Rất mong nhận sự góp ý, phê bình và chỉ dẫn của quí thầy cô và bạn đọc. Mục lục Trang Chương mở đầu: TỔNG QUAN ĐỀ TÀI 1.GIỚI THIỆU 1 2. NỘI DUNG 1 Chương 1: CƠ SỞ LÝ THUYẾT 1. TÍN HIỆU TƯƠNG TỰ VÀ RỜI RẠC 1.1 Tín hiệu 3 1.2 Tín hiệu tương tự 3 1.3 Tín hiệu rời rạc . 3 2. LÝ THUYẾT LẤY MẪU TÍN HIỆU 2.1 Mạch lấy mẫu và giữ . 4 2.2 Lượng tử hóa . 4 2.3 Mã hóa . 5 2.4 Lỗi lượng tử . 5 3. CẢM BIẾN NHIỆT 3.1 Thang nhiệt độ nhiệt động học tuyệt đối . 6 3.2 Các Phương Pháp Đo Nhiệt Độ . 6 3.3 Cảm biến LM35 7 3.4 Cảm biến PT100 (E52MY-PT10C) 7 3.5 Cặp nhiệt điện ( Thermocouples) . 10 4. CHUYỂN ĐỔI A/D VÀ D/A 4.1 Chuyển đổi A/D 11 4.1.1 Nguyên tắt thực hiện chuyển đổi A/D 11 4.1.2 Các phương pháp chuyển đổi A/D 12 4.1.2.1 Phương pháp tích phân . 12 4.1.2.2 Phương pháp ADC xấp xỉ liên tiếp 14 4.2 Chuyển đổi D/A 15 4.2.1 Độ phân giải DAC 15 4.2.2 Độ chính xác 16 4.2.3 Thời gian ổn định . 17 4.2.4 Các phương pháp biến đổi DAC . 17 4.2.4.1 DAC dùng điện trở có trọng số nhị phân và bộ khuếch đại cộng 17 4.2.4.2. DAC R/2R ladder . 18 4.2.4.3 DAC với đầu ra dòng . 19 5. HỆ THU THẬP DỮ LIỆU NHIỀU KÊNH 5.1 Thu thập dữ liệu . 20 5.2 Hệ thống thu thập dữ liệu nhiều kênh 21 6.VI ĐIỀU KHIỂN 89V51 6.1. Họ Vi điều khiển 8051 và IC 89V51RB2/RC2/RD2 23 6.1.1 Giới thiệu khái quát họ vi điều khiển MSC – 51 23 6.1.2. Vi điều khiển 89V51RB2/RC2/RD2 . 24 7.GIAO TIẾP NỐI TIẾP 7.1 Cấu trúc cổng giao tiếp nối tiếp (Comm Port) 32 7.1.1 Cấu trúc cổng nối tiếp . 32 7.1.2 Truyền thông giữa hai nút 35 7.1.3 Truy xuất cổng nối tiếp . 36 7.2 IC MAX 232 36 8. NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 6.0 8.1 Cơ bản về Visual Basic 6.0 . 37 8.2 Lập trình giao tiếp cổng nối tiếp dùng Visual Basic 6.0 sử dụng MSCOMM32.OCX 40 8.3 Giới thiệu về ActiveX Teechart 46 9. ĐIỀU KHIỂN SỐ- ĐIỀU KHIỂN HỒI TIẾP 9.1 Hệ thống điều khiển số . 48 9.1.1 Cấu trúc hệ thống điều khiển số 48 9.1.2 Hệ thống lấy mẫu tín hiệu 48 9.2 Phương pháp điều khiển ON/OFF 48 9.3 Phương pháp điều khiển hồi tiếp 49 Chương 2: THIẾT KẾ HỆ THỐNG THU THẬP DỮ LIỆU NHIỀU KÊNH 1. NHIỆM VỤ, HƯỚNG GIẢI QUYẾT CỦA ĐỒ ÁN 1.1.Nhiệm vụ 53 1.2.Giải quyết vấn đề . 53 2.THIẾT KẾ PHẦN CỨNG 2.1. Sơ đồ khối . 53 2.2.Giải thích nguyên lý từng khối . 54 2.2.1. Sơ đồ nguyên lý 56 2.2.2. Đối tượng lò điện 58 2.3. Thiết kế chi tiết 59 2.3.1. Khối nguồn 59 2.3.2. Khối ADC 59 2.3.3. Khối DAC 63 2.3.4 Khối cảm biến nhiệt 63 2.3.5. Khối giao tiếp PC 66 2.3.6. Khối công suất 66 2.3.7 Khối điều khiển quạt . 67 2.4. Nguyên lý hoạt động của hệ thống thu thập dữ liệu 67 2.5. Bản mạch in . 67 2.6. Lưu đồ giải thuật và chương trình 68 2.6.1 Lưu đồ chương trình chính . 68 2.6.2 Lưu đồ chương trình con lấy mẫu ADC 69 2.6.3 Lưu đồ chương trình con biến đổi ADC . 69 2.6.4 Lưu đồ chương trình ngắt nối tiếp . 70 2.7. Kết quả thi công 72 CHƯƠNG 3: KẾT LUẬN 1. KẾT LUẬN 79 2. HƯỚNG PHÁT TRIỂN 79 PHỤ LỤC . 80 TÀI LIỆU THAM KHẢO . 104

doc105 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3686 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Hệ thống thu thập dữ liệu nhiều kênh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ì cho cho Output= variant = một mảng kiểu Byte. 8.2.2.11 OutBufferCount: trả lại số kí tự trong bộ đệm truyền. 8.2.2.12 OutBuferSize: giống như InBuferSize, mặc định là 512. 8.2.2.13 RthresHold Cú pháp: MSComm1.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 OnComm 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. 8.2.2.14 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. 8.2.2.15 Sư kiện OnComm Sự kiện OnComm được phát sinh vào bất cứ khi nào giá trị của đặc tính CommEvent thay đổi. Sự kiện : Private Sub MsComm_OnComm() Đặc tính CommEvent chứa mã số của lỗi hay sự kiện phát sinh bởi sự kiện OnComm. Nên đặt các đặc tính Rthreshold hoặc Streshold bằng 0 để vô hiệu bẫy sự kiện Receive and Send. CommEvent trả lại phần lớn sự kiện giao tiếp hoặc có lỗi. CommEvent xảy ra khi có lỗi hoặc khi xảy ra sự kiện nào đó. Sau đây là một số hằng số lỗi: Sự kiện Giá trị Miêu tả sự kiện comEventBreak 1001 Xảy ra khi nhận được một tín hiệu Break. comEventFrame 1004 Lỗi hệ thống. Phần cứng phát hiện ra một lỗi hệ thống comEventOverrun 1006 Xảy ra khi cổng tự tràn( Overrun). Một kí tự không được đọc từ phần cứng trước khi kí tự tiếp theo tới và do đó kí tự này bị mất. comEventRxOver 1008 Xảy ra khi bộ đệm nhận bị tràn. Không có đủ chỗ cho dữ liệu trong bộ đệm nhận. comEventRxParity 1009 Lỗi Parity. Phần cứng phát hiện ra một lỗi Parity. comEventTxFull 1010 xảy ra khi bộ đệm truyền bị đầy. Bộ đệm truyền bị đầy trong khi ghi dữ liệu lớn vào bộ đệm comEventDCB 1011 Một lỗi không mong muốn khi đang khôi phục lại khối điều khiển thiết bị( DCB – Device Control Block) cho cổng Một số sự kiện : Sự kiện Giá trị Miêu tả sự kiện comEvSend 1 Xảy ra khi số kí tự trong bộ đệm truyền nhỏ hơn giá trị SthresHold. comEvReceive 2 Xảy ra khi bộ đệm nhận được số kí tự bằng giá trị RthresHold. Sự kiện này được tạo ra liên tục cho tới khi bạn dùng thuộc tính Input để lấy hết dữ liệu từ trong bộ đệm nhận. RcomEvCTS 3 Xảy ra khi có thay đổi trong đường CTS( Clear To Send) comEvDSR 4 Xảy ra khi thay đổi trong đường DSR( Data Set Ready). Sự kiện này chỉ xảy ra khi đường DSR thay đổi từ 1 -> 0. comEvCD 5 Xảy ra khi có thay đổi trong đường CD( Carrier Detect) comEvRing 6 Phát hiện chuông (Ring).Một số UART không hỗ trợ sự kiện này. comEvEOF 7 Xảy ra khi nhận được kí tự kết thúc file ( kí tự 26 trong bảng mã ASCII) 8.3 Giới thiệu về ActiveX Teechart 8.3.1 Giới thiệu Để sử dụng Teechart ta copy teechart7.ocx vào C:/Windows/system32, dùng Visual Basic 6.0 mở Teechart thông qua menu Project > Components Hình 1.48 – ActiveX Teechart, biểu tượng và giao diện Để thay đổi giao diện, thiết lập thông số ta kích chuột phải vào giao diện trên Form và chọn Edit. Cửa sổ Editing hiện ra. Hình 1.49 – Cửa sổ Editing và các kiểu đò thị Tại TAB Chart/Series, ta chọn Add để thêm đồ thị cần hiển thị và chọn kiểu đồ thị. Ở đây hổ trợ nhiều kiểu đồ thị khác nhau. Bỏ Check 3D để được đồ thị 2D. Kết quả sau khi chọn kiểu đồ thị Point 2D Hình 1.50 – Đồ thị Point 2D Ngoài ra, trong cửa sổ Editing ta có thể cài đặt các thông số của đồ thi như Asix (trục đồ thị), Little (Nhãn, tiêu đề)… 8.3.2 Các lệnh cơ bản 8.3.2.1 Lệnh xóa đồ thị With TChart1.Series(0) .Clear End With Tchart1 là tên của giao diện đồ thị Series(0) là thứ tự của đồ thị. Ví dụ nếu muốn vẽ 2 đồ thị trên 1 giao diện thì thứ tự của đồ thị lần lược là Series(0), Series(1). Clear là lệnh xóa. 8.3.2.2 Lệnh vẽ một điểm lên đồ thị With TChart1.Series(0) .AddXY timer * 10, vtecd, "", vbRed End With AddXY là lệnh vẽ 1 điểm lên đồ thị có trục X là (timer*10) và trục Y là vtecd, đồ thị có màu vbRed (màu chuẩn của Visual Basic 6). Hoặc lệnh vẽ đồ thị đơn giãn hơn là: With TChart1.Series(0) .Add vtecd, "", vbRed End With Add là lệnh vẽ 1 điểm lên đồ thị có trục Y là vtecd, trục X là điểm kế tiếp hướng tăng (giả sử trước đó đã vẽ một điểm nào đó, nếu chưa vẽ điểm nào thì X bắt đầu là 0). 9. ĐIỀU KHIỂN SỐ-ĐIỀU KHIỂN HỒI TIẾP 9.1 Hệ thống điều khiển số 9.1.1 Cấu trúc hệ thống điều khiển số Máy tính số Đối tượng Công suất chấp hành DAC r(kt) ADC Cảm biến Số (digital) analog Hình 1.51: Cấu trúc hệ thống điều khiển số 9.1.2 Hệ thống lấy mẫu tín hiệu Lấy mẫu trong kênh hồi tiếp Chấp hành và đối tượng DA Máy tính số r(kt) + e(kt) u(kt) u(t) - y(kt) zoh ADC Hồi tiếp Hình 1.52: Hệ thống lấy mẫu tín hiệu 9.2 Phương pháp điều khiển ON/OFF Sơ đồ điều khiển lò nhiệt được thể hiện qua hình bên dưới: Hình 1.53 Sơ đồ điều khiển lò nhiệt Phương pháp điều khiển ON-OFF còn được gọi là phương pháp đóng ngắt hay dùng khâu relay có trễ: cơ cấu chấp hành sẽ đóng nguồn để cung cấp năng lượng ở mức tối đa cho thiết bị tiêu thụ nhiệt nếu nhiệt độ đặt w(k) lớn hơn nhiệt độ đo y(k), ngược lại mạch điều khiển sẽ ngắt mạch cung cấp năng lượng khi nhiệt độ đặt nhỏ hơn nhiệt độ đo. Một vùng trễ được đưa vào để hạn chế tần số đóng ngắt như sơ đồ khối ở trên: nguồn chỉ đóng khi sai số e(k) > ∆ và ngắt khi e(k) < - ∆. Như vậy, nhiệt độ đo y(k) sẽ dao động quanh giá trị đặt w(k) và 2∆ còn được gọi là vùng trễ của rơ le. Khâu rơ le có trễ còn gọi là mạch so sánh Smith trong mạch điện tử và như vậy ∆ là giá trị thềm hay ngưỡng. Điều khiển ON-OFF có ưu điểm là: Thiết bị tin cậy, đơn giản, chắc chắn, hệ thống luôn hoạt động được với mọi tải. Phương pháp này có giá thành rẻ, được ứng dụng cho những đối tượng không yêu cầu cao về chất lượng điều khiển. Tính toán thiết kế ít phức tạp và cân chỉnh dễ dàng. Nhưng có nhược điểm là sai số xác lập sẽ lớn do hệ chỉ cân bằng động quanh nhiệt độ đặt và thay đổi theo tải. Khuyết điểm này có thể được hạn chế khi giảm vùng trễ bằng cách dùng phần tử đóng ngắt điện tử ở mạch công suất. 9.3 Phương pháp điều khiển hồi tiếp Bộ điều khiển PID được sử dụng rất rộng rãi trong thực tế để điều khiển nhiều loại đối tượng khác nhau như nhiệt độ lò nhiệt, tốc độ động cơ, mực chất lỏng trong bồn chứa,… Lý do bộ điều khiển này được sử dụng rộng rãi là vì nó có khả năng triệt tiêu sai số xác lập, tăng đáp ứng quá độ, giảm độ vọt lố nếu các tham số bộ điều khiển được chọn lựa thích hợp. Do sự thông dụng của nó nên nhiều hãng sản xuất thiết bị điều khiển đã cho ra đời các bộ điều khiển thương mại rất thông dụng. Thực tế các phương pháp thiết kế bộ điều khiển PID dùng quỹ đạo nghiệm số, giản đồ Bode hay phương pháp giải tích rất ít được sử dụng do việc khó khăn trong xây dựng hàm truyền đối tượng. Phương pháp phổ biến nhất để chọn tham số PID thương mại hiện nay là phương pháp Ziegler-Nichols. KHẢO SÁT VÒNG HỞ Hình 1.54: Đáp ứng nấc của lò nhiệt Đáp ứng này có thể được xấp xỉ bởi hàm truyền sau: Trong đó: K : độ lợi tĩnh T : hằng số thời gian L : thời gian trễ Chú ý: Các tham số của bộ điều khiển PID được tính theo phương pháp đáp ứng nấc của Ziegler-Nichols như bảng 1. Bảng 1 Bộ điều khiển KP TI TD P 1/a PI 0.9/a 3L PID 1.2/a 2L L/2 ĐIỀU KHIỂN VÒNG KÍN Sơ đồ điều khiển như hình 1.55. Hình 1.55 Sơ đồ điều khiển lò nhiệt Bộ điều khiển PID có hàm truyền dạng liên tục như sau: Có 3 phương pháp căn bản để biến đổi z hàm truyền trên. Phương pháp Euler thuận (Forward Euler): Phương pháp Euler nghịch (Backward Euler): Phương pháp hình thang (Tustin): Biến đổi Z của nó như sau: Viết lại G(z) như sau: Đặt: Suy ra: Từ đó, ta tính được tín hiệu điều khiển u(k) khi tín hiệu vào e(k) như sau: Suy ra: Việc hiệu chỉnh 3 thông số Kp , Ki, Kd sẽ làm tăng chất lượng điều khiển. Ảnh hưởng của 3 thông số này lên hệ thống như sau: Điều khiển tỉ lệ (Kp) có ảnh hưởng làm giảm thời gian lên và sẽ làm giảm nhưng không loại bỏ sai số xác lập. Điều khiển tích phân (Ki) sẽ loại bỏ sai số xác lập nhưng có thể làm đáp ứng quá độ xấu đi. Điều khiển vi phân (Kd) có tác dụng làm tăng sự ổn định của hệ thống, giảm vọt lố và cải thiện đáp ứng quá độ. Ảnh hưởng của mỗi bộ điều khiển Kp, Ki, Kd lên hệ thống vòng kín được tóm tắt ở bảng bên dưới (bảng 2). Bảng 2 Đáp ứng vòng kín Thời gian lên Vọt lố Thời gian xác lập Sai số xác lập Kp Giảm Tăng Thay đổi nhỏ Giảm Ki Giảm Tăng Tăng Loại bỏ Kd Thay đổi nhỏ Giảm Giảm Thay đổi nhỏ Chương 2: THIẾT KẾ VÀ THI CÔNG 1. NHIỆM VỤ VÀ HƯỚNG GIẢI QUYẾT 1.1 Nhiệm Vụ Nhiệm vụ của đồ án này là thiết kế một hệ thống thu thập dữ liệu nhiều kênh, đối tượng thu thập và giám sát là nhiệt độ lò ba lò nhiệt. Yêu cầu là chúng ta phải giám sát và điều khiển nhiệt độ ba lò nhiệt luôn duy trì ở một nhiệt độ như ta mong muốn. Sử dụng vi xử lý 89V51 làm bộ điều khiển trung gian để giao tiếp máy tính. 1.2 Hướng Giải Quyết Sử dụng các cảm biến nhiệt độ như PT100, LM35. Sử dụng bộ chuyển đổi A/D và D/A. Sử dụng phương pháp điều khiển ON/OFF và PID. Thiết kế và lập trình giao tiếp giữa vi điều khiển 89V51RB2 với máy vi tính và lò nhiệt. Sử dụng ngôn ngữ visual basic để tạo giao diện và giao tiếp với vi xử lý 89V51 qua RS232. Viết chương trình điều khiển. 2. THIẾT KỀ PHẦN CỨNG 2.1 Sơ Đồ Khối Điều Khiển Hình 2.1: Sơ đồ khối điều khiển Máy tính ( PC ) Sơ đồ khối chi tiết hệ thống điều khiển To Max232 Khuyếch đại tín hiệu Bộ chuyển đổi ADC và MUX PT100 Lò nhiệt 1 Vi xử lý 89V51 Khuyếch đại tín hiệu LM35 Lò nhiệt 2 Khuyếch đại tín hiệu LM35 Lò nhiệt 3 PWM Bộ chuyển đổi DAC K.đại và chấp hành 3 K.đại và chấp hành 2 K.đại và chấp hành 1 Bus 3 Khuếch đại Quạt3 Khuếch đại Quạt2 Bus 3 Khuếch đại Quạt1 Hình 2.2: Sơ đồ khối chi tiết hệ thống điều khiển Lò 1: Điều khiển ON/OFF Lò 2: Điều khiển ON/OFF Lò 3: Điều khiển ON/OFF hoặc PID 2.2 Giải thích nguyên lý từng khối Máy tính(PC): Dùng ngôn ngữ lập trình Visual Basic 6.0 làm phương tiện giao tiếp. Nhiệm vụ của Visual Basic 6 là: Tạo giao diện người dùng để giao tiếp với người sử dụng. Trên đó cho phép thay đổi giá trị nhiệt độ yêu cầu, thay đổi bộ thông số PID, vẽ đồ thị biểu diễn đáp ứng của hệ thống. Thiết lập giao tiếp với khối Vi điều khiển qua cổng nối tiếp RS – 232. Lấy giá trị đo nhiệt đo thực tế do khối vi điều khiển truyền về để xử lý. Từ giá trị đo nhiệt độ thực tế, gửi lệnh xuống vi xử lý để thực hiện việc điều khiển đóng/mở (on/off) lò, hay thực hiện thuật toán PID xuất giá trị độ rộng xung về khối Vi xử lý để điều khiển. Vi điều khiển : Dùng ngôn ngữ lập trình hợp ngữ 8051 để lập trình cho Vi điều khiển 89V51RB2. Nhiệm vụ của khối vi điều khiển là: Thiết lập giao tiếp với máy tính qua cổng giao tiếp nối tiếp. Thực hiện việc lấy nhiệt độ thực tế của lò nhiệt từ bộ chuyển đổi ADC và truyền giá trị này về cho khối máy tính để xử lý. Xuất giá trị ra bộ chuyển đổi DAC để điều khiển việc đóng/mở lò nhiệt. Thực hiện thuật toán điều chế độ rộng xung (PWM), xuất xung PWM và xung điều khiển nhiệt độ của lò nhiệt cho khối công suất. Giá trị độ rộng xung nhận được từ khối máy tính. Mạch công suất: nhiệm vụ của khối này là: Khuếch đại công suất từ tín hiệu điều khiển do khối vi điều khiển truyền tới để điều khiển lò nhiệt. Bộ chuyển đổi ADC : Do các tín hiệu đầu ra của cảm biến là các tín hiệu tương tự không thích hợp để đưa vào các mạch số để xử lý. Vì thế cần phải có mạch ADC để chuyển đổi từ tương tự sang số để các vi mạch số có thể hiểu và xử lý được. Bộ chuyển đổi DAC: Dùng chuyển đổi từ tín hiệu số sang tương tự để điều khiển. Max 232: Max-232 dùng để giao tiếp giữa máy tính và vi điều khiển Cảm biến: để thu thập các giá trị của các đại lượng vật lý của môi trường bên ngoài. Mạch khuyếch đại và điều chỉnh: do giá trị của đầu ra các cảm biến thường nhỏ so với bộ chuyển đổi ADC của hệ thống vì thế cần có mạch khuyếch đại và chuyển đổi cho thích hợp với các mạch chuyển đổi. 2.2.1 Sơ Đồ Nguyên Lý KHỐI VI XỬ LÝ 2.2.2 Đối tượng lò nhiệt thực tế Hàm truyền của lò nhiệt được xác định bằng phương pháp thực nghiệm. Cấp nhiệt tối đa cho lò( công suất vào P=100%), nhiệt độ lò tăng dần.Sau thời gian nhiệt độ lò đạt giá trị bão hòa. Do đặc tính chính xác của lò nhiệt khá phức tạp nên ta xấp xỉ bằng đáp ứng gần đúng. a.Đặc tính chính xác của lò nhiệt b.Đặc tính gần chính xác của lò nhiệt Hình 2.3: Đặc tính của lò nhiệt Ta xác định hàm truyền gần đúng của lò nhiệt dùng định nghĩa sau: Tín hiệu vào là hàm nấc đơn vị (công suất=100%) : (1) Tín hiệu ra gần đúng chính là hàm: Trong đó: Thực hiện biến đổi Laplace ta được: Áp dụng định lý chậm trễ ta được: (2) Từ (1) và (2) suy ra hàm truyền của lò nhiệt là: Công suất lò nhiệt thực tế: Với: U: hiệu điện thế cung cấp (220V) R:là điện trở dây may so (40 Ω) Nhiệt độ đo tối đa là 2000 C 2.3 Thiết kế chi tiết 2.3.1 Khối nguồn Hình 2.4: khối nguồn Hình 2.4 : khối nguồn Biến điện áp ngõ vào AC thành điện áp DC khi qua cầu điode IC 7812/IC7912 là IC ổn áp ngõ ra 12v/-12v cung cấp điện áp cho các Opamp hoạt động. IC 7805 và thành điện áp ngõ ra 5V cung cấp cho vi điều khiển và khối giao tiếp với máy tính. Các tụ lọc trước và sau IC ổn áp nhằm lọc các tần số cao do các mạch điều khiển và nguồn gây ra giúp cho điện áp ngõ ra ổn định. 2.3.2 Khối ADC Hình 2.5: Khối ADC Do chỉ sử dụng bốn ngõ vào nên nối chân chọn A2 xuống mát(chân IN0,IN1,IN2,IN3 được chọn). Để có độ phân giải 19,6mv ta nối chân Vref(+)= 5v,chânVref(-)= 0v. Độ phân giải ADC = = Để vi xử lý điều khiển được hoạt động của ADC thì:Chân start nối với ALE nối với P3.6,chân EOC,OE lần lượt nối với P3.4 và P3.5,chân dữ liệu D0-D7 nối P2. Trong ADC 0809 không có xung clock riêng và do vậy phải cấp xung đồng bộ ngoài đến chân CLK. Mặc dù tốc độ chuyển đổi phụ thuộc vào tần số đồng hồ được nối đến CLK nhưng nó không nhanh hơn 100ms. Tần số dao động của mạch: f= Tần số dao động chuẩn là 640 kHz Suy ra 640.103 = Với R từ 100W đến vài kW ta chọn R =120 W Þ C = 103p. ADC 0809 là IC để chuyển đổi tương tự sang số dùng kỹ thuật CMOS. Bao gồm 8 kênh làm việc độc lập với nhau để lựa chọn đầu vào từ In0 đến In7 2.3.2.1.Các chân của ic IN0 đến IN7 : 8 ngõ vào tương tự A0 đến A2 : giải mã chọn một trong 8 ngõ vào D0 đến D8 : ngõ ra song song 8 bit ALE : cho phép chốt địa chỉ START : xung bắt đầu chuyển đổi CLK : xung đồng hồ cho ic hoạt động REF (+) : điện thế tham chiếu(+) REF (-) : điện thế tham chiếu (-) VCC : nguồn cung cấp EOC :báo kết thúc chuyển đổi OE :cho phép đọc dữ liệu sau chuyển đổi VCC và GND cấp nguồn và mát cho ic hoạt động Các bít A0,A1,A2 để chọn đầu vào theo bảng sau: A2 A1 A0 Ngõ vào được chọn 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 Hình 2.6. Bit chọn ngõ vào ADC0809 * Các đặc điểm củaADC 0809: Độ phân giải 8 bit Tổng sai số chưa chỉnh định ± ½ LSB; ± 1 LSB Thời gian chuyển đổi: 100ms ở tần số 640 kHz Nguồn cung cấp + 5V Điện áp ngõ vào 0 – 5V Tần số xung clock 10kHz – 1280 kHz Nhiệt độ hoạt động - 40oC đến 85oC Dễ dàng giao tiếp với vi xử lý hoặc dùng riêng Không cần điều chỉnh zero hoặc đầy thang Sử dụng phương pháp xấp xỉ liên tiếp để biến đổi tín hiệu tương tự sang tín hiệu số. 2.3.2.2 Cách mắc, Nguyên lý hoạt động của ic Cách mắc Hình 2.7: Cách mắc ADC0809 Nguyên lý hoạt động Kích hoạt chân ALE (cho phép chốt địa chỉ Address Latch Enable). Nó cần xung thấp lên cao để chốt địa chỉ. Sau khi kích xung start thì bộ chuyển đổi bắt đầu hoạt động ở cạnh xuống của xung start, ngõ ra EOC(End - Of - Conversion) sẽ xuống mức thấp sau khoảng 8 xung clock (tính từ cạnh xuống của xung start). Lúc này bit có trọng số lớn nhất (MSB) được đặt lên mức 1, tất cả các bít còn lại được đặt xuống mức 0, đồng thời tạo giá trị điện thế Vref/2, điện thế này được so sánh với điện thế vào Vin. + Nếu Vin > Vref/2 thì bit MSB vẫn ở mức 1. + Nếu Vin < Vref/2 thì bit MSB xuống mức 0. Tương tự như vậy bit kế tiếp MSB được đặt lên 1 và tạo ra điện thế có giá trị Vref/4 và cũng so sánh với điện áp ngõ vào Vin. Quá trình cứ tiếp tục cho đến khi xác định được bit cuối cùng. Khi đó chân EOC lên mức 1 báo cho biết đã kết thúc chuyển đổi. Để đọc được dữ liệu thì set bit OE(Out put Enable) lên mức 1. Trong quá trình chuyển đổi khi có xung start tác động thì ADC sẽ ngưng chuyển đổi. 2.3.3 Khối DAC Hình 2.8: Khối DAC Chân dữ liệu của DAC nối với P0 của vi xử lý. Ngõ ra của DAC (chân 4) là dòng. Qua mạch chuyển đổi Opamp U6 trở thành áp. Chân 14 của DAC Vref+=5v. Chân 15 của DAC Vref-=0v Ta có công thức tính như sau: Với: K = Vref/ R14 = 5/5k = 1 mA Ngõ ra của DAC từ A1 đến A8 là mức 1 thì: Io = 1 mA x (255/256)=1 mA x 0.99= 1 mA => Vo = Io x Rf = 1 mA x 5k = 5 volt Độ phân giải = 5/255 = 0.02 volt. Độ chính xác ±0.19%, thời gian xác lập nhanh 150 ns 2.3.4 Khối cảm biến nhiệt 2.3.4.1 Cảm biến LM35 Hình 2.9: Khối cảm biến nhiệt Lm35 LM35 hoạt động ở 0oC cho ra điện áp 0v. Cứ tăng 1oC thì điện áp tăng lên 10mv. Ta xét nhiệt độ trong khoảng 100oC thì điện áp tương ứng ở ngõ ra cảm biến là 1V. Áp dụng phương pháp xếp chồng ta được: Độ phân giải của ADC0809 là 19,6mv,để đạt được độ chính xác 0,5oC thì: Av *10mV = 2*19.6mV =>Av = 3.92 =>Chọn R40 = 22K, R41=20k và R42 = 10K Biến trở R40=20k dùng bù sai số cho điện trở để cho hệ số khuếch đại Av chính xác. Hình 2.10: khối cảm biến nhiệt PT100 2.3.4.2 Cảm biến nhiệt PT100 +Ở Opamp U1: Ta có: V+=Vcc*VR4_2/(VR4_1+R2) => VO1=(R7/R6 +1)*V+=2*V+=2* Vcc*VR4_2/(VR4_1+R2) (1) => VO1= 5v +Ở Opamp U5: Ta có: V-=VO1*(R18/(R18+R8))=VO1*(100/200)=VO1*0.5 (V) V+=V01*(PT100/(PT100+R9)=VO1*(PT100/(PT100+100)) (V) VO2=V+*(R14/(R14+R10))*(R20/R16+1)-V- VO2=V+*(10K/(10K+10K))*(10K/10K+1)-V- VO2=V+-V- (2) +Ở Opamp U7: Ta có: VO3=VO2*(R11+VR12)/R15=VO2*A=VO2*10 (3) Với hệ số khuyếch đại: A=(R11+VR12)/R15=(82K+VR12)/10K=(82K+18K)/10K=10 lần Giả sử ở 100oC thì giá trị PT100 là 138.5 ohms VO2=V+-V- =2.5*(138.5/238.5)-2.5*0.5= 0.2 V Hình 2.10: khối cảm biến nhiệt PT100 VO3 =0.2*10=2v 2.3.5 Khối giao tiếp PC Hình 2.11: Khối giao tiếp PC Sử dụng IC MAX232 để giao tiếp. Nhiệm vụ của IC MAX232 là đảo điện áp ngõ vào (cổng RS–232 sử dụng mức logic âm, mức 1 ứng với từ –3V đến –15V, mức 0 ứng với từ 3V đến 15V) từ cổng Com cho vi điều khiển và đảo điện áp điều khiển từ vi điều khiển đến cổng Com. 2.3.6 Khối công suất Hình 2.12: Khối mạch công suất Chân SEL điều khiển đóng ngắt cho hay không cho Moc3020 hoạt động. Khi điện áp vào chân 1 của Moc3020, nếu mức 1 thì led phát sẽ sáng và làm cho led thu có tín hiệu, dẫn và kích chân G của triac làm cho điện AC qua tải . Ngược lại mức 0 vào chân 1 thì led thu không có tín hiệu và triac không được kích, dòng điện không qua tải. 2.3.7 Khối điều khiển quạt Hình 2.13: Khối điều khiển quạt Khi kích mức 1 vào Q2 thì LED sáng và quạt hoạt động. Ngược lại khi kích mức 0 thì led tắt và quạt ngừng hoạt động. Điện trở R44 là điện trở kéo lên. Điện trở R46 hạn dòng bảo vệ Q2. Diode D7 dập dòng cảm ứng sinh ra do quạt hoạt động để bảo vệ mạch điều khiển. 2.4 Nguyên lý hoạt động của hệ thống thu thập dữ liệu nhiều kênh Trên máy tính, ta đặt nhiệt độ của ba lò nhiệt sau đó bấm start để hệ thống bắt đầu hoạt động. Khi đó ba lò nhiệt bắt đầu hoạt động làm nhiệt độ của ba lò tăng lên, các cảm biến nhiệt sẽ đọc nhiệt độ của ba lò nhiệt, sau đó thông qua bộ biến đổi ADC để biến đổi tín hiệu tương tự thành tín hiệu số, vi xử lý sẽ đọc các dữ liệu đó và gửi lên máy tính. Máy tính sẽ hiển thị nhiệt độ của ba lò nhiệt trên màn hình, vẽ đáp ứng của ba lò nhiệt đó, chứa các giá trị nhiệt độ thu được vào một file access. Máy tính gửi mã điều khiển xuống vi xử lý để điểu khiển nhiệt độ của ba lò nhiệt như mong muốn. 2.5 Mạch In Hình 2.14: Mạch in 2.6 Lưu đồ giải thuật 2.6.1 Lưu đồ chính Start – Tạo tốc độ BAUD 9600 bits để giao tiếp VDK với máy tính (Dùng TIMER1) – Khởi tạo chế độ giao tiếp nối tiếp – Tắt các bit điều khiển quạt và lò nhiệt –Nạp giá trị P0=00h –Nạp P2=0FFh để đọc dữ liệu từ ADC – Cho phép ngắt TIMER2, Port Nối tiếp Đ CHUYEN_ADC=1? S _Gọi chương trình Lấy mẫu ADC _Không cho phép ngắt Port nối tiếp _Gửi 4 byte dữ liệu lên máy tính _Cho phép ngắt Port nối tiếp 2.6.2 Lưu đồ chương trình con lấy mẫu ADC Lấy mẫu ADC _Chọn ngõ vào IN0 của ADC _Gọi chương trình Biến đổi ADC _Cất vào biến tạm ADC1 _Chọn ngõ vào IN1 của ADC _Gọi chương trình Biến đổi ADC _Cất vào biến tạm ADC2 _Chọn ngõ vào IN2 của ADC _Gọi chương trình Biến đổi ADC _Cất vào biến tạm ADC3 _Chọn ngõ vào IN3 của ADC _Gọi chương trình Biến đổi ADC _Cất vào biến tạm ADC4 RET 2.6.3 Lưu đồ chương trình con biến đổi ADC Biến đổi ADC START=0 ,ALE=1 EOC=0? Đ S Đọc giá trị ADC từ P2 vào 20h OE=1 RET 2.6.4 Lưu đồ chương trình ngắt nối tiếp Ngắt nối tiếp _Xóa cờ thu RI _Đọc dữ liệu từ bộ đệm vào thanh ghi A _Nạp giá trị P0=0FFh Đ RETI CLR chuyen_adc A=’M’? S Đ RETI Mở lò 1 A=’A’? S Đ RETI Đóng lò 1 A=’B’? S Mở lò 2 A=’C’? Đ RETI S Đ RETI Đóng lò 2 A=’D’? S A=’E’? Đ RETI Mở lò 3 S Đ RETI Đóng lò 3 A=’F’? Đ S RETI Tắt tất cả các lò A=’T’? S Đóng lò 3,Clr Pwm (Ton = 0, Toff = 255) RETI A=0 ? S Đ Mở lò 3, Set Pwm (Ton = 255, Toff =0) RETI A=255 ? S – Nạp R7 vào R0 – SETB PWM (TON) – Gọi ctr DELAY – R0 = R0 - 1 Dùng lệnh và thanh ghi R0 để tạo delay 40μs RET DELAY R0=0? R0=0? – Gọi ctr DELAY – R0 = R0 - 1 – R0 = 255 - R7 – CLR PWM (TOFF) RETI 2.7 Kết quả thi công Mạch thi công thực tế: Giao diện chương trình trên máy tính Kết quả khi chạy chương trình: So sánh kết quả khi điều khiển lò nhiệt 3 bằng phương pháp on/off và PID Phương pháp on/off Khi đặt nhiệt độ lò nhiệt 3 là 800C ta được đáp ứng sau: Phương pháp PID Với các thông số Kp = 10, Ki = 4, Kd = 0.00001, nhiệt độ lò nhiệt 3 đặt là 800C ta có biểu đồ đáp ứng như sau: Khi điều khiển theo phương pháp on/off thì sai số xác lập sẽ lớn do hệ chỉ cân bằng động quanh nhiệt độ đặt và thay đổi theo tải. Do vậy, phương pháp điều khiển on/off được ứng dụng cho các đối tượng không yêu cầu cao về chất lượng điều khiển. Khi điều khiển theo phương pháp PID thì nó có khả năng triệt tiêu sai số xác lập, tăng đáp ứng quá độ, giảm độ vọt lố nếu các tham số bộ điều khiển được chọn lựa thích hợp. Do vậy, phương pháp điều khiển pid được ứng dụng cho các đối tượng yêu cầu cao về chất lượng điều khiển và độ chính xác cao. Chương 3: Kết Luận 1.Kết quả Đề tài này đã thực hiện được kết quả sau: Nghiên cứu tìm hiểu lý thuyết vi điều khiển 89V51, cảm biến nhiệt độ (Pt100,LM35), ADC, DAC, phương pháp giao tiếp nối tiếp qua cổng com, phương pháp điều khiển on-off, phương pháp điều khiển PID. Thực hiện hệ thống thu thập dữ liệu nhiều kênh : Xây dựng thành công hệ thống giám sát và thu thập dữ liệu (nhiệt độ) từ bốn cảm biến (một cảm biến Pt100, ba cảm biến LM35). Trong ba cảm biến dùng đo nhiệt độ ba lò nhiệt, cảm biến còn lại dùng để đo nhiệt độ môi trường. Giao tiếp mạch với máy tính thông qua cổng Com. Các giá trị cài đặt, các giá trị thu thập được hiển thị trên giao diện vì thế kết quả đạt được rất trung thực, trực quan giá trị dễ dàng chỉnh sửa tùy theo người sử dụng. Kết quả thu thập được chứa vào MSAccess giúp người dùng giám sát một cách dễ dàng. Thực hiện thuật toán pid số và so sánh kết quả với điều khiển on/off( lò nhiệt ba) và nhận thấy kết quả đáp ứng tốt hơn khi điều khiển bằng pid, sai số nhỏ hơn khi điều khiển bằng on/off. Nhược điểm: Do giao tiếp bằng cổng com nên bị giới hạn về khoảng cách truyền. Có thể thu thập nhiệt độ tối đa là 8 kênh (do ADC0809 có 8 ngõ vào). Chưa tìm được các thông số Kp, Ki, Kd tối ưu để được đáp ứng tốt nhất. 2.Hướng phát triển +Có thể dùng PIC,AVR có sẳn ADC để mạch gọn hơn. +Có thể giao tiếp với máy tính qua nhiều cổng khác nhau như: card PCI 1711, LPT, USB, Wireless… +Có thể kết nối mạng để thu thập, điều khiển và giám sát, quản lý nhiều hệ thống, kết hợp nhiều hệ thống để xây dựng thành hệ điều khiển phân tán DCS. +Xây dựng một hệ thống thu thập dữ liệu, giám sát và điều khiển các quá trình từ xa (SCADA). PHỤ LỤC 1. Code chương trình Visual Basic Option Explicit Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _ bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetVersionExA Lib "kernel32" _ (lpVersionInformation As OSVERSIONINFO) As Integer Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Private Const KEYEVENTF_KEYUP = &H2 Private Const VK_SNAPSHOT = &H2C Private Const VK_MENU = &H12 Dim blnAboveVer4 As Boolean ''''''''''''''''KHAI BAO BANG GHI************** Dim db As Database Dim rs As Recordset Dim L, T As Double Dim ti As Double 'KHAI BAO BAO CHAY Dim Des, DES1, DES2, DES3 As String Dim I, J, P As Integer Dim note, CONNECT As Boolean Dim DATA As String Dim T1, T11, T22, T33, T2, T3, T4 As Double Dim dat1, dat2, dat3, dat4, dat5, dat6 As Integer 'KHAI BAO CAC BIEN PID Dim kp, kd, ki, A0, A1, A2 As Single Dim e0, e1, e2, nddo, nddat As Single Dim DUTY, DUTY1 As Integer 'check1 cho phep mo lo 1 hay ko 'check2 cho phep mo lo 2 hay ko 'check3 cho phep mo lo 3 hay ko 'check4 mo do thi lo 1 'check5 mo do thi lo 2 'check6 mo do thi lo 3 'TIMER1 CHAY CHU TIEU DE 'TIMER2 CHAY THOI GIAN 'TIMER3 LAY MAU ADC -TIMER4 DUNG GHI DU LIEU SAU 1S '*********************bat dau chuong trinh************************** Private Sub CHAY_Click() With TChart1.Series(0) .Clear End With With TChart1.Series(1) .Clear End With With TChart1.Series(2) .Clear End With With TChart1.Series(3) .Clear End With With TChart1.Series(4) .Clear End With With TChart1.Series(5) .Clear End With If (Text1.Text = "" Or Not (IsNumeric(Text1.Text)) Or Val(Text1.Text) 200) And Check1.Value = 0 Then MsgBox "NHAP GIA TRI LO 1 TU 50 DEN 200 DO", vbInformation, "THONG BAO" Text1.SetFocus ElseIf (Text2.Text = "" Or Not (IsNumeric(Text2.Text)) Or Val(Text2.Text) 200) And Check2.Value = 0 Then MsgBox "NHAP GIA TRI LO 2 TU 50 DEN 127 DO", vbInformation, "THONG BAO" Text2.SetFocus ElseIf (Text3.Text = "" Or Not (IsNumeric(Text3.Text)) Or Val(Text3.Text) 200) And Check3.Value = 0 Then MsgBox "NHAP GIA TRI LO 3 TU 50 DEN 127 DO", vbInformation, "THONG BAO" Text3.SetFocus Else MSComm1.CommPort = Combo1.ListIndex + 1 'CONG COM1 MSComm1.Settings = Combo2.Text 'TOC DO BAUD 9600 MSComm1.RThreshold = 4 MSComm1.InputLen = 4 MSComm1.DTREnable = False MSComm1.PortOpen = True DATA = MSComm1.Input 'kiem tra ket noi cong com If DATA = "" Then KNOI.Caption = "KIEÅM TRA KEÁT NOÁI COÅNG COM " End If nddat = Val(Text3.Text) DUTY = 0 DUTY1 = 0 e0 = 0 e1 = 0 e2 = 0 Form2.Hide 'an 3 form - de dang chay Form3.Hide Form4.Hide Check1.Enabled = False Check2.Enabled = False Check3.Enabled = False Text1.Enabled = False Text2.Enabled = False Text3.Enabled = False Timer3.Enabled = True 'CHO DOC ADC Timer5.Enabled = True End If End Sub Private Sub Check1_Click() If Check1.Value = 1 Then Check1.Caption = "Taét Loø" Text1.Enabled = False Text1.Text = 0 Text4.Text = 0 Else Text1.Enabled = True Check1.Caption = "Baät Loø" End If End Sub Private Sub Check2_Click() If Check2.Value = 1 Then Check2.Caption = "Taét Loø" Text2.Enabled = False Text2.Text = 0 Text5.Text = 0 Else Text2.Enabled = True Check2.Caption = "Baät Loø" End If End Sub Private Sub Check3_Click() If Check3.Value = 1 Then 'khong hoat dong Check3.Caption = "Taét Loø" Text3.Enabled = False Text3.Text = 0 Text6.Text = 0 Check7.Enabled = False Check8.Enabled = False TXTKP.Enabled = False TXTKI.Enabled = False TXTKD.Enabled = False MACDINH.Enabled = False Else Check3.Caption = "Baät Loø" Text3.Enabled = True Check7.Enabled = True Check8.Enabled = True TXTKP.Enabled = True TXTKI.Enabled = True TXTKD.Enabled = True MACDINH.Enabled = True End If End Sub Private Sub Check4_Click() 'HIEN DO THI If Check4.Value = 1 Then Form2.Show Else Form2.Hide End If End Sub Private Sub Check5_Click() If Check5.Value = 1 Then Form3.Show Else Form3.Hide End If End Sub Private Sub Check6_Click() If Check6.Value = 1 Then Form4.Show Else Form4.Hide End If End Sub Private Sub Check7_Click() If Check7.Value = 1 Then 'nut chon dieu khien on/off lo 3 Check8.Value = 0 Check8.Enabled = False TXTKP.Enabled = False TXTKI.Enabled = False TXTKD.Enabled = False MACDINH.Enabled = False Else Check8.Value = 0 Check8.Enabled = True TXTKP.Enabled = True TXTKI.Enabled = True TXTKD.Enabled = True MACDINH.Enabled = True End If End Sub Private Sub Check8_Click() If Check8.Value = 1 Then 'nut chon dieu khien pid lo 3 Check7.Value = 0 Check7.Enabled = False TXTKP.Enabled = True TXTKI.Enabled = True TXTKD.Enabled = True MACDINH.Enabled = True Else Check7.Value = 0 Check7.Enabled = True End If End Sub Private Sub DUNG_Click() Timer5.Enabled = False Timer4.Enabled = False 'CAP NHAT VAO BANG TIN Check1.Enabled = True Check2.Enabled = True Check3.Enabled = True Check8.Enabled = True Check7.Enabled = True TXTKP.Enabled = True TXTKI.Enabled = True TXTKD.Enabled = True MACDINH.Enabled = True ti = 0 If MSComm1.PortOpen = True Then If CHAY.Enabled = False Then 'MSComm1.Output = Chr$(0) 'TAT TAT CA QUAT VA LO MSComm1.Output = "T" Timer3.Enabled = False 'NGUNG DOC ADC MSComm1.PortOpen = False 'DONG CONG GIAO TIEP Check1.Enabled = True Check2.Enabled = True Check3.Enabled = True Text1.Enabled = True Text2.Enabled = True Text3.Enabled = True CHAY.Enabled = True Label4.Caption = "OFF" Label6.Caption = "OFF" Label8.Caption = "OFF" Label10.Caption = "OFF" Label12.Caption = "OFF" Label14.Caption = "OFF" KNOI.Caption = " DÖØNG KEÁT NOÁI" Shape1.FillColor = vbBlack Shape2.FillColor = vbBlack Shape3.FillColor = vbBlack Shape4.FillColor = vbBlack Shape5.FillColor = vbBlack Shape6.FillColor = vbBlack End If End If End Sub Private Sub Form_Load() With TChart1.Series(0) .Clear End With With TChart1.Series(1) .Clear End With With TChart1.Series(2) .Clear End With With TChart1.Series(3) .Clear End With With TChart1.Series(4) .Clear End With With TChart1.Series(5) .Clear End With Form1.Height = 18000 Form1.Width = 18000 Check7.Value = 1 DUNG.Enabled = False MO_FILE.Enabled = False XOA.Enabled = False Check1.Value = 0 Check2.Value = 0 Check3.Value = 0 Check4.Value = 0 'THE HIEN DO THI LO 1 Check5.Value = 0 'THE HIEN DOTHI LO 2 Check6.Value = 0 'THE HIEN DO THI LO3 Check1.Caption = "Baät Loø" Check2.Caption = "Baät Loø" Check3.Caption = "Baät Loø" Timer4.Enabled = False Call setFlex 'goi chuong trinh luu data Call fillGrid T11 = 0 T1 = 0 T2 = 0 T3 = 0 T4 = 0 ti = 0 Timer5.Enabled = False Timer3.Enabled = False KNOI.Caption = " KIEÅM TRA KEÁT NOÁI" note = True DES2 = " TRÖÔØNG ÑAÏI HOÏC COÂNG NGHIEÄP TPHCM- KHOA COÂNG NGHEÄ ÑIEÄN TÖÛ" Des = " HEÄ THOÁNG THU THAÄP DÖÕ LIEÄU NHIEÀU KEÂNH " DES1 = "SVTH: VOÕ HOAØNG MINH GVHD: THS HUYØNH MINH NGOÏC " DES3 = "DO AN TOT NGHIEP-TRUONG DAI HOC CONG NGHIEP TP.HCM-KHOA CONG NGHE DIEN TU" Combo1.ListIndex = 0 Combo2.ListIndex = 0 Label4.ForeColor = vbRed Label6.ForeColor = vbRed Label8.ForeColor = vbRed Label10.ForeColor = vbRed Label12.ForeColor = vbRed Label14.ForeColor = vbRed Label4.Caption = "OFF" 'lo1 Label6.Caption = "OFF" 'lo2 Label8.Caption = "OFF" 'lo3 Label10.Caption = "OFF" 'quat1 Label12.Caption = "OFF" 'quat2 Label14.Caption = "OFF" 'quat3 kp = 10 'Nap gia tri PID vao 3 bien ki = 4 kd = 0.00001 TXTKP.Text = kp 'hien thi len TXTKI.Text = ki TXTKD.Text = kd End Sub Private Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If End Sub Private Sub MACDINH_Click() TXTKP.Text = kp 'nap gia tri mac dinh TXTKI.Text = ki TXTKD.Text = kd End Sub Private Sub MClose_Click() Dim TH As Integer If MSComm1.PortOpen = True Then MSComm1.Output = "T" 'TAT TAT CA QUAT VA LO Timer3.Enabled = False MSComm1.PortOpen = False End If TH = MsgBox("BAN CO MUON THOAT KHOI CHUONG TRINH KHONG ?", vbInformation + vbOKCancel, "THONG BAO!!!!") If TH = vbOK Then End End If End Sub Private Sub MEXit_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If Timer3.Enabled = False End End Sub Private Sub MHelp_Topic_Click() Form5.Show End Sub Private Sub MInfo_Click() MsgBox "MULTI CHANNEL DATA ACQUISITION SYSTEM" & vbCrLf _ & "Copyright " & Chr$(169) & " 2009 DESIGNER BY : VO HOANG MINH", , _ "INFORMATION" End Sub Private Sub MO_FILE_Click() Timer4.Enabled = False Call Shell("C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE ""D:\do an\DO AN TOT NGHIEP\daq.mdb") End Sub Private Sub MOpen_Click() Call Shell("C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE ""D:\do an\DO AN TOT NGHIEP\daq.mdb") End Sub Private Sub MPrint_Click() If blnAboveVer4 Then keybd_event VK_SNAPSHOT, 0, 0, 0 Else keybd_event VK_SNAPSHOT, 1, 0, 0 End If Picture1.Picture = Clipboard.GetData(vbCFBitmap) DoEvents If Picture1.Picture 0 Then SavePicture Picture1.Picture, "D:\Hinh.JPG" End If End Sub Private Sub MSComm1_OnComm() If MSComm1.CommEvent = comEvReceive Then CHAY.Enabled = False Timer4.Enabled = True 'DUNG DE GHI TAP TIN DUNG.Enabled = True MO_FILE.Enabled = True XOA.Enabled = True DATA = MSComm1.Input KNOI.Caption = " ÑANG KEÁT NOÁI" T1 = Asc(Mid$(DATA, 1, 1)) T2 = Asc(Mid$(DATA, 2, 1)) T3 = Asc(Mid$(DATA, 3, 1)) T4 = Asc(Mid$(DATA, 4, 1)) MT.Caption = T4 / 2 'nhiet do moi truong If Check1.Value = 0 Then T11 = T1 - 24 Text4.Text = T11 'NHIET DO THUC TE lo 1 End If If Check2.Value = 0 Then Text5.Text = T2 / 2 'NHIET DO THUC TE lo 2 T22 = T2 / 2 End If If Check3.Value = 0 Then Text6.Text = T3 / 2 'NHIET DO THUC TE lo 3 T33 = T3 / 2 End If If Check7.Value = 1 Then Call KIEMTRA1 'KIEM TRA ND DO VA ND DAT End If If Check8.Value = 1 Then Shape3.FillColor = vbYellow PID Val(TXTKP.Text), Val(TXTKI.Text), Val(TXTKD.Text) 'Tính DUTY MSComm1.Output = Chr$(DUTY) 'GOI DUTY cho VDK LO 3 End If Call VEDOTHI1 Call KIEMTRA End If End Sub Function VEDOTHI1() '***************VE DO THI LO 1*************** If Check1.Value = 0 Then 'I = I + 1 With TChart1.Series(0) .AddXY ti * 10, Val(Text1.Text), "", vbRed 'NHIET DO DAT LO1 End With With TChart1.Series(3) .AddXY ti * 10, (T11), "", vbBlue 'NHIET DO THUC TE End With End If '*************VE DO THI LO 2***********"*********** If Check2.Value = 0 Then With TChart1.Series(1) .AddXY ti * 10, Val(Text2.Text), "", vbBlack 'NHIET DO DAT LO 1 End With With TChart1.Series(4) 'NHIET DO THUC TE LO2 .AddXY ti * 10, Val(T2 / 2), "", vbRed End With End If '**********VE DO THI LO 3************** If Check3.Value = 0 Then With TChart1.Series(2) .AddXY ti * 10, Val(Text3.Text), "", vbGreen 'NHIET DO DAT LO3 End With With TChart1.Series(5) .AddXY ti * 10, (T3 / 2), "", vbBlack 'NHIET DO DO LO3 End With End If End Function Function KIEMTRA() 'CAC GIA TRI T LA NHIET DO THUC TE dat1 = Val(Text1.Text) + 1 'sai so delta cua lo 1 la 1 do dat2 = Val(Text1.Text) - 1 dat3 = Val(Text2.Text) + 1 'sai so delta cua lo 2 la 1 do dat4 = Val(Text2.Text) - 1 If T11 < dat2 Then Shape1.FillColor = vbYellow 'QUAT 1 Shape4.FillColor = vbBlack 'LO 1 Label10.ForeColor = vbRed Label4.ForeColor = vbRed Label4.Caption = "ON" Label10.Caption = "OFF" ' MO LO TAT QUAT 1 MSComm1.Output = "A" End If If Check1.Value = 0 Then If T11 > dat1 Then Shape1.FillColor = vbBlack Shape4.FillColor = vbYellow Label10.ForeColor = vbRed Label4.ForeColor = vbRed Label10.Caption = "ON" Label4.Caption = "OFF" 'DONG LO MO QUAT 1 ' TAT LO MO QUAT 1 MSComm1.Output = "B" End If End If If Check2.Value = 0 Then If T22 < dat4 Then Shape2.FillColor = vbYellow Shape5.FillColor = vbBlack 'MO LO 2 DONG QUAT 2 Label6.ForeColor = vbRed Label12.ForeColor = vbRed Label6.Caption = "ON" Label12.Caption = "OFF" ' MO LO TAT QUAT 2 MSComm1.Output = "C" End If End If If Check2.Value = 0 Then If T22 > dat3 Then Shape2.FillColor = vbBlack Shape5.FillColor = vbYellow Label6.ForeColor = vbRed Label12.ForeColor = vbRed 'DONG LO MO QUAT 2 Label6.Caption = "OFF" Label12.Caption = "ON" MSComm1.Output = "D" End If End If End Function Function KIEMTRA1() dat5 = Val(Text3.Text) + 1 'sai so delta cua lo 3 la 1 do dat6 = Val(Text3.Text) - 1 If T33 < dat6 Then 'MUC DUOI Shape3.FillColor = vbYellow Shape6.FillColor = vbBlack Label8.ForeColor = vbRed Label14.ForeColor = vbRed Label8.Caption = "ON" Label14.Caption = "OFF" ' MO LO TAT QUAT 3 MSComm1.Output = "E" End If If T33 > dat5 Then 'MUC TREN Shape3.FillColor = vbBlack Shape6.FillColor = vbYellow Label8.ForeColor = vbRed Label14.ForeColor = vbRed Label8.Caption = "OFF" Label14.Caption = "ON" ' MO QUAT TAT LO 3 MSComm1.Output = "F" End If End Function Private Sub Text1_Change() ti = 0 VScroll1.Value = Val(Text1.Text) With TChart1.Series(0) 'XOA MAN HINH TCHART KHI THAY DOI GIA TRI DAT .Clear End With With TChart1.Series(3) .Clear End With End Sub Private Sub Text2_Change() ti = 0 VScroll2.Value = Val(Text2.Text) With TChart1.Series(1) 'XOA MAN HINH TCHART .Clear End With With TChart1.Series(4) .Clear End With End Sub Private Sub Text3_Change() ti = 0 VScroll3.Value = Val(Text3.Text) With TChart1.Series(2) 'XOA MAN HINH TCHART .Clear End With With TChart1.Series(5) .Clear End With End Sub Private Sub THOAT_Click() Dim TH As Integer If MSComm1.PortOpen = True Then MSComm1.Output = "T" 'Chr$(0) 'TAT TAT CA QUAT VA LO Timer5.Enabled = False Timer3.Enabled = False MSComm1.PortOpen = False End If TH = MsgBox("BAN CO MUON THOAT KHOI CHUONG TRINH KHONG ?", vbInformation + vbOKCancel, "THONG BAO!!!!") If TH = vbOK Then End End If End Sub Private Sub Timer1_Timer() If note = True Then Form1.Caption = Right(DES3, J) note = IIf(J > Len(DES3), False, True) TEN.Caption = Right(Des, J) note = IIf(J > Len(Des), False, True) TEN1.Caption = Right(DES1, J) note = IIf(J > Len(Des), False, True) TIEUDE.Caption = Right(DES2, J) note = IIf(J > Len(DES2), False, True) J = J + 1 Else Form1.Caption = Left(DES3, J) note = IIf(J > 0, False, True) TEN.Caption = Left(Des, J) note = IIf(J > 0, False, True) TEN1.Caption = Left(DES1, J) note = IIf(J > 0, False, True) TIEUDE.Caption = Left(DES2, J) note = IIf(J > 0, False, True) J = IIf(J > 0, J - 1, 0) End If End Sub Private Sub Timer2_Timer() GIO.Caption = Now End Sub Private Sub Timer3_Timer() MSComm1.Output = "M" 'Chr$(7) 'CHO PHEP DOC ADC End Sub 'THU THAP VAO BANG GHI DATA Public Sub setFlex() 'Dim T As Single Set db = OpenDatabase(App.Path & "\daq.mdb") Set rs = db.OpenRecordset("log", dbOpenDynaset) fg.TextMatrix(0, 0) = "Sr No" fg.TextMatrix(0, 1) = "Time And Date" fg.TextMatrix(0, 2) = "Temp1" fg.TextMatrix(0, 3) = "Temp2" fg.TextMatrix(0, 4) = "Temp3" fg.TextMatrix(0, 5) = "Temp4" fg.ColWidth(0) = 600 fg.ColWidth(1) = 2000 fg.ColWidth(2) = 1000 fg.ColWidth(3) = 1000 fg.ColWidth(4) = 1000 fg.ColWidth(5) = 1000 For L = 0 To 5 fg.Row = 0 fg.Col = L fg.CellFontBold = True fg.ColAlignment(L) = 3 Next L End Sub Sub fillGrid() Do While Not rs.EOF T = T + 1 fg.TextMatrix(T, 0) = rs.Fields("Sr No") fg.TextMatrix(T, 1) = rs.Fields("TimeAndDate") fg.TextMatrix(T, 2) = rs.Fields("Temp1") fg.TextMatrix(T, 3) = rs.Fields("Temp2") fg.TextMatrix(T, 4) = rs.Fields("Temp3") fg.TextMatrix(T, 5) = rs.Fields("Temp4") TAP.Caption = "Total Records: " + CStr(fg.Rows - 1) If Not rs.EOF Then rs.MoveNext If fg.TextMatrix(fg.Rows - 1, 2) "" Then fg.Rows = fg.Rows + 1 End If Loop End Sub 'GHI DULIEU VAO ASCESS Private Sub Timer4_Timer() fg.TextMatrix(fg.Rows - 1, 0) = CStr(fg.Rows - 1) fg.TextMatrix(fg.Rows - 1, 1) = CStr(Now) fg.TextMatrix(fg.Rows - 1, 2) = Text4.Text fg.TextMatrix(fg.Rows - 1, 3) = Text5.Text fg.TextMatrix(fg.Rows - 1, 4) = Text6.Text fg.TextMatrix(fg.Rows - 1, 5) = MT.Caption TAP.Caption = "Total Records: " + CStr(fg.Rows - 1) rs.AddNew rs.Fields("Sr No").Value = CStr(fg.Rows - 1) rs.Fields("TimeAndDate").Value = Now rs.Fields("Temp1").Value = Val(fg.TextMatrix(fg.Rows - 1, 2)) rs.Fields("Temp2").Value = Val(fg.TextMatrix(fg.Rows - 1, 3)) rs.Fields("Temp3").Value = Val(fg.TextMatrix(fg.Rows - 1, 4)) rs.Fields("Temp4").Value = Val(fg.TextMatrix(fg.Rows - 1, 5)) rs.Update fg.Rows = fg.Rows + 1 End Sub 'XOA TAP TIN Sub delRec() db.Execute ("Delete * from log") fg.Clear fg.Rows = 2 Call setFlex TAP.Caption = "Total Records: 0" End Sub Private Sub Timer5_Timer() ti = ti + 1 Timer5.Enabled = False Timer5.Enabled = True End Sub Private Sub VScroll1_Change() Text1.Text = CStr(VScroll1.Value) End Sub Private Sub VScroll2_Change() Text2.Text = CStr(VScroll2.Value) End Sub Private Sub VScroll3_Change() Text3.Text = CStr(VScroll3.Value) End Sub Private Sub XOA_Click() Dim Msg, Style, Title, Response, MyString Msg = "CO MUON XOA TAP TIN KHONG ?..??" Style = vbYesNo + vbCritical + vbDefaultButton2 Title = "THONG BAO!!!!!!" Response = MsgBox(Msg, Style, Title) If Response = vbYes Then Call delRec End If End Sub '**************THUAT TOAN PID***************** Sub PID(kp1 As Single, ki1 As Single, kd1 As Single) Dim TT As Single TT = 1 nddat = Val(Text3.Text) e2 = nddat - T33 'Tính sai so e(k) lo 3 A0 = kp1 + ki1 * TT + kd1 / TT A1 = -kp1 - ((2 * kd1) / TT) A2 = kd1 / TT DUTY = Round(DUTY1 + A0 * e2 + A1 * e1 + A2 * e0, 0) If DUTY >= 255 Then DUTY = 255 ElseIf DUTY <= 0 Then DUTY = 0 End If DUTY1 = DUTY 'NaP DUTY(k) cho DUTY(k-1) PID sau e0 = e1 'Nap e(k-1) cho e(k-2) e1 = e2 'Nap e(k) cho e(k-1) End Sub ‘***********’Code hien thi do thi lo 1 tren form 2’*********’’ Option Explicit Dim I1, S1 As Double Dim P0 As Boolean Dim tg As Double Private Sub THOAT_Click() Form2.Hide End Sub Private Sub Form_Load() Form2.Height = 7560 Form2.Width = 10395 Timer2.Enabled = False tg = 0 End Sub Private Sub Timer1_Timer() S1 = Form1.Check1.Value P0 = Form1.CHAY.Enabled If S1 = 0 And P0 = False Then Timer2.Enabled = True N1 = Form1.Text1.Text N2 = Form1.Text4.Text With TChart1.Series(0) .AddXY tg * 10, Val(N1), "", vbRed 'NHIET DO DAT LO1 End With With TChart1.Series(1) .AddXY tg * 10, Val(N2), "", vbBlue 'NHIET DO DO LO1 End With Else End If End Sub Private Sub Timer2_Timer() tg = tg + 1 Timer2.Enabled = False Timer2.Enabled = True End Sub ‘’******** Code hien thi do thi lo 2 tren form 3’**********’’ Option Explicit Dim M1, M2 As String Dim I2, S2 As Double Dim P1 As Boolean Dim tg1 As Double Private Sub Form_Load() Form3.Height = 7560 Form3.Width = 10395 Timer2.Enabled = False tg1 = 0 End Sub Private Sub THOAT_Click() Form3.Hide End Sub Private Sub Timer1_Timer() S2 = Form1.Check2.Value P1 = Form1.CHAY.Enabled If S2 = 0 And P1 = False Then M1 = Form1.Text2.Text M2 = Form1.Text5.Text Timer2.Enabled = True With TChart1.Series(0) .AddXY tg1 * 10, Val(M1), "", vbRed 'NHIET DO DAT LO 2 End With With TChart1.Series(1) .AddXY tg1 * 10, Val(M2), "", vbBlue 'NHIET DO DO LO 2 End With Else End If End Sub Private Sub Timer2_Timer() tg1 = tg1 + 1 Timer2.Enabled = False Timer2.Enabled = True End Sub ‘***********’Code hien thi do thi lo 3 tren form 4’*********’’ Option Explicit Dim K1, K2 As String Dim I3, S3 As Integer Dim P2 As Boolean Dim tg2 As Double Private Sub Form_Load() Form4.Height = 7560 Form4.Width = 10395 Timer2.Enabled = False tg2 = 0 End Sub Private Sub THOAT_Click() Form4.Hide End Sub Private Sub Timer1_Timer() S3 = Form1.Check3.Value P2 = Form1.CHAY.Enabled If S3 = 0 And P2 = False Then Timer2.Enabled = True K1 = Form1.Text3.Text K2 = Form1.Text6.Text With TChart1.Series(0) .AddXY tg2 * 10, Val(K1), "", vbRed 'NHIET DO DAT LO3 End With With TChart1.Series(1) .AddXY tg2 * 10, Val(K2), "", vbBlue 'NHIET DO DO LO3 End With Else End If End Sub Private Sub Timer2_Timer() tg2 = tg2 + 1 Timer2.Enabled = False Timer2.Enabled = True End Sub 2 Code chương trình Asemmbly $MOD51 ;CHUONG TRINH HOA CHINH ;****************************CHU THICH**************** ; LO1 DIEU KHIEN ON/OFF ; LO2 DIEU KHIEN ON/OFF ; LO3 DIEU KHIEN ON/OFF VA PID BANG PWM KHAI BAOCACBIEN******************************************* QUAT1 BIT P1.0 ; DIEU KHIEN QUAT CHO QUAT QUAT2 BIT P1.1 QUAT3 BIT P1.2 ;**************************&&&&&&&&&&&&&&***************************** SEL1 BIT P3.7 ;DIEU KHIEN CHO LO DONG MO SEL2 BIT P1.3 SEL3 BIT P1.4 ;*******************&&&&&&&&&&&&&&&&&&******************************** DK1 BIT P1.5 ;CAC BIEN LUON O TRANG THAI 0 (CHE DO ON/OFF) DK2 BIT P1.6 DK3 BIT P1.7 ;DIEU KHIEN ON/OFF VA PID ;**************^^^^^^^^^^^^^^^^^^^*********************** EOC BIT P3.4 ;DIEU KHIEN ADC OE BIT P3.5 START BIT P3.6 ;ALE CHUNG DA0 BIT P3.2 ;CHAN QUET KENH CHON NGO VAO ADC DA1 BIT P3.3 ;*******************CAC BIEN DU LIEU******************** ADC1 EQU 30H ADC2 EQU 31H ADC3 EQU 32H ADC4 EQU 33H TAM EQU 20H ;*******************^^^^^^^^^^^^^^^^********************* CHUYEN_ADC BIT 00H ;CHO PHEP CHUYEN DOI ADC ;****************&&&&&&&&&&&&&&&************************** ORG 0000h LJMP MAIN ORG 0023H LJMP NGATNOITIEP ORG 0030H MAIN: CLR QUAT1 ;TAT 3 QUAT CLR QUAT2 CLR QUAT3 SETB SEL1 ;TAT 3 LO SETB SEL2 SETB SEL3 CLR DK1 CLR DK2 CLR DK3 MOV P0,#00H ; DAC LA 5V-TRANG THAI DONG 3 LO-DAC 0 MOV R7,#0 CLR DA0 CLR DA1 CLR START CLR OE SETB EOC MOV P2,#0FFH ;NHAP DATA ADC VAO MOV TMOD,#20H MOV TH1,#0FDH MOV SCON,#50H SETB TR1 SETB EA SETB ES ;BIT DK CONG-CHO PHEP NGAT SETB PS ;UU TIEN NGAT NOI TIEP ;****** ***CHUONG TRINH CHINH*********************** MAIN1: JB CHUYEN_ADC,MAIN1 SETB CHUYEN_ADC LCALL LAYMAU ;LAY MAU DU LIEU O 4 KENH CLR ES MOV SBUF,ADC1 ;PHAT DU LIEU LEN MAY TINH JNB TI,$ CLR TI MOV SBUF,ADC2 JNB TI,$ CLR TI MOV SBUF,ADC3 JNB TI,$ CLR TI MOV SBUF,ADC4 JNB TI,$ CLR TI SETB ES ;CHO PHEP NGAT TRO LAI LJMP MAIN1 ;****** * **CHON KENH VA THU DATA TU ADC*********************** LAYMAU: CLR DA0 ;NGO VAO IN0-KENH 1 CLR DA1 LCALL BIENDOI MOV ADC1,TAM CLR DA1 SETB DA0 ;NGO VAO IN1 -KENH 2 LCALL BIENDOI MOV ADC2,TAM CLR DA0 ;NGO VAO IN2-KENH 3 SETB DA1 LCALL BIENDOI MOV ADC3,TAM SETB DA0 ;NGO VAO IN3-KENH 4 SETB DA1 LCALL BIENDOI MOV ADC4,TAM CLR DA0 CLR DA1 RET ;************************^^^^^^^BIEN DOADC^^^^^^^^^^^^******** BIENDOI: SETB START NOP CLR START ;BAO BAT DAU BIEN DOI JB EOC,$ ;NEU OEC = 1 THI CHO JNB EOC,$ ;TIEP TUC CHO DEN KHI EOC = 1 SETB OE MOV TAM,P2 ;DOC GIA TRI BIEN DOI CLR OE ;KHONG CHO PHEP XUAT DU LIEU RET ;****** **CHUONG TRINH NHAN DATA PC^^^^^^^^^^^^^^^^^^^********** NGATNOITIEP: CLR RI ;XOA CO NGAT CHUAN BI CHO LAN THU KE MOV A,SBUF ;DOC DU LIEU TU CONG NOI TIEP VAO A MOV R7,A MOV P0,#0FFH ;NGO RA ANALOG LA 5V ;**********DIEU KHIEN LO 1 ON/OFF ************ CJNE A,#'M',KE ;CHO PHEP CHUYEN DOI ADC CLR CHUYEN_ADC LJMP EXIT KE: CJNE A,#'A',KE1 CLR DK1 ;DIEU KHIEN LO 1-MUC 0 CLR QUAT1 CLR SEL1 ;MO LO 1,TAT QUAT 1 -DK ON/OFF LJMP EXIT KE1: CJNE A,#'B',KE2 CLR DK1 ;MUC 0 SETB QUAT1 ;MO QUAT 1 SETB SEL1 ;TAT LO 1 -DK ON/OFF LO1 SJMP EXIT ;********DIEU KHIEN LO 2 ON/OFF********* KE2: CJNE A,#'C',KE3 ;MUC 0 CLR DK2 CLR QUAT2 ;TAT QUAT 2 CLR SEL2 ;MO LO2 -DK ON/OFF LJMP EXIT KE3: CJNE A,#'D',KE4 CLR DK2 SETB QUAT2 ;MO QUAT 2 SETB SEL2 ;TAT LO 2 LJMP EXIT ;**********DIEU KHIEN LO 3***** PP ON /OFF********* KE4: CJNE A,#'E',KE5 CLR DK3 CLR QUAT3 ;TAT QUAT 3 CLR SEL3 ;MO LO 3 SJMP EXIT KE5: CJNE A,#'F',KE6 CLR DK3 SETB QUAT3 ;MO QUAT 3 SETB SEL3 ;TAT LO 3 SJMP EXIT ;*****GUI MA TAT HOAT DONG CAC THIET BI********* KE6: CJNE A,#'T',KE7 CLR QUAT1 CLR QUAT2 CLR QUAT3 SETB SEL1 SETB SEL2 SETB SEL3 CLR DK1 CLR DK2 CLR DK3 MOV P0,#00H LJMP EXIT KE7: PUSH 00H PUSH ACC CJNE R7,#00H,CCC SETB DK3 SJMP KT CCC: CJNE R7,#255,DDD CLR DK3 SJMP KT DDD: MOV A,R7 MOV R0,A CLR DK3 AAA: LCALL DELAY_XUNG DJNZ R0,AAA SETB DK3 MOV A,#255 CLR C SUBB A,R7 MOV R0,A BBB: LCALL DELAY_XUNG DJNZ R0,BBB KT: POP ACC POP 00H EXIT: RETI DELAY_XUNG: PUSH 00H MOV R0,#20 DJNZ R0,$ POP 00H RET END Tài Liệu Tham Khảo Tiếng Việt: 1. Đo lường và điiều khiển bằng máy tính, Ngô Diên Tập-NXB Khoa Học Kỹ Thuật 2.Đo lường và đièu khiển bằng máy tính –Nguyễn Đức Thành- NXB ĐH Quốc Gia TP.Hồ Chí Minh 3.Họ Vi Điều Khiển 8051,Tống Văn On-Hoàng Đức Hải- NXB Lao Động-Xã Hội 4.Lập Trình Ghép Nối Máy Tính Trong Windows, Ngô Diên Tập -NXB Khoa Học Kỹ Thuật. 5.Giáo trình vi xử lý - Phạm Quang Trí 6.Thí nghiệm Vi điều khiển Mcs-51 – Phạm Quang Trí Tiếng Anh: 1.G.C. Barney, Intelligent instrumentation, Prentice Hall – NJ, 1990. 2.G.Olsson and G.Piani, Computer system for automation and control, Prentice Hall – NJ, 1992. 3. I scolt Mackezie, the 8051 microcontroller, Prentice Hall,1999, 3rd 4. 5.

Các file đính kèm theo tài liệu này:

  • docnoi dung.doc
  • rar183488_Hệ Thống Thu_.rar
  • docbìa.doc
  • docmo dau.doc
  • docnhiem vu do an.doc
  • docPhieu dang ky do an tn.doc