PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ m
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA ĐIỆN - ĐIỆN TỬ
KHÓA LUẬN TỐT NGHIỆP
Chuyên ngành: TỰ ĐỘNG ĐIỀU KHIỂN
Đề tài:
Giảng viên hướng dẫn: Th Sĩ: HOÀNG MINH TRÍ
Lớp: 09DD3N
Khóa: 09
TP Hồ Chí Minh, tháng 12 năm 2010
Trang 2MỤC LỤC
Trang 3LỜI CẢM ƠN
Trước tiên em xin gửi lời chúc sức khỏe đến toàn thể giảng viên khoa Điện – Điện Tử, nhất là đến thầy HOÀNG MINH TRÍ đã nhiệt tình hướng dẫn em hoàn thành luận văn tốt ngiệp này
Em xin gửi lời cám ơn chân thành và sâu sắc đến Thầy HOÀNG MINH TRÍ đã giúp đỡ
em chọn được đề tề phù hợp với khả năng học tập của mình, hướng dẫn em nhiệt tình để
có được một luận văn hoàn chỉnh
Em gửi lời cám ơn đến thầy cô khoa Điện – Điện tử đã giúp đỡ, hướng dẫn, giảng dạy và tạo điều kiện cho em hoàn thành xong chương trình khóa học và cung cấp cho em kiến thức để hoàn thành luận văn tốt nghiệp này
Em xin gửi lời cảm ơn đến gia đình và bạn bè đã khích lệ, động viên và hỗ trợ tinh thần cũng như kiến thức trong suốt 5 năm học tập tại trường
Và cuối cùng là em chân thành cám ơn đến trường TÔN ĐỨC THẮNG đã tạo điều kiện cho em có được đồ án tốt nghiệp này
Trang 4LỜI NÓI ĐẦU
Nền công nghiệp thế giời đang trên đà phát triển vượt bậc và ngày một hoàn thiện hơn Trong đó vấn đề tụ động điều khiển được đặt lên hàng đầu trong quá trình nghiên cứu cũng như ứng dụng công nghệ mới vào trong quá trình sản xuất Nó đòi hòi khả năng xử
lý, mức độ hoàn hảo, sự chính xác của hệ thống sản xuất ngày một cao hơn, để có thể dáp ứng được nhu cầu về số lượng, chất lượng, thẫm mỹ ngày càng cao của xã hội
Sự xuất hiện của máy tính vào những năm đầu thập niên 60, đã hổ trợ con người làm việc tốt hơn trong nhiều lĩnh vực từ kinh tế, y tế, giáo dục, quốc phòng đến nhiều lĩnh vực khác nhu hàng không, vũ trụ Với sự đòi hỏi của con người, những nhà nghiên cứu không dừng lại ở đó Nhiều thiết bị, phần mềm ra đời chuyên phục vụ cho ngành công nghiệp, tính năng ưu việt luôn được nâng cao Một trong những thiết bị phải kể đến đó là chip xử lý
Kỹ thuật vi xử lý rất ưu việt đã trở nên rất cần thiết trong ngành điện tử, nó đã thay thế các thiết bị có cấu tạo phức tạp thành đơn giản Ứng dụng vi xử lý rất rộng rải từ máy móc quan trọng trong công nghiệp đến các thiết bị chuyên dùng
Do hạn chế về thời gian, kinh nghiệm thực tế, vừa tìm hiểu, vừa học hỏi trong quá trình thực hiện, nên không thể tránh khỏi những thiếu xót Rất mong sự đóng góp ý kiến quý báo của thầy cô và các bạn để đề tài hoàn thiện hơn
Tp Hồ Chí Minh, tháng năm 2010
Sinh viên thực hiện
Huỳnh Vinh Huy
Trang 5CHƯƠNG I DẪN NHẬP TÓM TẮT LUẬN VĂN
Mô hình cân lưu lượng được ứng dụng khá rộng rãi trong các ngành công nghiệp, nhất là trong các quá trình sản xuất Cân lưu lượng ở đây ở nhiều dạng như: các chất có dạng tinh bột, các chất có dạng hóa lỏng …
Trước tiên chúng ta cần xác định cụ thể là cân lưu lượng cần những thành phần xử lý nào, điều khiển động cơ vận hành thông qua PLC hay là PIC Ở đây để thuận tiện hơn trong việc tự nghiên cứu., em dùng PIC Sau đó chúng ta lựa chọn PIC để phù hợp với từng loại
bộ mã hóa có tích hợp hay không tích hợp Bộ ADC đóng vai trò quan trọng trong việc chuyển đổi các dữ liệu từ khối lượng thực tại, tới bộ xử lý rồi xuất ra Vole
Dựa vào VB ta quan sát và kiểm tra được vận tốc độ băng chuyền, khối lượng thực tại trên băng chuyền và có mức điều chỉnh phủ hợp
Trang 6CHƯƠNG II TÌM HIỂU ĐỀ TÀI GIỚI THIỆU VỀ PIC 18F452
18F452
PIC bắt nguồn từ chữ viết tắt của "Programmable Intelligent Computer" (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650
Lúc này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên
"Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi)
CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động
xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4
chu kỳ của bộ dao động)
Năm 1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án - lúc đó đã quá lỗi thời Tuy nhiên PIC
được bổ sung EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi
tích hợp sẵn (như USART, PWM, ADC ), với bộ nhớ chương trình từ 512
Word đến 32K Word
Họ vi điều khiển PIC và dsPIC do hãng chế tạo và sản xuất với công nghệ hiện đại, phù hợp cho các ứng dụng đơn giản cho đến phức tạp Đặc biệt
ngoài ngôn ngữ lập trình assembler như các MCU khác, người dùng có thể
lập trình PIC trên ngôn ngữ C quen thuộc thông qua các phần mềm hỗ trợ (
PIC18C ; CCS C ;…….)
Trang 7PIC được phân chia thành 3 loại dựa vào kích thước tập lệnh của chúng:
-Dòng PIC nhỏ(Low-End PIC): với các lệnh có chiều dài 12bit, với khoảng 35 dòng lệnh Với các loại PIC:10, 12, 14, 16
-Dòng PIC trung(Middle-Range PIC): với các lệnh có chiều dài 14bit, với khoảng
59 dòng lệnh Với các loại PIC: 18
-Dòng PIC cao cấp (High-End PIC): với các lệnh có chiều dài 16bit,với khoảng
70 dòng lệnh Với các loại PIC: 24, và các dòng dsPIC
PIC cũng như các loại vi điều khiển cao cấp khác, PIC được xây dựng theo
kiến trúc HardVard, bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt
nhau Do đó CPU có thể cùng truy xuất đồng thời bộ nhớ chương trình và
bộ nhớ dữ liệu Khác với những loại chip được xây dựng theo mô hình
Voneuman cổ điển, kiến trúc của mô hình Vonneuman là bộ nhớ chương trình
và bộ nhớ dữ liệu cùng chung một khối, điều này gây bất lợi trong quá
trình xử lý của CPU
Mô hình kiến trúc Hard Vard
• Bộ chuyển ADC có 8 kênh, 10bit
Khái quát về các chân vi điều khiển:
PROGRAM
Trang 9Các thông số của loadcell:
Compensated Tmep Range -10ºC ~ 40ºC
Thermal Zero shift < 0.028 % R.0 /10ºC Thermal Sense shift < 0.015 % R.0./10ºC
Trang 10CHƯƠNG III TÌM HIỂU VỀ VISUAL BASIC
TỔNG QUAN VỀ VISUAL BASIC:
Visual basic là ngôn ngữ lập trình trên windows ra đời sớm nhất, và đã thực sư tạo nên một cuộc cách mạng trong công nghệ phần mềm, cho nên khi phát hành
VB 1.0 vào năm 1991- ông Bill Gates - chủ tịch tập đoàn Microsopft đã gọi VB
là sản phẩm “ đáng nể ” còn các nhân vật nội tiếng khác không tiếc lời khen ngợi công cụ lập trình trực quan này
Nếu đã từng thực sự thích thú khi chuyển từ việc sử dụng hệ điều hành DOS sang Windows thì ta cũng dễ hiểu những lời khen này Trước đây, khi làm việc trong môi trường DOS, không ít người đã cảm thấy thực sự khó khăn với việc phải nhớ những câu lệnh để nhập vào từ dấu nhắc DOS Windows đã giải quyết khó khăn này cho người dùng bằng cách sử dụng một giao diện đồ họa với những nút lệnh, hợp thoại chuẩn, các menu để chọn lựa Tuy nhiên trước khi VB
MS-ra đời thì để tạo được ứng dụng trong Windows, các lập trình viên phải tốn rất nhiều thời gian, công sức để tạo ra được giao diện cho chương trình Chỉ có việc tạo ra một nút lệnh đã phải dùng đến hàng trăm dòng mã
Với VB, công việc tạo giao diện đã trở nên dễ dàng hơn Chỉ có một vài thao tác click – Drap đơn giản , ta có thể bổ sung vào cửa sổ còn trống các lệnh đơn các hộp văn bản, các nút lệnh tùy chọn Sauk hi tạo giao diện xong thì công việc của ta
là chỉ viết mã lệnh này ( gọi là các điều khiển: control ) Như vậy với Vb có thể nói việc tạo giao diện ứng dụng đã được nó đảm nhận
VB cho phép ừng dụng tạo lien kết với các ứng dụng Windows khác dễ dàng, cho phép dễ dàng tạo ra các ứng dụng thiên về quản lý dữ liệu và mạng
VB
Do sự phát triển ngày càng tăng của các ứng dụng truyền thông thông qua cổng nối tiếp ngày càng tăng, từ phiên bản VB 4.0, điều khiển truyền thông đã được hoàn chỉnh để sử dụng cho việc lập trình ghép nối máy tính qua cổng nối tiếp Trong phần này ta sẽ tìm hiểu về điều khiển này
Bình thường khi chạy trên phần mềm VB ta chỉ thấy một số thành phần quen thuộc trên hộp công cụ Nhưng Vb cho phép nhiều thành phần có thể bổ sung thêm vào Điều khiển truyền thông Mscomm của VB là một số các đối tượng được bổ xung để tham gia vào một số việc truyền nhận dữ liệu qua cổng nối tiếp
Trang 11Trong Vb 5.0 và 6.0 ta có thể bổ xung thành phần Mscomm ở trên như sau: chọn project => component (ctrl_t), cửa sổ sau sẽ xuất hiện:
Đánh dấu chọn thành phần Microsoft Comm Control 6.0 như hình sau đó nhấn OK Khi đó thành phần Mscomm sẽ xuất hiện trong hộp công cụ như hình trên
năng để trao đổi thông tin:
sự kiện là phương pháp tốt nhất đượcsử dụng trong quá trình trao đổi thôn tin nối tiếp khi nó giải phóng máy tính để làm các công việc khác Trong nhiều tình huống, ta cần được thông báo về sự thay đổi Thí cụ như ta cần biết có ký tự gửi đến hoặc sự thay đổi xảy ra trên đường DCD hoặc dường RTS Để làm điều đó ta sử dụng sự kiện truyền thông OnComm để bẩy và điều khiển các sự kiện Điều khiển truyền thông còn phát hiện và điều khiển các lổi truyền thông
kiện và lỗi bằng cách kiểm tra giá trị của đặc tính ComEvent sau mỗi chu
kỳ của chương trình để xác định xem liệu một sự kiện hoặc lỗi đã xuất hiện Chẳng hạn chương trình tạo vòng lặp để chờ một ký tự cần được nhận Cứ mỗi lần như vậy, ký tự được đọc từ bộ đệm nhận
Trang 12CommPort Đặt và trả lại số cổng truyền thông
Input ( nhập vào) Trả lại và loại bỏ các ký tự khỏi bộ đệm
Output ( xuất ra) Viết một sâu ký tự tới vào bộ đệm truyền
Port Open Mở / dóng một cổng ( tùy thuộc vào thông
số) và đặt thông số cho cổng Setting Đặt và trả lại tham số truyền thông như: tốc
độ truyền theo bit, chẳn lẻ
Thí dụ sau đây chỉ ra cách truyền thông qua cổng nối tiếp có thể dcuo975 tiến hành như thế nào bằng cách sử dụng một Modem
Private Sub from_load()
Trang 13Dim instring As String ( biến để lưu giữ chuỗi nhập vào )
Mscomm1.ComPort = 1 ( sử dụng Com1)
Mscomm1.setting = "9600,N,8,1"( 9600buad,no parity, 8bitdata, 1bit stop )
Mscomm1.InputLen = 0 ( ra lệnh cocho điều khiển Mscomm đọc hết bộ đệm nhận khi dùng lệnh Input)
Mscomm1.PortOpen = True ( mở cổng )
Mscomm1.OutPut='ATVQ0"&Chr$(13)’ để chắc rằng MoDEM trả lời “Ok”
Do
Do Events
Buffer$=Buffer$ & Mscomm1.Input
Loop Until InStr(Buffer$, “Ok” & vbCRLF)
MSComm1.PortOpen=False
End sub
Sau đây ta sẽ tìm hiểu một số đặc tính quan trọng của điều khiển truyền thông
I Setting property:
Đặc tính setting đặt và trả lại các thông số truyền thông cho cổng RS- 232, như tốc
độ baud, tính chẳn lẻ, số bit dữ liệu và số bit dừng
Cú pháp của câu lệnh là:
[form.]Mscomm1.setting[=Paramsting$]
Nếu Paramsting$ không hợp lệ ( valid) thì khi mở cổng, điều khiển truyền thông
sẽ phát sinh lỗi 280 ( lỗi giá trị không hợp lệ)
Paramsting$ là một chuỗi chứa 4 thông số thiết lập cho cổng truyền thông RS-232
và có dạng như sau:
“BBBB , P, D, S”
Ở đây BBBB xác định tốc độ baud, P là bit chỉ tính chẳn lẽ, D là số bit dữ liệu, S
là số bit dùng ( Stop bit ) Giá mặc định của Paramsting$ là “ 9600,N,8,1”
Bảng sau đây liệt kê các giá trị baud hợp lệ:
Trang 14Kiểu dữ liệu Mscomm1.Setting là: Sring
II CommPort Property:
Đặt tính này đặt và trả lại số cổng truyền thông Cú pháp của câu lệnh là:
[form.]Mscomm.CommPort[=portnumber%]
Trong khi thiết kế ( design time) ta có thể đặt portnumber% bằng một giá trị nằm trong khoảng từ 1 đến 16 ( giá tri mặc định là 1)
Trước khi dùng lệnh PortOpen phải thiết lập cổng bằng CommPort Nếu ta dùng đặc tính PortOpen trước khi thiết lập cổng bằng CommPort thì điều khiển truyền thông sinh ra lổi ( cổng không tồn tại)
Kiểu dữ liệu: Integer
III PortOpen property:
Đặc tính PortOpen đặt và trả lại trạng thái của cổng truyền thông ( đóng hoặc
mở ) Đặc tính này không có trong thời gian thiết lập chương trình Cú pháp càu câu lệnh là:
Kiểu dữ liệu: Kiểu logic ( Boolean)
IV Đặc tính phục vụ việc nhập dữ liệu ( Input, InBufferCount và InBufferSize):
Input trả lại và xóa bỏ một chuỗi ký tự từ bộ đệm nhận Đặc tính này không
sẵn có trong thiết kế và là chỉ đọc ( Read-only) khi chạy chương trình Cú pháp của câu lệnh là:
[form.]Mscomm.Input
Đặc tính InputLen qui định số ký tự được đọc bởi câu lệnh Input Để xác định
số các ký tự trong bộ đệm, đặc tính InBufferCount được kiểm tra Đặt InputLen là 0 để đọc toàn bộ bộ đệm nhận
Trang 15Đặc tính InputMode quyết định kiểu dữ liệu thu về qua đặc tính Input Nếu đặc tính này được set là CommInputModeText thì đặc tính Input sẽ trả về dữ liệu keiu63 Text vào một biến Variant Nếu input mode là CommInputModeBinary thì Input sẽ trả về dữ liệu nhị phân trong một mảng các byte vào một biến Variant
Thí dụ sau chỉ ra cách đọc dữ liệu từ bộ đệm nhận
Mscomm1.InputLen=0 ‘đọc toàn bộ nội dung của bộ đệm nhận’
If Mscomm1.InBufferCount then
‘đọc dữ liệu InString$=Mscomm1.Input
Kiểu dữ liệu của đặc tính này: Integer
Trả lại số ký tự trong bộ đệm nhận Nó cũng có thể được dùng để xóa
bộ đểm bằng cách đặt số của các ký tự bằng 0 Đặc tính này không có trong thời gian thiết kế chương trình Cú pháp của câu lệnh như sau:
[form.]Mscomm.InBufferCount[=count%]
Ta có thể xáo bộ đệm nhận bằng cách đặt đặc tính InBufferCount=0
Kiểu dữ liệu của đặc tính này: Integer
OutBufferCount và OuytBufferSize)
Đặc tính Output sẽ viết một chuỗi ký tự vào bộ đệm truyền, đặc tính này
không có trong thời gian thiết kế chương trình Cú pháp câu lệnh là:
Kiểu dữ liệu của dạng này là: Variant
Trang 16Đặc tính này đặt và trả lại kích thước của các ký tự trong bộ đệm truyền
Cú pháp của câu lệnh là:
[form.]Mscomm.OutputBuffersize[=number%]
Giá trị mặc định của đặc tính này là 512 bytes Chú ý:
OutBufferCount và OutBufferSize với nhau Đặc tính OutBufferSize qui định tổng kích thước của bộ đệm truyền
quá lớn Tuy nhiên nếu để quá nhỏ sẽ xảy ra hiện tượng tràn dữ liệu (trừ khi làm việc ở chế độ bắt tay) Thông thường nên bắt đầu kích thước bộ đệm truyền 512 bytes.Nếu lỗi tràn xảy ra phải tăng kích thước bộ đệm cho thích hợp với ứng dụng hiện tại
Kiểu dữ liệu của đặc tính này là: Integer
Đặc tính này trả lại số ký tự trong bộ đệm truyền Nhờ đặc tính này, ta có thể xáo nội dung bộ truyền bằng cách đặt giá trị của OutBufferCount=0 Cú pháp của câu lệnh này:
[form.]Mscomm.OutBufferCount[=value%]
Kiểu dữ liệu của đặc tình này là: Integer
Trang 17CHƯƠNG IV GIỚI THIỆU VỀ ENCODER VÀ ĐỘNG CƠ
Encoder- bộ mã hóa vòng quay:
Mỗi bộ encoder bao gồm 1 đãi tròn với các vạch kẻ mẫu ở trên đó Dĩa có trục quay được gắn với trục quay của động cơ Khi dĩa quay, các vạch mẫu quay theo và đầu cảm biến đọc sự thay dổi này Cách ghi mã trên dĩa phụ thuộc vào các vạch mẫu trên đó Có 3 loại encoder chính: Encoder tiếp xúc, Encoder từ trường và Encoder quang Encoder quang là loại encoder thông dụng và có độ chính xác cao Một encoder quang bao gồm có 4 phần chính: nguồn quang, dĩa mã, cả biến quang và mạch xử lý tín hiệu Dĩa mã được truyền động bởi trục quay Dĩa mã có khắc vạch phản xạ hoặc khoét rãnh Encoder quang có hai loại chính:
Incremental: thường gồm 2 xung A,B và 1 xung Z
Absolute: mã nhị phân hoặc mã quá 2
Encoderincremental: tạo ra xung từ một hay nhiều track tập trung trên
dĩa mã Xung được tạo ra khi mà tia sáng xuyên qua lỗ trên dĩa mã Do Encoder tương đối có ba track thì sẽ có ba nguồn sáng và ba cảm biến quang
Hình trên biểu diễn một encoder quang tăng dần với 3 track Trên track trong chỉ có một lổ; hai track còn lại có một chuỗi các lỗ cách đều nhau tạo thành vòng tròn quanh đĩa mã Các lỗ track giữa lệch so với các lỗ trên track ben6ngoai2 môt khoảng bằng một nửa độ rộng của một lổ Mục đích của độ lệch này là tạo ra thông tin về hướng quay Sơ đồ xung track phát ra khi đĩa quay trên một bộ đếm độ rộng xung clock có hướng Chú ý rằng xung phát từ track ngoài tạo sự nhanh pha hơn so với xung phát ra track bên trong một
Trang 18khoảng bằng bề rộng của xung Nếu hướng quay ngược lại, thì xung clock phát ra từ track trong nhanh pha hơn xung clock track ngoài một khoảng bằng bề rộng xung
Iư là dòng điện trong dây quấn phần cứng
Rư là điện trợ của dây quấn phần cứng
U là điện áp đưa vào
Sức điện động của động cơ một chiều:
Fư = nФ
Trong đó: p là số đôi cực là từ chính
N là số thanh dẫn tác dụng của cuộn dây quấn phần cứng
A là số đội cực nhánh song song của cuộn dây
n là tốc độ quay ( vòng/ phút )
Ф là từ thông kích từ dưới một cực từ ( wb)
Moment điện từ của điện từ của động cơ: