Thiết kế hệ thống băng chuyền phân loại sản phẩm theo chiều cao sử dụng vi điều khiển PIC18F2550

98 412 0
Thiết kế hệ thống băng chuyền phân loại sản phẩm theo chiều cao sử dụng vi điều khiển PIC18F2550

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp LỜI MỞ ĐẦU Trong sống đại ngày nay, công nghệ kỹ thuật điện tử diện hầu hết thiết bị người sử dụng từ lĩnh vực dân dụng đến công nghiệp, quân Hơn 60 năm từ thiết bị bán dẫn đời có bước phát triển nhanh chóng đến kinh ngạc, đem tới tiện nghi đáp ứng cho sống người Từ thiết bị điện tử to lớn cồng kềnh hiệu suất thấp đến máy tính bỏ túi trợ giúp người với khả tính tốn lên đến hàng trăm ngàn phép tính giây với đời công nghệ nano biến thứ khơng thể thành có thể, thứ máy tính bỏ túi, đồng hồ, máy ảnh số, điện thoại bàn… tích hợp điện thoại nhỏ gọn mà người dùng đem nơi đâu cách dễ dàng Sự phát triển vượt bậc công nghệ điện tử dẫn đến đời chip vi xử lý thơng minh với mức độ tích hợp cao ứng dụng vào dây chuyền sản xuất đại Nhiệm vụ người khâu sản xuất dần giảm nhẹ hệ thống điều khiển thông minh có khả tự động hóa cơng đoạn cao giúp giảm giá thành nhân cơng, an tồn vận hành, điều khiển đem lại hiệu suất làm việc cao Trong bối cảnh nay, công nghiệp nước ta mẽ lĩnh vực tự động hóa, hầu hết máy móc công nghệ sản xuất phải nhập từ quốc gia khác có cơng nghệ cao hơn, chi phí để đầu tư hệ thống máy móc đắt tiền mà nhiều doanh nghiệp vừa nhỏ khơng có đủ chi phí mua máy móc Từ thực tế nên tơi định thực đồ án “ Thiết kế hệ thống băng chuyền phân loại sản phẩm ứng dụng vi điều khiển PIC18F2550” để tìm hiểu sở lý thuyết tới hệ thống thực tiễn dây chuyền sản xuất làm sở để phát triển hệ thống phức tạp đáp ứng nhu cầu thực tế sau SVTH : Hồ Quốc Lợi MSSV : 0851030042 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp LỜI CẢM ƠN Trong suốt chặng đường học vấn từ cấp tiểu học, trung học, phổ thông đến đại học chặng đường dài Qua chặng đường lần em lớn lên trưởng thành kiến thức lẫn suy nghĩ mình, chặng đường đại học chặng đường cuối với kiến thức quan trọng cần thiết quãng đời học sinh với năm tháng học tập tiếp xúc với nghiên cứu lĩnh vực chuyên môn, thúc đẩy tinh thần đam mê khoa học Tất thứ hành trang quan trọng đường nghiệp chúng em sau Đây đồ án cuối chặng đường gần năm học tập trường, dịp để em ơn tập cố lại tất kiến thức mà thầy cô dạy năm qua Qua em gởi lời cảm ơn tới Ban giám hiệu trường Đại Học Mở Thành Phố Hồ Chí Minh tập thể thầy, cô giáo Khoa Xây dựng Điện năm qua dạy dỗ chúng em để hôm Đặc biệt gởi lời cảm ơn tới thầy Phan Văn Hiệp tận tâm hướng dẫn em hoàn thành tốt đồ án Cuối cùng, xin gởi lời cảm ơn tới bạn học đồng hành giúp đỡ, góp ý cho suốt q trình học tập trường Tp.Hồ Chí Minh … tháng… năm 2012 Sinh viên thực Hồ Quốc Lợi SVTH : Hồ Quốc Lợi MSSV : 0851030042 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp MỤC LỤC LỜI MỞ ĐẦU LỜI CẢM ƠN MỤC LỤC Chương 1: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI 1.1 Mục đích chọn đề tài 1.2 Ý nghĩa thực tế 1.3 Giới hạn nghiên cứu 1.4 Yêu cầu đặt 1.5 Phương pháp nghiên cứu Chương 2: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC18F2550 2.1 Vi điều khiển PIC18F2550 2.1.1 Giới thiệu chung 2.1.2 Phân loại PIC theo ký tự 2.1.3 Phân loại PIC theo dòng 2.2 Các chức tổng quát PIC18F2550 2.2.1 Mô tả chung 2.2.2 Các chức tích hợp PIC18F2550 2.2.3 Cấu trúc phần cứng PIC18F2550 2.2.4 Tổ chức nhớ chương trình 2.2.5 Tổ chức nhớ liệu 2.3 Các PORT ghi PIC18F2550 2.3.1 Port A ghi liên quan 2.3.2 Port B ghi liên quan 11 2.3.3 Port C ghi liên quan 12 2.3.4 Port E ghi liên quan 14 2.4 Chức ngắt PIC18F2550 15 2.4.1 Giới thiệu nguồn ngắt PIC18F2550 15 2.4.2 Ngắt INT0 , INT1 , INT2 16 2.4.2.1 Ngắt INT0 16 2.4.2.2 Ngắt INT1 16 2.4.2.3 Ngắt INT2 16 2.5 Tìm hiểu chuẩn giao tiếp USB 17 2.5.1 Mơ hình giao tiếp USB 18 2.5.2 Các kiểu truyền USB 20 2.5.3 Giao diện vật lý USB 20 2.5.4 Giao thức truyền 22 2.5.4.1 Các trường truyền thông USB 22 2.5.4.2 Các gói truyền thơng USB 23 2.5.4.3 Quá trình truyền kiểu truyền thông USB 24 2.5.4.3.1 Truyền điều khiển 24 2.5.4.3.2 Truyền ngắt 25 2.5.4.4 Quá trình điểm danh thiết bị 26 2.5.5 Module USB PIC18F2550 29 Chương 3: LED ĐOẠN VÀ CÁC VẤN ĐỀ LIÊN QUAN 32 3.1 Giới thiệu LED đoạn 32 3.2 Cấu tạo LED đoạn .32 3.3 Giao tiếp với LED đoạn 33 SVTH : Hồ Quốc Lợi MSSV : 0851030042 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp 3.3.1 Giải mã theo phương pháp dùng IC giải mã 74LS247 33 3.3.1.1 Giới thiệu IC giãi mã 74LS247 33 3.3.1.2 Sơ đồ kết nốI 35 3.3.2 Giãi mã LED đoạn dùng vi điều khiển 35 3.3.3 Giãi mã LED đoạn dùng IC 74LS247 vi điều khiển 36 Chương 4: ĐỘNG CƠ MỘT CHIỀU VÀ ĐỘNG CƠ BƯỚC 38 4.1 Động chiều 38 4.1.1 Cấu tạo động chiều 39 4.1.2 Nguyên lý hoạt động 39 4.1.3 Điều khiển tốc độ chiều động chiều 39 4.1.3.1 Điều khiển tốc độ động chiều 40 4.1.3.2 Điều khiển chiều động chiều 41 4.2 Động bước 42 4.2.1 Cấu tạo động bước 42 4.2.2 Nguyên lý hoạt động 42 4.2.3 Các phương pháp điều khiển động bước 44 4.2.4 Giao tiếp công suất với động bước 46 Chương 5: TRÌNH BIÊN DỊCH PCWH NGÔN NGỮ C CHO PIC 47 5.1 Giới thiệu chung 47 5.2 Cách viết chương trình CCS 48 5.3 Nạp chương trình cho PIC 54 Chương 6: TÌM HIỂU SƠ LƯỢC VỀ NGƠN NGỮ LẬP TRÌNH VB.NET 57 6.1 Giới thiệu chung 57 6.2 Thư viện giao tiếp USB VB.NET 59 Chương 7: XÂY DỰNG PHẦN MỀM ĐIỀU KHIỂN 60 7.1 Phần mềm giao tiếp máy tính 60 7.1.1 Giải thích hoạt động 62 7.2 Chương trình điều khiển PIC18F2550 62 7.2.1 Hoạt động 64 Chương 8: THIẾT KẾ MƠ HÌNH VÀ BOARD ĐIỀU KHIỂN 67 8.1 Thiết kế mơ hình 67 8.2 Sơ đồ nguyên lý 69 8.2.1 Sơ đồ khối cảm biến vi điều khiển PIC18F2550 69 8.2.2 Sơ đồ khối hiển thị LED đoạn 71 8.2.3 Sơ đồ khối điều khiển động 72 8.2.4 Sơ đồ khối nguồn 73 8.3 Mạch in 74 Chương 9: MÔ PHỎNG HỆ THỐNG TRÊN PROTEUS 7.7 75 Chương 10: KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN 77 10.1 Tóm tắt đề tài 77 10.2 Kết thực 77 10.3 Hướng phát triển 77 PHỤ LỤC 78 TÀI LIỆU THAM KHẢO 94 SVTH : Hồ Quốc Lợi MSSV : 0851030042 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 1.1 Mục đích chọn đề tài Ngày nay, với phát triển mạnh mẽ ngành khoa học kỹ thuật, công nhệ kỹ thuật điện tử mà kỹ thuật điều khiển tự động đóng vai trò vơ quan trọng góp mặt lĩnh vực từ dân dụng công nghiệp… Do sinh viên chuyên ngành điên tử phải biết nắm bắt vận dụng cách hiệu kiến thức học để đáp ứng nhu cầu xã hội, nâng cao trình độ thân góp phần thúc đẩy phát triển nước nhà Trong trình tham quan thực tế thực tập tốt nghiệp thấy hệ thống máy móc thực tế xưởng sản xuất, cách thức vận hành khâu điều khiển tự động hóa bên cạnh có khơng hệ thống điều khiển theo kiểu thủ cơng, nghĩa khâu điều phải có nhiều cơng nhân đứng vận hành trực tiếp Điều thứ làm cho hiệu suất sản xuất khơng cao, q trình sản xuất khơng đảm bảo tính liên tục tính xác hệ thốngphần nhiều lỗi người công nhân vận hành Thứ hai khơng đảm bảo an tồn lao động cho công nhân vận hành tiếp xúc trực tiếp với bảng điều khiển mà phát sinh cố chập điện nguyên nhân khơng biết trước Thứ ba khâu sản xuất phải có nhân cơng vận hành điều gây lãng phí nhân lực, từ chi phi sản xuất tăng cao Từ ưu khuyết điểm cho thấy vai trò quan trọng việc áp dụng kỹ thuật điều khiển tự động vào dây chuyền sản xuất Do đồ án chọn đề tài “Thiết kế mơ hình băng chuyền phân loại sản phẩm theo chiều cao ứng dụng vi điều khiển PIC18F2550” Trong mơ hình toàn hệ thống sản xuất (ở hệ thống băng chuyền) điều khiển cách tự động thơng qua máy tính phòng điều khiển, điều giải bất lợi trình sản xuất thiết lập trước máy tính, sau người điều khiển cần lệnh khởi động hệ thống hoạt động hoàn tồn tự động theo thiết lập dây chuyền sản xuất hoạt động cách liên tục từ nâng cao hiệu suất sản xuất với người điều khiển Đồng thời người vận hành cách ly hoàn toàn với thao tác khí nguy hiểm đề cập việc điều khiển trơ nên linh hoạt người vận hành theo dõi trạng thái hoạt động hệ thống qua giao diện trực quan hình máy tính giúp kiểm sốt trình sản xuất 1.2 Ý nghĩa thực tế Mơ hình áp dụng cho dây chuyền sản xuất xí nghiệp vừa nhỏ với mức chi phí nhỏ 1.3 Giới hạn nghiên cứu  Vi điều khiển PIC18F2550  Động chiều  Động bước  Giao tiếp LED Đoạn SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp  Trình biên soạn biên dịch ngôn ngữ C (CCS) dành cho vi điều khiển PIC  Trình biên soạn VB.net cho phần mềm điều khiển máy tính 1.4 Yêu cầu đặt  Gồm băng chuyền, băng chuyền có nhiệm vụ đưa sản phẩm thấp cao đi, dùng để đưa thùng vào  Có cảm biến để đếm sản phẩm cao, thấp, thùng  Sử dụng động bước để gạt sản phẩm cao  Có khả thiết lập số sản phẩm thùng số thùng qua phầm mềm điều khiển máy tính thơng qua giao tiếp USB có khả lưu trữ liệu hoạt động phiên hoạt động 1.5 Phương pháp nghiên cứu           Tìm hiểu Vi điều khiển PIC18F2550 Tìm hiểu LED đoạn cách thức giao tiếp Tìm hiểu động chiều Tìm hiểu động bước Tìm hiểu trình biên dịch CCS, viết chương trình, biên dịch file hex nạp cho Vi điều khiển Tìm hiểu sơ lược ngơn ngữ lập trình hướng đối tượng VB.net Thiết kế mơ hình hệ thống băng chuyền lắp đặt sensor vào vị trí mơ hình Thiết kế mạch in board điều khiển Mô hoạt động hệ thống máy tính sử dụng Proteus 7.7 Hồn thiện mơ mơ hình thật SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp CHƯƠNG 2: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC18F2550 2.1 Vi điều khiển PIC18F2550 Hình 2.1 Sơ đồ chân PIC18F2550 2.1.1 Giới thiệu chung PIC viết tắt từ Programmable Intelligent Computer (Máy tính khả trình thơng minh) hãng General Intrument đặt tên Vi điều khiển có tên mã PIC1650, hệ sau dòng sản phẩm Microchip có trụ sở Mỹ tiếp tục phát triển Các sản phẩm Mircochip đa dạng từ 10Cxxx,12Cxxx,… đến PIC16, PIC18, PIC24, PIC30, PIC33, PIC32MX…được phân loại thành tầng thấp, trung, cao phù hợp với ứng dụng từ tới phức tạp người dùng 2.1.2 Phân loại PIC theo ký tự  Nhóm OTP (One Time Programable), với đặt trưng có ký tự “C” nằm sau mã dòng dụ PIC16C59,16C54 Đặc điểm loại nạp chương trình lần  Nhóm Flash, với đặt trưng có ký tự “F” nằm sau mã dòng dụ PIC16F88, PIC18F2550…Đặt điểm loại tái nạp lại nhiều lần nhớ chương trình Flash(F).Tùy theo dòng PIC mà số lần tái nạp lại khác dụ với chip đời cũ PIC16F84 nạp lại 1.000 lần, với chip đời cao hiên đạt đến 10.000 lần tái nạp  Bên cạnh có dòng PIC sử dụng điện áp thấp (2.0V đến 5.5V) với đặt trưng có ký tự “LF” dụ PIC16LF88…tiêu thụ lượng thấp PIC dòng “F” tính giống với PIC tên khác 2.1.3 Phân loại PIC theo dòng PIC chia làm dòng :  Dòng (Base) gồm họ 12Cxxx với độ dài lệnh tối đa 12bit SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang Đồ án tốt nghiệp kỹ công nghiệp   GVHD : Ths Phan Văn Hiệp Dòng phổ thơng (Mid-range) Gồm họ 10Fxxx,12Fxxx,16Fxxx với độ dài tập lệnh 14bit Dòng cao cấp (High-End) từ PIC18F trở lên đến 32MX với độ dài tập lệnh 16bit 32bit… 2.2 Các chức tổng quát PIC18F2550 2.2.1 Mô tả chung PIC18F2550 dòng vi điều khiển nanoWatt với kiến trúc RISC, sử dụng microcode đơn giản đặt ROM, tập lệnh đươc mở rộng lênh tối đa 83 lệnh so với 35 lệnh dòng PIC chạy lệnh chu kỳ máy (4 chu kỳ dao động) PIC nhờ có EEPROM nên tạo thành điều khiển vào khả trình, với hàng loạt mơ-đun ngoại vi tích hợp sẵn USART, PWM, ADC,USB , với nhớ chương trình 32KWord PIC18F2550 dòng PIC thuộc dòng High-end, đủ mạnh tính năng, nhiều chân IO, nhớ đủ lớn cho hầu hết ứng dụng thông thuờng ứng dụng nâng cao 2.2.2 Các chức tích hợp PIC18F2550  Hỗ trợ chuẩn giao tiếp USB2.0 Fullspeed 12Mbit/s, với phương thức truyền Control, Interrupt, Isochronous Bulk - Hổ trợ 32 endpoint (điểm đến) - KB nhớ RAM cho USB  32 KB nhớ chương trình ROM  KB SRAM, 256 Byte EEPROM  PORT (A,B,C,E) với ngõ vào điều khiển độc lập  Có định thời (Timer).Trong có định thời bit định thời 16 bit  module CCP(capture, Compare, PWM)  chuyển đổi số sang tương tự (ADC) 10 bit với 10 ngõ vào đa hợp  so sánh tương tự (Comparator)  Hỗ trợ chuẩn giao tiếp SPI giao tiếp I2C  Hỗ trợ giao tiếp nối tiếp (EUSART)  Hỗ trợ chế độ Sleepmode  Nạp chương trình cổng nối tiếp ICSP (In Circuit Serial Programming)  Tần số dao động tối đa lên đến 48MHz tăng tốc độ xử lý cho vi điều khiển.Ngồi sử dụng dao động nội cách thiết lập qua phần mềm mà khơng cần sử dụng thạch anh ngồi, hỗ trợ nhân tần PLL(Phase Lock Loop) cho module USB 2.2.3 Cấu trúc phần cứng PIC18F2550 SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp Hình 2.2 Sơ đồ cấu trúc phần cứng PIC18F2550 2.2.4 Tổ chức nhớ chương trình PIC18F2550 SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp Hình 2.3 Sơ đồ tổ chức nhớ PIC18F2550 PIC18F2550 với nhớ chương trình lên đến 32Kbyte lưu trữ tối đa 16.384 cấu trúc lệnh (16bit) chạy từ địa 0018h tới 07FFh với 32 stack Từ địa 8000f tới 1FFFFFh khơng có hiệu lực, người sử dụng truy cập tới địa thuộc vùng trả giá trị (Read 0) Như sơ đồ tổ chức nhớ ta thấy có tới địa vectơ ngắt với mức độ ưu tiên cao thấp, điều có nghĩa thiết lập cấu “ngắt ngắt” tức thực chương trình ngắt thứ có mức ưu tiên thấp ngắt thứ hai, có ngắt thứ hai xảy lúc trỏ chương trình trỏ tới ngắt có mức ưu tiên cao Đây cải tiến có mà khơng thể thực dòng PIC thấp 2.2.5 Tổ chức nhớ liệu PIC18F2550 SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp Timer2.Enabled = False End Sub ' hàm phát usb cắm vào '***************************************************************** Public Sub OnPlugged(ByVal pHandle As Integer) If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then ToolStripStatusLabel5.ForeColor = Color.LimeGreen ToolStripStatusLabel5.Text = "Đã kết nối" Timer1.Enabled = True End If End Sub ' hàm phát usb rút '***************************************************************** Public Sub OnUnplugged(ByVal pHandle As Integer) If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then hidSetReadNotify(hidGetHandle(VendorID, ProductID), False) ToolStripStatusLabel5.ForeColor = Color.Brown ToolStripStatusLabel5.Text = "Chưa kết nối" Timer1.Enabled = False Timer2.Enabled = False End If End Sub ' hàm điều khiển thông báo nhận thiết bị '***************************************************************** Public Sub OnChanged() Dim pHandle As Integer pHandle = hidGetHandle(VendorID, ProductID) hidSetReadNotify(hidGetHandle(VendorID, ProductID), True) End Sub 'hàm kiện đọc nhớ đệm '***************************************************************** Public Sub OnRead(ByVal pHandle As Integer) If hidRead(pHandle, BufferIn(0)) Then End If End Sub ‘Nút Start Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ‘chuỗi lệnh start gởi xuống PIC If TextBox3.Text "" Then Try BufferOut(0) = BufferOut(1) = &H1 ‘biến Data = BufferOut(2) = CByte(TextBox3.Text) ‘sản phẩm đặt BufferOut(3) = 255 BufferOut(4) = 255 BufferOut(5) = 255 BufferOut(6) = 255 BufferOut(7) = 255 BufferOut(8) = 255 For i = To SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 80 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp hidWriteEx(VendorID, ProductID, BufferOut(i)) ‘lệnh gởi gói liệu xuống PIC Next Catch End Try Timer2.Enabled = True Button1.Enabled = False Button3.Enabled = True txtChange = True TextBox1.Enabled = False TextBox3.Enabled = False Else MsgBox("Bạn phải cài đặt số sản phẩm trước", MsgBoxStyle.Critical, "Chú ý") End If End Sub ‘Nút stop Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ‘chuỗi lệnh stop gởi xuống PIC Try BufferOut(0) = BufferOut(1) = &H0 ‘biến Data = BufferOut(2) = 100 BufferOut(3) = 255 BufferOut(4) = 255 BufferOut(5) = 255 BufferOut(6) = 255 BufferOut(7) = 255 BufferOut(8) = 255 For i = To hidWriteEx(VendorID, ProductID, BufferOut(i)) Next Catch End Try ToolStripStatusLabel6.Text = "BC1 OFF" ToolStripStatusLabel7.Text = "BC2 OFF" Timer2.Enabled = False Button1.Enabled = True End Sub ‘Nút reset Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim DnT As String = Format(DateAndTime.Now, "dd/MM/yyyy - hh:mm:ss tt") Dim Temp As String ‘cập nhật giá trị đếm trước reset toàn Sumthung = Sumthung + BufferIn(4) Sumcao = Sumcao + BufferIn(1) Sumthap = Sumthap + BufferIn(2) Temp = "***********" & DnT & "************" & vbCrLf & _ "- Sản phẩm thấp : " & BufferIn(2) & vbCrLf & _ "- Sản phẩm cao : " & BufferIn(1) & vbCrLf & _ "- Thùng : " & BufferIn(4) & vbCrLf & vbCrLf Form2.TextBox1.Text = Form2.TextBox1.Text & Temp Temp1 = Temp1 & Temp SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 81 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp Form2.Label4.Text = Sumthap Form2.Label5.Text = Sumcao Form2.Label6.Text = Sumthung ‘chuỗi lênh reset gởi xuống PIC Try BufferOut(0) = BufferOut(1) = &H2 BufferOut(2) = 100 BufferOut(3) = 255 BufferOut(4) = 255 BufferOut(5) = 255 BufferOut(6) = 255 BufferOut(7) = 255 BufferOut(8) = 255 For i = To hidWriteEx(VendorID, ProductID, BufferOut(i)) Next Catch End Try 'txtChange = False ToolStripStatusLabel6.Text = "BC1 OFF" ToolStripStatusLabel7.Text = "BC2 OFF" ToolStripStatusLabel8.Text = "Thùng = 0" 'PictureBox8.Image = System.Drawing.Image.FromFile( _ '"D:\Quan trong\DATN\VBnet\Driver\Resources\GOC5.BMP") Timer2.Enabled = False Button1.Enabled = True Button3.Enabled = False TextBox1.Enabled = True TextBox3.Enabled = True TextBox1.Text = "" TextBox3.Text = "" End Sub ‘thủ tục timer để cập nhật giá trị đếm hiển thị lên hình Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim Tthap As String = Status = BufferIn(3) Temp = Status And &H1 High = Format(BufferIn(2), "00") Low = Format(BufferIn(1), "00") Box = Format(BufferIn(4), "00") ‘Nếu số thùng đếm số thùng đặt gởi lệnh stop xuống PIC If TextBox1.Text "" AndAlso TextBox1.Text "0" Then If CByte(TextBox1.Text) = BufferIn(4) And Temp = Then Try BufferOut(0) = BufferOut(1) = &H0 BufferOut(2) = CByte(TextBox3.Text) 'Sp dat BufferOut(3) = 255 BufferOut(4) = 255 SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 82 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp BufferOut(5) = 255 BufferOut(6) = 255 BufferOut(7) = 255 BufferOut(8) = 255 For i = To hidWriteEx(VendorID, ProductID, BufferOut(i)) Next Catch End Try ToolStripStatusLabel6.Text = "BC1 OFF" ToolStripStatusLabel7.Text = "BC2 OFF" Timer2.Enabled = False Button1.Enabled = True End If End If AxPictureClip1.ClipX = posx(getchar(Mid(High, 1, 1))) AxPictureClip1.ClipY = 49 AxPictureClip1.ClipHeight = 43 AxPictureClip1.ClipWidth = (30) PictureBox1.Image = AxPictureClip1.Clip 'Char AxPictureClip1.ClipX = posx(getchar(Mid(High, 2, 1))) AxPictureClip1.ClipY = 49 AxPictureClip1.ClipHeight = 43 AxPictureClip1.ClipWidth = (32) PictureBox2.Image = AxPictureClip1.Clip 'Char AxPictureClip2.ClipX = posx(getchar(Mid(Low, 2, 1))) AxPictureClip2.ClipY = 49 AxPictureClip2.ClipHeight = 43 AxPictureClip2.ClipWidth = (32) PictureBox4.Image = AxPictureClip2.Clip 'Char AxPictureClip2.ClipX = posx(getchar(Mid(Low, 1, 1))) AxPictureClip2.ClipY = 49 AxPictureClip2.ClipHeight = 43 AxPictureClip2.ClipWidth = (30) PictureBox5.Image = AxPictureClip2.Clip 'Char AxPictureClip3.ClipX = posx(getchar(Mid(Box, 2, 1))) AxPictureClip3.ClipY = 49 AxPictureClip3.ClipHeight = 43 AxPictureClip3.ClipWidth = (32) PictureBox9.Image = AxPictureClip3.Clip 'Char AxPictureClip3.ClipX = posx(getchar(Mid(Box, 1, 1))) AxPictureClip3.ClipY = 49 AxPictureClip3.ClipHeight = 43 AxPictureClip3.ClipWidth = (30) PictureBox10.Image = AxPictureClip3.Clip End Sub ‘thủ tục timer dùng để cập nhật hình ảnh bằn chuyền SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 83 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick Status = BufferIn(3) ‘biến trạng thái nhận PIC gởi lên Select Case Status Case 'dc2=0, dc1=0, co_thung=0 ToolStripStatusLabel6.Text = "BC1 OFF" ToolStripStatusLabel7.Text = "BC2 OFF" ToolStripStatusLabel8.Text = "Thùng = 0" PictureBox7.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC3.BMP") PictureBox8.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC5.BMP") Case 'dc2=0, dc1=0, co thung=1 ToolStripStatusLabel6.Text = "BC1 OFF" ToolStripStatusLabel7.Text = "BC2 OFF" ToolStripStatusLabel8.Text = "Thùng = 1" PictureBox7.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC3.BMP") PictureBox8.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC7.BMP") Case 'dc2=0, dc1=1, co_thung=1 ToolStripStatusLabel6.Text = "BC1 ON" ToolStripStatusLabel7.Text = "BC2 OFF" ToolStripStatusLabel8.Text = "Thùng = 1" PictureBox8.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC7.BMP") If Pic_sel = False Then PictureBox7.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC3.BMP") Else PictureBox7.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC4.BMP") End If Case 'dc2=1, dc1=0, co_thung=0 ToolStripStatusLabel6.Text = "BC1 OFF" ToolStripStatusLabel7.Text = "BC2 ON" ToolStripStatusLabel8.Text = "Thùng = 0" PictureBox7.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC3.BMP") If Pic_sel = False Then PictureBox8.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC5.BMP") Else PictureBox8.Image = System.Drawing.Image.FromFile( _ "D:\Quan trong\DATN\VBnet\Driver\Resources\GOC6.BMP") End If End Select Pic_sel = Not Pic_sel End Sub ‘Hàm chương trình Private Sub ExitToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem1.Click DisconnectFromHID() ‘hủy kết nối USB End SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 84 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp End Sub ‘thủ tục nhấn menu “About” Private Sub AboutToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click MsgBox(" Trường Đại Học Mở Tp.Hồ Chí Minh" _ & vbCrLf & "Đồ án Tốt Nghiệp Đại Học Ngành Công Nghiệp" & vbCrLf _ & vbCrLf & "SVTH : Hồ Quốc Lợi" & " - MSSV : 0851030042" _ & vbCrLf & "GVHD : Ths.Phan Văn Hiệp" & vbCrLf _ & vbCrLf & "Đề Tài : Băng chuyền phân loại sản phẩm theo" _ & vbCrLf & " chiều cao ứng dụng VĐK PIC18f2550", MsgBoxStyle.Information, "Thông Báo") End Sub ‘thủ tục nhấn menu “data” Private Sub DataToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataToolStripMenuItem.Click Form2.Show() Form2.Label4.Text = Sumthap Form2.Label5.Text = Sumcao Form2.Label6.Text = Sumthung End Sub ‘thủ tục lưu trữ số liệu file text Private Sub SaveToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem2.Click Dim OutFile As String Dim SumSv As String = "***********************************************" & vbCrLf & _ "- Tổng sp thấp : " & Sumthap & vbCrLf & _ "- Tổng sp cao : " & Sumcao & vbCrLf & _ "- Tổng số thùng : " & Sumthung & vbCrLf & _ "***********************************************" & vbCrLf & vbCrLf OutFile = " Data Log" & vbCrLf & Temp1 & SumSv SaveFileDialog1.Filter = "Text File (*.txt) | *.txt" SaveFileDialog1.ShowDialog() If SaveFileDialog1.FileName "" Then Try FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output) PrintLine(1, OutFile) Catch ex As Exception MsgBox("Lỗi tạo file !") Finally FileClose(1) End Try End If End Sub End Class ‘************************************End Mainform**************************************’ ‘***************************************form 2******************************************’ Public Class Form2 Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.StartPosition = FormStartPosition.CenterScreen Me.TextBox1.Text = Form1.Temp1 SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 85 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp TextBox1.ReadOnly = True TextBox1.BackColor = Color.White End Sub End Class ‘***************************************End form 2**************************************’ ‘************************************Module HIDUSB************************************’ Imports System Imports System.Threading Imports System.Runtime.InteropServices Module HIDDLLInterface ' tuyên bố sử dụng thư viện động điều khiển USB lớp HID Declare Function hidConnect Lib "HID.dll" Alias "Connect" (ByVal pHostWin As Integer) As Boolean Declare Function hidDisconnect Lib "HID.dll" Alias "Disconnect" () As Boolean Declare Function hidGetItem Lib "HID.dll" Alias "GetItem" (ByVal pIndex As Integer) As Integer Declare Function hidGetItemCount Lib "HID.dll" Alias "GetItemCount" () As Integer Declare Function hidRead Lib "HID.dll" Alias "Read" (ByVal pHandle As Integer, ByRef pData As Byte) As Boolean Declare Function hidWrite Lib "HID.dll" Alias "Write" (ByVal pHandle As Integer, ByRef pData As Byte) As Boolean Declare Function hidReadEx Lib "HID.dll" Alias "ReadEx" (ByVal pVendorID As Integer, ByVal pProductID As Integer, ByRef pData As Byte) As Boolean Declare Function hidWriteEx Lib "HID.dll" Alias "WriteEx" (ByVal pVendorID As Integer, ByVal pProductID As Integer, ByRef pData As Byte) As Boolean Declare Function hidGetHandle Lib "HID.dll" Alias "GetHandle" (ByVal pVendoID As Integer, ByVal pProductID As Integer) As Integer Declare Function hidGetVendorID Lib "HID.dll" Alias "GetVendorID" (ByVal pHandle As Integer) As Integer Declare Function hidGetProductID Lib "HID.dll" Alias "GetProductID" (ByVal pHandle As Integer) As Integer Declare Function hidGetVersion Lib "HID.dll" Alias "GetVersion" (ByVal pHandle As Integer) As Integer Declare Function hidGetVendorName Lib "HID.dll" Alias "GetVendorName" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer Declare Function hidGetProductName Lib "HID.dll" Alias "GetProductName" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer Declare Function hidGetSerialNumber Lib "HID.dll" Alias "GetSerialNumber" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer Declare Function hidGetInputReportLength Lib "HID.dll" Alias "GetInputReportLength" (ByVal pHandle As Integer) As Integer Declare Function hidGetOutputReportLength Lib "HID.dll" Alias "GetOutputReportLength" (ByVal pHandle As Integer) As Integer Declare Sub hidSetReadNotify Lib "HID.dll" Alias "SetReadNotify" (ByVal pHandle As Integer, ByVal pValue As Boolean) Declare Function hidIsReadNotifyEnabled Lib "HID.dll" Alias "IsReadNotifyEnabled" (ByVal pHandle As Integer) As Boolean Declare Function hidIsAvailable Lib "HID.dll" Alias "IsAvailable" (ByVal pVendorID As Integer, ByVal pProductID As Integer) As Boolean ' tuyên bố API sử dụng windows Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Integer, ByVal hwnd As Integer, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 86 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer Delegate Function SubClassProcDelegate(ByVal hwnd As Integer, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Public Declare Function DelegateSetWindowLong Lib "USER32.DLL" Alias "SetWindowLongA" _ (ByVal hwnd As Integer, ByVal attr As Integer, ByVal lval As SubClassProcDelegate) As Integer ' số API Public Const WM_APP As Integer = 32768 Public Const GWL_WNDPROC As Short = -4 ' HID message constants Private Const WM_HID_EVENT As Decimal = WM_APP + 200 Private Const NOTIFY_PLUGGED As Short = Private Const NOTIFY_UNPLUGGED As Short = Private Const NOTIFY_CHANGED As Short = Private Const NOTIFY_READ As Short = ‘hằng số báo có thiết bị cắm vào ‘hằng số báo thiết bị rút ‘hằng số báo dọc liệu nhận ' local variables Private FPrevWinProc As Integer ' Handle to previous window procedure Private FWinHandle As Integer ' Handle to message window Private Ref_WinProc As New SubClassProcDelegate(AddressOf WinProc) Private HostForm As Object ‘Hàm kết nối đến thiết bị lớp HID ' Set up a windows hook to receive notification ' messages from the HID controller DLL - then connect ' to the controller Public Function ConnectToHID(ByRef targetForm As Form) As Boolean Dim pHostWin As Integer = targetForm.Handle.ToInt32 FWinHandle = pHostWin pHostWin = hidConnect(FWinHandle) FPrevWinProc = DelegateSetWindowLong(FWinHandle, GWL_WNDPROC, Ref_WinProc) HostForm = targetForm End Function ‘Hàm hủy kết nối đến HID ' Unhook from the HID controller and disconnect Public Function DisconnectFromHID() As Boolean DisconnectFromHID = hidDisconnect SetWindowLong(FWinHandle, GWL_WNDPROC, FPrevWinProc) End Function ' This is the procedure that intercepts the HID controller messages Private Function WinProc(ByVal pHWnd As Integer, ByVal pMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer If pMsg = WM_HID_EVENT Then Select Case wParam ' HID device has been plugged message SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 87 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp Case Is = NOTIFY_PLUGGED HostForm.OnPlugged(lParam) ' HID device has been unplugged Case Is = NOTIFY_UNPLUGGED HostForm.OnUnplugged(lParam) ' controller has changed Case Is = NOTIFY_CHANGED HostForm.OnChanged() ' read event Case Is = NOTIFY_READ HostForm.OnRead(lParam) End Select End If ' next WinProc = CallWindowProc(FPrevWinProc, pHWnd, pMsg, wParam, lParam) End Function End Module ‘*************************************End Module************************************’ Code chương trình điều khiển PIC18F2550 : /********************************chuong trinh dieu khien PIC*********************************/ #include //sử dụng PIC18F2550 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN #use delay(clock=20000000) //sử dụng thạch anh 20Mhz #include //sử dụng thư viện USB PIC18 CCS #include //header chứa thông tin thiết lập cấu hình USB #include #byte portb = 0xf81 //địa portB #byte portc = 0xf82 //địa portC #bit dc1 = 0xf80.0 //băng chuyền sản phẩm #bit dc2 = 0xf80.1 //băng chuyền thùng #bit phase_a = 0xf80.2 //các chân điều khiển động bước #bit phase_b = 0xf80.3 #bit phase_c = 0xf80.4 #bit phase_d = 0xf80.5 /**************************khai bao bien**************************/ char sp_cao=0; //biến chứa số sản phẩm cao char sp_thap=0; //biến chứa số sản phẩm thấp char thung=0; //biến chứa số thùng char dv1,dv2,chuc1,chuc2; char don; int1 co_thung; int8 indata[8]; int8 outdata[8]; unsigned int data=0; SVTH : Hồ Quốc Lợi MSSV : 0851030042 Trang 88 Đồ án tốt nghiệp kỹ công nghiệp GVHD : Ths Phan Văn Hiệp unsigned int sp_dat; unsigned int status=0; //biến chứa sản phẩm đặt máy tính gởi xuống //biến trạng thái gởi lên máy tính int1 step_en = 0; char y; char const full_step[4] = {1,2,4,8}; char dat[4]; char i1,i2=0; //biến cho phép động bước hoạt động //mảng liệu fullstep cho động bước /***************************interrupts*****************************/ #int_ext void high_sen() //hàm phục vụ ngắt sản phảm cao { sp_cao++; if(sp_cao>99) sp_cao=0; step_en = 1; status = (dc2

Ngày đăng: 17/02/2019, 22:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan