Hầu hết các thiết bị từ đơn giản như các thiết bị trong gia đìnhcho đến các thiết bị tinh vi như máy tính hay máy công nghiệp đều có sự xuấthiện của các bộ vi điều khiển.Động cơ điện một
Trang 1ĐỒ ÁN MÔN HỌC 4(CHUYÊN NGÀNH 1)
Tên đề tài:
Thiết kế , chế tạo mạch điều khiển
động cơ điện một chiều
Số liệu cho trước:
- Thông số của các loại linh kiện điện tử chuyên dụng
- Các tài liệu, giáo trình chuyên môn
Nội dung cần hoàn thành:
1 Tìm hiểu về ứng dụng của động cơ điện một chiều, vi điều khiểnPIC16F877A
2 Phân tích, xác định yêu cầu của đề tài
3 Phân tích, lựa chọn kết cấu cho mô hình, thiết kế và chế tạo mạchđiều khiển động cơ điện một chiều
4 Lập kế hoạch và thực hiện các báo cáo theo đúng tiến độ
Quyển thuyết minh và các bản vẽ, file mô tả đầy đủ nội dung của đề tài
Trang 2Mục Lục
LỜI NÓI ĐẦU 3
Chương 1: GIỚI THIỆU ĐỀ TÀI 4
Đặt vấn đề 4
Chương 2 CƠ SỞ LÝ THUYẾT 6
Cơ sở phần cứng 6
Vi điều khiển 6
Khái niệm 6
Động cơ điện một chiều 9
Cấu tạo 9
Phương pháp điều khiển tốc độ động cơ 11
Chương 3 VI ĐIỀU KHIỂN PIC16F877A 17
Chương 4 THIẾT KẾ MẠCH ĐIỀU KHIỂN 43
Phần cứng 43
Mạch nguồn 43
Chương 4 CHẾ TẠO MẠCH ĐIỀU KHIỂN 52
Mạch nguồn 52
KẾT LUẬN 53
PHỤ LỤC 55
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 3
Hưng Yên, ngày tháng năm 2009
Giảng viên hướng dẫn
PHẠM XUÂN HIỂN
LỜI NÓI ĐẦU
Ngày nay, các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi, thâm nhập ngày càng nhiều vào trong các lĩnh vực của kĩ thuật cũng như đời
Trang 4sống xã hội Hầu hết các thiết bị từ đơn giản như các thiết bị trong gia đìnhcho đến các thiết bị tinh vi như máy tính hay máy công nghiệp đều có sự xuấthiện của các bộ vi điều khiển.
Động cơ điện một chiều là loại động cơ được sử dụng rất phổ biếntrong các ứng dụng thông thường cũng như các ứng dụng phức tạp Để mộtđộng cơ làm việc một cách hiệu quả thì đòi hỏi phải có cách điều khiển tốt
Xuất phát từ thực tế đó chúng em đã tập chung nghiên cứu về ứng
dụng của vi điều khiển, động cơ điện một chiều và cách “điều khiển động cơ
điện một chiều” dưới sự hướng dẫn của thầy Phạm Xuân Hiển.
Do kinh nghiệm chưa nhiều, kiến thức chuyên môn chưa thực sự sâunên đồ án của chúng em không thể tránh khỏi những thiếu xót Chúng em rấtmong được sự đóng góp của thầy cô cùng các bạn sinh viên để đề tài củachúng em được hoàn thiện hơn
Hưng yên tháng 12 năm 2009
Nhóm sinh viên thự hiện
Chương 1: GIỚI THIỆU ĐỀ TÀI
Đặt vấn đề
Với xu thế khoa học kĩ thuật ngày càng phát triển mạnh mẽ, nhất làtrong các lĩnh vực như thông tin viễn thông, điện tử công nghiêp, nhiều thiết
Trang 5bị, linh kiện mới ra đời đã dần thay thế cho các thiết bị, linh kiện trước đó cóphần hạn chế.
Sự vi mạch hóa đã đem lại những lợi ích to lớn cho cuộc sống của conngười Hầu hết khi xử lý dữ liệu, điều khiển người ta đều chọn xử lý trên nềntảng số học và đại số logic, với sự trợ giúp của các hệ vi điều khiển
Động cơ điện một chiều là một loại thiết bị được sử dụng rất nhiềutrong sinh hoạt thường ngày Chúng có những ứng dụng rất lớn, từ nhữngchiếc radio đến vô tuyến rồi đến những thiết bị hiện đại như máy tính đều có
sự hiện diện của động cơ điện một chiều Nhưng nếu không điều khiển đượcthì chúng sẽ không thể phát huy được hết chức năng của nó Vì vậy việc điềukhiển động cơ điện một chiều là hết sức quan trọng
Trong lĩnh vực điều khiển động cơ điện một chiều, ta có thể sử dụng kết hợp với vi điều khiển nhằm đơn giản hóa mạch điều khiển và đơn giản
hóa việc điều khiển
1.1 Đặc điểm, yêu cầu của đồ án
Với khẳ năng có hạn cũng như thời gian hạn chế, hơn nữa là chỉ đi sâuvào nghiên cứu một loại vi điều khiển đang có ứng dụng thực tế cao và phổbiến là vi điều khiển PIC 16F877A, vì vậy đồ án phải đạt được các yêu cầu
Từ những yêu cầu, đặc điểm của đề tài, chúng em đã chọn ra phương
án thực hiện như sau:
i Tham khảo ý kiến của giáo viên hướng dẫn, bạn bè và thu thập
những tài liệu liên quan
ii Đề ra phương án thi công có tính khả thi xét trên các mặt kinh
Trang 6- Sử dụng những tài liệu, những vấn đề do giáo viên hướng dẫn cungcấp.
- Tham khảo những ý kiến của các giáo viên trong khoa và của bạn bè
- Thu thập những thông tin cần thiết trên mạng internet (một số trangweb điển hình như: diendandientu.com; dientuvietnam.net;PICvietnam.com; )
Vì đây chỉ giới hạn là một đồ án môn học nên trong quá trình thực hiện,
đề tài vẫn gặp phải một số hạn chế như chưa điều khiển được vòng kín, chưahiển thị được tốc độ động cơ,
Vì vậy hướng mở rộng đề tài của chúng em đó là thiết kế một bộ điềukhiển hoàn chỉnh, có phản hồi vòng kín, có hiển thị tốc độ động cơ, tự độngđiều khiển tốc độ,
Trang 7Chương 2 CƠ SỞ LÝ THUYẾT
Cơ sở phần cứng
Vi điều khiển Khái niệm
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thườngđược sử dụng để điều khiển các thiết bị điện tử Vi điều khiển, thực chất, làmột hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp(khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khốingoại vi như bộ nhớ, các mô đun vào/ra, các mô đun biến đổi số sang tương
tự và tương tự sang số, Ở máy tính thì các mô đun thường được xây dựngbởi các chíp và mạch ngoài
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng Nóxuất hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò visóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động,v.v
1.1 Mô tả
Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúcHavard, kiến trúc này định nghĩa bốn thành phần cần thiết của một hệ thốngnhúng Những thành phần này là lõi CPU, bộ nhớ chương trình (thôngthường là ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộđịnh thời và các cổng vào/ra để giao tiếp với các thiết bị ngoại vi và các môitrường bên ngoài - tất cả các khối này được thiết kế trong một vi mạch tíchhợp Vi điều khiển khác với các bộ vi xử lý đa năng ở chỗ là nó có thể hoạtđộng chỉ với vài vi mạch hỗ trợ bên ngoài
1.2 Các họ vi điều khiển thông dụng
1.2.1 Họ vi điều khiển AMCC (do tập đoàn "Applied Micro
Circuits Corporation" sản xuất) Từ tháng 5 năm 2004, họ vi điều khiển này được phát triển và tung ra thị trường bởi IBM
Trang 81.2.2 Họ vi điều khiển Atmel
Dòng Atmel AT91 (Kiến trúc ARM THUMB)
Dòng AT90, Tiny & Mega – AVR (Atmel Norway design)
Dòng Atmel AT89 (Kiến trúc Intel 8051/MCS51)
Dòng MARC4
1.2.3 Họ vi điều khiển Cypress MicroSystems
CY8C2xxxx (PSoC)
1.2.4 Họ vi điều khiển Freescale Semiconductor Từ năm 2004,
những vi điều khiển này được phát triển và tung ra thị trường bởi Motorola.
Dòng 8-bit
68HG05 (CPU05)68HG08 (CPU08)68HG11 (CPU11)
Dòng 16-bit
68HC12 (CPU12)68HC16 (CPU16)Freescale DSP56800 (DSP controller)
Dòng 32-bit
Freescale 683XX (CPU32)MPC500 MPC 860 (PowerQUICC)MPC 8240/8250 (PowerQUICC II)MPC 8540/8555/8560 (PowerQUICC III)
1.2.5 Họ vi điều khiển Fujitsu
F²MC Family (8/16 bit)
Trang 9 FR Family (32 bit)
FR-V Family (32 bit RISC)
1.2.6 Họ vi điều khiển Inlel
Dòng 8-bit
8Xc42MCS8MCS5180618xC261
Dòng 16-bit
80186/88MCS96MXS296
Dòng 32-bit
386EXI960
1.2.7 Họ vi điều khiển Microchip
12-bit instruction PIC
14-bit instruction PIC
Trang 10Động cơ điện một chiều
Động cơ điện một chiều là động cơ điện hoạt động với dòng điện mộtchiều Động cơ điện một chiều ứng dụng rộng rãi trong các ứng dụng dândụng cũng như công nghiệp Thông thường động cơ điện một chiều chỉ chạy
ở một tốc độ duy nhất khi nối với nguồn điện, tuy nhiên vẫn có thể điều khiểntốc độ và chiều quay của động cơ với sự hỗ trợ của các mạch điện tử cùngphương pháp PWM
Động cơ điện một chiều trong dân dụng thường là các dạng động cơhoạt động với điện áp thấp, dùng với những tải nhỏ Trong công nghiệp, động
cơ điện một chiều được sử dụng ở những nơi yêu cầu moment mở máy lớnhoặc yêu cầu thay đổi tốc độ trong phạm vi rộng
Cấu tạo
Cấu tạo của động cơ gồm có 2 phần: stato đứng yên và rôto quay so với
stato Phần cảm (phần kích từ-thường đặt trên stato) tạo ra từ trường đi trong
mạch từ, xuyên qua các vòng dây quấn của phần ứng (thường đặt trên rôto)
Khi có dòng điện chạy trong mạch phần ứng, các thanh dẫn phần ứng sẽ chịu tác động bởi các lực điện từ theo phương tiếp tuyến với mặt trụ rôto, làm cho rôto quay Chính xác hơn, lực điện từ trên một đơn vị chiều dài thanh dẫn là
tích có hướng của vectơ mật độ từ thông B và vectơ cường độ dòng điện I
Một phần quan trọng của động cơ điện một chiều là bộ phận chỉnh lưu,
nó có nhiệm vụ là đổi chiều dòng điện trong cuộn rotor trong khi chuyểnđộng quay của rotor là liên tục Thông thường bộ phận này là bộ phận gồm
có một bộ cổ góp và một bộ chổi than tiếp xúc với cổ góp Đây cũng chính lànhược điểm chính của động cơ điện một chiều: cổ góp làm cho cấu tạo phứctạp, đắt tiền, kém tin cậy và nguy hiểm trong môi trường dễ nổ, khi sử dụngphải có nguồn điện một chiều kèm theo hoặc bộ chỉnh lưu
Trang 111.3 Nguyên lý hoạt động
Trên hình 2 mô tả nguyên lý làm việc của động cơ một chiều Khi chođiện áp một chiều U vào hai chổi điện A và B, trong dây quấn phần ứng códòng điện Các thanh dẫn ab và cd mang dòng điện nằm trong từ trường sẽchịu lực tác dụng tương hổ lên nhau tạo nên momen tác dụng lên rotor, làmrotor quay Chiều lực tác dụng được xác định theo qui tắc bàn tay trái (hình2a)
Khi phần ứng quay được nữa vòng, vị trí thanh dẫn ab, cd đổi chỗnhau, nhờ có phiến góp đổi chiều dòng điện, nên dòng điện một chiều biếnđổi thành dòng điện xoay chiều đưa vào dây quấn phần ứng, giữ cho chiềulực tác dụng không đổi, do đó lực tác dụng lên rotor cũng theo một chiều nhấtđịnh, đảm bảo động cơ có chiều quay không đổi (hình 2b)
Trang 12Phương trình cơ bản của động cơ điện một chiều:
K : hằng số, phụ thuộc cấu trúc động cơ
Phương pháp điều khiển tốc độ động cơ
Thông thường, tốc độ quay của một động cơ điện một chiều tỷ lệ vớiđiện áp đặt vào nó, và ngẫu lực quay tỷ lệ với dòng điện Điều khiển tốc độcủa động cơ có thể bằng cách điều khiển các điểm chia điện áp của bình ắcquy, điều khiển bộ cấp nguồn thay đổi được, dùng điện trở hoặc mạch điệntử Chiều quay của động cơ có thể thay đổi được bằng cách thay đồi chiềunối dây của phần kích từ, hoặc phần ứng, nhưng không thể được nếu thay đổi
cả hai Thông thường sẽ được thực hiện bằng các bộ công tắc tơ đặc biệt(Công tắc tơ đổi chiều)
Điện áp tác dụng có thể thay đổi bằng cách xen vào mạch một điện trởnối tiếp hoặc sử dụng một thiết bị điện tử điều khiển kiểu chuyển mạch lắpbằng Thyristor, transistor hoặc loại cổ điển hơn nữa bằng các đèn chỉnh lưu
hồ quang Thủy ngân Trong một mạch điện gọi là mạch băm điện áp, điện áptrung bình đặt vào động cơ thay đổi bằng cách chuyển mạch nguồn cung cấpthật nhanh Khi tỷ lệ thời gian "on" trên thời gian "off" thay đổi sẽ làm thayđổi điện áp trung bình Tỷ lệ phần trăm thời gian "on" trong một chu kỳchuyển mạch nhân với điện áp cấp nguồn sẽ cho điện áp trung bình đặt vàođộng cơ
Trang 13Phương pháp PWM
Như vậy với điện áp nguồn cung cấp là 100V, và tỷ lệ thời gian ON là25% thì điện áp trung bình là 25V Trong thời gian "Off", điện áp cảm ứngcủa phần ứng sẽ làm cho dòng điện không bị gián đoạn, qua một diode gọi làdiode phi hồi, nối song song với động cơ Tại thời điểm này, dòng điện củamạch cung cấp sẽ bằng không trong khi dòng điện qua động cơ vẫn kháckhông và dòng trung bình của động cơ vẫn luôn lớn hơn dòng điện trongmạch cung cấp, trừ khi tỷ lệ thời gian "on" đạt đến 100% Ở tỷ lệ 100% "on"này, dòng qua động cơ và dòng cung cấp bằng nhau Mạch đóng cắt tức thờinày ít bị tổn hao năng lượng hơn mạch dùng điện trở Phương pháp này gọi làphương pháp điều khiển kiểu điều biến độ rộng xung (pulse widthmodulation, or PWM), và thường được điều khiển bằng vi xử lý Đôi khingười ta còn sử dụng mạch lọc đầu ra để làm bằng phẳng điện áp đầu ra vàgiảm bớt tạp nhiễu của động cơ
Vì động cơ điện một chiều kiểu nối tiếp có thể đạt tới mô men quay cựcđại từ khi vận tốc còn nhỏ, nó thường được sử dụng để kéo, chẳng hạn đầumáy xe lửa hay tàu điện Một ứng dụng khác nữa là để khởi động các loạiđộng cơ xăng hay động cơ điezen loại nhỏ Tuy nhiên nó không bao giờ dùngtrong các ứng dụng mà hệ thống truyền động có thể dừng (hay hỏng), nhưbăng truyền Khi động cơ tăng tốc, dòng điện phần ứng giảm (do đó cảtrường điện cũng giảm) Sự giảm trường điện này làm cho động cơ tăng tốccho tới khi tự phá hủy chính nó Đây cũng là một vấn đề với động cơ xe lửatrong trường hợp mất liên kết, vì nó có thể đạt tốc độ cao hơn so với chế độlàm việc định mức Điều này không chỉ gây ra sự cố cho động cơ và hộp số,
mà còn phá hủy nghiêm trọng đường ray và bề mặt bánh xe vì chúng bị đốt
Trang 14nóng và làm lạnh quá nhanh Việc giảm từ trường trong bộ điều khiển điện tửđược ứng dụng để tăng tốc độ tối đa của các phương tiện vận tải chạy bằngđiện Dạng đơn giản nhất là dùng một bộ đóng cắt và điện trở làm yếu từtrường, một bộ điều khiển điện tử sẽ giám sát dòng điện của động cơ và sẽchuyển mạch, đưa các điện trở suy giảm từ vào mạch khi dòng điện của động
cơ giảm thấp hơn giá trị đặt trước Khi điện trở được đưa vào mạch, nó sẽlàm tăng tốc động cơ, vượt lên trên tốc độ thông thường ở điện áp định mức.Khi dòng điện tăng bộ điều khiển sẽ tách điện trở ra, và động cơ sẽ trở vềmức ngẫu lực ứng với tốc độ thấp
Một phương pháp khác thường được dùng để điều khiển tốc độ động cơmột chiều là phương pháp điều khiển theo kiểu Ward-Leonard Đây làphương pháp điều khiển động cơ một chiều (thường là loại kích thích songsong hay hỗn hợp) bằng cách sử dụng nguồn điện xoay chiều, mặc dù nókhông được tiện lợi như những sơ đồ điều khiển một chiều Nguồn điện xoaychiều được dùng để quay một động cơ điện xoay chiều, thường là một động
cơ cảm ứng, và động cơ này sẽ kéo một máy phát điện một chiều Điện áp racủa phần ứng máy phát một chiều này được đưa thẳng đến phần ứng củađộng cơ điện một chiều cần điều khiển Cuộn dây kích từ song song của cảmáy phát điện và động cơ điện một chiều sẽ được kích thích độc lập qua cácbiến trở kích từ Có thể điều khiển tốc độ động cơ rất tốt từ tốc độ = 0 đến tốc
độ cao nhất với ngẫu lực phù hợp bằng cách thay đổi dòng điện kích thíchcủa máy phát và động cơ điện một chiều Phương pháp điều khiển này đãđược xem là chuẩn mực cho đến khi nó bị thay thế bằng hệ thống mạch rắn
sử dụng Thyristor Nó đã tìm được chỗ đứng ở hầu hết những nơi cần điềukhiển tốc độ thật tốt, từ các hệ thống thang nâng hạ người trong các hầm mỏ,cho đến những máy công nghiệm cà các cần trục điện Nhược điểm chủ yếucủa nó là phải cần đến ba máy điện cho một sơ đồ (có thể lên đến 5 trong cácứng dụng rất lớn vì các máy DC có thể được nhân đôi lên và điều khiển bằngcác biến trở chỉnh đồng thời) Trong rất nhiều ứng dụng, hợp bộ động cơ -máy phát điện thường được duy trì chạy không tải, để tránh mất thời giankhởi động lại
Mặc dù các hệ thống điều khiển điện tử sử dụng Thyristor đã thay thếhầu hết các hệ thống Ward Leonard cỡ nhỏ và trung bình, nhưng một số hệ
Trang 15thống lớn (cỡ vài trăm mã lực) vẫn còn đắc dụng Dòng điện kích từ nhỏ hơnnhiều so với dòng điện phần ứng, cho phép các Thyristor cỡ trung bình có thểđiều khiển một động cơ lớn hơn rất nhiều, so với điều khiển trực tiếp Thí dụ,trong một ứng dụng, một bộ Thyristor 300 A có thể điều khiển một máy phátđiện Dòng điện ngõ ra của máy phát này có thể lên đến 15.000 A, với cùngdòng này, nếu điều khiển trực tiếp bằng thyristor thì có thể rất khó khăn vàgiá thành cao.
2 Cách ly quang (opto)
Opto hay còn gọi là cách ly quang là linh kiện tích hợp có cấu tạo gồm 1led và 1 photo diot hay 1 photo transitor Được sử dụng đẻ các ly giữa cáckhối chênh lệch nhau về điện hay công suất nhu khối có công suất nhỏ vớikhối điện áp lớn
Đầu vào của opto là 5V (Dòng nhỏ khoảng 100mA-500mA) tùy loạiOpto còn đầu ra của nó điến áp lớn hơn nhiều! Opto có tác dụng cách ly hoàntoàn hai khối công suất để 2 khối này không ảnh hưởng đến nhau Và hayđược dùng trong các mạch điều khiển dùng Vi xử lý
Nguyên tắc hoạy động : Khi được cung cấp đủ dòng và áp thì LED sẽphát sáng Ánh sáng này được chiếu tới một transistor quang hay một photodiode và làm cho photo transistor (hay photo diode) được kích mở
I Cơ sở phần mềm – ngôn ngữ lập trình C
1 Giới thiệu
Trang 16C là một ngôn ngữ cấp cao do Dennis Richie thiết kế tại phòng thínghiệm Bell Telephone vào năm 1972, khi viết hệ điều hành Unix C cónguồn gốc sâu sa từ ngôn ngữ BCPL do Martin Richards đề xuất vào năm
1967 và từ ngôn ngữ B do Ken Thompson phát triển từ ngôn ngữ BCPL vàonăm 1970
Lúc đầu, C được thiết kế để lập trình trong môi trường của hệ điều hànhUnix nhằm mục đích hỗ trợ cho các công việc lập trình phức tạp Nhưng vềsau, với những nhu cầu phát triển ngày một tăng của công việc lập trình, C đãvượt qua khuông khổ của phòng thí nghiệm Bell và nhanh chóng hội nhậpvào thế giới lập trình đề rồi được các nhà lập trình sử dụng một cách rộng rãi.Sau đó, các công ty sản xuất phần mềm lần lượt đưa ra những phiên bản hỗtrợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng được khaisinh từ đó
Ngôn ngữ C có những đặc điểm cơ bản như sau:
Tính cô đọng: C chỉ có 32 từ khoá chuẩn và 40 toán tử chuẩn
Tính cấu trúc: C có một tập hợp những chỉ thị của lập trình có cấu
trúc: lựa chọn, lặp à rõ ràng, dễ hiểu
Tính tương thích: C có bộ tiền xử lí và một thư viện chuẩn vô cùng
phong phú à chuyển từ máy này sang máy khác, chương trình viếtbằng C vẫn tương thích
Tính linh động: C rất uyển chuyển về ngữ pháp, chấp nhận nhiều
cách thể hiện
Biên dịch: C cho phép biên dịch nhiều tập tin chương trình riêng rẽ
à các đối tượng và liện kết các đối tượng lại với nhau à Mộtchương trình thống nhất
2 Các khai báo và một số lệnh cơ bản trong C
2.1 Khai báo
Khai báo hằng: const <kiểu dữ liệu> <tên hằng>=<giá trị>
Khai báo biến: <kiểu dữ liệu> <danh sách biến>
2.2 Một số lệnh cơ bản
i. Cấu trúc if else
if <điều kiện>
<công việc 1> ; else
Trang 17<công việc 2;
ii. Cấu trúc switch…case
switch <biểu thức>
{case <giá trị 1> :
for(<biểu thức1>;<biểu thức 2>;<biểu thức 3>) <câu lệnh>
o <biểu thức 1>: Khởi tạo biến đếm
o <biểu thức 2>: Kiểm tra điều kiện của vòng lặp
o <biểu thức 2>: Điều khiển biến đếm của vòng lặp
ii. Cấu trúc: while
while <điều kiện>
Trang 18Chương 3 VI ĐIỀU KHIỂN PIC16F877A
PIC là 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
vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bị
ngoại vi cho vi điều khiển CP1600 Vi điều khiển này sau đó được nghiên
cứu phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay.
1 Lý do sử dụng vi điều khiển PIC cho đề tài
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áchcăn bản ở môi trường đại học, bản thân người viết đã chọn họ vi điều khiểnPIC để 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ọ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam
- Giá thành không quá đắt
- Có đầy đủ các tính năng của một vi điều khiển 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ọ vi điều khiển mang tính truyền thống: họ vi điều khiển 8051
- Số lượng người sử dụng họ vi điều khiển PIC Hiện nay tại Việt
Namcũng như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi
Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng
dụng như: 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,…
- Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình,
nạp chương trình từ đơn giản đến phức tạp,…
- Các tính năng đa dạng của vi điều khiển PIC, và các tính năng này
không ngừng được phát triển
2 Vi điều khiển PIC 16F877A
Trang 192.1 Sơ đồ
2.1.1 Sơ đồ chân
2.1.2 Sơ đồ khối
Trang 202.2 Một vài thông số về vi điều khiển PIC16F877A
Trang 21Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạtđộng tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớchương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệuEEPROM với dung lượng 256x8 byte Số PORT I/O là 5 với 33 pin I/O
Các đặc tính ngoại vi bao gồmcác khối chức năng sau:
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức
năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Hai bộ Capture/so sánh/điều chế độ rông xung
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI
và I2C
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR, CS ở bên ngoài
Các đặc tính Analog:
8 kênh chuyển đổi ADC 10 bit
Hai bộ so sánh
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
Khả năng tự nạp chương trình với sự điều khiển của phần mềm
Nạp được chương trình ngay trên mạch điện ICSP (In Circuit
Serial-Programming) thông qua 2 chân
Watchdog Timer với bộ dao động trong
Chức năng bảo mật mã chương trình
Chế độ Sleep
Có thể hoạt động với nhiều dạng Oscillator khác nhau
2.3 Tổ chức bộ nhớ
Trang 22Cấu trúc bộ nhớ của vi điều khiển PIC16F877A gồm có bộ nhớchương trình (program memory) và bộ nhớ dữ liệu(data memory).
2.3.1 Bộ nhớ chương trình
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung
lượng bộ
nhớ 8K word (1 word =
14-bit) và được phân thành
nhiều trang (từ page0 đến
page 3) Như vậy bộ nhớ
Trang 23Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiềubank Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank Mỗibank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt
Trang 24SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanhghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ cònlại trong bank Các thanh ghi SFR thường xuyên được sử dụng (ví dụ nhưthanh ghi STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ dữ liệu giúpthuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình.
Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như bảng trên:
Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhậnxét như sau :
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanhghi dùng chung để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh.Các thanh ghi PORTA, PORTB, PORTC, PORTD, PORTE đều chứa ởbank0, do đó để truy xuất dữ liệu các thanh ghi này ta phải chuyển đếnbank0 Ngoài ra một vài các thanh ghi thông dụng khác ( sẽ giới thiệusau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh Các thanh ghidùng chung có địa chỉ từ A0h đến Efh Các thanh ghi TRISA, TRISB,TRISC, TRISD, TRISE cũng được chứa ở bank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên
sơ đồ trên
Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… cómặt trên cả 4 bank Một điều quan trọng cần nhắc lại trong việc truyxuất dữ liệu của PIC16F877A là : phải khai báo đúng bank chứa thanhghi đó Nếu thanh ghi nào mà 4 bank đều chứa thì không cần phảichuyển bank
2.3.2.1 Các thanh ghi chức năng đặc biệt SFR
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập
và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển Cóthể phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chứcnăng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển cáckhối chức năng bên ngoài (ví dụ như ADC, PWM, …) Phần này sẽ đề cậpđến các thanh ghi liên quan đến các chức năng bên trong Các thanh ghi dùng
để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi ta đề cập
đến các khối chức năng đóThanh ghi STATUS (03h, 83h, 103h, 183h):thanh
Trang 25ghi chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và cácbit chọn bank cần truy xuất trong bộ nhớ dữ liệu.
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho
phép đọc và ghi, cho phép điều khiển chức năng pull-up của cácchân trong PORTB, xác lập các tham số về xung tác động, cạnhtác động của ngắt ngoại vi và bộ đếm Timer0
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho
phép đọc và ghi, chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrputon- change tại các chân của PORTB
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt
của các khối chức năng ngoại vi
Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng
ngoại vi, các ngắt này được cho phép bởi các bit điều khiển chứatrong thanh ghi PIE1
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của
các khối chức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Trang 26 Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức
năng ngoại vi, các ngắt này được cho phép bởi các bit điều khiểnchứa trong thanh ghi PIE2
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái
các chế độ reset của vi điều khiển
2.3.2.2 Thanh ghi mục đích chung GPR
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thôngqua thanh ghi FSR (File Select Register) Đây là các thanh ghi dữ liệu thôngthường, người sử dụng có thể tùy theo mục đích chương trình mà có thể dùngcác thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham sốphục vụ cho chương trình
2.3.3 Stack
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà làmột vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL đượcthực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộđếm chương trình PC tự động được vi điều khiển cất vào trong stack Khimột trong các lệnh RETURN, RETLW hat RETFIE được thực thi, giá trị PC
sẽ tự động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chươngtrình theo đúng quy trình định trước
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứađược 8 địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào
bộ nhớ Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giátrị cất vào bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá tri6 cất vào Stack lần thứ2
Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó takhông biết được khi nào stack tràn Bên cạnh đó tập lệnh của vi điều khiểndòng PIC cũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack
sẽ hoàn toàn được điều khiển bởi CPU
Trang 272.4 Các cổng xuất nhập của PIC16F877A
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng
để tương tácvới thế giới bên ngoài Sự tương tác này rất đa dạng và thông quaquá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách
có thêm các chức năng khác để thể hiện sự tác động của các đặc tính ngoại vinêu trên đối với thế giới bên ngoài Chức năng của từng chân xuất nhập trongmỗi cổng hoàn toàn có thể được xác lập và điều khiển được thông qua cácthanh ghi SFR liên quan đến chân xuất nhập đó
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA,PORTB, PORTC, PORTD và PORTE Cấu trúc và chức năng của từng cổngxuất nhập sẽ được đề cập cụ thể trong phần sau
2.4.1 PORT A
PORTA (RA) bao gồm 6 pin I/O (pin 2,3,4,5,6,7) Đây là các chân “haichiều” (bidirectional pin), nghĩa là có thể xuất và nhập được Chức năng I/Onày được điều khiển bởi thanh ghi TRISA (địa chỉ 85h) Muốn xác lập chứcnăng của một chân trong PORTA là input, ta “set” bit điều khiển tương ứngvới chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năngcủa một chân trong PORTA là output, ta “clear” bit điều khiển tương ứng vớichân đó trong thanh ghi TRISA Thao tác này hoàn toàn tương tự đối với cácPORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORTA làTRISA, đối với PORTB là TRISB, đối với PORTC là TRISC, đối vớiPORTD là TRISD vàđối với PORTE là TRISE) Bên cạnh đó PORTA còn làngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clock củaTimer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port).Đặc tính này sẽ được trình bày cụ thể trong phần sau
Các thanh ghi SFR liên quan đến PORTA bao gồm:
PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA
TRISA (địa chỉ 85h) : điều khiển xuất nhập
Trang 28CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp
ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC
2.4.2. PORT B
PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương
ứng là TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong
quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau
PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tíchhợp chức năng điện trở kéo lên được điều khiển bởi chương trình
Các thanh ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ
Timer0
2.4.3. PORT C
PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tươngứng là TRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ sosánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP,USART
Các thanh ghi điều khiển liên quan đến PORTC:
PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
TRISC (địa chỉ 87h) : điều khiển xuất nhập
Các thanh ghi liên quan đến PORTD bao gồm:
Thanh ghi PORTD : chứa giá trị các pin trong PORTD
Thanh ghi TRISD : điều khiển xuất nhập
Thanh ghi TRISE : điều khiển xuất nhập PORTE và chuẩn giao tiếpPSP
Trang 292.4.5. PORT E
PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tươngứng là TRISE Các chân của PORTE có ngõ vào analog Bên cạnh đóPORTE còn là các chân điều khiển của chuẩn giao tiếp PSP
Các thanh ghi liên quan đến PORTE bao gồm:
PORTE : chứa giá trị các chân trong PORTE
TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giaotiếp PSP
ADCON1 : thanh ghi điều khiển khối ADC
2.5.TIMER
2.5.1 TIMER 0
Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiểnPIC16F877A Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số(prescaler) 8 bit Cấu trúc của Timer0 cho phép ta lựa chọn xung clock tácđộng và cạnh tích cực của xung clock Ngắt Timer0 sẽ xuất mhiện khiTimer0 bị tràn Bit TMR0IE (INTCON<5>) là bit điều khiển của Timer0.TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= 0 không cho phépngắt Timer0 tác động Sơ đồ khối của Timer0 như sau:
Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC(OPTION_REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kìxung đồng hồ (tần số vào Timer0 bằng ¼ tần số oscillator) Khi giá trị thanhghi TMR0 từ FFh trở về 00h, ngắt Timer0 sẽ xuất hiện
Trang 30Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn định thời điểmngắt Timer0 xuất hiện một cách linh động.
Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC(OPTION_REG<5>) Khi đó xung tác động lên bộ đếm được lấy từ chânRA4/TOCK1 Bit TOSE (OPTION_REG<4>) cho phép lựa chọn cạnh tácđộng vào bột đếm Cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tácđộng sẽ là cạnh xuống nếu TOSE=1
Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set.Đây chính là cờ ngắt của Timer0 Cờ ngắt này phải được xóa bằng chươngtrình trước khi bộ đếm bắt đầu thực hiện lại quá trình đếm Ngắt Timer0không thể “đánh thức” vi điều khiển từ chế độ sleep
Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT (WatchdogTimer) Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT
sẽ không có được hỗ trợ của prescaler và ngược lại Prescaler được điềukhiển bởi thanh ghi OPTION_REG Bit PSA (OPTION_REG<3>) xác định
Trang 31đối tượng tác động của prescaler Các bit PS2:PS0 (OPTION_REG<2:0>)xác định tỉ số chia tần số của prescaler Xem lại thanh ghi OPTION_REG đểxác định lại một cách chi tiết về các bit điều khiển trên.
Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt độngcủa prescaler Khi đối tượng tác động là Timer0, tác động lên giá trị thanhghi TMR0 sẽ xóa prescaler nhưng không làm thay đổi đối tượng tác động củaprescaler Khi đối tượng tác động là WDT, lệnh CLRWDT sẽ xóa prescaler,đồng thời prescaler sẽ ngưng tác vụ hỗ trợ cho WDT
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
TMR0 (địa chỉ 01h, 101h) : chứa giá trị đếm của Timer0
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động(GIE và PEIE)
OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler
2.5.2 TIMER 1
Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong haithanh ghi (TMR1H:TMR1L) Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>).Bit điều khiển của Timer1 sẽ là TMR1IE (PIE<0>) Tương tự như Timer0,Timer1 cũng có hai chế độ hoạt động: chế độ định thời (timer) với xung kích
là xung clock của oscillator (tần số của timer bằng ¼ tần số của oscillator) vàchế độ đếm (counter) với xung kích là xung phản ánh các sự kiện cần đếmlấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnhlên) Việc lựa chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạtđộng là timer hay counter) được điều khiển bởi bit TMR1CS (T1CON<1>)
Sau đây là sơ đồ khối của Timer1:
Trang 32Ngoài ra Timer1 còn có chức năng reset input bên trong được điều khiểnbởi một trong hai khối CCP (Capture/Compare/PWM).
Khi bit T1OSCEN (T1CON<3>) được set, Timer1 sẽ lấy xung clock từhai chân RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm Timer1
sẽ bắt đầu đếm sau cạnh xuống đầu tiên của xung ngõ vào Khi đó PORTC sẽ
bỏ qua sự tác động của hai bit TRISC<1:0> và PORTC<2:1> được gán giá trị
0 Khi clear bit T1OSCEN Timer1 sẽ lấy xung đếm từ oscillator hoặc từ chânRC0/T1OSO/T1CKI
Timer1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ(Asynchronous) Chế độ đếm được điều khiển bằng bởi bit điều khiển bởibit /T1SYNC (T1CON<2>)
Khi /T1SYNC = 1 xung đếm từ bên ngoài sẽ không được đồng bộ hóavới xung clock bên trong Timer1 sẽ tiếp tục quá trình đếm khi vi điều khiểnđang ở chế độ sleep và ngắt do Timer1 tạo ra khi bị tràn có khả năng “đánhthức” vi điều khiển Ở chế độ đếm bất đồng bộ, Timer1 không thể được sửdụng để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse widthmodulation)
Khi /T1SYNC = 0, xung đếm vào Timer1 sẽ được đồng bộ hóa với xungclock bên trong Ở chế độ này Timer1 sẽ không hoạt động khi vi điều khiểnđang ở chế độ sleep
Các thanh ghi liên quan đến Timer1 bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động(GIE và PEIE)