BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH KHÓA LUẬN TỐT NGHIỆP ỨNG DỤNG PIC VỚI THUẬT TOÁN ĐIỀU KHIỂN PIV TRÊN MÔ HÌNH TRỤC ĐỊNH VỊ Họ và tên sinh viên:PHAN
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH
KHÓA LUẬN TỐT NGHIỆP
ỨNG DỤNG PIC VỚI THUẬT TOÁN ĐIỀU KHIỂN PIV TRÊN MÔ HÌNH TRỤC ĐỊNH VỊ
Họ và tên sinh viên:PHAN MINH THỨC Ngành:ĐIỀU KHIỂN TỰ ĐỘNG
Niên khóa:2005-2009
Tháng 8/2009
Trang 2ỨNG DỤNG PIC VỚI THUẬT TOÁN ĐIỀU KHIỂN PIV TRÊN MÔ HÌNH TRỤC ĐỊNH VỊ
Tác giả
PHAN MINH THỨC
Khóa luận được đệ trình để đáp ứng yêu cầu
cấp bằng Kỹ sư ngành Điều khiển tự động
Giáo viên hướng dẫn:
KS.NGUYỄN VĂN BÌNH
Tháng 8 năm 2009
Trang 3CẢM TẠ
¾ Sinh viên thực hiện xin bày tỏ lòng biết ơn đến KS.Nguyễn Văn Bình, trên cương
vị là người hướng dẫn chính của đề tài đã tận tình hướng dẫn, giúp đỡ trong suốt quá trình thực hiện luận văn
¾ Sinh viên thực hiện xin bày tỏ lòng biết ơn đến các thầy cô trong trường đại học Nông Lâm Thành Phố Hồ Chí Minh, đặc biệt là quý thầy cô trong bộ môn Điều Khiển Tự Động đã tận tình dạy dỗ và truyền thụ những kinh nghiệm quý báu trong suốt thời gian qua
¾ Đồng thời sinh viên thực hiện gửi lời cảm ơn chân thành đến gia đình và người thân đã chăm lo và tạo điều kiện thuận lợi để hoàn thành khóa học
¾ Cuối cùng xin gửi lời cảm ơn đến những người bạn đã đồng hành, động viên, cổ vũ
và góp ý kiến trong suốt quá trình học tập cũng như quá trình làm luận văn
Sinh viên thực hiện Phan Minh Thức
Trang 4TÓM TẮT
Đề tài nghiên cứu “Ứng dụng PIC với thuật toán điều khiển PIV trên mô hình trục định vị” được tiến hành tại viện nghiên cứu điện tử, công nghệ thông tin và điều khiển tự động VIELENA, thời gian từ đầu tháng 6 đến cuối tháng 7 năm 2009 Mục tiêu chính của đề tài : nghiên cứu về PIC18F4431 và dùng thuật toán điều khiển PIV
để điều khiển mô hình trục định vị Cụ thể :
1 Tìm hiểu về vi điều khiển PIC18F4431
• Các đặc điểm, đặc tính
• Sơ đồ chân và chức năng các chân
• Các port xuất nhập và thanh ghi dẫn hướng
• Các bộ timer
• Bộ chuyển đổi A/D
• Hoạt động ngắt
• Cách sử dụng PWM
• Chương trình biên dịch và nạp cho PIC
2 Tìm hiểu về vít me đai ốc bi, động cơ servo DC, encoder
3 Thiết kế mô hình và mạch điều khiển
4 Thuật toán điều khiển PIV : Tìm hiểu cơ bản về thuật toán và công thức tính toán
• Chương trình điều khiển bằng thuật toán PIV chạy tốt
Trang 5MỤC LỤC
Trang
Trang tựa i
Cảm tạ ii
Tóm tắt iii
Mục lục iv
Danh sách các từ viết tắt viii
Danh sách các hình ix
Danh sách các bảng x
CHƯƠNG 1 MỞ ĐẦU 1
CHƯƠNG 2 TỔNG QUAN 3
2.1 Vít me đai ốc bi .3
2.2 Encoder 3
2.3 Động cơ servo 4
2.4 Các linh kiện điện tử 4
2.4.1 IC LM2575 4
2.4.2 Opto 6N136 và 6N137 5
2.4.3 Transitor 2SA1943 và 2SC5200 5
2.4.4 IC DM7433 6
2.4.5 IC 7404 và 7406 .6
2.4.6 IC 7407 6
2.4.7 IC 7401 7
2.4.8 Vi điều khiển 89S52 7
2.5 Vi điều khiển PIC18F4431 7
2.5.1 Giới thiệu 7
2.5.2 Một số đặc tính 8
Trang 62.5.3 Sơ đồ chân và chức năng các chân 8
2.5.4 Các port xuất nhập 14
2.5.5 Bộ định thời 15
2.5.6 Khối chuyển đổi tương tự sang số ADC 17
2.5.7 Hoạt động ngắt 18
2.5.8 Module PWM 19
2.6 Chương trình biên dịch và nạp cho PIC 21
2.6.1 Giao diện chương trình biên dịch CCS 21
2.6.2 Chương trình nạp WinPic800 21
CHƯƠNG 3 : NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 21
3.1 Thời gian và địa điểm nghiên cứu đề tài 24
3.1.1 thời gian tiến hành 24
3.2 Các chỉ tiêu theo dõi 24
3.3 Phương pháp nghiên cứu 24
3.3.1 Thuật toán điều khiển PID 24
3.3.2 Thuật toán điều khiển PIV 27
3.3.3 Phương pháp điều rộng xung PWM 30
CHƯƠNG 4 : KẾT QỦA VÀ THẢO LUẬN 32
4.1 Sơ đồ khối hệ thống 32
4.2 Thiết kế phần cơ khí 32
4.3 Thi công mạch điều khiển 33
4.3.1 Mạch xử lý trung tâm 35
4.3.2 Mạch nguồn 35
4.3.3 Mạch nạp cho VĐK 36
4.3.4 Mạch cầu H điều khiển động cơ 36
4.3.5 Mạch giao tiếp Encoder và công tắc hành trình 37
4.3.6 Mạch hiển thị 38
4.4 Lưu đồ thuật toán 41
4.4 Kết quả khảo nghiệm 41
Trang 7CHƯƠNG 5 : KẾT LUẬN VÀ ĐỀ NGHỊ 44 5.1 Kết luận 44 5.2 Đề nghị 44 TÀI LIỆU THAM KHẢO
PHỤ LỤC
\
Trang 8PIC (Programmable Interface Controller)
PID (Proportional Integral Derivative controller)
PIV (Proportional position loop Integral and proportional Velocity loop)
Trang 9DANH SÁCH CÁC HÌNH
Hình 2.1 : Vít me đai ốc bi .3
Hình 2.2 : Cấu tạo của incremental encoder .3
Hình 2.3: Động cơ servo DC 4
Hình 2.4 : IC ổn áp LM2575 5
Hình 2.5 : Opto 6N136 5
Hình 2.6 : Transitor 2SA1943 và 2SC5200 5
Hình 2.7 : Cổng NOR 7433 6
Hình 2.8 : Cổng NOT 7404 và 7406 6
Hình 2.9 : Cổng đệm 7407 6
Hình 2.10 : Cổng NAND 7401 7
Hình 2.11 : VĐK 89S52 7
Hình 2.12 : VĐK 18F4431 9
Hình 2.13 : Giao diện phần mềm CCS 22
Hình 2.14 : Giao diện phần mềm WinPic800 23
Hình 3.1 : Sơ đồ khối thuật toán điều khiển PID 25
Hình 3.2 : Ngõ ra vân tốc động cơ 28
Hình 3.3 : Sơ đồ khối của thuật toán điều khiển PIV 29
Hình 3.4 : Phương pháp điều rộng xung PWM 30
Hình 4.1 : Sơ đồ khối của hệ thống 32
Hình 4.2 : Mô hình cơ khí mặt trước 33
Hình 4.3 : Mô hình cơ khí mặt sau 34
Hình 4.4 : Sơ đồ khối mạch điều khiển 34
Hình 4.5 : Mạch điều khiển 34
Hình 4.6 : Mạch xử lý trung tâm 35
Trang 10Hình 4.7 : Mạch nguồn 35
Hình 4.8 : Mạch nạp cho PIC 36
Hình 4.9 : Mạch xuất xung PWM từ PIC 36
Hình 4.10 : Mạch cầu H 37
Hình 4.11 : Mạch giao tiếp giữa PIC với Encoder và công tắc hành trình 38
Hình 4.12 : Mạch led hiển thị 39
Hình 4.13 : Mạch nguyên lý led hiển thị 40
Hình 4.14 : Lưu đồ thuật toán 42
Hình 4.15 : Khối xuất xung trong lưu đồ thuật toán 43
Hình 4.16 : Khối bảo vệ trong lưu đồ thuật toán 44
Trang 11DANH SÁCH CÁC BẢNG
Bảng 2.1 : Chế độ CCP và nguồn timer tương ứng 19 Bảng 2.2 : So sánh các giá trị PWM 20 Bảng 4.1: Bảng khảo nghiệm 44
Trang 12
Chương 1
MỞ ĐẦU
Ngày nay các bộ VĐK đang có ứng dụng ngày càng rộng rãi trong các lĩnh vực kỹ thuật và đời sống xã hội, đặc biệt là trong kỹ thuật tự động hoá và điều khiển từ xa Cùng với sự phát triển nhanh chóng của khoa học kỹ thuật, việc chế tạo vi mạch tích hợp thay đổi từng ngày từng giờ đáp ứng yêu cầu sản xuất công nghiệp về tính chuyên dụng hoá, tối ưu (thời gian, không gian, giá thành), bảo mật, tính chủ động trong công việc ngày càng đòi hỏi khắt khe Việc đưa ra công nghệ mới trong lĩnh vực chế tạo mạch điện tử để đáp ứng những yêu cầu trên là hoàn toàn cấp thiết mang tính thực tế cao
Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051, Motorola 68HC, AVR, ARM, Ngoài họ 8051 được hướng dẫn một cách căn bản ở môi trường đại học, ở đây em chọn họ VĐK PIC để mở rộng vốn kiến thức và phát triển các ứng dụng trên công
cụ này vì các nguyên nhân sau :
• Họ VĐK này có thể tìm mua dễ dàng tại thị trường Việt Nam Giá thành không qúa đắt Có đầy đủ các tính năng của một VĐK khi hoạt động độc lập
• Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ VĐK mang tính truyền thống: họ vi điều khiển 8051
Số lượng người sử dụng họ VĐK PIC hiện nay tại Việt Nam cũng như trên thế giới khá rộng rãi Điều này tạo nhiều thuận lợi trong qúa trình tìm hiểu và phát triển các ứng dụng như: về số lượng tài liệu, số lượng các ứng dụng mở đã được phát triển thành công,dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn,…
Đồng thời cùng với sự phát triển của nền công nghiệp thì việc xác định vị trí một cách chính xác là một vấn đề cấp thiết ,đặc biệt là trong lĩnh vực Robot, máy công cụ, in ấn…nên việc đưa ra một mô hình điều khiển chính xác vị trí là cần thiết và đúng đắn
Trang 13Chính vì thế em đã thực hiện đề tài : “Ứng dụng PIC với thuật toán điều khiển PIV trên mô hình trục định vị” Ở đây em xin giới thiệu về PIC18F4431 Tại sao lại chọn PIC18F4431? điều này khá đơn giản Thực ra khi bắt đầu học PIC thì bạn có thể chọn bất
cứ con PIC nào để tìm hiểu, bởi hầu hết các dạng PIC đều có cấu trúc phần cứng về cơ bản là giống nhau, và tùy từng dạng PIC mà sẽ có những tính năng nâng cao khác, chính điều đó giúp ta làm việc được với nhiều loại PIC một cách nhanh chóng Với PIC18F4431
có đầy đủ các tính năng cần thiết
Trang 14Chương 2
TỔNG QUAN
Định vị là một hệ thống đã được ứng dụng phổ biến trong đời sống và có nhiều cách để định vị, chẳng hạn như : động cơ tuyến tính, động cơ chuyên biệt, đai, xích … Nhưng trong giới hạn đề tài này là xét đến hệ thống định vị dùng vít me đai ốc vì đơn giản,dễ điều khiển, giá thành không đắt hơn các loại khác
2.2 Vít me đai ốc bi
Hình 2.1 : Vít me đai ốc bi
Dùng để truyền chuyển động cho cơ cấu trượt dọc theo trục vít me, trong giới hạn
đề tài này thì cơ cấu đó là kim hiển thị Do chuyển động đòi hỏi độ chính xác nên ta sử dụng vít me bi vì lực ma sát nhỏ
2.3 Encoder
Hình 2.2 : Cấu tạo của incremental encoder
Trang 15Mục đích của ta là đếm số vòng quay của trục động cơ đưa về VĐK nên ta sử dụng incremental encoder, đồng thời sử dụng encoder để xác định chiều và xác định điểm 0 nên
sử dụng loại encoder có 3 vòng lỗ Encoder sẽ tăng 1 đơn vị khi một lần lên xuống của cạnh xung
2.3 Động cơ servo DC
Hình 2.3: Động cơ servo DC
Động cơ servo là loại động cơ thường được sử dụng trong các hệ thống hồi tiếp vòng kín Có cấu tạo Stato là nam châm vĩnh cửu, Roto là cuộn dây, có thể ứng dụng để điều khiển Robot, di chuyển các tay máy lên xuống…Nói chung là các ứng dụng đòi hỏi ổn định vận tốc hay ổn định vị trí Một số đặc điểm của động cơ servo :
Trang 172SC5200 là một loại transitor NPN, còn 2SA1943 là transitor loại PNP, nguyên tắc hoạt động giống như các transitor thông thường nhưng có một số đặc điểm riêng :
• 2SC5200 : điện áp tối đa VCB= 230V, VCE = 230V, VEB = 5V, dòng tối đa IC = 15A, IB = 1.5A, chịu được nhiệt độ từ -55 C đến 150 C B
Gồm 4 cổng NOR tích hợp lại, hoạt động với điện áp từ 4,25V đến 5,25V
Có thể hoạt động trong điều kiện nhiệt độ từ 00C đến 700C
2.4.5 IC 7404 và 7406
Hình 2.8 : Cổng NOT 7404 và 7406
Gồm 6 cổng NOT tích hợp
2.4.6 IC 7407
Trang 19PIC là chữ viết tắt của “Programable Intelligent Computer”, có thể tạm dịch
là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho VĐK đầu tiên của họ là PIC1650, được thiết kế để làm các thiết bị ngoại vi cho CPU CP1600 VĐK này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng VĐK PIC ngày nay
• Các module capture/compare/PWM : số lượng 2
• Giao tiếp nối tiếp :SSP,USART
• Module chuyển đổi A/D 10 bit : 9 kênh ngõ vào
• Reset (và delay ) : POR,BOR, reset lệnh, PWRT, OST, MCLR, WDT
• Bộ lệnh : 75
• Số chân : 40 chân PDIP, 44 chân TQFP, 44 chân QFN
2.5.3 Sơ đồ chân và chức năng các chân
Trang 20o RA7 : Chân vào ra
• Chân OSC2/CLKO/RA6 (14) : ngõ ra dao động thạch anh hoặc ngõ ra cấp xung clock
o OSC2 : ngõ ra dao động thạch anh kết nối đến thạch anh hoặc bộ cộng hưởng
o CLK0 : ở chế độ RC, ngõ ra của OSC2, bằng ¼ tần số của OSC1 và chính
là tốc độ của chu kì lệnh
o RA6 : Chân vào ra
• Chân /Vpp/RE3 (1) :
o : là ngõ vào reset tích cực mức thấp
Trang 21o Vpp : khi lập trình cho PIC thì đóng vai trò là ngõ nhận điện áp lập trình
o RE3 : ngõ vào số, được dùng khi MCLR bị cấm
• Chân RA0 /AN0 (2) :
o AN2 : ngõ vào tương tự của kênh thứ 2
o VREF- : ngõ vào điện áp chuẩn (thấp) của bộ A/D
o CAP1 : chân ngõ vào capture 1
o INDX :ngõ vào xung Z của Encoder
• Chân RA3/AN3/VREF+/CAP2/QEA (5) :
o RA3 : xuất/nhập số
o AN3 : ngõ vào tương tự của kênh thứ 3
o VREF+ : ngõ vào điện áp chuẩn (cao) của bộ A/D
o CAP2 : chân vào capture 2
o QEA : chân ngõ vào xung A của Encoder
• Chân RA4/AN4/CAP3/QEB (6) :
o RA4 : xuất/nhập số
o AN4 : ngõ vào tương tự của kênh thứ 4
o CAP3 : chân vào capture 3
o QEB : chân ngõ vào xung B của Encoder
• Chân RA5/AN5/LVDIN(7) :
o RA5 : xuất/nhập số
o AN5 : ngõ vào tương tự của kênh thứ 5
o LVDIN : ngõ vào phát hiện điện áp thấp
Trang 22o KBI2 : chân thay đổi ngắt
o PGC : mạch gỡ rối và xung clock lập trình ICSP
• Chân RB7/KIB3/PGD(40) :
o RB7 : xuất nhập số
o KBI3 : chân thay đổi ngắt
Trang 23o PGD : mạch gỡ rối và dữ liệu lập trình ICSP
• Chân RC0/T1OSO/T1CKI(15) :
o RCO : xuất/nhập số
o T1OSO : ngõ ra bộ dao động timer1
o T1CKI : ngõ vào xung clock bên ngoài timer1
• Chân RC1/T1OSI/CCP2/FLTA(16) :
o RC1 : xuất/ nhập số
o T1OSI : ngõ vào bộ dao động timer1
o CCP2 : ngõ vào capture 2, ngõ ra compare 2, ngõ ra PWM2
o FLTA : ngõ vào chân ngắt đứt quãng
• Chân RC2/CCP1/FLTB(17) :
o RC2 : xuất /nhập số
o CCP1 : ngõ vào capture 1, ngõ ra compare 1, ngõ ra PWM1
o FLTB : ngõ vào chân ngắt đứt quãng
• Chân RC3/T0CKI/T5CKI/INT0 (18) :
o RC3 : xuất/ nhập số
o TOCKI : ngõ vào xung clock bên ngoài cho timer0
o T5CKI : ngõ vào xung clock bên ngoài cho timer5
o INT0 : ngõ vào nhận tính hiệu ngắt ngoài 0
• Chân RC4/INT1/SDI/SDA (23) :
o RC4 : xuất/ nhập số
o INT1 : ngõ vào nhận tính hiệu ngắt ngoài 1
o SDI : dữ liệu vào SPI
o SDA : xuất nhập dữ liệu I2C
• Chân RC5/INT2/SCK/SCL(24) :
o RC5 : xuất/ nhập số
o INT2 : ngõ vào nhận tính hiệu ngắt ngoài 2
o SCK : ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra của chế độ SPI
o SCL : ngõ vào xung clock nối tiếp đồng bộ/ngõ ra chế độ I2C
Trang 24o TOCKI : ngõ vào xung clock bên ngoài cho timer0
o T5CKI : ngõ vào xung clock bên ngoài cho timer5
o SDI : dữ liệu vào SPI
o SDO : dữ liệu ra SPI
• Chân RD3 /SCK/SCL (22) :
o RD3 : xuất/ nhập số
o SCK : ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra của chế độ SPI
o SCL : ngõ vào xung clock nối tiếp đồng bộ/ngõ ra chế độ I2C
• Chân RD4/FLTA (27) :
o RD3 : xuất/ nhập số
o FLTA : ngõ vào chân ngắt đứt quãng
Trang 25o AN8 : ngõ vào tương tự kênh thứ 8
• Chân Vdd (11,32) và Vss (12,31): là các chân nguồn của PIC
2.5.4 Các port xuất nhập
a) PORTA và thanh ghi TRISA
• PORTA là port hai chiều chỉ có 6 bit, thanh ghi định hướng dữ liệu tương ứng là TRISA Khi bit TRISA bằng 1 thì PORTA là port nhập và khi bit TRISA bằng 0 thì PORTA là port xuất dữ liệu
• Hoạt động của mỗi chân được lựa chọn bằng cách xóa/lập các bit điều khiển cho phù hợp trong thanh ghi ANSEL0 và ANSEL1
b) PORTB và thanh ghi TRISB
Trang 26• PORTB là port hai chiều 8 bit Thanh ghi định hướng là TRISB Khi bit TRISB = 1 thì PORTB là port nhập, khi TRISB = 0 thì PORTB là port xuất
• Mỗi chân của PORTB có điện trở kéo lên Bit điều khiển RBPU
(OPTION_REG<7>) = 0 thì có thể mở tất cả các điện trở kéo lên Khi PORTB đuợc thiết lập là các ngõ ra thì sẽ tự động tắt chức năng điện trở kéo lên cũng tương tự khi CPU bị reset lúc mới cấp điện
c) PORTC và thanh ghi TRISC
PORTC là port hai chiều 8 bit Thanh ghi định hướng là TRISC Khi bit TRISC =1 thì PORTC là port nhập, khi bit TRISC =0 thì PORTC là port xuất d) PORTD và thanh ghi TRISD
PORTD là port hai chiều 8 bit Thanh ghi định hướng là TRISD Khi bit TRISD =1 thì PORTD là port nhập, khi bit TRISD =0 thì PORTD là port xuất e) PortE và thanh ghi TRISE
PORTE là port hai chiều 3 bit Thanh ghi định hướng là TRISE Khi bit TRISE =1 thì PORTE là port nhập, khi bit TRISE =0 thì PORTE là port xuất 2.5.5 Bộ định thời
a) Bộ định thời timer0
Bộ timer/counter của modul timer0 có những đặc điểm sau:
• Là timer/counter 8 bit hoặc 16 bit được lựa chọn bằng phần mềm
• Có thể đọc và ghi
• Có BCT 8 bit có thể lập trình bằng phần mềm
• Cho phép lựa chọn nguồn xung clock bên trong hoặc bên ngoài
• Phát sinh ngắt khi bị tràn từ FFh đến 00h đối với timer/counter 8 bit
và từ FFFFh đến 0000h đối với timer/counter 16 bit
• Cho phép lựa chọn tác động cạnh cho xung clock bên ngoài
Hoạt động của timer0:
Trang 27• Chế độ định thời được chọn bởi việc xóa bit TOSC Trong chế độ định thời thì timer0 sẽ tăng giá trị sau mỗi chu kì lệnh ( không có bộ chia) Nếu thanh ghi TMR0 bị ghi giá trị mới thì quá trình tăng sẽ bị cấm trong 2 chu kì theo sau Người sử dụng có thể làm tròn giá trị này bằng cách ghi giá trị có điều chỉnh vào thanh ghi TMR0
• Nếu bit TOSC bằng 1 thì chọn chế độ đếm counter Trong bộ đếm counter thì timer0 sẽ tăng giá trị đếm mỗi khi có xung tác động cạnh lên hoặc cạnh xuống ở chân RC3/TOCKI Cạnh tác động của xung được lựa chọn bởi bit TOSE TOSE=0 chọn cạnh lên, ngược lại thì chọn cạnh xuống
b) Bộ định thời timer1
Đặc điểm :
• Là bộ timer/counter 16 bit gồm 2 thanh ghi 8 bit (TMRH và TMRL )
• Có thể đọc và ghi
• Cho phép lựa chọn nguồn xung clock từ bên trong hoặc bên ngoài
• Phát sinh ngắt khi xảy ra tràn từ FFFFh đến 0000h
• Ngõ vào reset có thể được tạo bởi khối CCP
Hoạt động của timer1 ở chế độ định thời : Nếu bit TMR1CS (T1CON<1>)=0 thì timer1 làm việc ở chế độ định thời và tần số xung đồng hồ đưa đến bộ đếm bằng fosc/4
c) Bộ định thời timer2
• Timer2 là timer 8 bit, có BCT và có potscaler Timer2 có thể sử dụng như bộ tạo xung có PWM cho chế độ hoạt động PWM của khối CCP Thanh ghi TMR2 có thể đọc và ghi và có thể xóa khi bị reset
• Ngõ vào xung clock (fosc/4) có tùy chọn hệ số cho trước là 1:1, 1:4, 1:6
• Được lựa chọn bằng các bit điều khiển T2CKPS1 và T2CKPS0
Trang 28(T2CON<1:0>)
• Timer2 có một thanh ghi có chu kì 8 bit PR2 Timer2 tăng giá trị từ 00h cho đến khi bằng PR2 và sau đó reset về 00h ở chu kì kế tiếp PR2 là thanh ghi có thể đọc và ghi Khi hệ thống bị reset thì thanh ghi PR2 được khởi tạo giá trị FFh
• Ngõ ra của TMR2 đi qua postcaler 4 bit để tạo ra yêu cầu ngắt TMR2 được chốt trong bit cờ TMR2IF (PIR1<1>) Có thể tắt TMR2 bằng cách xóa bit điều khiển TMR2ON(T2CON<2>) để giảm công suất tiêu thụ 2.5.6 Khối chuyển đổi tương tự sang số ADC
a) Đặc điểm :
• Module này cho phép chuyển đổi 1 tín hiệu tương tự sang 1 số 10 bit tương ứng PIC18F4431 có đến 9 kênh ngõ vào
• Module A/D bao gồm những đặc điểm sau :
o Tối đa 200K mẫu mỗi giây
o Hai mẫu và giữ các ngõ vào cho việc lấy mẫu đồng thời trên kênh đôi
o Cho phép chọn chế độ lấy mẫu đồng thời hoặc tuần tự
o Bộ đệm dữ liệu 4 word cho kết quả bộ chuyển đổi A/D
o Cho phép chọn hoạt động định thời thu nhận dữ liệu
o Cho phép chọn bộ khởi động sự kiện A/D
o Hoạt động ở chế độ chờ bằng việc sử dụng bộ dao động nội
• Những đặc điểm này làm cho chúng có nhiều ứng dụng bao gồm điều khiển động cơ, giao tiếp với sensor, tiếp nhận dữ liệu và điều khiển quá trình Trong nhiều trường hợp, những đặc điểm này sẽ làm giảm các phần mềm ban đầu liên kết với module A/D chuẩn
b) Khởi động chuyển đổi A/D :
• PIC18F4431 có khả năng chuyển đổi sự khởi động từ nhiều nguồn khác nhau Phương pháp chung là sử dụng bởi tất cả VĐK khác của sự điều chỉnh bit GO/DONE Các nguồn khởi động khác là:
Trang 29o Chân RC3/INT0
o Tràn Timer
o Ngõ vào Capture (IC1)
o CCP Compare Match
o Cạnh lên của bộ điều khiển nguồn PWM
• Các bộ khởi động này được chọn bằng việc sử dụng bit SSRC<4:0>
(ADCON3 <4:0>) Vài sự kết hợp của 5 nguồn có thể chuyển đổi bởi việc điều chỉnh dễ dàng với bit tương ứng trong ADCON3 Khi bộ khởi động xuất hiện, bit GO/DONE được set một cách tự động bởi phần mềm và sau đó được xóa một lần khi chuyển đổi kết thúc
c) Thanh ghi kết quả :
• Cặp thanh ghi ADRESH và ADRESL chỉ ra vị trí kết quả 10 bit được tải thành công của sự chuyển đổi A/D
• Cặp thanh ghi này có độ rộng 16 bit Module A/D cho chúng ta sự linh hoạt trong việc canh lề trái hoặc phải kết quả chuyển đổi trong thanh ghi kết quả 16 bit
2.5.7 Hoạt động ngắt
a) Giới thiệu về ngắt :
• PIC18F4431 có 35 nguồn ngắt và tính năng ngắt ưu tiên, mỗi nguồn ngắt thì được gán cho một cấp ưu tiên cao hoặc cấp ưu tiên thấp, vector ngắt ưu tiên cao có địa chỉ 000008h, vector ngắt ưu tiên thấp có địa chỉ là 000018h
• Nhìn chung, mỗi nguồn ngắt thì có 3 bit điều khiển hoạt động của nó :
o Bit cờ thông báo có ngắt xảy ra
o Bit ưu tiên lựa chọn ưu tiên thấp hay cao
o Bit cho phép chương trình chạy đến vector ngắt khi bit cờ lên 1
• Khi bit IPEN bị xoá thì tính năng ngắt ưu tiên sẽ vô hiệu hoá
b) Hoạt động ngắt :
• Ngắt TMR0: ở chế độ 8 bit, khi giá trị thanh ghi TMR0 tràn từ
Trang 30FFh sang 00h sẽ set bit cờ TMR0IF, ở chế độ 16 bit khi giá trị thanh ghi TMR0H: TMR0L tràn từ FFFFh sang 0000h sẽ set bit cờ TMR0IF Ngắt này
có thể cho phép/cấm bằng cách set/xóa bit cho phép TMR0IE (INTCON<5>)
• Ngắt PORTB thay đổi : bất kỳ một thay đổi nào trên PORTB<7-4> thì bit
cờ RBIF(INTCON<0>) set lên, ngắt này cho phép hoặc cấm bằng cách
set/xóa bit cho phép ngắt RBIE(INTCON<3>)
• Ngắt ngoài : là ngắt xảy ra trên các chân RC3/INT0, RC4/INT1,
RC5/INT2 kích bằng cạnh lên, cạnh xuống đều được, lựa chọn cạnh ngắt do bit INTEDGx trên thanh ghi INTCON2, kích bằng cạnh lên nếu bit
INTEDGx=1, kích bằng cạnh xuống nếu INTEDGx=0, khi có cạnh tích cực xuất hiện trên chân RC3/INT0 thì bít cờ tương ứng INTxIF set lên Đây là ngắt có thể bị vô hiệu hoá bởi bit cho phép tương ứng bị xoá (INTxIE)
2.5.8 Module PWM
a) Khái quát :
• Module CCP bao gồm 1 thanh ghi 16 bit có tác dụng như 1 thanh ghi 16 bit cho capture hoặc thanh ghi 16 bit cho compare, hoặc như là 1 thanh ghi hoạt động cho PWM Mỗi chức năng đều đòi hỏi 1 bộ đếm để hoạt động
Bảng 2.1 : Chế độ CCP và nguồn timer tương ứng
• Thanh ghi CCPR! Bao gồm 2 thanh ghi 8 bit : CCPR1L (byte thấp) và CCPR1H (byte cao) sẽ điều khiển hoạt động của module CCP1
• Thanh ghi CCPR2 sẽ điều khiển hoạt động của module CCP2
b) Trạng thái PWM :
Trong trạng thái này chân CCPx xuất ra 1 độ phân giải 10 bit.Chu kỳ PWM : Chu kỳ PWM = ( PR2 + 1 )*4*TOSC*(Giá trị bộ chia TMR2)
Trang 31Ta có tần số của PWM được định nghĩa bằng 1/ (chu kỳ PWM) Chu kỳ hoạt động của PWM :
Chu kỳ hoạt động PWM = (CCPR1L:CCP1CON<5:4>)*TOSC*(Giá trị bộ chia TMR2)
Với CCPR1L:CCP1CON<5:4> là 2 bit thấp của giá trị 10 bit PWM
Độ phân giải PWM
Đô phân giải =
)2log(
)log(
Fpwm
Fosc
Thiết lập PWM hoạt động :
• Ghi giá trị vào thanh ghi PR2 để tạo chu kỳ PWM
• Ghi giá trị vào thanh ghi CCPR1L và CCP1CON<5:4> để tạo chu kỳ hoạt động PWM
• Xoá bit TRISC để set chân CCP1 xuất
• Tạo giá trị bộ chia TMR2 và bật chức năng TIMER2 bằng cách set T2CON
Bảng 2.2 : So sánh các giá trị PWM
2.6 Chương trình biên dịch và nạp cho PIC
• Ngôn ngữ lập trình cho PIC rất đa dạng Ngôn ngữ lập trình cấp thấp có MPLAB, các ngôn ngữ lập trình cấp cao hơn bao gồm C, Basic, Pascal,… Ngoài
ra còn có một số ngôn ngữ lập trình được phát triển dành riêng cho PIC như
Trang 32PICBasic, MikroBasic,…Ở đây ta chọn ngôn ngữ C cùng chương trình biên dịch CCS Ngôn ngữ C là một ngôn ngữ đầy sức mạnh giúp ta nhanh chóng trong việc viết chương trình hơn so với Assembly Với trình biên dịch CCS cho phép
ta phối hợp Assembly với C, điều này cho phép chương trình của ta trở nên rất uyển chuyển, kết hợp sức mạnh của cả 2 ngôn ngữ, dù rằng việc phối hợp sẽ làm cho việc viết chương trình trở nên khó khăn hơn
• Sau đây là các bước viết 1 chương trình trong CCS :
o Đầu tiên là các chỉ thị tiền xử lý có nhiệm vụ báo cho CCS cần sử dụng những gì trong chương trình C như dùng vi xử lý gì, có dùng giao tiếp máy tính không, ADC không, DELAY không,…
o Các khai báo biến
o Các hàm con
o Các hàm phục vụ ngắt theo sau bởi 1 chỉ thị tiền xử lý cho biết dùng ngắt nào
o Chương trình chính
2.6.1 Giao diện chương trình biên dịch CCS :
trình
Hình 2.13 : Giao diện phần mềm CCS
Giao diện chính gồm :
o Thanh menu
Trang 33o Thanh toolbar
o Vùng viết chương trình
Muốn tạo 1 Project đầu tiên từ thanh menu ta chon project, sau đó từ thanh toolbar
ta chọn PIC Wizard Muốn biên dịch thì từ thanh menu ta chọn compile, sau đó từ thanh toolbar ta cũng chọn compile
2.6.2 Chương trình nạp WinPic800:
Dạng mã Hex
Hình 2.14 : Giao diện phần mềm WinPic800
Chức năng các công cụ trong thanh toolbar :
o Programmar Todo : Nạp chương trình vào VĐK
o Leer Todo : Đọc chương trình từ VĐK vào
Trang 34Chương 3
NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU
3.1 Thời gian và địa điểm nghiên cứu đề tài
3.1.1 thời gian tiến hành
• Tìm hiểu các đặc điểm, đặc tính của PIC18F4431, ngôn ngữ lập trình rồi chạy mô phổng các chương trình đơn giản và tìm hiểu các linh kiện điện tử cần thiết từ 26/05/2009 đến 17/06/2009 Đồng thời đánh word cho phần này
• Tiến hành làm mô hình trục định vị và mạch điều khiển rồi cho chạy thử từ
18/06/2009 đến 30/06/2009 Đồng thời đánh word cho phần này
• Viết chương trình điều khiển cho cả hệ thống từ 01/07/2009 đến
27/7/2009
• Tổng hợp các bài word, sửa lỗi và hoàn tất luận văn từ 28/06/2009 đến
30/07/2009
3.1.2 Địa điểm tiến hành
Đề tài nghiên cứu được tiến hành từ ngày 26/05/2009 đến 30/07/2009 tại viện nghiên cứu điện tử, công nghệ thông tin và điều khiển tự động VIELENA, địa chỉ 169,đường Võ Văn Ngân, phường Linh Chiểu, Q.Thủ Dức, Tp.Hồ Chí Minh
3.2 Các chỉ tiêu theo dõi
• Động cơ chạy ổn định, Encoder xuất tín hiệu tốt, chính xác
• Mạch điều khiển hoạt động tốt, nguồn chạy ổn định
• Chương trình điều khiển không bị lỗi, đáp ứng được yêu cầu đặt ra
3.3 Phương pháp nghiên cứu
3.3.1 Thuật toán điều khiển PID
Trang 35Hình 3.1 : Sơ đồ khối thuật toán điều khiển PID
a) Giới thiệu :
PID là chữ viết tắt của từ “Proportional Integral Derivative controller” tạm gọi
là bộ điều khiển tỷ lệ-vi-tích phân, là bộ điều khiển cơ bản tín hiệu hồi tiếp được sử dụng rộng rãi trong các hệ thống điều khiển công nghiệp Trong đó bộ điều khiển PID có vai trò hiệu chỉnh độ sai lệch giữa quá trình đo các giá trị cảm biến và giá trị cài đặt mong muốn bằng cách tính toán và xuất ra ngoài chính xác một lệnh có thể điều chỉnh quy trình
phù hợp hơn
Thuật toán của bộ điều khiển PID bao gồm ba thành phần chính : bộ tỷ lệ, bộ tích phân và bộ vi phân.Giá trị của bộ tỷ lệ xác định tỷ lệ với độ sai lệch, giá trị bộ tích phân xác định tỷ lệ tích phân tín hiệu sai lệch và giá trị của bộ vi phân xác định tỷ lệ vận tốc thay đổi lượng vào
b) Các thành phần của bộ điều khiển :
MV(t) = Pout + Iout + Dout
MV: giá trị điều khiển mong muốn đáp ứng
Pout, Iout, Dout : là các giá trị điều khiển từng thành phần của các khâu
tỷ lệ, tích phân và vi phân
¾ Khâu hiệu chỉnh tỷ lệ (P):
• Công thức tổng quát:
Pout = Kpe(t)
Trang 36• Chế độ điều khiển tỉ lệ được dùng ở những quá trình có dung lượng nhỏ
và sự thay đổi phụ tải nhanh Độ khuếch đại cần chọn đủ lớn đến mức có thể
Trang 37• Ở bất cứ thời điểm nào, tín hiệu ra của bộ điều khiển D luôn tỉ lệ với độ dốc, hoặc tốc độ thay đổi của độ sai lệch Trong các bộ điều khiển thực tế, đáp ứng của tác động vi phân đối với những tín hiệu thay đổi nhanh bị giới hạn Điều này làm giảm đáng kể độ nhạy của bộ điều khiển
3.3.2 Thuật toán điều khiển PIV
• PIV là chữ viết tắt của từ “Proportional position loop Integral and
proportional Velocity loop” có thể tạm dịch là vòng lặp vị trí tỷ lệ và vòng lặp vận tốc tỷ lệ tích phân PIV là một vòng lặp điều khiển servo cơ bản nhất, là một thuật toán được sử dụng rộng rãi trong công nghiệp như trong máy công
cụ, đóng gói, in ấn, robot… Trong chế độ điều khiển PIV cho phép dự báo đáp ứng hệ thống tốt hơn PID Bộ điều khiển này cơ bản kết nối một vòng lặp vị trí với vòng lặp vận tốc Nó thực hiện nhiều yêu cầu của vòng lặp servo như tương tác điều khiển thay đổi nhanh hay cung cấp sức cản đối với nhiễu của tải tần số cao
• Hoạt động : vòng lặp vị trí so sánh điều khiển vị trí với tín hiệu vị trí hồi tiếp
về và tính toán sai số vị trí hoặc sai số theo sau đó Sai số vị trí tỷ lệ với hằng số
Kp tạo nên bộ điều khiển vận tốc Cái chính ở đây là nhiều sai số vận tốc tạo nên
bộ điều khiển vận tốc lớn hơn, một bộ điều khiển vận tốc lớn đưa vào vòng lặp vận tốc sẽ tạo ra moment xoắn, khi động cơ quay sẽ làm thỏa mãn sai số vị trí
• Đối tượng điều khiển là vận tốc động cơ DC Ta biết vận tốc động cơ DC phụ thuộc vào dòng điện hay điện áp mà ta cấp cho nó(dĩ nhiên phải nằm trong khoảng cho phép của động cơ) Cụ thể ở đây sử dụng động cơ 24VDC, do đó điện
áp cấp không được quá 24V Tuy nhiên, việc cấp áp cho động cơ trong một
khoảng rộng từ 0 đến 24V là khó khăn Do đó ta điều khiển vận tốc theo xung PWM (Pulse Width Modulation), cụ thể là duty cycle
o Ngõ vào e = vận tốc hiện tại – vận tốc thiết lập
o Ngõ ra: u = %duty cycle
Trang 38• Phụ thuộc giữa %duty cycle và vận tốc động cơ gần như tuyến tính nên để đơn giản, ta giả sử nó hoàn toàn tuyến tính Vậy ta có thể điều khiển vận tốc
động cơ thông qua %duty cycle
Hình 3.2 : Ngõ ra vân tốc động cơ
• Chú thích :
o Đường chấm gạch biểu diễn vận tốc cần thiết (vận tốc thiết lập)
o Đường gạch gạch biểu diễn vận tốc thực tế của động cơ
o Đường gạch đậm là đồ thị rời rạc hóa của vận tốc động cơ
o ∆t là thời gian lấy mẫu
• Thuật toán PIV có nhiều dạng nhưng ở đây ta xét một dạng có sơ đồ khối sau:
Trang 39Hình 3.3 : Sơ đồ khối của thuật toán điều khiển PIV
• Từ sơ đồ khối ta có thể lặp ra công thức tính toán sau :
U(t) = [f bh (e*K) – f bh (K*D SP ) – d PV *Kf]*(Ki/S + 1)*Kv
Trong đó :
o U(t) : Tín hiệu ngõ ra
o fbh : Hàm bão hòa.Được định nghĩa như sau
Với a là hệ số mà ta cài đặt
o e : sai số giữa giá trị dầu vào và đầu ra
o Vậy U(t) = MP*MI*Kv
3.3.3 Phương pháp điều rộng xung PWM
Trang 40Hình 3.4 : Phương pháp điều rộng xung PWM
PWM là chữ viết tắt của từ “ Pulse Width Modulation”, là một phương pháp điều chỉnh tỉ số giữa khoảng thời gian mức cao (Ton) và khoảng thời gian mức thấp(Toff) trong
1 chu kỳ(T) Khi đó ta sẽ có Ton khác nhau trong cùng chu kỳ T Đây là một phương pháp được sử dụng rộng rãi để điều khiển tốc độ động cơ, Ton sẽ là thời gian cấp nguồn cho động cơ, còn Toff sẽ là thời ngừng cấp nguồn cho động cơ
Phương pháp chính :
• Tìm hiểu thật kĩ các đặc điểm, chức năng của PIC18F4431, dựa vào các tài liệu hướng dẫn sử dụng cũng như tài liệu hướng dẫn lập trình để đưa ra phương pháp cụ thể cho từng chức năng của PIC như xuất nhập tín hiệu số, xuất nhập tín
hiệu tương tự, xử lý ADC, cách sử dụng timer/counter…
• Nghiên cứu về ngôn ngữ lập trình, cũng như chương trình biên dịch, chương trình nạp cho PIC để viết chương trình ít bị sai sót
• Dựa trên nền tảng là thuật toán PID để tìm hiểu và áp dụng thuật toán PIV
• Dựa vào các phương tiện có sẵn như :
o PIC18F4431
o Máy tính hỗ trợ cổng LPT
o Phần mềm vẽ, cắt dán, đánh chữ :Orcad, Adobe, Paint, Word