Tải bản đầy đủ (.doc) (16 trang)

Đo tốc độ động cơ và hiển thị LCD

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 (537.87 KB, 16 trang )

MỤC LỤC

MỤC LỤC..................................................................................................1
PHẦN 1:GIỚI THIỆU CÁC LINH KIỆN ĐIỆN TỬ TRONG MẠCH
ĐIỆN..........................................................................................................3
Giới thiệu về vi điều khiển PIC 16F877A.................................3
1.1Giới thiệu về các linh kiện sử dụng trong mạch.................4
1.1.1 LCD 16x2

............................................................................4

a/ Hình dạng và kích thức........................................................4
..............................................................................................................4
Chú ý :.....................................................................................................7
b/ Tập lệnh....................................................................................8
1.1.2 Encoder.........................................................................................8
PHẦN 2: MÔ PHỎNG NGUYÊN LÝ VÀ MẠCH IN.........................11
2.1 Mạch nguyên lý...........................................................................11
2.2 Mạch mô phỏng và mạch in.....................................................11
2.3 Nguyên lý hoạt động và phần mềm hỗ trợ.........................12
PHẦN 3: LƯU ĐỒ THUẬT TOÁN VÀ CODE NẠP CHO VI ĐIỀU
KHIỂN....................................................................................................12
3.1 Lưu đồ............................................................................................12
3.2 Chương trình...............................................................................14
KẾT LUẬN.............................................................................................16

1


MỞ ĐẦU
Hiện nay đất nước ta trong thời kì đổi mới, thời kì công nghiệp hoá hiện


đại họá cùng với sự phát triển của công nghệ thông tin, ngành kỹ thuật điện tự
động hóa cũng phát triển lên tầm cao mới. Điều khiển tự động là một trong
những ngành quan trọng trong quá trình công nghiệp hóa, hiện đại hóa đặc
biệt là góp phần vào việc giải phóng sức lao động của con người và chính xác
hơn con người. Điều khiển tự động có mặt từ trước công nguyên đó là chiếc
đồng hồ có phao điều chỉnh Ktesibios của Hi Lạp. Rồi sau này cũng có thêm
một số máy móc điều khiển tự động (như: hệ điều chỉnh nhiệt độ của Cornelis
drebble, hệ điều chỉnh tốc độ được ứng dụng trong công nghiệp….). Trong
chiến tranh thế giới thứ 2 người hỏi điều khiển tự động để ứng dụng vào mục
đích quân sự (như: máy bay tự động lái, điều khiển vũ khí, điều khiển ra đa...) .
Những năm 50 các phương pháp toán học bắt đầu ra đời được đưa nhanh vào
ứng dụng thực tế. Ở Mỹ người ta nghiên cứu dựa trên miền tần số còn ở Liên
Xô thì lại dựa trên miền thời gian. Ngày nay để đáp ứng được nhu cầu của con
người, giảm tải lao động tay chân, hệ thống “Đo tốc độ động cơ và hiển thị
LCD” ra đời giúp cho việc đo tốc độ động cơ trong công nghiệp trở nên dễ dàng
và thuận tiện hơn rất nhiều, giảm thiểu các sai sót khi vận hành hệ thống với
các động cơ điện.

2


PHẦN 1:GIỚI THIỆU CÁC LINH KIỆN ĐIỆN TỬ TRONG MẠCH ĐIỆN
Giới thiệu về vi điều khiển PIC 16F877A
Pic16f877a có độ dài lệnh 14 bit
sơ đồ chân gồm 40 pin

- Pic 16f877a có tập lệnh gồm 35 lệnh, mỗi lệnh được thực hiện trong
một chu kỳ xung clock. Tốc độ hoạt động tối đa cho phép là 20mhz. với mỗi chu
kỳ lệnh là 200ms , bộ nhớ chương trình 8K*14bit . Số port I/O là 5 với 33 pin
I/O

Các đặc tính ngoaji vi bao gồm cá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 vi điều khiển hoạt động ở chế
độ sleep
+/ timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler

3


+/ hai bộ Capture /so sánh/ điều chế độ rộng xung
+/ Các chuẩn giao tiếp UART với 9 bit địa chỉ
+/ Các đặc tính Analog: 8 kênh chuyển đổi ADC 10 bit, 2 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 có
thể nạp xóa 100.000 nghìn lần, bộ nhớ eproom ghi xóa được 1.000.000 lần
+/ Nạp được chương trình ngay trên mạch điện ICSP

1.1

Giới thiệu về các linh kiện sử dụng trong mạch

1.1.1 LCD 16x2
Màn hình tinh thể lỏng (Liquid Crystal Display, LCD) là loại thiết bị hiển
thị cấu tạo bởi các tế bào (các điểm ảnh) chứa tinh thể lỏng có khả năng thay
đổi tính phân cực của ánh sáng và do đó thay đổi cường độ ánh sáng truyền
qua khi kết hợp với các kính lọc phân cực. Chúng có ưu điểm là phẳng, cho
hình ảnh
sáng, chân thật và tiết kiệm điện.
Ngày nay, thiết bị hiển thị LCD được sử dụng trong rất nhiều các ứng dụng của
VĐK. LCD có rất nhiều ưu điểm so với các dạng hiển thị khác: Nó có khả năng

hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào
mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ
thống và giá thành rẻ . . .
a/ Hình dạng và kích thức
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên
hình là loại LCD thông dụng

Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển bên trong lớp
vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh số thứ tự
và đặt tên như hình :

4


Chân

Kí hiệu

Ý nghĩa

1

VSS

Chân nối đất cho LCD, khi thiết kế
mạch ta nối chân này với GND của mạch
điều khiển

2


Vdd

Chân cấp nguồn cho LCD, khi thiết kế
mạch ta nối chân này với VCC=5V của
mạch điều khiển

3

VEE

4

RS

Điều chỉnh độ tương phản của LCD.
Chân chọn thanh ghi (Register
select). Nối chân RS với logic “0” (GND)
hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với
thanh ghi lệnh IR của LCD (ở chế độ “ghi” write) hoặc nối với bộ đếm địa chỉ của LCD
(ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với
thanh ghi dữ liệu DR bên trong LCD

5


5

RW


6
E

Chân chọn chế độ đọc/ghi
(Read/Write). Nối chân R/W với logic “0”
để LCD hoạt động ở chế độ ghi, hoặc nối với
logic “1” để LCD ở chế độ đọc.
Chân cho phép (Enable). Sau khi các
tín hiệu được đặt lên bus DB0-DB7, các
lệnh chỉ được chấp nhận khi có 1 xung cho
phép của chân E.
Ở chế độ ghi: Dữ liệu ở bus sẽ được
LCD chuyển vào(chấp nhận) thanh ghi bên
trong nó khi phát hiện một xung (high-tolow transition) của tín hiệu chân E.
Ở chế độ đọc: Dữ liệu sẽ được LCD
xuất ra DB0-DB7 khi phát hiện cạnh lên
(low-to- high transition) ở chân E và được
LCD giữ ở bus đến khi nào chân E xuống
mức thấp.

6


7-14

D0 – D7

Tám đường của bus dữ liệu dùng để trao đổi
thông tin với MPU. Có 2 chế độ sử dụng 8

đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả
8 đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4
đường từ DB4 tới DB7, bit MSB là
DB7

Chú ý :
Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua các
chân Dx.
Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD
thông qua các chân Dx.
Chân 15 và chân 16: ghi là A và K. Nó là anot và katot của một con led
dùng để sáng LCD trong bóng tối, chúng ta có thể k nối , nếu sử dụng nối
chân 15 với trở 220 or 330 ôm lên VCC, chân 16 nối đất.

Tập lệnh của LCD.
Một số chú ý :
Trước khi tìm hiểu tập lệnh của LCD, sau đây là một vài chú ý khi giao
tiếp với LCD :
+Tuy trong sơ đồ khối của LCD có nhiều khối khác nhau, nhưng khi lập
trình điều khiển LCD ta chỉ có thể tác động trực tiếp được vào 2 thanh ghi DR
và IR thông qua các chân DBx, và ta phải thiết lập chân RS, R/W phù hợp để
chuyển qua lại giữ 2 thanh ghi này. (xem bảng trên)
+Với mỗi lệnh, LCD cần một khoảng thời gian để hoàn tất, thời gian này
có thể khá lâu đối với tốc độ của MPU, nên ta cần kiểm tra cờ BF hoặc đợi
(delay) cho LCD thực thi xong lệnh hiện hành mới có thể ra lệnh tiếp theo.
+Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, mỗi khi có lệnh
ghi vào RAM. (Điều này giúp chương trình gọn hơn)
Các lệnh của LCD có thể chia thành các nhóm như sau :


7


+Các lệnh về kiểu hiển thị. VD : Kiểu hiển thị (1 hàng / 2 hàng), chiều dài
dữ liệu (8 bit / 4 bit), …
+Chỉ định địa chỉ RAM nội.
+Nhóm lệnh truyền dữ liệu trong RAM nội.
b/ Tập lệnh
Tập lệnh của LCD tương đối đơn giản. Nhưng khi lập trình cho mạch có
LCD ta chỉ cần gọi các hàm có sẵn trong trình biên dịch mà không cần phải
đánh các lệnh phức tạp.

1.1.2 Encoder
Encoder mục đích dùng để quản lý vị trí góc của một đĩa quay, đĩa quay
có thể là bánh xe, trục động cơ, hoặc bất kỳ thiết bị quay nào cần xác định vị trí
góc.
Encoder được chia làm 2 loại, absolute encoder và incremental encoder. Tạm
gọi là encoder tuyệt đối và encoder tương đối.
Với encoder tuyệt đối thì với tín hiệu ta nhận được, sẽ chỉ rõ ràng vị trí của
encoder, chúng ta không cần xử lý gì thêm, cũng biết chính xác vị trí của
encoder.
Còn incremental encoder, là loại encoder chỉ có 1, 2, hoặc tối đa là 3 vòng lỗ.
Ta có thể hình dung thế này, nếu bây giờ các bạn đục một lỗ trên một cái đĩa
quay, thì cứ mỗi lần đĩa quay 1 vòng, ta sẽ nhận được tín hiệu, và biết đĩa quay
một vòng. Nếu bây giờ các có nhiều lỗ hơn, ta sẽ có được thông tin chi tiết hơn,
có nghĩa là đĩa quay 1/4 vòng, 1/8 vòng, hoặc 1/n vòng, tùy theo số lỗ nằm
trên incremental encoder.
Cứ mỗi lần đi qua một lỗ, chúng ta phải lập trình để thiết bị đo đếm lên 1. Do
vậy, encoder loại này có tên incremental encoder (encoder tăng lên 1 đơn vị).


8


Nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay, quay quanh trục.
Trên đĩa có các lỗ (rãnh). Người ta dùng một đèn led để chiếu lên mặt đĩa. Khi
đĩa quay, chỗ không có lỗ (rãnh), đèn led không chiếu xuyên qua được, chỗ có
lỗ (rãnh), đèn led sẽ chiếu xuyên qua. Khi đó, phía mặt bên kia của đĩa, người
ta đặt một con mắt thu. Với các tín hiệu có, hoặc không có ánh sáng chiếu qua,
người ta ghi nhận được đèn led có chiếu qua lỗ hay không.
Khi trục quay, giả sử trên đĩa chỉ có một lỗ duy nhất, cứ mỗi lần con mắt thu
nhận được tín hiệu đèn led, thì có nghĩa là đĩa đã quay được một vòng.
nguyên lý cơ bản của hoạt động encoder.

9


Với việc sử dụng encoder để đo xung và tính toán tốc độ của động cơ, ta
phải có công thức để có thể tính toán ra được tốc độ của động cơ
V=

60.n
N .T

Với :-V là vận tốc của động cơ (vòng/phút)
-n là số xung xuất ra của 1 kênh trong 1s
-N là số xung của đĩa của động cơ encoder
-T là thời gian lấy mẫu

10



PHẦN 2: MÔ PHỎNG NGUYÊN LÝ VÀ MẠCH IN
2.1 Mạch nguyên lý

2.2 Mạch mô phỏng và mạch in

11


2.3 Nguyên lý hoạt động và phần mềm hỗ trợ
+Mạch sử dụng vi điều khiển PIC 16F877A để đếm các xung xuất ra từ
chân của encoder bằng phương pháp ngắt ngoài và đếm số lần ngắt ngoài đo
được trên chân B0. Sau đó vi điều khiển sẽ tính toán theo công thức đã cho sẵn
và sẽ hiển thị ra LCD tốc độ vòng/phút của động cơ
+Phần mềm thiết kế mạch in: Altium 16
+Phần mềm mô phỏng: Proteus 8.0
+Phần mềm lập trình:MikroC

PHẦN 3: LƯU ĐỒ THUẬT TOÁN VÀ CODE NẠP CHO VI ĐIỀU KHIỂN
3.1 Lưu đồ

12


13


3.2 Chương trình
sbit LCD_RS at RD2_bit;

sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
long int dem1=0, dem2=0, xung=0, a=0, i=0, S1=0;
char ht[16];
float tocdo;
void interrupt(void) // GOI NGAT NGOAI
{ // Kiem tra xem co phai ngat ngoai hay ko
if(INTCON.INTF == 1)
{
dem1++; //xung dem
INTCON.INTF = 0; // Xoa co bao ngat ngoai
}
}
void main()
{

14


TRISC.F7=0x00; // Chan C7 output
PORTC.F7=0xFF; // set gia tri cua chan C7=1

LCD_init();
LCD_Cmd(_LCD_CURSOR_OFF);// tat con tro
LCd_out(1,2," Cuong TDHB 58");
LCD_out(2,4,"1321060039");
delay_ms(2000);
LCD_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Toc do");
LCD_out(1,7, " DC Motor");
LCD_out(2,8,"vong/phut")

;

TRISB.B3 = 0xFF; // Chan B0 Input
TRISD = 0x00; // PORTD Output
// Cai dat ngat ngoai
OPTION_REG.INTEDG = 1;
INTCON.INTE = 1;
INTCON.GIE = 1;

// Ngat canh len
// Cho phep ngat ngoai

// Cho phep ngat toan cuc

while(1)
{
for(i=0;i<12;i++) // dung bien dem vong de tinh gia tri trung bình
{
delay_ms(100); //lay mau thoi gian
xung= dem1- dem2; //so xung doc duoc giua 2 lan ngat lien tiep

tocdo=30*xung;
S1=S1+tocdo;
dem2= dem1; //
}

15


S1=S1/12;// tinh gia tri trung binh

wordToStr(S1,ht); // doi tu gia tri word sang string
LCD_out(2,2,ht);
}

/*TINH TOAN TOC DO DONG CO tocdo=(xung*60)/(so
xungdia*thoigianmau)
so xungdia =20 ,thoigianmau =100ms
tocdo=xung*30 */
}

KẾT LUẬN
Qua quá trình hướng dẫn của Th.s Đào Hiếu và quá trình tìm hiểu qua
internet,mạch thực của sinh viên Đặng Ngọc Cường đã hoàn thành. Em xin cảm
ơn thầy đã hướng dẫn em làm đồ án môn học thành công!
Tài liệu tham khảo
1. />
16




×