Tải bản đầy đủ (.docx) (38 trang)

ĐO tốc độ ĐỘNG cơ DÙNG PIC (code và mạch in đầy đủ)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.32 MB, 38 trang )

ĐỒ ÁN 1

ĐO TỐC ĐỘ ĐỘNG CƠ DÙNG VI ĐIỀU
KHIỂN


MỤC LỤC


DANH MỤC CÁC HÌNH VẼ


DANH MỤC CÁC BẢNG BIỂU


DANH MỤC CÁC TỪ VIẾT TẮT

PIC

Peripheral Interface Controller

PWM

Pulse Width Modulation

EEPROM

Electrically Eraseble Programmable Read Only Memory

PWM


Pulse Width Modulation

PCB

Printed Circuit Board

LCD

Liquid Crystal Display

RAM

Random Access Memory

ROM

Read Only Memory

EEPROM

Electrically Erasable Programmable Read Only Memory

PDIP

Plastic Dual Inline Package

MOSFET

Metal-Oxide Semiconductor Field-Effect Transistor


GND

Ground

DC

Direct Current

AC

AC

PSP

Parallel Slave Port

SSP

Synchronous Serial Port


ĐỒ ÁN 1
Trang 6/33

CHƯƠNG 1. GIỚI THIỆU CHUNG VỀ ĐO TỐC ĐỘ ĐỘNG CƠ DÙNG
VI ĐIỀU KHIỂN PIC 16F877A

-

1.1 Giới thiệu

Trong các ngành công nghiêp, công tác điều khiển, vận hành, đo đạc các
thiết bị theo một quy trình nhằm nâng cao hiệu quả sản xuất, nâng cao chất
lượng sản phẩm đồng thời tiết kiệm chi phí sản xuất giữ một vị trí quan
trọng. Trong công nghiệp động cơ một chiều đã được sử dụng khá phổ biến
như: truyền động cho một số máy như máy nghiền, máy nâng, vận chuyển,
điều khiển băng tải, điều khiển các robot…, điều quan trọng là phải có được
tốc độ chính xác của từng động cơ phù hợp với từng nhiệm vụ.

-

Để đo được tốc độ của động cơ một chiều thì có rất nhiều phương pháp,
trong đồ án của mình chúng em xin trình bày đo tốc độ động cơ dùng họ vi
điều khiển PIC16F877A bằng phương pháp đếm xung PWM.

-

1.1.1 Nhiệm vụ của đề tài
Thiết kế mạch đo tốc độ động cơ dùng vi điều khiển PIC 16F877A. Tìm hiểu
sơ đồ nguyên lý, chức năng và nhiệm vụ từng linh kiện liên quan trong
mạch. Giải thích được nguyên lý hoạt động và mô phỏng hoạt động của
mạch. Thiết kế PCB và phần cứng của mạch.

-

1.1.1 Hướng giải quyết đề tài
Thiết kế mạch nguyên lý đo tốc độ động cơ. Tìm hiểu các linh kiện trong
mạch. Giải thích được nguyên lý hoạt động

-


Tiến hành mô phỏng mạch bằng phần mềm Protues. Vẽ mạch in PCB và thi
công phần cứng.

-

1.1.2 Hướng nghiên cứu
Tìm hiểu vi điều khiển PIC 16F877A, tìm hiểu phương pháp lập trình CCS
cho PIC, các phương pháp điều khiển và xử lý dữ liệu ra LCD16x02.

-

Xây dựng chương trình điều khiển cho vi xử lý để đo tốc độ động cơ thông
qua encoder. Giao tiếp giữa cảm biến đo tốc độ encoder và PIC.


ĐỒ ÁN 1
Trang 7/33

-

Mô phỏng mạch bằng Protues, vẽ PCB và tiến hành thi công mạch.

-

1.2 Nguyên lý chung
Khi cho động cơ chạy, encoder sẽ tiến hành nhận xung và truyền dữ liệu cho
PIC. Vi điều khiển PIC sẽ tiến hành xử lý dữ liệu, dữ liệu xử lý xong sẽ
được xuất ra màn hình LCD.



ĐỒ ÁN 1
Trang 8/33

CHƯƠNG 1. GIỚI THIỆU LINH KIỆN CỦA ĐỀ TÀI
1.3 Vi xử lý PIC 16F877A
 Đâ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 368 byte RAM và bộ nhớ dữ liệu
EEPROM với dung lượng 256 byte. Số PORT I/O là 5 với 33 pin I/O.

Hình 2.1: Vi điều khiển PIC 16F877A[1]



1.1.3 Đặc điểm kỹ thuật vi điều khiển PIC 16F877A
Các đặc tính của vi điều khiển PIC 16f877a
-

Timer0: bộ đếm 8bit.

-

Timer1: bộ đếm 16bit với bộ chia tần số.

-

Timner2: bộ đếm 8bit.



ĐỒ ÁN 1
Trang 9/33

-

2 bộ Capture/Compare/PWM.

-

1 bộ biến đổi Analog -> Digital 10bit, 8 ngõ vào.

-

2 bộ so sánh tương tự Compartor.

-

1 bộ định giám sát Watchdog Timer.

-

15 nguồn ngắt Interrupts.

-

Cổng giao tiếp song song PSP với các chân điều khiển RD, WR, CS ở
bên ngoài.

-


Các chuẩn giao tiếp nối tiếp SSP,SPI và I2C.

-

Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.

-

Nạp chương trình trên mạch điện ICSP (In Circuit Serial
Programming).

Tần số hoạt động
Reset và Delay
Bộ nhớ chương trình Flash
(14bit word)
Bộ nhớ dữ liệu (byte)
Bộ nhớ dữ liệu EEPROM (byte)
Các ngắt
Các Port xuất/nhập
Timer
Module Capture/Compare/PWM
Giao tiếp nối tiếp
Giao tiếp song song
Module A/D 10-bit
Bộ so sánh tương tự
Tập lệnh
Số chân

DC-20MHz
POR, BOR (PWRT, OST)

8K
368
256
15
Port A, B, C, D, E
3
2
MSSP, USART
PSP
8 kênh ngõ vào
2
35 lệnh
40 chân PDIP


ĐỒ ÁN 1
Trang 10/33

44 chân PLCC
44 chân TQFP
44 chân QFN

Bảng 2.1: Tóm tắt đặc điểm của PIC16F877A[1]

1.1.2 Sơ đồ chân ,cấu trúc và chức năng PIC 16F877A loại 40 chân
PDIP

Hình 2.2: Sơ đồ chân HC-06[1]

-


Sơ đồ khối của Pic16F877A


ĐỒ ÁN 1
Trang 11/33

Hình 2.3: Sơ đồ khối vi điều khiển PIC16F877A [1]

-

1.1.3 Tổ chức bộ nhớ
Bộ nhớ chương trình( 8K Flash ROM), bộ nhớ dữ liệu( 368 bytes RAM) và
bộ nhớ dữ liệu EEPROM( 256 bytes).
1.1.1.1

Tổ chức của bộ nhớ chương trình


ĐỒ ÁN 1
Trang 12/33

-

Bộ nhớ chương trình của PIC16F877A là bộ nhớ Flash, có bộ đếm ( Program
Counter) dài 13 bit có thể định địa chỉ cho 8K không gian bộ nhớ, 8K không
gian bộ nhớ được chia làm 8 trang bộ nhớ. Mọi sự truy cập ngoài vùng
không gian này sẽ không có tác dụng.

-


Bộ nhớ chương trình còn bao gồm một ngăn xếp (Stack) 8 mức.

-

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).

Hình 2.4: Ngăn xếp và bản đồ bộ nhớ chương trình [1]

1.1.1.2

Tổ chức của bộ nhớ dữ liệu


ĐỒ ÁN 1
Trang 13/33

Hình 2.5: Sơ đồ bộ nhớ dữ liệu PIC16F877A[1]

-

1.1.1.3 Bộ nhớ dữ liệu EEPROM và bộ nhớ chương trình FLASH:
Bộ nhớ dữ liệu EEPROM và bộ nhớ chương trình FLASH dùng để đọc hoặc
ghi dữ liệu. Những thao tác này xảy ra trên một byte đơn cho bộ nhớ dữ liệu
EEPROM và một từ đơn cho bộ nhớ chương trình FLASH.

-


Một thao tác ghi gây ra sự xóa rồi ghi, thao tác này thực hiện trên một byte
hoặc một từ được chỉ định. Sự truy cập vào bộ nhớ chương trình phải kể đến
sự tính toán checksum. Ghi một byte hoặc một từ sẽ tự động xóa vùng nhớ
và ghi lên giá trị mới (xóa trước khi ghi).

-

Việc ghi vào bộ nhớ dữ liệu EEPROM không ảnh hưởng đến hoạt động của
thiết bị.


ĐỒ ÁN 1
Trang 14/33

-

Việc ghi vào bộ nhớ chương trình sẽ dừng thực thi cho đến khi quá trình ghi
hoàn thành. Bộ nhớ chương trình không thể truy cập trong suốt quá trình ghi.
Trong suốt quá trình ghi, bộ dao động tiếp tục chạy, thiết bị ngoại vi vẫn tiếp
tục hoạt động và những sự kiện về ngắt sẽ được phát hiện và đợi cho đến khi
quá trình ghi hoàn thành.

-

Khi quá trình ghi hoàn thành, lệnh tiếp theo trong hàng đợi lệnh sẽ được thực
hiện và một rẽ nhánh đến ngắt được phép và gây ra trong suốt quá trình ghi.
Việc đọc và ghi truy cập đến cả hai bộ nhớ xảy ra gián tiếp thông qua việc
đặt những thanh ghi mục đích chung (SFR).

-


1.1.1.4 Quá trình đọc bộ nhớ dữ liệu EEPROM
Quá trình đọc bộ nhớ dữ liệu EEPROM chỉ yêu cầu địa chỉ cần truy cập phải
được ghi vào thanh ghi EEADR và xóa bit EEPGD. Sau khi bit RD được set,
dữ liệu sẽ phải sẵn sàng trong thanh ghi EEDATA trong chu kỳ lệnh kế tiếp.
EEDATA sẽ giữ giá trị này cho đến khi thao tác đọc kế tiếp được bắt đầu
hoặc cho đến khi nó được ghi bởi vi chương trình.
-

Các bước trong quá trình đọc bộ nhớ dữ liệu EEPROM là:

1. Ghi địa chỉ truy cập vào thanh ghi EEADR và không lớn hơn kích thước
bộ nhớ của PIC16F877A .
2. Xóa bit EEPGD để trỏ đến bộ nhớ dữ liệu EEPROM.
3. Set bit RD để bắt đầu thao tác đọc dữ liệu.
4. Đọc dữ liệu từ thanh ghi EEDATA.
-

1.1.1.5
Quá trình ghi vào bộ nhớ dữ liệu EEPROM
Quá trình ghi dữ liệu vào bộ nhớ dữ liệu EEPROM được tiến hành :Cả địa
chỉ và giá trị dữ liệu cần phải được ghi vào những thanh ghi mục đích chung
SFR. Bit EEPGD phải được xóa, và bit WREN phải được set để cho phép
ghi.

-

Bit WREN phải bị xóa trong suốt thời gian ngoại trừ trong quá trình ghi vào
bộ nhớ dữ liệu EEPROM. Bit WR chỉ có thể được set khi bit WREN được
set trước đó, chúng không thể được set cùng lúc. Bit WREN sau đó phải

được xóa bằng vi chương trình sau khi ghi.


ĐỒ ÁN 1
Trang 15/33

-

Các bước trong quá trình ghi vào bộ nhớ dữ liệu EEPROM:

1. Kiểm tra bit WR để xem việc ghi có đang tiến hành không.
2. Ghi địa chỉ truy cập vào thanh ghi EEADR và địa chỉ này không lớn hơn
kích thước bộ nhớ của PIC16F877A.
3. Ghi giá trị dữ liệu 8 bit được chương trình mã hóa vào thanh ghi
EEDATA.
4. Xóa bit EEPGD để trỏ đến bộ nhớ dữ liệu EEPROM.
5. Set bit WREN để cho phép những thao tác được lập trình.
6. Không cho phép ngắt.
7. Thực hiện chuỗi 5 lệnh đặc biệt sau:
• Ghi giá trị 55h vào EECON2 qua hai bước (đầu tiên đưa vào W, sau
đó mới đưa EECON2).
• Ghi giá trị AAh vào EECON2 qua hai bước (đầu tiên đưa vào W, sau
đó mới đưa vào EECON2).
• Set bit WR.
8. Cho phép ngắt (nếu sử dụng ngắt).
9. Xóa bit WREN để không cho các thao tác lập trình.
10. Tại thời điểm chu kỳ ghi hoàn thành, bit WR bị xóa và bit cờ ngắt EEIF
được set. Nếu bước 1 chưa được thực hiện, sau đó chương trình sẽ kiểm
tra xem EEIF được set hay chưa hoặc bit WR có bị xóa hay không để báo
kết thúc chu kỳ chương trình.

-

1.1.1.6
Quá trình đọc bộ nhớ chương trình FLASH
Quá trình đọc bộ nhớ chương trình FLASH cũng giống với quá trình đọc bộ
nhớ dữ liệu EEPROM, chỉ cần thêm vào hai lệnh NOP sau khi set bit RD.
Hai chu kỳ lệnh được thực hiện bởi lệnh NOP sẽ được bộ vi điều khiển sử
dụng để đọc dữ liệu ra khỏi bộ nhớ chương trình và chèn giá trị đó vào trong
cặp thanh ghi EEDATH:EEDATA. Dữ liệu sẽ được sẵn sàng ở lệnh thứ 2.
EEDATH và EEDATA sẽ giữ giá trị này cho đến khi thao tác đọc tiếp theo
được bắt đầu, hoặc cho đến khi chúng được ghi bởi vi chương trình.


ĐỒ ÁN 1
Trang 16/33

-

Các bước trong quá trình đọc bộ nhớ chương trình FLASH:

1. Ghi địa chỉ cần truy cập vào cặp thanh ghi EEADRH:EEADR và địa chỉ
đó không lớn hơn kích thước bộ nhớ của PIC16F877A.
2. Set bit EEPGD để trỏ đến bộ nhớ chương trình FLASH.
3. Set bit RD để bắt đầu thao tác đọc.
4. Thực hiện hai lệnh NOP để cho phép bộ vi điều khiển đọc dữ liệu ra khỏi
bộ nhớ chương trình.
5. Đọc dữ liệu từ cặp thanh ghi EEDATH:EEDATA.
-

1.1.1.7

Quá trình ghi dữ liệu vào bộ nhớ chương trình FLASH
Các bước trong quá trình ghi dữ liệu vào bộ nhớ chương trình FLASH:
1. Ghi địa chỉ cần truy cập vào cặp thanh ghi EEADRH:EEADR và địa chỉ
này thì không lớn hơn kích thước bộ nhớ của PIC16F877A.
2. Ghi giá trị dữ liệu 14 bit đã được chương trình hóa vào cặp thanh ghi
EEDATH:EEDATA.
3. Set bit EEPGD để trỏ đến bộ nhớ chương trình FLASH.
4. Set bit WREN để cho phép những thao tác lập trình.
5. Không cho phép ngắt.
6. Thực hiện chuỗi 5 lệnh đặc biệt sau:
• Ghi giá trị 55h vào EECON2 qua 2 bước: đầu tiên đưa vào W, sau đó
đưa vào EECON2.
• Ghi giá trị AAh vào EECON2 qua 2 bước: đầu tiên đưa vào W, sau đó
đưa vào EECON2.
• Set bit WR.
7. Thực hiện hai lệnh NOP để cho phép bộ vi điều khiển thiết lập thao tác
ghi.
8. Cho phép các ngắt (nếu sử dụng ngắt).
9. Xóa bit WREN để không cho phép các thao tác lập trình.
1.2 Module Encoder 20 xung


ĐỒ ÁN 1
Trang 17/33

Hình 2.6: Module Encoder 20 xung[2]

-

Nguyên lý hoạt động của mạch : gồm 1 mắt phát và 1 mắt thu đặt cách nhau

qua 1 khe hở, khi tia hồng ngoại từ mắt phát đi được tới mắt thu (xuyên qua
khe của đĩa encoder) thì xuất tín hiệu lên mức cao (5V), khi bị che lại thì
chân out xuất ra tín hiệu xuống mức thấp (0V).
1.2.1 Thông số kỹ thuật
Điện áp sử dụng
3.3-5V
Dòng sử dụng
15mA
Mức tín hiệu suất ra
Digital : TTL
Ouput (Ngõ ra)
Digital và Analog
Mắt phát và thu
Khoảng cách 5mm
VCC
Cấp nguồn dương 3.3-5V
GND
Nối Đất – 0V
Xuất Digital Low (0V)
D0
Xuất High (3.3-5V).
A0
Xuất Analog từ 0 -> 3.3-5V
Bảng 2.2: Thông số kỹ thuật Module Encoder 20xung[2]

1.3 Màn hình LCD 16x2


ĐỒ ÁN 1
Trang 18/33


Hình 2.7: Màn hình LCD16x2 [2]

-

Màn hình LCD 16x2, chức năng hiển thị 2 dòng với mỗi dòng chứa 16 kí tự,
màn hình có tính bền cao, dễ sử dụng.

Chân
VSS
VDD
VE (Constrast Voltage)
RS (Register Select)

Chức Năng
GND (0V)
Nguồn dương (5V)
Điều chỉnh độ sáng của màn hình.
Định địa chỉ nào sẽ được ghi dữ liệu

RW (Read/Write)

R/W=0 : thanh ghi viết
R/W=1 : thanh ghi đọc

Enable

Cho phép ghi vào LCD

D0 - D7


8 chân dữ liệu, mỗi chân sẽ có giá trị HIGH
hoặc LOW khi ở chế độ (read mode) và nó sẽ
nhận giá trị HIGH và ngược lại LOW khi ở
chế độ (write mode)

Backlight Anode (+)
Backlight Cathode (-)

Cực dương led nền (0 -> 5V)
Cực âm led nền (0V)
Bảng 2.3: Thông số kỹ thuật LCD 16x2[2]

1.4 IC Ổn áp KA7805


ĐỒ ÁN 1
Trang 19/33

Hình 2.8: IC ổn áp KA7805 [3]

-

Dòng cực đại có thể duy trì: 1A.

-

Dòng cực đỉnh: 2.2A.

-


Công suất tiêu tán cực đại nếu không có tản nhiệt: 2W.

• Công suất tiêu tán nếu dùng tản nhiệt đủ lớn: 15W. Nếu vượt quá 4 ngưỡng
trên 7805 sẽ bị cháy. Thực tế chỉ dùng công suất tiêu tán = 1/2 giá trị trên.
Các giá trị cũng không nên dùng gần giá trị max của các thông số trên. Tốt
nhất nên dùng <=2/3 max. Các thông số trên áp dụng cho điều kiện chuẩn
nhiệt độ 25 độ C.
• Nên hạn chế áp lối vào của 7805 để giảm công suất tiêu tán trên tản nhiệt.
Thực tế áp lối ra có thể đạt giá trị trong khoảng 4.8--5.2 V.
• Độ trôi nhiệt của 7805 xấp xỉ: 1mv/1 độ C. Nó có hệ số trôi nhiệt âm, nên
nhiệt độ tăng, điện áp ra sẽ giảm.
• Ví dụ: nếu ở 25 độ C, điện áp lối ra là 4.98V, thì rất có thể tại 65 độ, ta đo
được thế lỗi ra cỡ: 4.94 độ C.
• KA 7805 có bảo vệ chập tải.


ĐỒ ÁN 1
Trang 20/33

Hình 2.9: Hình dạng và sơ đồ chân của KA7805 [5]

-

1.4 Mosfet IRF640
Mosfet IRF640 là Transistor hiệu ứng trường (Metal Oxide Semiconductor
Field Effect Transistor) là một Transistor đặc biệt có cấu tạo và hoạt động
khác với Transistor thông thường.



ĐỒ ÁN 1
Trang 21/33

Hình 2.10: Hình dạng và sơ đồ chân của IRF640[5]

-

Mosfet IRF640 có nguyên tắc hoạt động dựa trên hiệu ứng từ trường để tạo
ra dòng điện, là linh kiện có trở kháng đầu vào lớn thích hợp cho khuyếch
đại các nguồn tín hiệu yếu.

-

Mosfet IRF640 thích hợp cho việc chuyển đổi dòng điện DC sang dòng điện
AC hay dòng điện DC. Thường ứng dụng trong UPS, inverter có biến thế
thường.
1.5 Các linh kiện khác
1.1.4 Điện trở


ĐỒ ÁN 1
Trang 22/33

Hình 2.11: Điện trở[3]

Hình 2.12: Biến trở [3]

1.1.5 Tụ điện



ĐỒ ÁN 1
Trang 23/33

Hình 2.13: Tụ điện [3]

1.1.6 Diode

Hình 2.14: Diode[3]

1.1.7 Thạch anh


ĐỒ ÁN 1
Trang 24/33

Hình 2.15: Thạch anh 20MHz[3]

CHƯƠNG 2. THIẾT KẾ VÀ THI CÔNG MẠCH
1.6 Sơ đồ khối


ĐỒ ÁN 1
Trang 25/33

Hình 3.1: Sơ đồ khối

1.7 Khối nguồn

Hình 3.2: Khối nguồn


-

Khối nguồn có nhiệm vụ cung cấp điện áp 5V cho toàn bộ mạch hoạt động.

-

Nguồn 12VDC được đưa vào IC ổn áp 7805 và cho điện áp ngõ ra là 5VDC.
Các tụ C2, C1 dùng để lọc tin hiệu, C3 dùng để ổn định điện áp một chiều


×