TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
ĐỒ Á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ển
PIC16F877A
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.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
Mục Lục
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Hưng Yên, ngày tháng năm 2009
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
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
số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 đình
cho đến các thiết bị tinh vi như máy tính hay máy công nghiệp đều có sự xuất
hiệ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ến
trong 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âu
nên đồ án của chúng em không thể tránh khỏi những thiếu xót. Chúng em rất
mong được sự đóng góp của thầy cô cùng các bạn sinh viên để đề tài của
chú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
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
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
bị, 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 con
ngườ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ền
tả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ều
trong sinh hoạt thường ngày. Chúng có những ứng dụng rất lớn, từ những
chiế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 được
thì 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ều
khiể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âu
và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
và đặc điểm sau:
Có thể điều khiển được động cơ điện một chiều
Có tính an toàn, thẩm mỹ và có tính ứng dụng thực tế cao.
Dễ dàng mở rộng vấn đề cho đề tài
1.2. Phương pháp thiết kế
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:
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
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
tế và kĩ thuật.
iii. Thực hiện theo phương án và kế hoạch dưới sự chỉ đạo của giáo
viên hướng dẫn.
1.3. Phương pháp thu thập dữ liệu
- Sử dụng những tài liệu, những vấn đề do giáo viên hướng dẫn cung
cấ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ố trang
web điển hình như: diendandientu.com; dientuvietnam.net;
PICvietnam.com; ).
1.4. Trình tự thiết kế
Sau khi bắt tay vào thực hiện đề tài, chúng em đã tuân thủ các bước thiết
kế sau:
- Thu thập dữ liệu.
- Phân tích dữ liệu.
- Đề ra các phương án và lựa chọn phương án tối ưu.
- Thi công.
- Kiểm tra và đưa ra kết luận.
1.5. Mở rộng đề tài
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ưa
hiể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ều
khiể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 độ,
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
Chươ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ối
ngoạ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ựng
bở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ò vi
só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úc
Havard, 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ống
nhúng. Những thành phần này là lõi CPU, bộ nhớ chương trình (thông
thườ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ôi
trườ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ích
hợ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.
• 403 PowerPC CPU
• PPC 403GCX
• 405 PowerPC CPU
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
• PPC 405EP
• PPC 405GP/CR
• PPC 405GPr
• PPC NPe405H/L
• 440 PowerPC Book-E CPU
• PPC 440GP
• PPC 440GX
• PPC 440EP/EPx/GRx
• PPC 440SP/SPe
1.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)
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
MPC 8540/8555/8560 (PowerQUICC III)
1.2.5. Họ vi điều khiển Fujitsu
• F²MC Family (8/16 bit)
• FR Family (32 bit)
• FR-V Family (32 bit RISC)
1.2.6. Họ vi điều khiển Inlel
• Dòng 8-bit
8Xc42
MCS8
MCS51
8061
8xC261
• Dòng 16-bit
80186/88
MCS96
MXS296
• Dòng 32-bit
386EX
I960
1.2.7. Họ vi điều khiển Microchip
12-bit instruction PIC
14-bit instruction PIC
PIC 16F84
16-bit instruction PIC
dsPIC
1.2.8. Họ vi điều khiển National Semiconductor
COP8
CR16
1.2.9. Họ vi điều khiển STMicroelectronics
ST 62
ST7
1.2.10. Họ vi điều khiển Philips Semiconductors
LPC2000
LPC900
LCP700
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
Độ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ột
chiều. Động cơ điện một chiều ứng dụng rộng rãi trong các ứng dụng dân
dụ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ển
tốc độ và chiều quay của động cơ với sự hỗ trợ của các mạch điện tử cùng
phươ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ớn
hoặ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ức
tạp, đắt tiền, kém tin cậy và nguy hiểm trong môi trường dễ nổ, khi sử dụng
phải có nguồn điện một chiều kèm theo hoặc bộ chỉnh lưu.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
1.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àm
rotor quay. Chiều lực tác dụng được xác định theo qui tắc bàn tay trái (hình
2a).
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ều
lự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).
Phương trình cơ bản của động cơ điện một chiều:
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
E= K. Φ.ω
V= E+R
ư
.I
ư
M= K .Φ .I
ư
Trong đó:
Φ : từ thông trên mỗi cực (Wb)
I
ư
: dòng điện phần ứng (A)
V : điện áp phần ứng (V)
R
ư
: điện trở phần ứng (Ω)
Ω : tốc độ động cơ (rad/s)
M : momen động cơ (Nm)
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 ắc
quy, điều khiển bộ cấp nguồn thay đổi được, dùng điện trở hoặc mạch điện
tử Chiều quay của động cơ có thể thay đổi được bằng cách thay đồi chiều
nố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ắp
bằ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 áp
trung bình đặt vào động cơ thay đổi bằng cách chuyển mạch nguồn cung cấp
thậ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ơ.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
Phươ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 ứng
củ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ủa
mạch cung cấp sẽ bằng không trong khi dòng điện qua động cơ vẫn khác
không và dòng trung bình của động cơ vẫn luôn lớn hơn dòng điện trong
mạ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ời
nà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 width
modulation, or PWM), và thường được điều khiển bằng vi xử lý. Đôi khi
ngườ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 đầu
má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ùng
trong 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ốc
cho tới khi tự phá hủy chính nó. Đây cũng là một vấn đề với động cơ xe lửa
trong 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ố,
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
mà còn phá hủy nghiêm trọng đường ray và bề mặt bánh xe vì chúng bị đốt
nó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 song
song 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 xoay
chiề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 ra
củ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ác
biế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ích
củ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ều
khiể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ếu
củ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ằng
cá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 gian
khởi động lại.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
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ệ
thố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ơn
nhiề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ùng
dò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 1
led và 1 photo diot hay 1 photo transitor. Được sử dụng đẻ các ly giữa các
khối chênh lệch nhau về điện hay công suất nhu khối có công suất nhỏ với
khối điện áp lớn.
Đầu vào của opto là 5V (Dòng nhỏ khoảng 100mA-500mA) tùy loại
Opto 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àn
toà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 photo
diode và làm cho photo transistor (hay photo diode) được kích mở.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
I. Cơ sở phần mềm – ngôn ngữ lập trình C
1. Giới thiệu
C 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ào
nă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ành
Unix 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ập
và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 khai
sinh 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ết
bằ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ột
chươ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
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
i. Cấu trúc if else
if <điều kiện>
<công việc 1> ;
else
<công việc 2;
ii. Cấu trúc switch…case
switch <biểu thức>
{
case <giá trị 1> :
<nhóm lệnh 1>; [break ;]
case <giá trị 2>:
<nhóm lệnh 2>; [break ;]
case <giá trị 3>:
<nhóm lệnh 3>; [break ;]
…………….
default: <nhóm lệnh khác>;
• Lệnh lặp
i. Cấu trúc: for
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>
{
<khối lệnh>;
}
iii. Cấu trúc: do…while
do
{ <khối lệnh>; }
while <điều kiện>;
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
Chươ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ách
că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ển
PIC để mở rộng vốn kiến thức và phát triển các ứng dụng trên công cụ này vì
các nguyên nhân sau:
- Họ 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.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
2. Vi điều khiển PIC 16F877A
2.1. Sơ đồ
2.1.1. Sơ đồ chân
2.1.2. Sơ đồ khối
2.2. Một vài thông số về vi điều khiển PIC16F877A
Đâ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ớ
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu
EEPROM 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ớ
Cấ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).
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
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ớ
chương trình có khả năng
chứa được 8*1024 = 8192
lệnh (vì một lệnh sau khi mã
hóa sẽ có dung lượng 1 word
(14bit).
Để mã hóa được địa chỉ của
8K word bộ nhớ chương
trình, bộ đếm chương trình
có dung lượng 13 bit
(PC<12:0>).
Khi vi điều khiển được reset,
bộ đếm chương trình sẽ chỉ
đến địa chỉ 0000h (Reset
vector). Khi có ngắt xảy ra,
bộ đếm chương trình sẽ chỉ
đến địa chỉ 0004h (Interrupt
vector).
Bộ nhớ chương trình không
bao gồm bộ nhớ stack và
không được địa chỉ hóa bởi
bộ đếm chương trình. Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau.
2.3.2. Bộ nhớ dữ liệu
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều
bank. Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi
bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt
SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn
lạ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úp
thuậ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ận
xét như sau :
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh
ghi 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 đến
bank0. Ngoài ra một vài các thanh ghi thông dụng khác ( sẽ giới thiệu
sau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh. Các thanh ghi
dù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 truy
xuất dữ liệu của PIC16F877A là : phải khai báo đúng bank chứa thanh
ghi đó. Nếu thanh ghi nào mà 4 bank đều chứa thì không cần phải
chuyể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ức
năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các
khố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
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
ghi 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ác
bit 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ác
chân trong PORTB, xác lập các tham số về xung tác động, cạnh
tá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ứa
trong 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.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
• 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ển
chứ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ông
qua thanh ghi FSR (File Select Register). Đây là các thanh ghi dữ liệu thông
thường, người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng
cá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 được
thự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. Khi
mộ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ương
trì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 đó ta
không biết được khi nào stack tràn. Bên cạnh đó tập lệnh của vi điều khiển
dò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.
2.4. Các cổng xuất nhập của PIC16F877A
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện
TRƯỜNG ĐH SP KT HƯNG YấN Đồ án môn học
KHOA ĐIỆN - ĐIỆN TỬ
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 qua
quá 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
rõ ràng.
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy
theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập
và số lượng chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều
khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên
cạnh chức năng là cổng xuất nhập thông thường, một số chân xuất nhập còn
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 vi
nê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 trong
mỗi cổng hoàn toàn có thể được xác lập và điều khiển được thông qua các
thanh 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ổng
xuấ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 “hai
chiều” (bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O
này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức
năng của một chân trong PORTA là input, ta “set” bit điều khiển tương ứng
với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng
của một chân trong PORTA là output, ta “clear” bit điều khiển tương ứng với
chân đó trong thanh ghi TRISA. Thao tác này hoàn toàn tương tự đối với các
PORT 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ới
PORTD 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ủa
Timer0 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.
CMCON (đị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.
GVHD: Phạm Xuân Hiển
Nhóm sinh viên thực hiện