MỤC LỤC PHẦN 1:GIỚI THIỆU CÁC LINH KIỆN ĐIỆN TỬ TRONG MẠCH ĐIỆN 3 1.1 Giới thiệu về các linh kiện sử dụng trong mạch 4 1.1.1 LCD 16x2 4 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
Trang 1MỤ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
Trang 2MỞ ĐẦ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.
Trang 3PHẦ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
Trang 4+/ 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 :
Trang 5Châ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
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
Trang 65 RW 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.
E
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-to-low 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.
Trang 7Chú ý :
Ở 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-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
Trang 8+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ị).
Trang 9Nguyê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.
Trang 10Vớ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 T.n
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
Trang 11PHẦ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
Trang 122.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 đồ
Trang 143.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()
{
Trang 15TRISC.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; // Ngat canh len
INTCON.INTE = 1; // Cho phep ngat ngoai
INTCON.GIE = 1; // 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; //
}
Trang 16S1=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 http://mcu.banlinhkien.vn/threads/dieu-khien-va-do-toc-do-voi-dong-co-encoder-334-xung.507/#post-3572