Trong trường hợp nguồn điện ở đầu vào và đại lượng ở ngõ ra không giống nhau, ví dụ bộ nghịch lưu cung cấp dòng điện xoay chiều từ nguồn điện áp một chiều, ta gọi chúng là bộ nghịch lưu
Trang 1NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
TPHCM, Ngày Tháng Năm 2010 Chữ ký của giáo viên
Tống Thanh Nhân
Trang 2NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
TPHCM, Ngày Tháng Năm 2010
Chữ ký của giáo viên
Nguyễn Hữu Phước
Trang 3MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
MỤC LỤC
LỜI CẢM ƠN
LỜI NÓI ĐẦU 1
CHƯƠNG 1 : DẪN NHẬP 2
1.1.ĐẶT VẤN ĐỀ 2
1.2.GIỚI HẠN ĐỀ TÀI 2
1.3.MỤC ĐÍCH NGHIÊN CỨU 2
1.4.PHƯƠNG PHÁP NGHIÊN CỨU 2
CHƯƠNG 2 : BỘ NGHỊCH LƯU 4
2.1.BỘ NGHỊCH LƯU ÁP 4
2.2 BỘ NGHỊCH LƯU ÁP MỘT PHA 5
2.3.BỘ NGHỊCH LƯU ÁP BA PHA 6
2.4.BỘ NGHỊCH LƯU ÁP ĐA BẬC 7
2.5.ĐIỆN ÁP BỘ NGHỊCH LƯU ÁP BA PHA 9
CHƯƠNG 3 : CẤU TRÚC BÊN TRONG CỦA PIC 16F877A 10
3.1 Sơ lược về vi điều khiển PIC16F877A 10
3.2 Sơ lược về các chân của PIC16F877A 11
3.3 Một số đặc điểm đặc biệt của CPU 16
3.4 Tổ chức bộ nhớ 23
3.4.1 Bộ nhớ chương trình 23
3.4.2 Bộ nhớ dữ liệu 24
3.5 Data EEPROM và Flash program memory 34
Trang 43.6 I/O Port 35
3.7.Timer 46
3.7.1.Timer0 46
3.7.2 Timer1 48
3.7.3 Timer2 51
3.8 Module CCP 52
3.8.1 Capture 53
3.8.2 Compare 53
3.8.3 PWM 54
3.9 Module MSSP (Master synchronous serial Port) 58
3.10 Bộ biến đổi ADC 60
3.11 Module comparator 66
3.12 Module điện áp tham chiếu so sánh 68
CHƯƠNG 4 : TÍNH TOÁN THI CÔNG MẠCH 71
4.1.Sơ đồ khối 71
4.2.Sơ đồ nguyên lý 72
4.3.Nguyên lý hoạt động 73
4.4.Tính toán mạch 84
4.4.1.Khối nguồn 84
4.4.2.Khối xử lý trung tâm 85
4.4.3.Khối giao tiếp 86
4.4.4.Khối đệm 87
4.4.5.Khối công suất 89
4.5 Lưu đồ giải thuật 90
4.6.Chương trình chính 91
4.7.Kết quả thi công mạch 104
CHƯƠNG 5 : KẾT LẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 109
Trang 55.1.Kết luận 109
5.2.Hướng phát triển của đề tài 109
PHỤ LỤC
TÀI LIỆU THAM KHẢO
Trang 6
Nhóm chúng em xin chân thành cảm ơn : Quí thầy cô trường CAO ĐẲNG KỸ THUẬT CAO THẮNG đã giảng dạy cho chúng em nhiều kiến thức quí báu Bộ môn điện tử cùng tất cả quí thầy cô trong khoa Điện tử - Tin học đã giảng dạy những kiến thưc chuyên môn làm cơ sở để thực hiện tốt đồ án tốt nghiệp và tạo điều kiện thuận lợi cho chúng em hoàn tất khóa học
Đặc biệt, thầy TỐNG THANH NHÂN – giáo viên hướng dẫn đề tài đã
nhiệt tình giúp đỡ và cho chúng em những lời chỉ dạy qúi báu, Giúp chúng em định hướng tốt trong khi thực thi đề tài
Tất cả các bạn đã giúp đỡ và động viên nhóm trong suốt quá trình làm đồ
án tốt nghiệp
Mai Văn Minh An
Lê Trung Hiếu Lớp CĐ ĐT 07A Khoa Điện Tử - Tin học
Trường Cao Đẳng Kỹ Thuật Cao Thắng TPHCM,Ngày 09 Tháng 07 Năm 2010
Trang 7LỜI NÓI ĐẦU
Ngày nay, khi mà cả thế giới như đang nóng lên vì sự vận động, phát triển
về mọi mặt như kinh tế, chính trị, khoa học kỹ thuật….v…v Trong đó, những ứng dụng của khoa học kỹ thuật tiên tiến đã và đang làm cho thế giới ngày càng thay đổi, văn minh hơn và hiện đại hơn Sự phát triển của Kỹ thuật điện tử đã tạo
ra hàng lọat những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho họat động của con người đạt hiệu quả cao
Là một trong những sinh viên theo học ngành điện tử, bản thân cũng có những mong ước được góp một phần công sức cho xã hội bằng những việc làm
có ý nghĩa thực tế Từ những kiến thức đã được truyền đạt sau ba năm theo học tại trường Cao Đẳng Kỹ Thuật Cao Thắng, hoà mình vào xu hướng chung của thời đại, cùng sự nghiệp công nghiệp hoá hiện đại hoá đất nước, đề tài tốt nghiệp: “Thiết kế mạch nghịch lưu đa cấp ” ra đời
Đề tài là sự kết hợp giữa kiến thức và nhận thức công nghệ trong việc tạo
ra một sản phẩm có giá trị thực tiễn nên có rất nhiều yêu cầu được đặt ra cho sự hoàn thiện Trong suốt thời gian thực hiện đề tài là một quá trình làm việc nghiêm túc và nỗ lực của bản thân người thực hiện, cùng sự chỉ dẫn nhiệt tình của giáo viên hướng dẫn; song chắc chắn không tránh khỏi những hạn chế và thiếu sót Người thực hiện đề tài rất mong nhận được những ý kiến đóng góp quý báu cùng những phê bình, chỉ dẫn của Thầy Cô và các bạn sinh viên
Sinh viên thực hiện :
Mai Văn Minh An
Lê Trung Hiếu
Trang 8CHƯƠNG 1 : DẪN NHẬP
1.1 ĐẶT VẤN ĐỀ:
Trong cuộc sống hàng ngày của chúng ta, điện là nhu cầu không thể thiếu trong cuộc sống hàng ngày cũng như trong các công ty, xí nghiệp,mà đôi khi lưới điện quốc gia không thể đáp tất cả những nhu cầu đó
Để góp phần đáp ứng đủ nguồn điện cung cấp cho những nhu cầu đó Cùng với sự phát triển của vi điều khiển em chọn đề tài ”Thiết kế và thi công mạch nghịch lưu đa cấp” Hệ thống này có các ưu điểm nổi bật sau:
Đơn giản, dễ dàng thay đổi nhờ lập trình
Tin cậy
Khả năng xử lý nhanh và linh động
Giá thành tương đối rẻ
1.2.GIỚI HẠN ĐỀ TÀI
Do giới hạn về thời gian, tài liệu tham khảo và nhiều điều kiện khách quan khác nhau, nên trong đề tài này em chỉ nghiên cứu với nội như sau:
Tìm hiểu họ vi điều khiển PIC16F877A
Tìm hiểu C căn bản cho PIC
Thiết kế và thi công board điều khiển
Viết chương trình điều khiển dựa trên phần cứng đã và thi công
1.3.MỤC ĐÍCH NGHIÊN CỨU
Giúp em nắm lại những kiến thức đã học, mở rộng kiến thức đã có Trong quá trình học tập ít va chạm nên khi làm đề tài sẽ giúp cho em va chạm thực tế sẽ bớt bở ngở sau khi ra trường đi làm
Em lựu chọn vi điều khiển PIC với những lí do sau đây:
Tốc độ xử lý lớn hơn so với các bộ xử lý thông thường hoạt động cùng tần số của đồng hồ xung nhịp
Các bộ xử lý PIC có kiến trúc Harvard và kiến trúc Von-Neunam
Đối với kiến trúc harvard thì có bộ nhớ dữ liệu và bộ nhớ chương trình tách rời nhau Kiến trúc này giúp cho người viết chương trình dễ kiểm soát, gốp phần tăng tốc độ xử lý trong quá trình chạy chương trình
Đối với kiến trúc Von-Neanam, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung trong một bộ nhớ, do đó có thể tổ chức ,cân đối một cách linh họat bộ nhớ chương trình và bộ nhớ dữ liệu
Giá thành rẻ Phổ biến rộng trên thị trường
Tài liệu tham khảo đọc cũng dễ hiểu
1.4.PHƯƠNG PHÁP NGHIÊN CỨU:
1.4.1.Các bước tiến hành nghiên cứu :
Chọn đề tài
Chính xác hóa đề tài
Soạn đề cương
Trang 9 Thu thập tài liệu
Kiểm tra và cho chạy thử trên mô hình
1.4.2 Đối tượng nghiên cứu:
Họ vi điều khiển PIC 16F877A
Lập trình C cho PIC
Các chương trình hổ trợ trong quá trình làm như orcad 9.2(vẽ và thi công mạch in),CCS(dùng để viết chương trình)
1.4.3 Phương pháp nghiên cứu:
Sử dụng phương pháp quan sát và tham khảo tài liệu là chính
Trang 10Nguồn một chiều cung cấp cho bộ nghịch lưu áp có tính chất nguồn điện
áp và nguồn cho bộ nghịch lưu dòng có tính nguồn dòng điện Các bộ nghịch lưu tương ứng được gọi là bộ nghịch lưu áp nguồn áp và bộ nghịch lưu dòng nguồn dòng hoặc gọi tắt la bộ nghịch lưu áp và bộ nghịch lưu dòng
Trong trường hợp nguồn điện ở đầu vào và đại lượng ở ngõ ra không giống nhau, ví dụ bộ nghịch lưu cung cấp dòng điện xoay chiều từ nguồn điện áp một chiều, ta gọi chúng là bộ nghịch lưu điều khiển dòng điện từ nguồn điện áp hoặc bộ nghịch lưu dòng nguồn áp
Các bộ nghịch lưu tạo thành bộ phận chủ yếu trong cấu tạo của bộ biến tần Ứng dụng quan trọng và tương đối rộng rãi của chúng nhằm vào lĩnh vực truyền động điện động cơ xoay chiều với độ chính xác cao Trong lĩnh vực tần số cao, bộ nghịch lưu được dùng trong các thiết bị lò cảm ứng trung tần, thiết bị hàn trung tần
Bộ nghịch lưu còn được dùng làm nguồn điện xoay chiều cho nhu cầu gia đình, làm nguồn điện liên tục UPS, điều khiển chiếu sáng, bộ nghịch lưu còn được ứng dụng vào lĩnh vực bù nhuyễn công suất phản kháng
Các tải xoay chiều thường mang tính cảm kháng (ví dụ động cơ không đồng bộ, lò cảm ứng), dòng điện qua các linh kiện không thể ngắt bằng quá trình chuyển mạch tự nhiên Do đó, mạch bộ nghịch lưu thường chứa linh kiện tự kích ngắt để có thể điều khiển quá trình ngắt dòng điện
Trong các trường hợp đặc biệt như mạch tải cộng hưởng, tải mang tính chất dung kháng (động cơ đồng bộ kích từ dư ), dòng điện qua các linh kiện có thể
bị ngắt do quá trình chuyển mạch tự nhiên phụ thuộc vào điện áp nguồn hoặc phụ thuộc vào điện áp mạch tải
Khi đó, linh kiện bán dẫn có thể chọn là thyristor (SCR)
2.1 BỘ NGHỊCH LƯU ÁP
Bộ nghịch lưu áp cung cấp và điều khiển điện áp xoay chiều ở ngõ ra
Trong các trường hợp khảo sát dưới đây ta xét bộ nghịch lưu áp với quá trình chuyển mạch cưỡng bức sử dụng linh kiện có khả năng điều khiển ngắt dòng điện
Nguồn điện áp một chiều có thể ở dạng đơn giản như acquy, pin điện hoặc
ở dạng phức tạp gồm điện áp xoay chiều được chỉnh lưu và lọc phẳng
Linh kiện trong bộ nghịch lưu áp có khả năng kích đóng và kích ngắt
dòng điện qua nó, tức đóng vai trò một công tắc Trong các ứng dụng công suất nhỏ và vừa, có thể sử dụng transistor BJT, MOSFET, IGBT làm công tắc và ở phạm vi công suất lớn có thể sử dụng GTO, IGCT hoặc SCR kết hợp với bộ chuyển mạch
Trang 11Với tải tổng quát, mỗi công tắc còn trang bị một diode mắc đối song với nó
Các diode mắc đối song này tạo thành mạch chỉnh lưu cầu không điều khiển có chiều dẫn điện ngược lại với chiều dẫn điện của các công tắc Nhiệm vụ của bộ chỉnh lưu cầu diode là tạo điều kiện thuận lợi cho quá trình trao đổi công suất ảo giữa nguồn một chiều và tải xoay chiều, qua đó hạn chế quá điện áp phát sinh khi kích ngắt các
công tắc
2.2.BỘ NGHỊCH LƯU ÁP MỘT PHA
Bộ nghịch lưu áp một pha dạng mạch cầu (còn gọi là bộ nghịch lưu dạng chữ H) (hình H5.1a) chứa 4 công tắc và 4 diode mắc đối song
Giản đồ kích đóng các công tắc và đồ thị áp tải được vẽ trên hình 5.1b
Bộ nghịch lưu cũng có thể mắc dưới dạng mạch tia (hình H5.2)
Mạch gồm hai công tắc và hai diode mắc đối song với chúng Mạch tải và ngõ ra của bộ nghịch lưu cách ly qua máy biến áp với cuộn sơ cấp phân chia Phía trong trường hợp không sử dụng máy biến áp cách ly phía tải, nguồn
điện áp một chiều cần thiết kế với nút phân thế ở giữa (hình H5.3), đây là dạng mạch nghịch lưu áp nửa cầu
Trang 122.3 BỘ NGHỊCH LƯU ÁP BA PHA
Trang 13Trong thực tế mạch bộ nghịch lưu áp ba pha chỉ gặp ở dạng mạch cầu (hình H5.4a).Mạch chứa 6 công tắc S1,S2 S6 và 6 diode đối song D1,D2 D6
Tải ba pha có thể mắc ở dạng hình sao (H5.4b) hoặc tam giác (H5.4c)
2.4 BỘ NGHỊCH LƯU ÁP ĐA BẬC
(Multi-level Voltage source Inverter)
Các bộ nghịch lưu vừa được mô tả ở phần 5.1.1 và 5.1.2 chứa 2 khóa bán dẫn (IGBT) trên mỗi nhánh pha tải Chúng được gọi chung là lọai nghịch lưu
áp 2 bậc (two- level VSI), được áp dụng rộng rãi trong phạm vi công suất vừa và nhỏ Khái niệm hai bậc xuất phát từ quá trình điện áp giữa đầu một pha tải (vị trí 1,2,3) đến một điểm điện thế chuẩn trên mạch dc (điểm 0) (pole to phase voltage) thay đổi giữa hai bậc giá trị khác nhau, ví dụ khi chọn điểm có điện thế chuẩn là tâm nguồn dc thì điện áp từ pha tải đến tâm nguồn thay đổi giữa (+U/2) và (-U/2) trong quá trình đóng ngắt các linh kiện Bộ nghịch lưu áp 2 bậc có nhược điểm là tạo điện áp cung cấp cho cuộn dây động cơ với độ dốc (dV/dt) khá lớn và gây ra một số vấn đề khó khăn bởi tồn tại trạng thái khác zero của tổng điện thế từ các pha đến tâm nguồn dc (common-mode voltage) (xem dạng điện áp uNO) Bộ nghịch lưu áp đa bậc được phát triển để giải quyết các vấn đề gây ra nêu trên của bộ nghịch lưu áp 2 bậc
và thường được sử dụng cho các ứng dụng điện áp cao và công suất lớn
Ưu điểm của bộ nghịch lưu áp đa bậc: công suất của bộ nghịch lưu áp
tăng lên; điện áp đặt lên các linh kiện bị giảm xuống nên công suất tổn hao do quá trình đóng ngắt của linh kiện cũng giảm theo; với cùng tần số đóng ngắt, các thành phần sóng hài bậc cao của điện áp ra
giảm nhỏ hơn so với trường hợp bộ nghịch lưu áp hai bậc
Đối với tải công suất lớn, điện áp cung cấp cho các tải có thể đạt giá trị tương đối lớn,
Các cấu hình cơ bản của bộ nghịch lưu áp đa bậc:
Cấu hình dạng cascade (Cascade inverter):[28],[48] -hình H5.5b, sử
dụng các nguồn dc riêng, thích hợp sử dụng trong trường hợp nguồn dc có sẵn ví
dụ dưới dạng acquy, battery Cascade inverter gồm nhiều bộ nghịch lưu áp cầu
Trang 14một pha ghép nối tiếp, các bộ nghịch lưu áp dạng cầu một pha này có các nguồn
DC riêng
Bằng cách kích đóng các linh kiện trong mỗi bộ nghịch lưu áp một
pha, 3 mức điện áp (-U,0,U) được tạo thành Sự kết hợp họat động của n bộ nghịch lưu áp trên một nhánh pha tải sẽ tạo nên n khả năng mức điện áp theo chiều âm (- U,-2U,-3U, ,-nU), n khả năng mức điện áp theo chiều dương (U,2U,3U, ,nU) và mức điện áp 0 Như vậy, bộ nghịch lưu áp dạng cascade gồm n bộ nghịch lưu áp một pha trên mỗi nhánh sẽ tạo thành bộ nghịch lưu (2n+1) bậc
Tần số đóng ngắt trong mỗi modul của dạng mạch này có thể giảm đi
n lần và dv/dt cũng giảm đi như vậy Điện áp trên áp đặt lên các linh kiện giảm đi 0,57n lần Cho phép sử dụng linh kiện IGBT điện áp thấp
Ngoài dạng mạch gồm các bộ nghịch lưu áp một pha, mạch nghịch lưu áp đa bậc còn có dạng ghép từ ngõ ra của các bộ nghịch lưu áp 3 pha (H5.5c) Cấu trúc này cho phép giảm dv/dt và và tần số đóng ngắt còn 1/3 Mạch cho phép sử dụng các cấu hình nghịch lưu áp ba pha chuẩn Mạch nghịch lưu đạt được sự cân bằng điện áp các nguồn dc, không tồn tại dòng cân bằng giữa các module Tuy nhiên, cấu tạo mạch đòi hỏi sử dụng các máy biến áp ngõ ra
Cấu hình nghịch lưu chứa cặp diode kẹp: (Neutral point Clamped Multilevel Inverter (NPC) hoặc- diode clamped multilevel inverter):-hình H5.5a, sử dụng thích hợp khi các nguồn dc tạo nên từ hệ thống điện ac Bộ nghịch lưu đa bậc chứa các cặp diode kèm có một mạch nguồn DC được phân chia thành một số cấp điện áp nhỏ hơn nhờ chuỗi các tụ điện mắc nối tiếp
Giả sử nhánh mạch dc gồm n nguồn có độ lớn bằng nhau mắc nối tiếp Điện
áp pha – nguồn dc có thể đạt được (n+1) giá trị khác nhau và từ đó bộ nghịch lưu được gọi là bộ nghịch lưu áp (n+1) bậc Ví dụ chọn mức điện thế 0 ở cuối dãy
Trang 15nguồn, các mức điện áp có thể đạt được gồm (0,U,2U,.,nU) Điện áp từ một pha tải
(ví dụ pha a) thông đến một vị trí bất kỳ trên mạch dc (ví dụ M) nhờ cặp diode
kẹp tại điểm đó (ví dụ D1, D1‟) Để điện áp pha- nguồn dc đạt được mức điện áp
nêu trên (ua0=U), tất cả các linh kiện bị “kẹp” giữa hai diode (D1, D1‟) –gồm n
linh kiện nối tiếp liên tục kề nhau, phải được kích đóng (ví dụ S1,
S5‟,S4‟,S3‟,S2‟), các linh kiện còn lại sẽ bị khóa theo qui tắc kích đối nghịch
Tương ứng với 6 trường hợp kích đóng linh kiện “bị kẹp” giữa 6 cặp diode (hai
cặp diode “kẹp” ở hai vị trí biên là trường hợp đặc biệt), ta thu được 6 mức điện
áp pha- nguồn dc : 0,U,2U, ,5U Vì có khả năng tạo ra 6 mức điện áp pha- nguồn
dc nên mạch nghịch lưu trên hình H5.5a còn gọi là bộ nghịch lưu 6 bậc
Dạng mạch nghịch lưu áp đa bậc dùng cặp diode kẹp cải tiến dạng
sóng điện áp tải và giảm shock điện áp trên linh kiện n lần Với bộ nghịch lưu ba
bậc, dv/dt trên linh kiện và tần số đóng ngắt giảm đi một nửa Tuy nhiên với n>3,
mức độ chịu gai áp trên các diode sẽ khác nhau Ngoài ra, cân bằng điện áp giữa các
nguồn dc (áp trên tụ) trở nên khó khăn, đặc biệt khi số bậc lớn
2.5 ĐIỆN ÁP BỘ NGHỊCH LƯU ÁP 3 PHA
Giả thiết tải ba pha đối xứng thỏa mãn hệ thức:
ut1 + ut2 + ut3 = 0 (5.1)
Ta tưởng tượng nguồn áp U được phân chia làm hai nửa bằng nhau với
điểm nút phân thế O (một cách tổng quát, điểm phân thế 0 có thể chọn ở vị trí bất
kỳ trên mạch nguồn DC)
Gọi N là điểm nút của tải ba pha dạng sao Điện áp pha tải ut1,ut2,ut3 Ta
có:
ut1= u10- uNO (5.2)
ut2 = u20- uNO
ut3 = u30-uNO
Điện áp u10, u20 , u30 được gọi là các điện áp pha -tâm nguồn của
các pha 1,2,3 Các điện áp ut1, ut2, ut3; u10, u20, u30 và uNO có chiều dương
qui ước vẽ trên hình H5.4a Cộng các hệ thức trên và để ý rằng ut1+ut2+ut3=0, ta
có:
Điện áp dây trên tải:
ut12 =u10 - u20
ut23 = u20 - u30 (5.6)
ut31 = u30 -u10
* Hệ quả: Quá trình điện áp ( và do đó quá trình dòng điện) ngõ ra của bộ
nghịch lưu áp ba pha sẽ được xác định khi ta xác định được các điện áp trung
gian u10, u20, u30
* Xác định điện áp pha - tâm nguồn cho bộ nghịch lưu áp Cặp công tắc
cùng pha: gồm hai công tắc cùng mắc chung vào một pha tải, ví dụ (S1S4),
(S3,S6) và (S5,S2) là các cặp công tắc cùng pha
Qui tắc kích đóng đối nghịch: cặp công tắc cùng pha được kích đóng theo
qui tắc đối nghịch nếu như hai công tắc trong cặp luôn ở trạng thái một được kích
đóng và một được kích ngắt
Trạng thái cả hai cùng kích đóng (trạng thái ngắn mạch điện áp nguồn )
hoặc cùng kích ngắt không được phép
Trang 16CHƯƠNG 3:
CẤU TRÚC BÊN TRONG CỦA VI ĐIỀU
KHIỂN PIC 16F877A
3.1 Sơ lược về Vi điều khiển PIC 16F877A:
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng,bộ nhớ đủ cho hầu hết các ứng dụng thông thường).Cấu trúc tổng quát của PIC 16F877A như sau:
-8 K Flash ROM
-368 Bytes RAM
-256 Bytes EEPROM
-5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập
-2 bộ định thời 8 bits (Timer 0 và Timer 2)
-Một bộ định thời 16 bits (Timer1) có thể hoạt động trong chế độ tiết kiệm năng lượng (Sleep Mode )với nguồn xung clock ngoài
-2 bộ CCP( Capture / Compare/ PWM)
-1 bộ biến đổi AD 10 bits, 6 ngõ vào
-2 bộ so sánh tương tự (Compartor)
-1 bộ định thời giám sát (WatchDog Timer)
-Một cổng song song 8 bits với các tín hiệu điều khiển
-Một cổng nối tiếp
-15 nguồn ngắt
-Có chế độ tiết kiệm năng lượng
-Nạp chương trình bằng cổng nối tiếp ICSP
-35 tập lệnh có độ dài 14 bits
-Tần số hoạt động tối đa 20MHz
Trang 173.2.Sơ lƣợc về các chân của PIC 16F877A:
Hình 1.1
Hình 1.2
Trang 21Hình 1.3
Trang 223.3 Một số điểm đặc biệt của CPU:
Trang 23Lưu ý: Tụ có giá trị lớn sẽ tăng tính ổn định của dao động nhưng cũng làm tăng thời gian khởi động
Chế độ dao động RC được sử dụng như một giải pháp tiết kiệm trong các ứng dụng không cần sự chính xác về thời gian
* Cách tính chu kì máy:
Ví dụ ta sử dụng thạch anh 10Mhz Khi đó:
Tần số dao động của thạch anh là Fosc = 10Mhz
→ Chu kỳ dao đông của thạch anh là Tosc = 1/Tosc= 1/10*106 (s) Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*106(s) = 0.4 µs = 400 ns
3.3.2 Reset:
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau như:
Trang 253.3.3 MCLR:
PIC16F877A có một bộ lọc nhiễu ở phần MCLR Bộ lọc nhiễu này
sẽ phát hiện và bỏ qua các tín hiệu nhiễu
Ngõ vào MCLR trên chân 4 của PIC16F877A Khi đƣa chân này xuống thấp thì các thanh ghi bên trong VĐK sẽ đƣợc tải những giá trị
* Các thanh ghi chức năng ngắt: INTCON,PIE1,PIR1, PIE2,PIR2 (các
thanh ghi này sẽ đƣợc nghiên cứu ở các phần sau)
Trang 263.3.5 Chế độ nguồn thấp Sleep (Power down Mode) :
Đây là chế độ hoạt động của vi điều khiển khi lệnh SLEEP được thực thi Khi đó nếu được cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tục hoạt động, bit PD(STATUS<3>) được reset về 0, bit TO được set, oscillator ngưng tác động và các PORT giữ nguyên trạng thái như trước khi lệnh SLEEP được thực thi Do khi ở chế độ SLEEP, dòng cung cấp cho vi điều khiển là rất nhỏ nên ta cần thực hiện các bước sau trước khi vi điều khiển thực thi lệnh SLEEP:
Đưa tất cả các pin về trạng thái VDD hoặc VSS
Tạm ngưng hoạt động cuả khối A/D và không cho phép các xung clock từ bên ngoài tác động vào vi điều khiển
Để ý đến chức năng kéo lên điện trở ở PORTB
Pin MCLR phải ở mức logic cao
Đánh thức vi điều khiển
-Tác động của reset ngoại vi thông qua pin MCLR
-Tác động của WDT khi bị tràn
-Tác động từ các ngắt ngoại vi từ PORTB (PORTB Interrupt on change hoặc pin INT) Các bit PD và TO được dùng để thể hiện trạng thái của vi điều khiển và để phát hiện nguồn tác động làm reset vi điều khiển Bit PD được set khi vi điều khiển được cấp nguồn và được reset về 0 khi vi điều khiển ở chế độ sleep Bit TO được reset về 0 khi WDT tác động do bộ đếm bị tràn
Trang 27Ngoài ra còn có một số nguồn tác động khác từ các chức năng ngoại vi bao gồm:
-Đọc hay ghi dữ liệu thông qua PSP (Parallel Slave Port)
-Ngắt Timer1 khi hoạt động ở chế độ đếm bất đồng bộ
-Ngắt CCP khi hoạt động ở chế độ Capture
-Các hiện tượng đặc biệt làm reset Timer1 khi hoạt động ở chế độ đếm bất đồng
bộ dùng nguồn xung clock ở bên ngoài)
- Ngắt SSP khi bit Start/Stop được phát hiện
-SSP hoạt động ở chế độ Slave mode khi truyền hoặc nhận dữ liệu
-Tác động của USART từ các pin RX hay TX khi hoạt động ở chế độ Slave mode đồng bộ
-Khối chuyển đổi A/D khi nguồn xung clock hoạt động ở dạng RC
-Hoàn tất quá trình ghi vào EEPROM
-Ngõ ra bộ so sánh thay đổi trạng thái Các tác động ngoại vi khác không có tác dụng đánh thức vi điều khiển vì khi ở chế độ sleep các xung clock cung cấp cho vi điều khiển ngưng hoạt động Bên cạnh đó cần cho phép các ngắt hoạt động trước khi lệnh SLEEP được thực thi để bảo đảm tác động của các ngắt Việc đánh thức vi điều khiển từ các ngắt vẫn được thực thi bất chấp trạng thái của bit GIE Nếu bit GIE mang giá trị 0, vi điều khiển sẽ thực thi lệnh tiếp theo sau lệnh SLEEP của chương trình (vì chương trình ngắt không được cho phép thực thi) Nếu bit GIE được set trước khi lệnh SLEEP được thực thi, vi điều khiển sẽ thực thi lệnh tiếp theo của chương trình và sau đó nhảy tới địa chỉ chứa chương trình ngắt (0004h) Trong trường hợp lệnh tiếp theo không đóng vai trò quan trọng trong chương trình, ta cần đặt thêm lệnh NOP sau lệnh SLEEP để bỏ qua tác động của lệnh này, đồng thời giúp ta dễ dàng hơn trong việc kiểm soát hoạt động của chương trình ngắt Tuy nhiên cũng có một số điểm cần lưu ý như sau:
Nếu ngắt xảy ra trước khi lệnh SLEEP được thực thi, lệnh SLEEP sẽ không được thực thi và thay vào đó là lệnh NOP, đồng thời các tác động của lệnh SLEEP cũng sẽ được bỏ qua
Nếu ngắt xảy ra trong khi hay sau khi lệnh SLEEP được thực thi, vi điều khiển lập tức được đánh thức từ chế độ sleep, và lệnh SLEEP sẽ được thực thi ngay sau khi vi điều khiển được đánh thức
Để kiểm tra xem lệnh SLEEP đã được thực thi hay chưa, ta kiểm tra bit
PD Nếu bit PD vẫn mang giá trị 1 tức là lệnh SLEEP đã không được thực thi và thay vào đó là lệnh NOP
Trang 28Bên cạnh đó ta cần xóa WDT để chắc chắn rằng WDT đã được xóa trước khi thực thi lệnh SLEEP, qua đó cho phép ta xác định được thời điểm vi điều khiển được đánh thức do tác động của WDT
3.3.6 Bộ định thời giám sát (Watch Dog Timer -WDT):
Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy nếu khơng cĩ gì trục trặc xảy ra thì nĩ sẽ khơng bao giờ dừng lại, như vậy bạn phải làm một vịng lặp để khi chương trình chạy đến điểm cuối thì nĩ lại quay trở
về điểm bắt đầu Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểm tra một chân input, nếu nĩ lên mức cao thì con Pic sẽ tiếp tục kiểm tra một chân input thứ hai cĩ lên mức cao hay khơng, nếu chân input thứ hai khơng lên mức cao, con Pic sẽ ngồi đĩ chờ và nĩ sẽ chỉ thốt ra khỏi chỗ ngồi của nĩ nếu chân input thứ hai lên mức cao
Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình, bạn compiled nĩ thành cơng, và ngay cả bạn đã cho chạy mơ phỏng từng bước, từng bước một trên máy tính, bằng MPLAB chẳng hạn, cĩ vẽ như mọi chuyện đều tốt, bạn đem nạp vào con Pic Sau một thời gian chạy thử, con Pic thình lình bị kẹt vào nơi nào đĩ trong chương trình mà khơng thể thốt ra được trạng thái hiện tại Điều gì là cần thiết để giải quyết hai trường hợp trên, reset lại hay vẫn để cho nĩ bị kẹt khơng thốt ra được ?, đĩ là mụch đích của mạch watchdog
Mạch watchdog thì khơng phải là mới mẽ gì, cĩ rất nhiều microprocessors và microcontrollers đã cĩ mạch watchdog, nhưng mà nĩ làm việc ra sao?
Bên trong con Pic cĩ một mạch RC, mạch này cung cấp 1 xung Clock độc lập với bất kỳ xung Clock nào cung cấp cho Pic Khi Watchdog Timer (viết tắt là WDT) được cho phép (enabLed), nĩ sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến FFh, khi nĩ tăng từ FFh đến 00 ( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm
gì, chỉ cĩ 1 cách là ngăn khơng cho WDT đếm tới 00
Khi con Pic bị kẹt khơng thể thốt ra khỏi tình trạng hiện tại thì WDT vẫn tiếp tục đếm mà khơng bị bất kỳ điều gì ngăn cấm nĩ đếm tới FF và đến FF+1, vì vậy nĩ sẽ reset con Pic làm cho chương trình phải khởi động lại từ đầu
Để sử dụng WDT chúng ta cần làm 3 việc
Thứ nhất, cần thời gian bao lâu để reset WDT?
Thứ hai, làm sao xố WDT?
Cuối cùng, chúng ta phải nĩi cho con Pic biết chương trình cho phép WDT hoạt động
Trang 30PIC16F877A có bộ đếm chương trình dài 13 bits có thể định địa chỉ cho khoảng không gian nhớ 8K x 14bits Không gian bộ nhớ này được chia làm 4 trang, có địa chỉ từ 0005h đến 1FFFh
Mọi sự truy cập ngoài vùng không gian nhớ này sẽ không có tác dụng Ngoài ra, bộ nhớ chương trình còn bao gồm một ngăn xếp (Stack) 8 mức Vector Reset được đặt tại địa chỉ 0000h và vector ngắt được đặt tại địa chỉ
0004h
3.4.2 Bộ nhớ dữ liệu
Trang 31
Bộ nhớ dữ liệu bao gồm 4 Bank: Bank 0, Bank1, Bank2 và Bank3 Mỗi bank có dung lƣợng 128 Bytes, bao gồm vùng Ram đa mục đích (GPR) và vùng thanh ghi chức năng đặc biệt (SFR)
Các Bank này đƣợc lựa chọn bằng 2 bit ở thanh ghi STATUS là RP0(Status<5>) và RP1(Status<6>)
- Bank 0: 96 Bytes từ địa chì 20h đến địa chỉ 7Fh
- Bank 1: 80 Bytes từ địa chì A0h đến địa chỉ EFh
- Bank 2: 96 Bytes từ địa chì 110h đến địa chỉ 16Fh
- Bank 1: 96 Bytes từ địa chì 190h đến địa chỉ 1EFh
3.4.2.2 Vùng Ram thanh ghi chức năng đặc biệt
Các thanh ghi chức năng đặc biệt đƣợc sử dụng bởi bộ xử lí trung tâm CPU hoặc các module ngoại vi để điều khiển hoạt động của VĐK Các thanh ghi chức năng đặc biệt này đƣợc chia làm 2 loại: loại thứ nhất dùng cho các chức năng của CPU, loại thứ 2 dùng cho các chức năng ngoại vi
Trang 32Bảng tóm tắt các thanh ghi chức năng đặc biệt:
Trang 333.4.2.3 Các thanh ghi chức năng đặc biệt
3.4.2.3.1 Thanh gi trạng thái (status register)
Thanh ghi trạng thái chứa các trạng thái số học của bộ ALU, trạng thái Reset và các bit chọn Bank của bộ nhớ dữ liệu
Trang 34Bit 6 – 5 RP1 – RP0: bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ trực tiếp)
Bit 4 TO: time out bit
1: Lệnh xóa WDT hoặc Sleep xảy ra
0: WDT hoạt động
Bit 3 PD: Power down bit
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT 0: Thực thi lệnh Sleep
Bit 2 Z: bit Zero
1: Khi kết quả của một phép toán bằng 0
0: Khi kết quả của một phép toán khác 0
Bit 1 DC: Digit Carry
1: Có một số nhớ đƣợc sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp
0: không có số nhớ sinh ra
Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ
0: Không có số nhớ sinh ra
3.4.2.3.2 Thanh ghi tùy chọn (Option _Reg Register)
Bit 7 RBPU: bit cho phép PORTB đƣợc kéo lên nguồn
1: Không cho phép PORTB kéo lên nguồn
0: Cho phép PORTB kéo lên nguồn
Bit 6 INTEDG: bit lựa chọn cạnh tác động ngắt
1: Ngắt sẽ đƣợc tác động bởi cạnh lên của chân RB0/INT 0: Ngắt sẽ đƣợc tác động bởi cạnh xuống của chân RB0/INT Bit 5 T0CS: bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI 0: Xung Clock cung cấp bởi nguồn dao động nội
Bit 4 T0SE: bit lựa chọn cạnh nào của xung clock tác động lên timer 0
1: cạnh xuống 0: cạnh lên
Trang 35Bit 3 PSA: bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0
hay WDT 1: tốc độ đếm PS2:PS0 sẽ tác động lên WDT 0: tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0 Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm
1: cho phép ngắt ngoại vi 0: không cho phép
Bit 5 TMR0IE: bit cho phép ngắt khi timer 0 tràn
1: cho phép 0: không cho phép Bit 4 INTE:bit cho phép ngắt ngoài RB0/INT
1: cho phép 0: không cho phép Bit 3 RBIE: cho phép ngắt khi trạng thái PORTB thay đổi
1: cho phép 0: không cho phép Bit 2 TMR0IF: cờ báo ngắt Timer 0
1: Timer0 tràn 0: timer 0 chƣa tràn Bit 1 INTF: cờ báo ngắt ngoài RB0/INT
1: có ngắt 0: không xảy ra ngắt
Bit 0 RBIF: cờ báo ngắt khi có thay đổi trạng thái PORTB
18 ms 36ms 72ms 144ms 288ms 576ms 1.1s 2.2s
Trang 361: có thay đồi 0: không có thay đổi xảy ra trên PORTB
3.4.2.3.4 Thanh ghi cho phép ngắt ngoại vi 1:
Chú ý: Bit PEIE (INTCON<6>) phải đƣợc set để cho phép bất kì ngắt ngọai
vi nào xảy ra
Bit 7 PSPIE: bit cho phép ngắt đọc/ ghi Port song song
1: cho phép 0: không cho phép Bit 6 ADIE: bit cho phép ngắt chuyển đổi A/D
1: cho phép 0: không cho phép Bit 5 RCIE: bit cho phép ngắt nhận USART
1: cho phép 0: không cho phép Bit 4 TXIE: bit cho phép ngắt truyền USART
1: cho phép 0: không cho phép Bit 3 SSPIE: bit cho phép ngắt Port nối tiếp đồng bộ
1: cho phép 0: không cho phép Bit 2 CCP1IE: bit cho phép ngắt module CCP1
1: cho phép ngắt 0: không cho phép Bit 1 TMR2IE: bit cho phép ngắt khi thanh ghi TMR2 bẳng thanh ghi PR2
1: cho phép 0: không cho phép Bit 0 TMR1IE: bit cho phép ngắt tràn TMR1
1: cho phép 0: không cho phép
Trang 373.4.2.3.4 Thanh ghi cờ của các ngắt ngoại vi 1:
Bit 7 PSPIF: cờ ngắt đọc ghi của Port song song
1: một hoạt động đọc/ghi đã diễn ra (phải xóa bằng phần mềm) 0: không có hoạt động đọc/ghi
Bit 6 ADIF: cờ báo ngắt chuyển đổi A/D
1: một quá trình chuyển đổi A/D đã hoàn thành 0: chuyển đổi A/D chưa hoàn tất
Bit 5 RCIF: cờ báo ngắt nhận USART
1: Buffer nhận USARt đầy 0: Buffer nhận USART trống
Bit 4 TXIF: cờ báo ngắt phát USART
1: buffer truyền USART trống 0: buffer truyền USART đầy Bit 3 SSPIF: cờ báo ngắt port nối tiếp đồng bộ (ngắt SSP)
1: ngắt SSP xảy ra và phải được xóa bằng phần mềm trước khi trở lại chương trình chính từ chương trình phục vụ ngắt
0: không có nắgt xảy ra Bit 2 CCP1IF: cờ báo ngắt CCP1
0: không xảy ra thuật toán so sánh
Chế độ PWM: không sử dụng trog chế độ này
Bit 1 TMR2IF: cờ báo ngắt xảy ra khi giá trị trong thanh ghi TMR2 bằng
trong thanh ghi PR2 1: giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được xóa bằng phần mềm)
0: giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2 Bit 0 TMR1IF: cờ báo tràn thanh ghi TMR1
1: thanh ghi TMR1 tràn (phải được xóa bắng phần mềm) 0: thanh ghi TMR1 chưa tràn
3.4.2.3.5 Thanh ghi cho phép ngắt ngoại vi 2:
Trang 38Chú ý: Bit PEIE (INTCON<6>) phải đƣợc set để cho phép bất kì ngắt ngoại
vi nào xảy ra
Bit 7,5,2,1 Unimplemented : read as „0’
Bit 6 CMIE: bi cho phép ngắt do bộ so sánh điện thế
1: cho phép 0: không cho phép Bit 4 EEIE: bi cho phép ngắt do ghi EEPROM
1: cho phép 0: không cho phép Bit 3 BCLIE: bit cho phép ngắt do xung đột bus
1: cho phép 0: không cho phép Bit 0 CCP2IE: cho phép ngắt d0 module CCP2
1: cho phép
0: không cho phép 3.4.2.3.6 Thanh ghi cờ của các ngắt ngọai vi 2:
Bit 7,5,2,1 Unimplemented : read as „0‟
Bit 6 CMIF: cờ báo ngắt do bộ so sánh
1: ngõ vào bộ so sánh đã thay đổi (phải đƣợc xóa bằng phần mềm) 0: ngõ vào bộ so sánh không thay đổi
Bit 4 EEIF: cờ báo ngắt ghi EEPROM
1: ghi EEPROM hoàn tất (phải đƣợc xóa bằng phần mềm) 0: ghi EEPROM chƣa hoàn tất
Bit 3 BCLIF: cờ báo ngắt do xung đột bus
1: xung đột bus đã xuất hiện 0: không có xung đột bus xảy ra Bit 0 CCP2IF: cờ báo ngắt CPP2
0: không xảy ra thuật toán so sánh
3.4.2.3.7 Thanh ghi điều khiển nguồn (Power control register):
Trang 39Bit 7-2 Unimplemented : read as „0‟
Trang 40ngắt Đối với PIC16F877A Stack có độ sâu 8 lớp.Stack không nằm trong cả bộ nhớ chương trình lẫn bộ nhớ dữ liệu
3.4.2.6 Địa chỉ trực tiếp và địa chỉ gián tiếp, thanh ghi INF và
thanh ghi FSR:
Thanh ghi INF không phải là một thanh ghi vật lí Nó chứa giá trị của thanh ghi có địa chỉ nằm ở thanh ghi FSR
Ví dụ:
Thanh ghi tại địa chỉ 10h có giá trị 5Ah
Nếu ta đưa 10h vào thanh ghi FSR thì khi đọc thanh ghi INF ta sẽ có giá trị 5Ah
3.5 Data EEPROM và Flash Program Memory:
EEPROM là bộ nhớ có khả năng đọc và ghi trong điều kiện làm việc bình thường (khi nguồn Vdd không đổi) Bộ nhớ này không được định địa chỉ trực tiếp trong bản đồ bộ nhớ mà được định địa chỉ gián tiếp thông qua các thanh ghi chức năng đặc biệt: