Một hệ thống mờ sẽ bao gồm các qui luật rule, các qui luật này phát biểu về mối quan hệ của đầu vào với tập mờ và hành động kết hợp.. Mức độ thành phần này sẽ dẫn đến giá trị đúng của qu
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Ử
ĐỒ ÁN TỐT NGHIỆP
ĐIỀU KHIỂN CON LẮC NGƯỢC
SỬ DỤNG FUZZY LOGIC
GVHD : TS VÕ HOÀNG DUY SVTH : DƯƠNG VĂN TÝ LỚP : 07DD3N
TP.Hồ Chí Minh, tháng 07/2009
Trang 2LỜI CẢM ƠN
Thực hiện khóa luận tốt nghiệp là một trong những việc khó nhất mà chúng
em phải hoàn thành từ trước đến nay Trong quá trình thực hiện đề tài chúng em đã gặp rất nhiều khó khăn, bỡ ngỡ Nếu không có những sự giúp đỡ động viên chân thành của nhiều người, có lẽ chúng em khó có thể hoàn thành tốt khóa luận này
Đầu tiên em xin gửi lời cảm ơn chân thành đến thầy Võ Hoàng Duy người trực tiếp hướng dẫn em trong khóa luận này
Chúng em cũng gửi lời cảm ơn đến các thầy cô trong khoa tự động trường Đại Học Tôn Đức Thắng đã tạo điều kiện cho em hoàn thành khóa luận này
Trang 3MỤC LỤC
CHƯƠNG 1:LOGIC MỜ VỚI VI ĐIỀU KHIỂN 1
1.1 Mở đầu 1
1.2 Logic mờ là gì? 1
1.3 Cấu trúc của hệ thống mờ 5
1.4 Logic mờ được sử dụng ở đâu 7
1.5 Mờ hóa 8
CHƯƠNG 2: SƠ LƯỢC VỀ VI ĐIỀU KHIỂN PIC18F4431 13
2.1 Tính năng 13
2.1.1 Modun điều khiển PWM 14 bit 13
2.1.2 Modun motion feedback 13
2.1.3 Bộ chuyển đổi ADC 10 bit 200ksps, tốc độ cao 13
2.1.4 Cấu trúc bộ dao động linh hoạt 13
2.1.5 Những điểm mạnh của ngoại vi 14
2.2 CẤU HÌNH CÁC BỘ DAO ĐỘNG 14
2.2.1 Các loại dao động 14
2.2.2 Bộ dao động tinh thể/cộng hưởng gốm 15
2.2.3 Khối dao động nội 15
2.3 I/O PORTS 16
2.3.2 PORTB, TRISB và thanh ghi LATB 17
2.3.3 PORT C, TRIS C và thanh ghi LATC 18
2.3.4 PORTD, TRISD và thanh ghi LATD 19
2.3.5 PORT E, TRIS E và thanh ghi LATE 20
2.4 TIMER 20
2.4.1 Modun timer 0 20
2.4.2 Modun timer1 22
2.5 NGẮT 25
2.5.1 Thanh ghi INTCON 26
2.6 MODUN PWM 27
2.6.1 Tính năng 27
2.6.2 Chế độ FREE-RUNNING 32
2.6.3 Chế độ SINGLE-SHOT MODE 32
2.6.4 Chế độ CONTINUOUS UP/DOWN COUNT 32
CHƯƠNG 3: PIC VỚI LẬP TRÌNH CCS CĂN BẢN 33
3.1 Các thuật ngữ 33
3.2 Standard C math 33
3.3 Discrete I/O 35
Trang 43.4 Bit/Byte Manipulation 37
3.5 Delay 39
3.6 Timer, Counter 40
3.7 Interrupts 43
CHƯƠNG 4: MÔ HÌNH – MẠCH ĐIỀU KHIỂN 46
4.1 Mô hình 46
4.1.1 Cấu tạo 46
4.1.2 Một số hình ảnh về mô hình 46
4.2 Thiết kế mạch điều khiển 48
4.2.1 Sơ đồ khối tổng thể 48
4.2.2 Sơ đồ mạch điều khiển 49
4.2.3 Một số hình ảnh 50
CHƯƠNG 5: XÂY DỰNG BỘ ĐIỀU KHIỂN MỜ CHO MÔ HÌNH CON LẮC NGƯỢC 51
5.1 Ý tưởng 51
5.2 Khởi động phương tiện mờ 52
5.2.1 Định nghĩa các biến cho các hàm thành phần 52
5.2.2 Cơ sở qui luật mờ 53
5.3 Lập trình phương tiện mờ 53
5.3.1 Fuzzy_inference_et() 54
5.3.2 Fuzzy_inference_det() 56
5.3.3 Code_rules() 58
5.3.4 Fuzzy_set_output() 60
5.3.5 defuzzification() 64
5.4 Điều chỉnh phương tiện mờ 69
5.5 Kết luận 70
Trang 5DANH MỤC BẢNG BIỂU
Bảng 1.1 : 2
Bảng 1.2 : Các toán tử cơ bản 4
Bảng 1.3 : Ma trân qui luật trước khi làm đầy .10
Bảng 1.4 : Ma trận qui luật sau khi làm đầy 10
Bảng 2.1 : Gía trị tụ điện cho bộ cộng hưởng gốm 15
Bảng 2.2 : Giá trị tụ điện cho bộ dao động tinh thể 15
Bảng 2.3 : Tính năng các chân của portA 17
Bảng 2.4 : Tóm tắt các thanh ghi liên quan port A 17
Bảng 2.5 : Chức năng các chân Port B 18
Bảng 2.6 : Tóm tắt các thanh ghi liên quan với Port B 18
Bảng 2.7 : Chức năng các chân Port C 19
Bảng 2.8 : Tóm tắt các thanh ghi liên quan với Port C 19
Bảng 2.9 : Chức năng các chân Port D 19
Bảng 2.10 : Tóm tắt các thanh ghi liên quan với Port D 20
Bảng 2.11 : Chức năng các chân Port E 20
Bảng 2.12 : Tóm tắt các thanh ghi liên quan với Port C 20
Bảng 2.13 : Thanh ghi điều khiển TIMER0 .21
Bảng 2.14 : Các thanh ghi liên quan đến TIMER0 .22
Bảng 2.15 : Thanh ghi điều khiển TIMER1 .23
Bảng 2.16 : Thanh ghi điều khiển ngắt 26
Bảng 2.17 : thanh ghi điều khiển ngắt 2 26
Bảng 2.18 : Thanh ghi điều khiển ngắt 3 27
Bảng 5.1 : Cơ sở qui luật mờ 53
Trang 6DANH MỤC HÌNH
Hình 1.1 : Các hàm thành phần mẫu theo nhiệt độ 2
Hình 1.2 : Các dạng hàm thành phần mẫu 3
Hình 1.3 : Cấu trúc của hệ thống mờ 5
Hình 1.4 : Giải mờ bằng phương pháp điểm trọng tâm 7
Hình 1.5 : Các hàm thành phần cho vận tốc 11
Hình 1.6 : Các hàm thành phần cho khoảng cách 11
Hình 1.7 : Các hàm thành phần cho lực hãm phanh 12
Hình 2.1 : Cấu hình XT,LP,HS và HSPLL 15
Hình 2.2 : Các nguồn dao động của PIC 18F4431 16
Hình 2.3 : Cấu trúc tổng quát của 1 port I/O 16
Hình 2.4 : Sơ đồ khối TIMER0 ở chế độ 8 bit 21
Hình 2.5 : Sơ đồ khối TIMER0 ở chế độ 16 bit 22
Hình 2.6 : Sơ đồ khối TIMER1 23
Hình 2.7 : Sơ đồ khối TIMER1: chế độ đọc ghi 16 bit 24
Hình 2.8 : Cấu trúc ngắt của PIC 18F4431 25
Hình 2.9 : Sơ đồ khối modun PWM, ngõ ra bù 28
Hình 2.10: Sơ đồ khối modun PWM, ngõ ra độc lập 28
Hình 4.1 : Mô hình con lắc ngược 46
Hình 4.2 : Mô hình con lắc ngược (tiếp) 47
Hình 4.3 : Mô hình con lắc ngược (tiếp) 47
Hình 4.5 : Mạch điều khiển 50
Hình 4.6 : Mạch điều khiển (hoàn chỉnh) 50
Hình 5.1 : Các trường hợp của ngõ vào ET và DET 51
Hình 5.2 : cấu trúc bộ điều khiển mờ 52
Hình 5.3 : Các hàm thành phần cho tín hiệu ngõ vào ET 52
Hình 5.4 : Các hàm thành phần cho tín hiệu ngõ vào DET 53
Hình 5.5 : Các hàm thành phần cho tín hiệu ngõ ra DVT 53
Hình 5.6 : Điều chỉnh cấu trúc bộ điều khiển mờ 70
Trang 7CHƯƠNG 1:LOGIC MỜ VỚI VI ĐIỀU KHIỂN
1.1 Mở đầu
Dường như thế giới phát triển phần mềm cũng chịu ảnh hưởng của các trào lưu và mốt giống như xã hội bình thường Dạo này, các khái niệm về thiết kế hướng đối tượng và tính di động của chương trình đang thịnh hành Trong lĩnh vực các hệ thống nhúng (embedded system), đặc biệt là các hệ thống điều khiển, mốt mới nhất
là logic mờ (fuzzy logic) Vào lúc các kỹ sư người Mỹ sau cùng không còn xem thường tên “fuzzy logic”, họ bắt đầu xem xét các khái niệm đằng sau tên này và họ khám phá ra rằng logic mờ có thể là một công cụ rất quí giá để giải quyết nhiều bài toán, tuy nhiên có nhiều người muốn ta tin tưởng rằng logic mờ là “Silver Bullet” của các hệ thống nhúng Họ sẽ nói với ta rằng logic mờ sẽ giải tất cả các bài toán về
hệ thống nhúng nếu ta mua và sử dụng ngay gói phát triển logic mờ của họ
Ta cần biết rõ rằng logic mờ có thể là phương pháp thiết kế tuyệt vời cho nhiều hệ thống nhúng nhưng cũng có nhiều hệ thống nhúng sẽ không có lợi từ logic
mờ Phần này sẽ cho ta thấy rằng ta không cần mua nhiều tài liệu nghiên cứu để học
về logic mờ cùng với bộ tạo mã và môi trường phát triển đắt tiền để vận hành logic
mờ trên vi điều khiển; thay vào đó, có một phương pháp hiệu quả và đơn giản để logic mờ được nhúng trên vi điều khiển Tuy nhiên, trước khi ta có thể thực hiện phương pháp này, ta cần biết logic mờ là gì
Trong thế giới thực, ta biết rằng đa số các sự vật đều có mức độ đúng nào đó
và mức độ sai nào đó Trong logic mờ, khái niệm một điều gì đó có thể đúng một phần và sai một phần ở cùng một thời điểm là có cơ sở Điển hình, cách mà logic
mờ biểu diễn điều này là chỉ rõ mức độ thành phần (degree of membership) đối với một điểm dữ liệu (data point) trong một tập cho trước (given set) Giá trị là một chỉ
ra rằng điểm dữ liệu này hoàn toàn nằm trong tập cho trước Giá trị 0 chỉ ra rằng điểm dữ liệu này hoàn toàn không ở trong tập cho trước Giữa 0 và 1 có một số vô hạn các mức độ thành phần (chẳng hạn như 25, 5, 75, v.v…) Lấy thí dụ nếu bên
Trang 8ngoài là 90 độ (độ F), ta có thể nói rằng nhiệt độ này tương ứng với các mô tả khác nhau về loại ngày như sau
Temperature
(degrees)
Hình 1.1: Các hàm thành phần mẫu theo nhiệt độ
Degree of membership: mức độ thành phần
Temperature (degrees): nhiệt độ (độ F)
Ta thấy rằng giá trị 90 độ cắt hai hàm thành phần – Warm và Hot Vậy thì 90
độ có giá trị µ khác 0 đối với các tập mờ Warm và Hot Các hàm thành phần còn lại không bị cắt nên 90 độ có giá trị µ bằng 0 đối với các tập mờ Cold, Chilly và Mild Giá trị của y ở đó 90 độ cắt hàm thành phần Warm là 0.25 và con số này trở thành
1.00
0.25
0.00
Trang 9giá trị của µ đối với tập này Tương tự, hàm thành phần Hot được cắt ở điểm là 1.00 trên trục y, 90 độ hoàn toàn nằm trong tập Hot
Các dạng hàm thành phần có thể là dạng bất kỳ mà ta muốn, tuy nhiên, dạng hình thang là lựa chọn phổ biến nhất cho các dạng khác có thể được suy ra dễ dàng
từ biểu diễn hình thang Một số các hàm mờ thành phần (fuzzy membership function) có thể có được trình bày dưới đây
Hình 1.2: Các dạng hàm thành phần mẫu
Singleton: một mức
Crisp set: tập chính xác (hai mức logic)
Triangular: hình tam giác
Trapezoidal: hình thang
Bell shaped: dạng hình chuông
Non-standard curve: đường cong không chuẩn
Hai dạng đầu (singleton [một mức] và crisp [tập chính xác hai mức logic]) cho phép logic mờ bao gồm cả logic chính xác cơ bản vì một điểm dữ liệu có thể là thành phần của các tập này (µ=1) hoặc không là thành phần của chúng(µ=0) Tất cả các đường cong còn lại đều có nhiều mức thành phần khác nhau phụ thuộc vào điểm dữ liệu được chọn Cũng cần lưu ý rằng, bằng cách sửa đổi các điểm uốn (inflection point) của đường hình thang, ta có thể nhận được singleton, tập crisp hoặc tập tam giác Vậy thì, ta có thể sử dụng một loại mô hình đường cong (dạng hình thang) để biểu diễn bốn loại tập mờ (hình thang, tam giác, crisp và singleton)
Curve
Trang 10Hai loại hàm thành phần khác sẽ khó biểu diễn hơn do các đường cong của chúng, nhưng ta vẫn có thể biểu diễn chúng được
Thành phần trong một tập là cơ sở cho việc phân tích mờ (fuzzy analysis) Một hệ thống mờ sẽ bao gồm các qui luật (rule), các qui luật này phát biểu về mối quan hệ của đầu vào với tập mờ và hành động kết hợp Lấy thí dụ, một hệ thống mờ điều khiển tốc độ của một quạt hút dựa trên nhiệt độ có thể có qui luật nói rằng
“nếu(if) nhiệt độ là Hot, thì(then) tốc độ quạt là High” Hệ thống mờ sẽ xem xét các qui luật này và xác định ở mức độ nào thì nhiệt độ là Hot Mức độ thành phần này
sẽ dẫn đến giá trị đúng của qui luật này và kế đến được so sánh với các giá trị đúng đối với các qui luật khác trong hệ thống Việc so sánh liên qui luật dẫn đến quyết định về giá trị của tốc độ quạt
Trong trường hợp tổng quát, một qui luật logic mờ bao gồm một phần “if” (tiền đề [antecedent]) và một phần “then” (hệ quả [consequence]) Một qui luật có thể có nhiều hơn một tiền đề trong phần “if” và nhiều hơn một hệ quả trong phần
“then” Các tiền đề và các hệ quả có thể được kết hợp bằng cách sử dụng các toán tử logic (logic operator) chẳng hạn AND OR và NOT Cũng có nhiều toán tử logic khác nhưng 3 toán tử vừa được nêu trên được sử dụng phổ biến nhất
Thực hiện toán học của 3 toán tử logic mờ thông dụng này được minh họa ở bảng 1.2 Mỗi toán tử là một thao tác toán học đơn giản
Một hệ thống logic mờ bao gồm một tập các qui luật được tạo ra bằng cách
sử dụng các toán tử ở bảng 1.2 Như đã được đề cập trước đây, mỗi qui luật phải có một chuỗi tiền đề và hệ quả Số của mỗi qui luật có thể là bất kỳ từ 1 đến n, trong
đó n được xác định bởi các giới hạn hệ thống của ta Điển hình, tập các qui luật này được gọi là cơ sở qui luật (rule base) Ngoài ra ta có thể chọn phép gán một trọng số cho qui luật để thực hiện một hệ thống mờ Trong đa số các hệ thống mờ, trọng số của mỗi qui luật được thiết lập bằng 1 để chỉ ra rằng mỗi qui luật đều quan trọng không kém qui luật kế tiếp Tuy nhiên ta có thể kết thúc với một hệ thống trong đó
ta tin tưởng một qui luật nào đó sẽ quan trọng hơn các qui luật còn lại
Trong trường hợp này, ta có thể gán một trọng số cho qui luật này lớn hơn trọng số đã gán cho tất cả các qui luật khác Điều này có thể được thực hiện bằng cách cho qui luật quan trọng trọng số là 1 và cho các qui luật còn lại trọng số nhỏ hơn hoặc có thể gán trọng số cho các qui luật khác là 1 nhưng tăng trong số của qui
Trang 11luật hơn này Nếu việc ta bị kẹt với qui ước là quan trọng, ta sẽ chỉ định cho qui luật quan trong nhất có trọng số là 1 và giảm bớt trọng số của tất cả các qui luật còn lại
do logic mờ thường quan tâm đến các giá trị từ 0 đến 1
Kích thước của cơ sở qui luật sẽ phụ thuộc vào vấn đề mà ta đang giải quyết Hầu hết các hệ thống logic mờ đều có cơ sở qui luật nhỏ (15 qui luật hoặc hơn); các
hệ thống phức tạp hơn có nhiều qui luật hơn nhưng thông thường, số qui luật của ngay cả các hệ thống rất lớn cũng nhỏ hơn 60 Cần ghi nhớ rằng ta càng có nhiều qui luật, hệ thống mờ của ta sẽ mất nhiều thời gian để thực hiện các quyết định Thông thường, ta sẽ không phải thực hiện mọi qui luật có thể có trong một hệ thống
để làm cho hệ thống vận hành theo cách mà ta muốn Có một tập con nhỏ hơn các qui luật, tập con qui luật này sẽ chi phối chính xác hoạt động của hệ thống, tuy nhiên nhiều qui luật hơn sẽ giúp ta làm cho hệ thống này ổn định hơn một ít Một trong các điều thú vị về các hệ thống logic mờ là chúng thể hiện dung sai của các tín hiệu đầu vào xấu Tính chất này phải được thực hiện cùng với phương pháp mà cơ
sở qui luật khống chế vùng điều khiển
1.7 Cấu trúc của hệ thống mờ
Một hệ thống logic mờ yêu cầu thực hiện 3 tầng chức năng: tiền xử lý tín hiệu đầu vào (input preprocessing), suy diễn mờ (fuzzy inference) và giải mờ (defuzzification) Mối quan hệ giữa các tầng này được trình bày ở hình 1.3
Hình 1.3: cấu trúc của hệ thống mờ Preprocessing: tiền xử lý
Fuzzy inference: suy diễn mờ
Translate fuzzy outputs to values usable by the system: chuyển đổi các đầu ra
mờ thành các giá trị khả dụng đối với hệ thống
Prepare inputs
for use by the
fuzzy rule base
Using fuzzified inputs,process each rule in the rule base and calculate output values
Translate fuzzy outputs to values usable by the system
Trang 12Tầng tiền xử lý được dùng để chuẩn bị các đầu vào nhằm ước lượng (hay đánh giá) đối với các qui luật mờ Điều này thường đòi hỏi lập tỷ lệ tín hiệu đầu vào đến tầm giá trị mong muốn bởi các hàm thành phần của tập Điều này cũng kéo theo phải tính toán một số tín hiệu đầu vào Thí dụ, nếu ta có một hệ thống mờ cho một
xe ôtô, hệ thống này sử dụng gia tốc làm một trong các tín hiệu đầu vào, có thể ta phải tính tín hiệu đầu vào này bằng cách sử dụng các mẫu tốc độ trên một khoảng thời gian cho trước (giả định rằng ta không có một gia tốc kế)
Tầng suy diễn mờ ước lượng (hay đánh giá) từng qui luật mờ và tính ảnh hưởng của các qui luật này trên các tín hiệu đầu ra được chỉ rõ trong các hệ quả của qui luật Các qui luật được đánh giá bằng cách sử dụng các phương pháp mô tả ở trên để thực hiện các toán tử mờ Giá trị của µ cho các tiền đề trở thành mức độ mà đối với mức độ này từng hệ quả là đúng Khi một qui luật có giá trị µ lớn hơn 0, ta bảo rằng qui luật đã “hoạt động”
Mỗi hệ quả của một qui luật tham chiếu đến một tín hiệu đầu ra và một tạp
mờ Tầng suy diễn lưu giữ giá trị cực đại của µ đối với từng tín hiệu đầu ra mờ trong từng tập có thể có Bằng cách sử dụng thí dụ ở trên “nếu (if) nhiệt độ là Hot thì (then) tốc độ quạt là High” và sử dụng 90 độ là tín hiệu nhiệt độ đầu vào, giá trị của µ đối với các tiền đề sẽ là 1.00 vì ta đã thiết lập 90 độ hoàn toàn nằm trong tập
mờ Hot
Vậy thì mức độ đúng đối với hệ quả “tốc độ quạt là High” là 1.00 do đây là giá trị của µ đối với các tiền đề Nếu mức độ đúng hiện hành cho tốc độ quạt ở trong tập High là 0.00, mức độ này bây giờ sẽ trở thành 1.00 Tuy nhiên, chỉ vì cơ
sở qui luật mờ đã quyết định rằng tốc độ quạt có mức độ thành phần trong tập
“High” là 1.00, điều này không có nghĩa là tốc độ quạt sẽ được thiết lập đến High Điều này sẽ phụ thuộc vào mức độ thành phần của tốc độ quạt trong các tâp mờ đầu
µlow = 0.00
µmedium = 0.57
µhigh = 1.00 thì tốc độ quạt sẽ được thiết lập bằng High vì tập này có mức độ thành phần cao nhất được kết hợp Phương pháp này thực hiện rất đơn giản nhưng lại bỏ qua các phẩm chất tinh vi làm cho logic mờ mạnh: khả năng một điểm dữ liệu ở trong nhiều hơn một tập ở cùng một thời điểm
Trang 13Low Medium High
Kế đến kết quả này được sử dụng làm tín hiệu đầu ra mờ Ta hãy khảo sát các hàm thành phần đầu ra say đây đối với tốc độ quạt Giá trị tính được cho trong tâm sẽ là đầu ra của quá trình giải mờ Cũng như trong phương pháp giải mờ trước đây, giá trị này được áp dụng đến hệ thống khi cần thiết Phương pháp trọng tâm có
lẽ sẽ dẫn đến các kết quả tốt nhất nhưng lại đòi hỏi khả năng chuyên sâu trong việc xác định trọng tâm của các miền tô đậm
Hình 1.4: Giải mờ bằng phương pháp điểm trọng tâm
Việc đơn giản hóa phương pháp trọng tâm nhằm chỉ rõ các tập đầu ra có dạng các singleton Điều này cho phép phương pháp giải mờ được rút gọn đến một vòng lặp đơn giản cùng với phép toán nhân chia Trong trường hợp tổng quát, công thức cho phương pháp này được phát biểu như sau:
Trong đó n là số tập của đầu ra, Vi là giá trị của singleton xác định tập đầu ra
và Ui mức độ đúng được gán cho tập đầu ra hiện hành Hàm này thực hiện dễ dàng hơn bằng phần mềm so với các phương trình trọng tâm và dẫn đến các kết quả rất quen thuộc
1.8 Logic mờ được sử dụng ở đâu
Vào lúc này có lẽ ta tự hỏi các ứng dụng nào sẽ thích hợp với logic mờ và các ứng dụng nào không Qui luật tổng quát cho việc ứng dụng logic mờ là nếu ta
đã có một mô hình toán học chính xác cho hệ thống của ta, mô hình này tương đối
có hiệu quả tốt khi được lập trình theo logic qui ước, ta không cần phải thực hiện
mô hình này theo logic mờ Các ứng dụng mà logic mờ thường sẽ vượt trội là các vấn đề trong đó ta không có ý tưởng chính xác về điều gì sẽ xảy ra nhưng ta lại có một ý tưởng “seat of the pants” về cách thức điều khiển hệ thống Đây thường là
Trang 14trường hợp của các ứng dụng phi tuyến phức tạp Thông thường, ta có thể tham khảo ý kiến của chuyên gia nào đó về hệ thống và xác định tập các qui luật mà hệ thống hoạt động Logic mờ sẽ có khả năng xử lý các qui luật này để nhận được các tín hiệu đầu ra hợp lý ngay cả khi một hoặc nhiều tín hiệu đầu vào thất bại
Một trong những điểm mạnh của logic mờ là ta có thể diễn đạt lời giải của bài toán mà ta đang giải bằng những thuật ngữ ngôn ngữ hoc (linguistic term) Điều này làm cho con người dễ dàng sử dụng lời giải hơn do con người quan tâm đến ngôn ngữ hơn là các con số Ngoài ra hành vi của một hệ thống logic mờ dễ dàng được sửa đổi bằng cách thay đổi các qui luật đầu vào và các hàm thành phần
Một khuyết điểm đối với việc thực hiện logic mờ là ta sẽ phải xác minh rằng lời giải logic mờ của ta quản lý được mọi điểm của miền điều khiển mong muốn bằng cách thực hiện việc mô phỏng Nói cách khác ta sẽ không thể chứng minh bằng toán học rằng lời giải của ta hoạt động đối với mọi tín hiệu đầu vào như ta thường có thể thực hiện đối với các hệ thống điều khiển qui ước
1.9 Mờ hóa
Do ta đã xem xét một số cơ sở của logic mờ, ta hãy lướt qua một thí dụ thiết
kế nhỏ qua đó ta có thể làm quen với phương pháp thiết kế một hệ thống logic mờ Cách thức để bắt đầu một thiết kế mờ là am hiểu hệ thống cần mô hình dưới dạng các thuật ngữ ngôn ngữ đơn giản Điều này có nghĩa là ta cần đạt được sự hiểu biết
về các tín hiệu đầu vào và đầu ra mà ta có cũng như việc phân loại chúng
Giả định rằng ta phải thiết kế một hệ thống điều khiển xe cấp năng lượng, hệ thống này được lập trình cùng với một địa điểm ở đó xe dừng Để thực hiện được điều này, ta phải sử dụng khoảng cách từ vị trí của xe đến điểm dừng và vận tốc hiện hành làm các tín hiệu đầu vào của hệ thống Với tín hiệu đầu ra, hệ thống sẽ phải chỉ ra lượng hãm phanh được sử dụng để làm chậm xe Xe này có một hệ thống kéo có thể bị “kiệt sức” bởi lượng hãm phanh nhỏ khi xe có tốc độ rất chậm hoặc dừng
Dựa vào mô tả ở trên của hệ thống, các tín hiệu đầu vào là khoảng cách đến điểm dừng và vận tốc hiện hành của xe Đầu ra của hệ thống là mức hãm phanh được sử dụng Công việc kế tiếp là định nghĩa các tập mờ cho các tín hiệu đầu vào
và đầu ra Trước tiên, ta thực hiện điều này theo các thuật ngữ rất cơ bản mà không bân tâm gì đến các giá trị toán học
Ta đạt đến các thuật ngữ ngôn ngữ dựa trên kiến thức trực quan mà ta có về
hệ thống Kiến thức như vậy có thể được suy ra từ sự thông thạo của bản thân ta hoặc thông qua nghiên cứu hệ thống bằng cách học hỏi hoặc phỏng vấn một chuyên gia Thí dụ, nếu xe đang khảo sát trước đây đã từng được vận hành bởi một tài xế duy trì công việc này trong 20 năm, ta có thể nói chuyện với người này và tìm ra các thông số mà người này đã từng sử dụng để vận hành xe Vì không có một chuyên gia trong trường hợp này, ta dựa vào thông tin về kinh nghiệm lái xe
Trang 15Tín hiệu đầu vào đầu tiên được khảo sát là khoảng cách đến điểm dừng Hệ thống này sẽ không bắt đầu kích hoạt cho đến khi điểm dừng đến đủ gần để được chú ý Nói cách khác, nếu ta đang lái một xe và thấy rằng cách ta khoảng nửa dặm
là bảng báo hiệu dừng, ta sẽ không bân tâm đến việc giảm tốc độ do có bảng báo hiệu dừng cho đến khi còn cách bảng này vài chục mét Đây là vị trí ở đó ta bắt đầu giảm tốc độ mà hệ thống mờ của ta góp phần vào
Dựa vào thông tin này, khoảng cách đến điểm dừng (từ đây được cho bằng
ký hiệu ngôn ngữ DISTANCE) có thể được chia thành các loại sau: FAR, NEAR,CLOSE và VCLOSE (very close) Cho đến lúc này, ta đừng quan tâm đến các hàm thành phần của các tập này trừ sự kiện là tập VCLOSE sẽ bao gồm khái niệm điểm dừng đã đạt đến và tập FAR sẽ bao gồm các khoảng cách nằm ngoài giới hạn mà hệ thống dừng mờ được kích hoạt
Tín hiệu đầu vào thứ hai của hệ thống là vận tốc của xe (từ đây được cho bằng ký hiệu ngôn ngữ VELOCITY) Tín hiệu đầu vào cũng được chia thành các loại (giống như DISTANCE) nhưng các loại này không giống VELOCITY được gán các loại sau đây: VFAST, FAST, MEDIUM, SLOW, VSLOW Tương tự như tín hiệu đầu vào thứ nhất, ta cần lưu ý rằng tập VSLOW bao gồm khái niệm xe đã dừng
Đầu ra của hệ thống được xác định dưới dạng lượng hãm phanh được sử dụng để giảm tốc độ xe Đầu ra này sẽ được gán nhãn là BRAKE Cũng như trường hợp đối với hai tín hiệu đầu vào, BRAKE được chia làm các loại sau: NONE, LIGHT, MEDIUM, HARD và VHARD Ý nghĩa toán học của các tập này sẽ được định nghĩa sau
Lúc này các tín hiệu đầu vào và đầu ra đã được xác định Bước kế tiếp là xác định các qui luật được cần đến trong hệ thống Một số nhà thiết kế mờ cho rằng các hàm thành phần đối với các tập mờ được xác định trước các qui luật, nhưng đây chỉ
là vấn đề sở thích Lý do của những người quan niệm ngược lại là để cũng cố sự am hiểu tổng quát về hệ thống trước khi định nghĩa hệ thống về mặt toán học Theo cách này, bản phác thảo thô về cơ sở qui luật có thể được sử dụng để xác nhận khái niệm thiết kế trước khi đi quá xa
Phương pháp đơn giản nhất để xác định cơ sở qui luật là tạo ra một ma trận các tín hiệu đầu vào và kế đến làm đầy ma trận bằng các loại đầu ra mà ta muốn xảy
ra Vậy thì, thay vì viết một cụm các qui luật dưới dạng “if x and y then z”, ta có thể làm đầy một ma trận Điều này làm cho ta dễ dàng hình dung hệ thống hơn Ta cần ghi nhớ rằng ma trận chỉ thật sự thích hợp khi ta đang sử dụng toán tử AND Trong thí dụ của ta, sẽ không có nhu cầu thực hiện các toán tử khác toán tử AND Bảng 1.3 trình bày ma trận qui luật cho các tín hiệu đầu vào DISTANCE và VELOCITY trước khi ma trận này được làm đầy
Trang 16Bảng 1.3: Ma trân qui luật trước khi làm đầy
Một khi ta đã cấu trúc ma trận của ta như ở bảng 1.3, ta đơn thuần xử lý bảng này như là một bảng sự thật và làm đầy bảng này bằng ngôn ngữ Góc vuông phía trên bên trái của ma trận sẽ chứa hệ quả của tiền đề “if VELOCITY is VFAST and DISTANCE is FAR” Do ta làm đầy bảng này lần đầu tiên, ta đừng bận tâm về sự chính xác, chỉ cần đặt vào ý tưởng thô sơ là điều gì sẽ xảy ra Bảng đã được làm đầy được trình bày ở bảng 1.4
DISTANCE
MEDIUM LIGHT MEDIUM HARD HARD
VSLOW NONE NONE NONE LIGHT
Bảng 1.4: Ma trận qui luật sau khi làm đầy
Như đã đề cập trước đây, ma trận chỉ là giai đoạn bắt đầu cho cơ sở qui luật của ta Có thể sẽ cần thực hiện tất cả các qui luật trong ma trận, nhưng thông thường, các hệ thống logic mờ hoạt động với một tập con các qui luật trong ma trận Thật không may, không có lý thuyết nào về việc loại bỏ các qui luật không cần đến, phương pháp phổ biến duy nhất là thử và sửa sai Tuy nhiên trong một số trường hợp, một tập các qui luật có thể đơn giản hóa thành một qui luật Thí dụ, nếu qui luật “if VELOCITY is VSLOW and DISTANCE is VCLOSE then BRAKE is LIGHT” có một hệ quả là “BRAKE is NONE” để thay thế, hàng dưới cùng của ma trận có thể được thay thế bằng qui luật “if VELOCITY is VSLOW then BRAKE is NONE”
Do lúc này các qui luật ban đầu của hệ thống đã được thiết lập, các hàm thành phần cho mỗi tập mờ đã chỉ ra có thể được thiết lập Để thực hiện nhiệm vự này, ta cần biết tầm giá trị có thể có cho mỗi tín hiệu đầu vào mà ta đang xử lý Thí
dụ, để thiết lập các hàm thành phần tập mờ cho VELOCITY, ta cần biết rằng VELOCITY có tầm từ 0 MPH đến 25 MPH và bố trí các tập mờ của ta dựa trên điều này Đối với thí dụ này, ta hãy sử dụng tầm ở trên cho VELOCITY và định nghĩa các hàm mờ thành phần
Trang 17Hình 1.5 Các hàm thành phần cho vận tốc
Velocity: vận tốc
Degree of membership: mức độ thành phần
Các hàm thành phần được vẽ ở trên tương ứng với định nghĩa thành phần của
ta trong ngữ cảnh của vấn đề được giải Một người khác có thể có các hàm thành phần hơi khác Ta cần lưu ý rằng không có yêu cầu cụ thể nào về các hàm thành phần liên quan với nhau ra sao Như vậy không có qui luật nào buộc ta phải bao gồm mọi điểm trên trục X vào trong tập mờ Cũng không có qui luật nào yêu cầu một điểm cho trước trên trục X không thể hoàn toàn ở trong hai tập ở cùng một thời điểm hoặc phải có một giá trị khác 0 của µ cho 3 tập hoặc nhiều hơn Việc định nghĩa các hàm thành phần phụ thuộc vào ngữ cảnh của vấn đề ta đang giải quyết, không phụ thuộc vào một số qui luật lý thuyết đã được xác định trước Các hàm thành phần của cả hai tín hiệu đầu vào DISTANCE và đầu ra BRAKE được định nghĩa bằng cách sử dụng tầm được chỉ ra trong các đồ thị
Trang 18Hình 1.7: Các hàm thành phần cho lực hãm phanh
Do các qui luật và các hàm thành phần đã được thiết lập, tất cả các mảng của thiết kế hệ thống mờ đã ở đúng chỗ của mình Lúc này tất cả những gì cần làm là thực hiện phần mềm phương tiện (engine) logic mờ để vận hành các qui luật và cung cấp cho ta các tín hiệu đầu ra
1.00
0.00
BRAKE (increments)
Trang 19CHƯƠNG 2: SƠ LƯỢC VỀ VI ĐIỀU KHIỂN PIC18F4431
2.1 Tính năng
2.1.1 Modun điều khiển PWM 14 bit
• 4 kênh đôi với ngõ ra bù
• Hổ trợ thao tác cạnh hoặc mức
• Ngõ vào bảo vệ lỗi phần cứng
• Cập nhận đồng thời chu kỳ nhiệm vụ và chu kỳ
• Linh hoạt với ngõ ra kích khởi sự kiện
2.1.2 Modun motion feedback
• Ba kênh chốt/bắt giữ ngõ vào riêng biệt
• Chế độ vận hành linh hoạt cho các ứng dụng đo chu kỳ và độ rộng xung
• Modun giao diện cảm biến Hall
• Tính năng kích khởi sự kiện đến các modun khác
• Giao diện Quadrature encoder
• Hai ngõ vào phase và một ngõ vào index từ encoder
• Cho phép theo dõi mức cao/thấp, trạng thái chiều và thay đổi hướng ngắt
• Phép đo vận tốc
2.1.3 Bộ chuyển đổi ADC 10 bit 200ksps, tốc độ cao
• 9 kênh ngõ vào
• Lấy mẫu đồng thời 2 kênh ngõ vào
• Lấy mẫu tuần tự 1,2 hoặc 4 kênh
• Khả năng chuyển đổi tự động
• 4 word FIFO cho phép lựa chọn tần số ngắt
• Sự lựa chọn kích khởi từ bên ngoài
• Thời gian nhận lập trình được
2.1.4 Cấu trúc bộ dao động linh hoạt
• 4 kiểu dao động tinh thể đến 40Mhz
• 2 modun xung clock ngoài đến 40Mhz
• Khối dao động nội
+ Cho phép người sử dụng lựa chọn 8 tần số từ 31Khz đến 8Mhz + OSCTUNE có thể bù sự trôi tần số
• Nguồn dao động phụ sử dụng cho timer 1 tần số 31Khz
• Dò và tự phục hồi xung clock
+ Tắt nguồn của thiết bị nếu xung clock bị lỗi
• Chế độ quản lý nguồn
Trang 20+Run: CPU on, ngoại vi on
+Idle: CPU off, ngoại vi on
+Sleep: CPU off, ngoại vi off
+Bộ dao động hai tốc độ khởi động
2.1.5 Những điểm mạnh của ngoại vi
• Dòng ngõ ra cao 25mA
• Ba ngõ vào ngắt ngoài
• Hai modun bắt giữ, so sánh, điều biến độ rộng xung
+ Chế độ capture 16 bit, độ phân giải tối đa 6.25 ns
+ Chế độ compare 16 bit, độ phân giải tối đa 100 ns
+ Ngõ ra PWM, PWM độ phân giải từ 1 đến 10 bit
• Bổ sung modun USART
+ Hỗ trợ RS_485, RS_232 và LIN 1.2
+Tự động thức dậy trên bit start
Chế độ dò tự động
• RS_232 hoạt động dùng xung clock nội
• Các tính năng đặc biệt của vi điều khiển
• Tăng cường bộ nhớ chương trình Flash với 100.000 chu kỳ đọc ghi
• Bộ nhớ dữ liệu EEPROM với 1.000.000 chu kỳ đọc ghi
• Bộ nhớ Flash và dữ liệu EEPROM duy trì trong 100 năm
• Tự lập trình được với phần mềm điều khiển
• Chế độ ngắt mức ưu tiên
• Mở rộng timer Watchdog: chu kỳ lập trình được từ 41ms đến 131s
• Lập trình tuần tự sử dụng nguồn đơn trên mạch
2.2 CẤU HÌNH CÁC BỘ DAO ĐỘNG
2.2.1 Các loại dao động
PIC 18F4431 có thể hoạt động trong 10 chế độ dao động khác nhau Người sử dụng có thể lập trình cấu hình các bit F0SC3:F0SC0 trong thanh ghi cấu hình 1H để lựa chọn 1 trong 10 chế độ
LX Dao động tinh thể nguồn thấp
• XT Tinh thể/bộ cộng hưởng
• HS Tinh thể/bộ cộng hưởng tốc độ cao
• HSPLL Tinh thể/bộ cộng hưởng tốc độ cao với cho phep PLL
• RC Dao động tụ điện/điện trở bên ngoài với Fosc/4 ngõ ra
• RCIO Dao động tụ điện/điện trở bên ngoài với I/O trên chân RA6
Trang 21• INTIO1 Bộ dao động nội với Fosc/4 ngõ ra trên chân RA6 và I/O trên chân RA7
• INTIO2 Bộ dao động nội với Fosc/4 ngõ ra trên chân RA6 và RA7
• EC Xung clock bên ngoài với ngõ ra Fosc/4
• ECIO Xung clock bên ngoài với I/O trên RA6
2.2.2 Bộ dao động tinh thể/cộng hưởng gốm
Trong các chế độ dao động XT,LP,HS hoặc HSPLL một tinh thể hoặc
bộ cộng hưởng gốm được kết nối vào chân OSC1 và OSC2 để thiết lập dao động
Hình 2.1:Cấu hình XT,LP,HS và HSPLL
Bảng 2.1: Gía trị tụ điện cho bộ cộng hưởng gốm
Bảng 2.2: Giá trị tụ điện cho bộ dao động tinh thể
2.2.3 Khối dao động nội
PIC 18F4431 có sẳn một khối dao động nội, nó tạo ra hai tín hiệu clock khác nhau có thể sử dụng như một nguồn xung clock hệ thống Khối này cho phép loại bỏ các bộ dao động bên ngoài trên chân OSC1 và/hoặc OSC2 Ngõ ra chính (INTOSC) là một nguồn xung clock 8MHz có thể sử dụng trực tiếp để cung cấp cho xung clock của hệ thống Nếu sử dụng bộ chia nó có thể cung cấp một dãy tần số từ 125KHz đến 4MHz để lựa chọn Ngõ ra INTOSC sẽ được cho phép khi tần số xung clock của hệ thống từ
Trang 22125KHz đến 8MHz được lựa chọn Ngoài ra còn có một nguồn dao động nội
RC (INTRC) cung cấp tần số 31KHz Dao động INTRC được cho phép bởi việc lựa chọn khối dao động nội như là một nguồn xung clock hệ thống hoặc theo sau bất kì một cho phép:
Hình 2.3: Cấu trúc tổng quát của 1 port I/O
Trang 23TRIS register (thanh ghi hướng dữ liệu)
PORT register (đọc mức logictrên chân của thiết bị)
LAT register (chốt dữ liệu)
PORTA, TRISA và thanh ghi LATA
Port A gồm 8 chân từ RA0-RA7, việc ghi các giá trị vào thanh ghi TRISA
sẽ quy định các chân của Port A là Input hay Output Nếu 0 là Output, 1 là input
Việc đọc thanh ghi Port A sẽ đọc trạng thái các chân của PortA Việc ghi giá trị vào thanh ghi PortA sẽ thay đổi trạng thái của các chân PortA
Bảng 2.3: Tính năng các chân của portA
Bảng 2.4:Tóm tắt các thanh ghi liên quan port A
2.3.2 PORTB, TRISB và thanh ghi LATB
Port B gồm có 8 chân từ RB0-RB7 Việc ghi các giá trị vào thanh ghi TRISB
sẽ qui định các chân của Port B là Input hay Output Nếu 0 là Output, 1 là Input Việc đọc thanh ghi Port B sẽ đọc trạng thái các chân của Port B Việc ghi giátrị vào thanh ghi giá trị vào thanh ghi Port B sẽ thay đổi trạng thái ngõ ra của các chân Port
B
Thanh ghi chốt dữ liệu (LATB) giống như một bản đồ bộ nhớ Các thao tác đọc – sửa – ghi trên thanh ghi LATB sẽ đọc ghi chốt các giá trị ngõ ra của Port B Bốn chân của Port B từ RB7-RB4 có chức năng ngắt (interrupt) khi trạng thái chân Port thay đổi (khi chân port được qui định là output thì chức năng ngắt không hoạt động) Giá trị chân Port được so sánh với giá trị được lưu lại trước đó, khi có trạng
Trang 24thái sai lệch giữa 2 gía trị này, ngắt sẽ xãy ra Ngắt có thể làm cho VĐK thoát khỏi trạng thái SLEEP
Bảng 2.5: Chức năng các chân Port B
Bảng 2.6: Tóm tắt các thanh ghi liên quan với Port B
2.3.3 PORT C, TRIS C và thanh ghi LATC
Port C gồm 8 chân từ RC0 – RC7 Việc ghi các giá trị vào thanh ghi TRISC
sẽ qui định các chân của PortC là Input hay Output Nếu 0 là Output, 1 là Input Việc đọc thanh ghi Port C sẽ thay đổi trạng thái ngõ ra của các chân Port C
Các chân Port C được đa hợp với các chức năng ngoại vi
Khi các hàm ngoại vi được cho phép, ta cần quan tâm chặt chẻ tới giá trị các bit của thanh ghi TRISC Một số chức năng ngoại vi sẽ ghi các giá trị 0 đè lên các bit của thanh ghi TRISC và mặc định các chân là Output, ngoài ra một số chức năng ngoại vị khác sẽ tự động mặc định các chân là ngõ vào Do đó người sử dụng phải xem xét kỷ các tính năng của các hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho chính xác
Trang 25Bảng 2.7: Chức năng các chân Port C
Bảng 2.8: Tóm tắt các thanh ghi liên quan với Port C
2.3.6 PORTD, TRISD và thanh ghi LATD
Port D gồm 8 chân từ RD0 – RD7 Ngoài việc Port D được cấu trúc là một port vừa xuất vừa nhập nó có thể hoạt động như một cổng song song (parallel slave port)
Bảng 2.9: Chức năng các chân Port D
Trang 26Bảng 2.10: Tóm tắt các thanh ghi liên quan với Port D
2.3.7 PORT E, TRIS E và thanh ghi LATE
Port E có 4 chân có thể cấu hình là các chân xuất nhập Các chân này được đệm ngõ vào Schmitt Trigger
Thanh ghi chốt dữ liệu (LATC) giống như một bản đồ bộ nhớ Các thao tác đọc – sửa – ghi trên thanh ghi LATC sẽ đọc ghi chốt các giá trị ngõ ra của Port C
Bảng 2.11: Chức năng các chân Port E
Bảng 2.12: Tóm tắt các thanh ghi liên quan với Port C
2.4 TIMER
2.4.1 Modun timer 0
Modun timer0 gồm các tính năng sau:
Chọn lập trình ở chế độ 8 bit hay 16 bit timer/couter
• Cho phép đọc được và ghi được
• Có sẳn 8 bit phần mềm lập trình tỷ lệ
• Nguồn xung clock lựa chọn được từ bên ngoài hay bên trong
• Ngắt tràn timer từ FFH về 00H trong chế độ 8 bit và FFFFH về
0000H trong chế độ 16 bit
• Lựa chọn cạnh tác động bên ngoài
Trang 27Bảng 2.13: Thanh ghi điều khiển TIMER0
• TMR0ON: bit điều khiển ON/OFF timer 0
• T016BIT: bit điều khiển timer 0 16 bit
• T0CS: bit lựa chọn nguồn xung clock cho timer0
• T0SE: bit lựa chọn cạnh nguồn tác động
• PSA: bit ấn định tỷ lệ cho timer0
• T0PS2:T0PS0: các bit lựa chọn tỷ lệ cho timer0
Trang 28Hình 2.5: Sơ đồ khối TIMER0 ở chế độ 16 bit
Ngắt timer0 : ngắt timer0 sinh ra khi thanh ghi TMR0 tràn từ FFH về 00H trong chế độ 8 bit và FFFFH về 0000H trong chế độ 16 bit Điều này sẽ set bit cờ tràn TMR1IF Ngắt có thể được che bởi việc xóa bít TMR1IE Bit TMR0IF phải được xóa bằng phần mềm bởi trình phục vụ ngắt của timer0 trước khi cho phép ngắt này hoạt động trở lại.Tóm tắt thanh ghi dao động timer0
Bảng 2.14: Các thanh ghi liên quan đến TIMER0
2.4.2 Modun timer1
16 bit timer/couter(2 thanh ghi 8 bit TMR1H, TMR1L)
• Cho phép đọc và ghi (cả 2 thanh ghi)
• Lựa chọn xung clock bên trong hoặc bên ngoài
• Ngắt tràn timer từ FFFFH về 0000H
• Reset từ modun CCP với sự kiện kích hoạt đặt biệt
• Trạng thái của xung clock hệ thống
Thanh ghi T1CON là thanh ghi điều khiển timer1, thanh ghi này điều khiển các chế độ hoạt động của modun timer1 và nội dung của các bit cho phép dao động (T1OSCEN) Timer có thể được cho phép hoặc dừng bằng việc set hoặc xóa bit điều khiển TMR1ON
Trang 29Dao động timer1 có thể sử dụng nguồn dao động phụ trong chế độ manager Khi bit T1RUN được set, dao động timer1 được cung cấp bởi xung clock
Power-hệ thống Nếu Fail-Safe Clock Monitor được cho phép và dao động timer1 bị lổi khi cung cấp cho clock hệ thống, kiểm tra tuần tự bit T1RUN sẽ chỉ ra xung clock cung cấp bởi timer1 từ dao động hay từ một nguồn khác
Timer1 có thể được sử dụng để cung cấp cho đồng hồ thời gian thực (RTC), chức năng này chỉ ứng dụng để giảm bớt các linh kiện không cần thiết bên ngoài
Bảng 2.15: Thanh ghi điều khiển TIMER1
• RD16: bit cho phép chế độ đọc ghi 16 bit
• T1RUN: bit trạng thái xung clock hệ thống timer1
• T1CKPS1: T1KPS0 bit lựa chọn tỷ lệ ngõ vào xung clock cho timer1
11 = 1:8 Prescale value
10 = 1:4 Prescale value
01 = 1:2 Prescale value
00 = 1:1 Prescale value
• T1OSCEN: bit cho phép dao động timer1
• T1SYNC: bit lựa chọn đồng bộ ngõ vào xung clock bên ngoài
• TMR1CS: bit lưa chọn nguồn xung clock timer1
• TMR1ON: bit on timer1
Hình 2.6: Sơ đồ khối TIMER1
Trang 30Hình 2.7: Sơ đồ khối TIMER1: chế độ đọc ghi 16 bit
Trang 312.5 NGẮT
PIC 18F4431 có rất nhiều nguồn ngắt và chức năng ưu tiên ngắt, chức năng này cho phép gán một ngắt ở mức ưu tiên cao hay mức ưu tiên thấp Ngắt mức ưu tiên cao có vectơ ở địa chỉ 000008h và ngắt mức ưu tiên thấp có vectơ ở địa chỉ 000018h Một ngắt thấp đang được phục sẽ bị ngưng và phục vụ ngắt cao ở
000008h nếu ngắt cao xảy ra Ngược lại, ngắt cao xảy ra thì không bao giờ bị ngắt bởi ngắt thấp
Hình 2.8: Cấu trúc ngắt của PIC 18F4431
Có tất cả 13 thanh ghi, chúng được sủ dụng để điều khiển các thao tác ngắt Chúng là những thanh ghi:
RCON
INTCON
INTCON2
INTCON3
PIR1, PIR2, PIR3
PIE1, PIE2, PIE3
IPR1, IPR2, IPR3
Trang 322.5.1 Thanh ghi INTCON
Thanh ghi INTCON là thanh ghi cho phép ghi được và đọc được, chứa các bit cờ và bit ưu tiên
Bảng 2.16: Thanh ghi điều khiển ngắt
• GIE/GIEH: bit cho phép ngắt toàn cục
• PEIE/GIEL: bit cho phep ngắt ngoại vi
• TMR0IE: bit cho phép ngắt tràn timer0
• INT0IE: bit cho phép ngắt ngoài INT0
• RBIE: bit cho phép ngắt chuyển trang thái port B
• TMR0IF: bit cờ ngắt tràn timer0
• INT0IF: bit cờ ngắt ngoài 0
• RBIF: bit cờ ngắt chuyển trạng thái port B
Bảng 2.17: thanh ghi điều khiển ngắt 2
RBPU: bit cho phép kéo lên port B
INTEDG0: bit lưa chọn cạnh ngắt ngoài 0
1 = ngắt cạnh lên
0 = ngắt cạnh xuống
INTEDG1: bit lựa chọn cạnh ngắt ngòai 1
INTEDG2: bit lựa chọn cạnh ngắt ngoài 2
Trang 33Bảng 2.18: Thanh ghi điều khiển ngắt 3
• INT2IP: bit ưu tiên ngắt ngoài INT2
1 = ưu tiên cao
0 = ưu tiên thấp
• INT1IP: bit ưu tiên ngắt ngoài INT1
• Unimplemented: Read as ‘0’
• INT2IE: bit cho phép ngắt ngoài INT2
• INT1IE: bit cho phép ngắt ngoài INT1
• Unimplemented: Read as ‘0’
• INT2IF: bit cờ ngắt ngoài INT2
• INT1IF: bit cờ ngắt ngoài INT1
2.6.1 Tính năng
• 8 kênh điều rộng xung với 4 nguồn phát chu kỳ nhiệm vụ Các chân theo từng cặp thích hợp cho điều khiển nửa cầu
• Độ phân giải 14 bit, phụ thuộc vào chu kỳ
• Tần số pwm thay đổi được
• Các ngõ ra chế độ Edge và Center-Aligned
• Chế độ phát xung đơn
• Lập trình thời gian chết (dead – time) điều khiển giữa các cặp pwm
• Hổ trợ ngắt cho cập nhật không đối xứng trong chế độ
Center-Aligned
Trang 34Hình 2.9: Sơ đồ khối modun PWM, ngõ ra bù
Hình 2.10: Sơ đồ khối modun PWM, ngõ ra độc lập Modun này chứa bốn bộ phát chu kỳ nhiệm vụ, được đánh số từ 0 đến 3
Modun có 8 chân ngõ ra pwm được đánh số từ 0 đến 7 Tám ngõ ra pwm được
nhóm lại thành những cặp đầu ra chẳn và lẽ được đánh số ngõ ra Trong chế độ bù, các ngõ ra pwm chẳn phải luôn luôn bổ sung cho các chân pwm lẽ tương ứng Ví dụ pwm0 sẽ bổ sung cho pwm1
Trang 35Thanh ghi điều khiển
Modun PWM được điều khiển bời tổng cộng 22 thanh ghi, tám trong chúng
được sử dụng để cấu hình tính năng cho modun
• Thanh ghi 0 điều khiển timer PWM (PTCON0)
• Thanh ghi 1điều khiển timer PWM (PTCON1)
• Thanh ghi 0 điều khiển PWM (PWMCON0)
• Thanh ghi 1 điều khiển PWM (PWMCON1)
• Thanh ghi điều khiển thời gian chết (DTCON)
• Thanh ghi điều khiển đè ngõ ra (OVDCOND)
• Thanh ghi trạng thái ngõ ra (OVDCONS)
• Thanh ghi cấu hình lỗi (FLTCONFIG)
Bảng 2.19: Thanh ghi 0 điều khiển timer PWM
• PTOPS3:PTOPS0: bit lựa chọn tỷ lệ ngõ ra PWM TIME BASE
00 = PWM time base input clock is FOSC/4 (1:1 prescale)
01 = PWM time base input clock is FOSC/16 (1:4 prescale)
10 = PWM time base input clock is FOSC/64 (1:16 prescale)
11 = PWM time base input clock is FOSC/256 (1:64 prescale)
• PTMOD1:PTMOD0: các bit lựa chọn chế độ PWM TIME BASE
11 = PWM time base operates in a Continuous Up/Down Count mode with interrupts for double PWMupdates
10 = PWM time base operates in a Continuous Up/Down Count mode
01 = PWM time base configured for Single-Shot mode
00 = PWM time base operates in a Free-Running mode
Trang 36Bảng 2.20: Thanh ghi 1 điều khiển timer PWM
• PTEN: bit cho phép timer PWM TIME BASE
1 = PWM time base is on
0 = PWM time base is off
• PTDIR: bit trạng thái hướng đếm PWM TIME BASE
1 = PWM time base counts down
0 = PWM time base counts up
Unimplemented: Read as ‘0’
Bảng 2.21: Thanh ghi 0 điều khiển PWM Unimplemented: Read as ‘0’
• PWMEN2:PWMEN0: PWM Module Enable bits(1)
111 = All odd PWM I/O pins enabled for PWM output(2)
110 = PWM1, PWM3 pins enabled for PWM output
101 = All PWM I/O pins enabled for PWM output(2)
100 = PWM0, PWM1, PWM2, PWM3, PWM4 and PWM5 pins enabled for PWM output
011 = PWM0, PWM1, PWM2 and PWM3 I/O pins enabled for PWM output
010 = PWM0 and PWM1 pins enabled for PWM output
001 = PWM1 pin is enabled for PWM output
000 = PWM module disabled; all PWM I/O pins are general purpose I/O
• PMOD3:PMOD0: PWM Output Pair Mode bits
For PMOD0:
1 = PWM I/O pin pair (PWM0, PWM1) is in the Independent mode
Trang 370 = PWM I/O pin pair (PWM0, PWM1) is in the Complementary mode
For PMOD1:
1 = PWM I/O pin pair (PWM2, PWM3) is in the Independent mode
0 = PWM I/O pin pair (PWM2, PWM3) is in the Complementary mode
For PMOD2:
1 = PWM I/O pin pair (PWM4, PWM5) is in the Independent mode
0 = PWM I/O pin pair (PWM4, PWM5) is in the Complementary mode
For PMOD3:(3)
1 = PWM I/O pin pair (PWM6, PWM7) is in the Independent mode
0 = PWM I/O pin pair (PWM6, PWM7) is in the Complementary mode
Bảng 2.22: Thanh ghi 1 điều khiển PWM
• SEVOPS3:SEVOPS0: PWM Special Event Trigger Output Postscale
Select bits
0000 = 1:1 Postscale
0001 = 1:2 Postscale
1111 = 1:16 Postscale
• SEVTDIR: Special Event Trigger Time Base Direction bit
1 = A Special Event Trigger will occur when the PWM time base is counting downwards
0 = A Special Event Trigger will occur when the PWM time base is counting upwards
Unimplemented: Read as ‘0’
• UDIS: PWM Update Disable bit
1 = Updates from Duty Cycle and Period Buffer registers are disabled
0 = Updates from Duty Cycle and Period Buffer registers are enabled
• OSYNC: PWM Output Override Synchronization bit
1 = Output overrides via the OVDCON register are synchronized to the PWM time base
0 = Output overrides via the OVDCON register are asynchronous
Trang 382.6.2 Chế độ FREE-RUNNING
Trong chế độ free-running thanh ghi PWM TIME BASE (PTMRL và PTMRH) sẽ bắt đầu đếm lên từ gía trị chứa trong thanh ghi chu kỳ PWM TIME BASE, khi khớp với thanh ghi PTPER (PTPERL và PTPERH) Thanh ghi PTPER
sẽ bị reset tại cạnh của xung clock kế tiếp và thời gian nền sẽ tiếp tục đếm lên cho đến khi bit PTEN được set trở lại
2.6.3 Chế độ SINGLE-SHOT MODE
Trong chế độ single-shot PWM time base sẽ bắt đầu đếm lên khi bit PTEN được set Khi giá trị trong thanh ghi PTMR giống với thanh ghi PTPER, thanh ghi PTMR sẽ bị reset tại cạnh của xung clock tiếp theo, và bit PTEN sẽ được xóa bởi phần cứng để dừng bộ time base
2.6.4 Chế độ CONTINUOUS UP/DOWN COUNT
Trong chế độ continuous up/down count, pwm time base sẽ bắt đầu đếm lên
từ giá trị trong thanh ghi PTPER cho đến khi giống với thanh ghi PTMR Tại cạnh của xung clock tiếp theo, timer sẽ bắt đầu đếm xuống bit PTDIR trong thanh ghi PTCON1 chỉ cho phép đọc sẽ chỉ ra hướng đếm bit PTDIR sẽ được set khi timer bắt đầu đếm