DAMH2

54
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH MỤC LỤC LỜI NÓI ĐẦU Trang 2 TRUYỀN THÔNG NỐI TIẾP RS232 Trang 3 VISUAL BASIC VÀ ACTIVEX Trang 7 GIỚI THIỆU PIC16F877A VÀ CCS Trang 12 CẤU TẠO ĐỘNG CƠ BƯỚC Trang 14 SƠ ĐỒ NGUYÊN LÝ Trang 17 LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH Trang 20 TỔNG KẾT Trang 42 NHẬN XÉT CỦA GIÁO VIÊN ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 1

Transcript of DAMH2

Page 1: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

MỤC LỤC

LỜI NÓI ĐẦU Trang 2TRUYỀN THÔNG NỐI TIẾP RS232 Trang 3VISUAL BASIC VÀ ACTIVEX Trang 7 GIỚI THIỆU PIC16F877A VÀ CCS Trang 12CẤU TẠO ĐỘNG CƠ BƯỚC Trang 14SƠ ĐỒ NGUYÊN LÝ Trang 17LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH Trang 20TỔNG KẾT Trang 42

NHẬN XÉT CỦA GIÁO VIÊN................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 1

Page 2: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

LỜI NÓI ĐẦU

Điều khiển và giám sát bằng máy tính là một trong những xu hướng phát triển trong lĩnh vực điều khiển học. Với sự hỗ trợ của những phần cứng điện tử có mật độ tích hợp cao và phần mềm hỗ trợ trong việc lập trình thuyền thông giữa máy tính và phần cứng thì việc giao tiếp giữa máy tính và phần cứng để điều khiển và giám sát ngày càng được thực hiện dễ dàng hơn.

Một hệ thống được xây dựng trên cơ sở giao tiếp giữa máy và phần cứng giúp cho việc điều khiển và thu thập dữ liệu, giám sát và xử lý dữ liệu nhận về được dễ dàng hơn. Bên cạnh đó với giao diện trên máy tính sẽ giúp cho việc vận hành hệ thống được dễ dàng thẩm mỹ và trực quan hơn rất nhiều. Chính vì những lợi thế đó mà em đã quyết định chọn đề tài giám sát và điều khiển hệ thống bằng máy tính. Hệ thống bao gồm: hai động cơ bước, hai cảm biến nhiệt độ LM35, các cảm biến vị trí. Khi hệ thống hoạt động ta có thể nhập các thông số trên giao diện máy tính để điều khiển hai động cơ bước như: chiều, số bước, tốc độ. Còn bên dưới phần cứng sẽ gửi dữ liệu về nhiệt độ của hai động cơ lên máy tính để máy tính xử lý và điều khiển thích hợp. Khi ta không điều khiển trên dao diện máy tính thì ta vẫn có thể điều khiển trực tiếp trên board với 4 nút chức năng: X+, X-, Y+, Y-.

Đề tài này trong tương lai có thể phát triển thành sản phẩm có tính ứng dụng cao như: Máy khoan mạch tự động 2 trục X, Y, máy gia công cơ khí tự động hai trục…

Đây là đề tài còn khá mới mẻ đối với em, chính vì lý do đó dù đã rất cố gắng tìm hiểu nhưng chắc hẳn sẽ không tránh khỏi nhứng thiếu sót, rất mong được sự đóng góp ý kiền của các thầy cô và các bạn sinh viên để đề tài được hoàn thiện và mang tinh ứng dụng cao hơn.

Xin chân thành cảm ơn quý nhà trường, khoa điện điện tử, đặc biệt là thầy Nguyễn Văn Hiệp đã tạo điều kiện và hướng dẫn tận tình em hoàn thành đề tài này.

TP.HCM tháng 06 năm 2010 SVTH: Võ Thanh Hà

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 2

Page 3: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

TRUYỀN THÔNG NỐI TIẾP VỚI RS2321. Cấu trúc cổng nối tiếp Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, có các ưu điểm sau:- Khoảng cách truyền xa hơn truyền song song. - Số dây kết nối ít. - Có thể truyền không dây dùng hồng ngoại. - Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device). - Cho phép nối mạng. - Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc. - Có thể cung cấp nguồn cho các mạch điện đơn giảnCác thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và DCE (Data Communication Equipment). DCE là các thiết bị trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền). Các tín hiệu còn lại có chức năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi là các tín hiệu bắt tay (handshake). Ưu điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền.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.Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps. Các phương thức nối giữa DTE và DCE: - Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng. - Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ được truyền theo 1 hướng. - Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng. Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:

Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V). Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0 đến D7và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường truyền. Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 3

Page 4: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Hình 1: Tín hiệu truyền của ký tự ‘A’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.

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 4

Page 5: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Cổng COM có hai dạng: đầu nối DB25 (25 chân) và đầu nối DB9 (9 chân) mô tả như hình 4.2. Ý nghĩa của các chân mô tả như sau:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 5

Page 6: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Truyền thông giữa hai nútCác sơ đồ khi kết nối dùng cổng nối tiếp:

Hình 2: Kết nối đơn giản trong truyền thông nối tiếpKhi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và thu giống nhau. Khi có dữ liệu đến DTE, dữ liệu này sẽ được đưa vào bộ đệm và tạo ngắt.Truy xuất trực tiếp thông qua cổng Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4 với các địa chỉ như sau:

Giao tiếp nối tiếp trong máy tính sử dụng vi mạch UART với các thanh ghi cho trong bảng sau:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 6

Page 7: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

GIỚI THIỆU PHẦN MỀM LẬP TRÌNH VISUAL BASIC 6.0:TRUYỀN THÔNG NỐI TIẾP VỚI ACTIVEX TRONG VISUAL BASIC 6.0Mô tả Việc truyền thông nối tiếp trên Windows được thực hiện thông qua một ActiveX có sẵn là Microsoft Comm Control.. ActiveX này dược lưu trữ trong fileMSCOMM32.OCX. Quá trình này có hai khả năng thực hiện điều khiển 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 trong quá trình điều khiển việc trao đổi thông tin. Quá trình điều khiển thực hiện thông qua sự kiện OnComm.- Hỏi vòng: Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiện thông qua kiểm tra các giá trị của thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có sự kiện nào xảy ra hay không. Thông thường phương pháp này sử dụng cho các chương trình nhỏ.ActiveX MsComm được bổ sung vào một Visual Basic Project thông qua menu Project > Components:

Hình 3: Bổ sung đối tượng MsComm vào VBP

Biểu tượng của MsComm: và các thuộc tính cơ bản mô tả như sau:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 7

Page 8: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Hình 4 Các thuộc tính của đối tượng MSCommCác thuộc tính + Settings: Xác định các tham số cho cổng nối tiếp. Cú pháp: MSComm1.Settings = ParamString MSComm1: tên đối tượng ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S" BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là:

P: kiểm tra chẵn lẻ, với các giá trị:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 8

Page 9: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

D: số bit dữ liệu (4, 5, 6, 7 hay 8), mặc định là 8 bitS: số bit stop (1, 1.5, 2)VD: MSComm1.Settings = "9600,O,8,1" sẽ xác định tốc độ truyền 9600bps, kiểm tra parity chẵn với 1 bit stop và 8 bit dữ liệu.CommPort:Xác định số thứ tự của cổng truyền thông, cú pháp: MSComm1.CommPort = PortNumber PortNumber là giá trị nằm trong khoảng từ 1 đến 99, mặc định là 1. VD: MSComm1.CommPort = 1 xác định sử dụng COM1PortOpen:Đặt trạng thái hay kiểm tra trạng thái đóng / mở của cổng nối tiếp. Nếu dùng thuộc tính này để mở cổng nối tiếp thì phải sử dụng trước 2 thuộc tính Settings và CommPort. Cú pháp: MSComm1.PortOpen = True | False Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổng đồng thời xoá nội dung của các bộ đệm truyền, nhận. VD: Mở cổng COM1 với tốc độ truyền 9600 bps MSComm1.Settings = "9600,N,8,1" MSComm1.CommPort = 1 MSComm1.PortOpen = TrueCác thuộc tính nhận dữ liệu:Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm. Cú pháp: InputString = MSComm1.Input Thuộc tính này kết hợp với InputLen để xác định số ký tự đọc vào. Nếu InputLen = 0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm. InBufferCount: số ký tự có trong bộ đệm nhận. Cú pháp: Count = MSComm1.InBufferCount Thuộc tính này cùng dược dùng để xoá bộ đệm nhận bắng cách gán giá trị 0. MSComm1.InBufferCount = 0 InBufferSize: đặt và xác định kích thước bộ đệm nhận (tính bằng byte). Cú pháp: MSComm1.InBufferCount = NumByte Giá trị măc định là 1024 byte. Kích thước bộ đệm này phải đủ lớn để tránh tình trạng mất dữ liệu.

VD: Đọc toàn bộ nội dung trong bộ đệm nhận nếu có dữ liệuMSComm1.InputLen = 0

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 9

Page 10: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

If MSComm1.InBufferCount <> 0 Then InputString = MSComm1.Input End IfCác thuộc tính xuất dữ liệu:Bao gồm các thuộc tính Output, OutBufferCount và OutBufferSize, chức năng của các thuộc tính này giống như các thuộc tính nhập.CDTimeout:Đặt và xác định khoảng thời gian lớn nhất (tính bằng ms) từ lúc phát hiện sóng mang cho đến lúc có dữ liệu. Nếu quá khoảng thời gian này mà vẫn chưa có dữ liệu thì sẽ gán thuộc tính CommEvent là CDTO (Carrier Detect Timeout Error) và tạo sự kiện OnComm. Cú pháp:

MSComm1.CDTimeout = NumTimeDSRTimeout: Xác định thời gian chờ tín hiệu DSR trước khi xảy ra sự kiện OnComm. CTSTimeout: Đặt và xác định khoảng thời gian lớn nhất (tính bằng ms) đợi tín hiệu CTS trước khi đặt thuộc tính CommEvent là CTSTO và tạo sự kiện OnComm. Cú pháp: MSComm1.CTSTimeout = NumTime CTSHolding: Xác định đã có tín hiệu CTS hay chưa, tín hiệu này dùng cho quá trình bắt tay bằng phần cứng (cho biết DCE sẵn sàng nhận dữ liệu), trả về giá trị True hay False. DSRHolding: Xác định trạng thái DSR (báo hiệu sự tồn tại của DCE), trả về giá trị True hay False. CDHolding: Xác định trạng thái CD, trả về giá trị True hay False. DTREnable: Đặt hay xoá tín hiệu DTR để báo sự tồn tại của DTE. Cú pháp: MSComm1.DTREnable = True | False RTSEnable: Đặt hay xoá tín hiệu RTS để yêu cầu truyền dữ liệu đến DTE. Cú pháp: MSComm1.RTSEnable = True | False NullDiscard: Cho phép nhận các ký tự NULL (rỗng) hay không (= True: cấm). Cú pháp: MSComm1.NullDiscard = True | False SThreshold:Số byte trong bộ đệm truyền làm phát sinh sự kiện OnComm. Nếu giá trị này bằng 0 thì sẽ không tạo sự kiện OnComm. Cú pháp: MSComm1.SThreshold = NumChar

CommEvent:Trả lại các lỗi truyền thông hay sự kiện xảy ra tại cổng nối tiếpCác sự kiện:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 10

Page 11: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Các lỗi truyền thông:

Sự kiện OnCommSự kiện OnComm xảy ra bất cứ khi nào giá trị của thuộc tính CommEvent thay đổi. Các thuộc tính RThreshold và SThreshold = 0 sẽ cấm sự kiện OnComm khi thực hiện nhận hay gởi dữ liệu. Thông thường, SThreshold = 0 và RThreshold = 1.Giao tiếp với vi điều khiểnKhi thực hiện giao tiếp với vi điều khiển, ta phải dùng thêm mạch chuyển mức logic từ TTL ↔ 232. Các vi mạch thường sử dụng là MAX232 của Maxim hay DS275 của Dallas. Mạch chuyển mức logic mô tả như sau:

Hình 5: Mạch chuyển mức logic TTL ↔ RS232

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 11

Page 12: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC16F877A VÀ PHẦN MỀM LẬP TRÌNH C CHO PIC CCS

Hình 6: Sơ đồ bố trí chân của PIC16F877

PIC16F877A là vi điều khiển 8 bit được sản xuất bởi hãng Microchip với các đặc tính cơ bản như sau:+ Tần số hoạt động DC – 20Mhz+ 8K bộ nhớ chương tình flash (14 bit word) + 368 byte bộ nhớ dữ liệu+ 256 byte bộ nhớ EEPROM+ 15 nguồn ngắt+ 5 port xuất nhập A,B,C,D,E.+ 3 timer+ 2 module capture/compare/PWM+ Hỗ trợ giao tiếp theo chuẩn ISP, I2C+ Hỗ trợ nạp chương trình trên chip ICSP+ Module ADC 8bit/10bit 8 kênh vào+ 2 bộ so sánh tương tự+ 35 lệnh+ Số chân 40.

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 12

Page 13: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Hình 7: Sơ đồ khối PIC16F877A

Cảm biến nhiệt độ LM35 có tầm hoạt động từ -60 đến 150 oC với stepsize là 10mV/oC

Một số hàm CCS cơ bản được sử dụng trong đề tài:

output_a (value)output_b (value)output_c (value)output_d (value)

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 13

Page 14: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

output_e (value)

Xuất dữ liệu ra các port với tham số là value thay đổi từ 0 đến 255.Input_state(pin)Đọc trạng thái một chân vi điều khiển mà không là đổi hướng dữ liệu cảu chân nàyV d: Bien = input_state(pin_d0)Đọc trạng thái chân d0 lưu vào bien bien la kieu du lieu int1.Getc()Hàm này đợi đọc byte từ bộ đệm dữ liệu nối tiếp.Putc(value)Hàm này phát một byte ra cổng nối tiếpValue có giá trị từ 0 đến 255 hoặc phát ký tự bất kỳ.Read_adc()Hàm này đọc giá trị ADC trả về giá trị int8 hoặc 10bit tùy vào định cấu hình ADCSet_adc_channel()Chọn kênh ADC vào.Có thể tham khảo thêm nhiều hàm khác trong phần help của CCS.

CẤU TẠO CỦA ĐỘNG CƠ BƯỚC

Hình 8: động cơ bước lưỡng cực 2 pha

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 14

Page 15: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Hình 9: cách bố trí dây trong động cơ bước đơn cực 2 pha

Hình 10: Một số mạch điều khiển động cơ bước cơ bản

Hình 11: Động cơ bước trong thực tế

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 15

Page 16: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Phương pháp điều khiển 1 bước full step mode:

Phương pháp điều khiển nửa bước half step mode:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 16

Page 17: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

SƠ ĐỒ NGUYÊN LÝ MẠCH DIỀU KHIỂN:

Hình 12: Sơ đồ nguyên lý mạch giao tiếp máy tính và điều khiển

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 17

Page 18: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

SƠ ĐỒ NGUYÊN LÝ MẠCH CÔNG SUẤT:

F 1

+24V

2K 2

1K

IR F 540

1K

+24V

C O N TR O L

12345678910

0

D Z 12

MT1

1 2 3 4 5 6

4 K 7

+24V

+24V +24V

D Z 12

D3

1 243

+ 2 4V

+24V

0

I R F 540

4K 7

D0

+2 4V

+24V

2K 2

D7

D Z 12

IR F 540

D Z 12

+2200uF

0

4K 7

IR F 540

1 243

+2 4V

IR F 540

4K 7

00

2K 2

D1

1 K

4K 7

2K 2

4K 7

0

2K 2

1K

D Z 12

MT2

1 2 3 4 5 6

+ 2 4V

1 243

+2 4V

0

+24V

D Z 12

D2

D0

+2 4V

2K 2

1K

D Z 12

1 243

D5

0

I R F 540

D2

0

10K

2K 2

D Z 12

- +

2

1

3

4

4K 7

2K 2

1K1K

D1

D5

+2 4V

1 243

2 K 2

D7

D6

D4

PW IN

12

1 243

D4

1 K

1 243

1 243

+ 2 4V

IR F 540

+24V

4K 7

D6

+2 4V

+24V

IR F 540

D3

Hinh 13: Sơ đồ nguyên lý mạch công suất

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 18

Page 19: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

MỘT VÀI THÔNG SỐ CƠ BẢN CỦA MOSFET IRF540

Các thông số định mức của IRF540

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 19

Page 20: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

LƯU ĐỒ GIẢI THUẬT VÀ CÁC CHƯƠNG TRÌNH:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang:

Begin

Khởi tạo ngắt truyền nối tiếp.Khởi tạo ngắt timer.Khởi tạo ADC.Xóa các byte điều khiển hoạt động trục x và trục y.Nạp các thông số hoạt động ban đầu cho chương trình…

Quét các phím chức năng

Có phím nhấn ?Thực hiện CT tương ứng

Kiểm tra byte hoạt động x

Kiểm tra byte hoạt động y

Chayx(chieux,1,tocdox);

Kiểm tra byte hoạt động x

Đủ sobuocx ?

0

1

0

1

Xóa byte hoạt động x

Đủ

0

1

Chayy(chieuy,1,tocdoy);

Kiểm tra byte hoạt động y

Đủ sobuocy ?

Xóa byte hoạt động y

chưa

Đủ

1

0

ko

chưa

20

Page 21: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Chương trình con phục vụ ngắt nối tiếp:

Chương trình con phục vụ ngắt timer1:

LƯU ĐỒ GIẢI THUẬT TRÊN VB:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang:

return

Ct ngắt nối tiếp

Nhận byte mã lệnh

0

1 2

Nhận byte chieuxNhận byte cao sobuocxNhận byte thấp sobuocxNhận byte tocdoxNối thành sobuocx 16bitHoatdongx = 1

Nhận byte chieuyNhận byte cao sobuocyNhận byte thấp sobuocyNhận byte tocdoyNối thành sobuocy 16bitHoatdongy = 1

Hoatdongx = 0Hoatdongy = 0 Cập nhật tocdox

Cập nhật tocdoy

Kiểm tra mã lệnh

3

4

Ct ngắt timer1

Đọc giá trị cảm biến nhiệt độ 1Đọc giá trị cảm biến nhiệt độ 2Truyền byte nhiệt độ 1Truyền byte nhiệt độ 2

return

21

Page 22: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

Các nút RUNX và RUNY:

Sự kiện OnComm:

Code C chương trình trên vi điều khiển:#include "D:\CTpic\giaotiepPIC.h"

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang:

Nhấn nút RUNX

Tách sobuocx 16bit thành 2 bytePhát byte 0Phát byte chieuxPhát byte cao sobuocxPhát byte thấp sobuocxPhát byte tocdox

Nhấn nút RUNY

Tách sobuocx 16bit thành 2 bytePhát byte 0Phát byte chieuxPhát byte cao sobuocxPhát byte thấp sobuocxPhát byte tocdox

CommEvent ?

CommEvReceive

Nhận chuỗi (2 byte)Tách byte nhiệt độ 1Tách byte nhiệt độ 2 Xuất gt nhiệt độ trên giao diện

Exit

Khác CommEvReceive

22

Page 23: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

#use rs232(baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7)#define buzz pin_c0 #define xtang pin_b2#define xgiam pin_b3#define ytang pin_b0#define ygiam pin_b1int8 byte_cao,byte_thap,tt,hoatdongx,hoatdongy,malenh,demtimer1;int8 chieuy,tocdoy,chieux,tocdox,nhietdo1,nhietdo2;int16 sobuocx,sobuocy;int16 i;void chayx(int8,int16,int8);void chayy(int8,int16,int8);void quetphim();#int_rdavoid sbrs232() { malenh = getc(); switch(malenh) { case 0: chieux = getc(); //chieu byte_cao = getc(); byte_thap = getc(); tocdox = getc(); //toc do sobuocx = byte_cao*256 + byte_thap; //so buoc (noi 2 byte thanh so 16bit) hoatdongx = 1; //cho hoat dong break; case 1: chieuy = getc(); byte_cao = getc(); byte_thap = getc(); tocdoy = getc(); sobuocy = byte_cao*256 + byte_thap; hoatdongy = 1; break; case 2: hoatdongx = 0; hoatdongy = 0; break; case 3: tocdox = getc(); break; case 4: tocdoy = getc();

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 23

Page 24: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

break; case 5: break;

}

}//////////////////////////////// #int_TIMER1void TIMER1_isr() { demtimer1++; set_timer1(-62500); //100ms if(demtimer1==5) //500ms { set_adc_channel(0); delay_us(300); nhietdo1 = read_adc(); set_adc_channel(1); delay_us(300); nhietdo2 = read_adc(); putc(nhietdo1); putc(nhietdo2); demtimer1=0; } } ////////////////////////////////void main(){ setup_adc_ports(AN0_AN1_AN2_AN4_VSS_VREF); setup_adc(ADC_CLOCK_INTERNAL ); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(int_rda); enable_interrupts(INT_TIMER1); enable_interrupts(global);/////////////////////////////////demtimer1=0;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 24

Page 25: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

tt = 0b00010001;output_d(tt);hoatdongx = 0;hoatdongy = 0;port_b_pullups(1);for(i=0;i<3;i++) { output_high(buzz); delay_ms(50); output_low(buzz); delay_ms(150); }while(1) { quetphim(); if(hoatdongx == 1) { for(i=0;i<sobuocx;i++) { if(hoatdongx==1) {chayx(chieux,1,tocdox);} else break; } hoatdongx=0; } if(hoatdongy==1) { for(i=0;i<sobuocy;i++) { if(hoatdongy==1) {chayy(chieuy,1,tocdoy);} else break; } hoatdongy =0; } }}//////////////CAC HAM CON/////////////void quetphim(){ ktxtang: if(input(xtang)==0) { for(i=0;i<200;i++)

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 25

Page 26: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

{if(input(xtang)==1)goto ktxgiam;} chayx(1,1,40); } ktxgiam: if(input(xgiam)==0) { for(i=0;i<200;i++) {if(input(xgiam)==1) goto ktytang;} chayx(0,1,40); } ktytang: if(input(ytang)==0) { for(i=0;i<200;i++) {if(input(ytang)==1) goto ktygiam;} chayy(1,1,40); } ktygiam: if(input(ygiam)==0) { for(i=0;i<200;i++) {if(input(ygiam)==1) return;} chayy(0,1,40); } }///////////////////////////////////////void chayx(int8 chieu, int16 sobuoc, int8 tocdo){ int8 trunggian; switch (chieu) { case 0: // dong co quay nghich if(input_state(pin_d0)==1 && sobuoc >0) { loop1: trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 26

Page 27: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop1; } else if(input_state(pin_d1)==1 && sobuoc >0) { loop2: trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; //////////////////////

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 27

Page 28: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop2; } else if(input_state(pin_d2)==1 && sobuoc >0) { loop3: trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop3; } else if(input_state(pin_d3)==1 && sobuoc >0) { loop4: trunggian= tt & 0b11110000;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 28

Page 29: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop4; } break; case 1: // dong co quay thuan if(input_state(pin_d0)==1 && sobuoc >0) { loop1n: trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo);

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 29

Page 30: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop1n; } else if(input_state(pin_d1)==1 && sobuoc >0) { loop2n: trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 30

Page 31: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop2n; } else if(input_state(pin_d2)==1 && sobuoc >0) { loop3n: trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop3n; } else if(input_state(pin_d3)==1 && sobuoc >0) { loop4n: trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt);

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 31

Page 32: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop4n; } break; } }//////////////////////////////////////void chayy(int8 chieu, int16 sobuoc, int8 tocdo){ int8 trunggian; switch (chieu) { case 0: { if(input_state(pin_d4)==1 && sobuoc > 0) { loop1ny: trunggian = tt & 0b00001111; //xoa 4 bit cao tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo);

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 32

Page 33: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop1ny; } else if(input_state(pin_d5)==1 && sobuoc > 0) { loop2ny: trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 33

Page 34: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop2ny; } else if(input_state(pin_d6)==1 && sobuoc > 0) { loop3ny: trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop3ny;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 34

Page 35: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

} else if(input_state(pin_d7)==1 && sobuoc > 0) { loop4ny: trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop4ny; } } break; case 1: { if(input_state(pin_d4)==1 && sobuoc > 0) { loop1ty: trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo);

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 35

Page 36: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop1ty; } else if(input_state(pin_d5)==1 && sobuoc > 0) { loop2ty: trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 36

Page 37: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop2ty; } else if(input_state(pin_d6)==1 && sobuoc > 0) { loop3ty: trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop3ty;

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 37

Page 38: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

} else if(input_state(pin_d7)==1 && sobuoc > 0) { loop4ty: trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop4ty; } } break; } }

GIAO DIỆN VÀ CODE CHƯƠNG TRÌNH VB:

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 38

Page 39: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

G iao diện:

C ode:

Dim so As IntegerDim byte_cao, byte_thap As ByteDim chuoi As StringPrivate Sub chayx_Click()so = Val(Text1.Text)byte_cao = so \ 256 'xu ly tach thanh 2 bytebyte_thap = so Mod 256MSComm1.Output = Chr(0) 'byte ma lenh chayxIf Option1(1).Value = True Then 'byte ma chieu MSComm1.Output = Chr(1) Else MSComm1.Output = Chr(0) End IfMSComm1.Output = Chr(byte_cao) '2 byte sobuocxMSComm1.Output = Chr(byte_thap)MSComm1.Output = Chr(VScroll1.Value) 'byte toc doEnd Sub

Private Sub chayy_Click()so = Val(Text2.Text)byte_cao = so \ 256

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 39

Page 40: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

byte_thap = so Mod 256MSComm1.Output = Chr(1) 'byte ma lenh chayxIf Option1(1).Value = True Then 'byte ma chieu MSComm1.Output = Chr(1) Else MSComm1.Output = Chr(0) End IfMSComm1.Output = Chr(byte_cao) '2 byte sobuocxMSComm1.Output = Chr(byte_thap)MSComm1.Output = Chr(VScroll2.Value) 'byte toc doEnd Sub

Private Sub Command1_Click()MSComm1.Output = Chr(2) 'lenh stopMSComm1.PortOpen = FalseEndEnd Sub

Private Sub Command2_Click()MSComm1.Output = Chr(2) 'ma lenh stopEnd Sub

Private Sub Form_Load()MSComm1.CommPort = 1MSComm1.Settings = "9600,n,8,1"MSComm1.RThreshold = 2 'oncomm khi bo dem co 2 byteMSComm1.RTSEnable = FalseMSComm1.InputLen = 0 'doc het bo demMSComm1.PortOpen = TrueTimer1.Enabled = FalseTimer2.Enabled = FalseText1.Text = "1"Text2.Text = "1"HScroll1.Value = 50Label13.Caption = HScroll1.ValueVScroll2.Value = 10VScroll1.Value = 10Label1.Caption = VScroll2.ValueLabel3.Caption = VScroll1.ValueEnd Sub

Private Sub Form_Unload(Cancel As Integer)MSComm1.Output = Chr(2) 'lenh stopMSComm1.PortOpen = False

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 40

Page 41: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

End Sub

Private Sub HScroll1_Change()Label13.Caption = HScroll1.ValueEnd Sub

Private Sub MSComm1_OnComm()If MSComm1.CommEvent = comEvReceive Thenchuoi = MSComm1.Input 'Doc chuoi gom 2 ky tu la 2 gt ADC gui lenEnd If 'tach tung byteLabel7.Caption = Asc(Mid(chuoi, 1, 1)) 'nhiet do 1Label8.Caption = Asc(Mid(chuoi, 2, 1)) 'nhiet do 2If Val(Label7.Caption) > Val(Label13.Caption) ThenTimer1.Enabled = TrueElseTimer1.Enabled = FalseShape1.FillColor = &H80000005End IfIf Val(Label8.Caption) > Val(Label13.Caption) ThenTimer2.Enabled = TrueElseTimer2.Enabled = FalseShape2.FillColor = &H80000005End IfEnd Sub

Private Sub Timer1_Timer()If Shape1.FillColor = &H80000005 ThenShape1.FillColor = &HFF&ElseShape1.FillColor = &H80000005End IfEnd SubPrivate Sub Timer2_Timer()If Shape2.FillColor = &H80000005 ThenShape2.FillColor = &HFF&ElseShape2.FillColor = &H80000005End IfEnd Sub

Private Sub VScroll1_Change()

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 41

Page 42: DAMH2

ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH

MSComm1.Output = Chr(3) 'ma lenh cap nhat tocdoxMSComm1.Output = Chr(VScroll1.Value)Label3.Caption = VScroll1.ValueEnd Sub

Private Sub VScroll2_Change()MSComm1.Output = Chr(4) 'ma lenh cap nhat tocdoyMSComm1.Output = Chr(VScroll2.Value)Label1.Caption = VScroll2.ValueEnd Sub

TỔNG KẾT

Mạch hoạt động ổn định và chính xác.Chương trình điều khiển trên vi điều khiển hoạt động tốt, động cơ hoạt động chính xác với số bước và tốc độ được truyền từ máy tính xuống.Chương trình VB hoạt động tốt.Nếu có đủ thời gian và tài chính thì đề tài này có thể phát triển thành sản phẩm mang tính ứng dụng cao.

GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 42