Đo tốc độ động cơ dùng vi điều khiển PIC hiển thị lên LCD (có code và sơ đồ mạch) Đo tốc độ động cơ dùng vi điều khiển PIC hiển thị lên LCD (có code và sơ đồ mạch) Đo tốc độ động cơ dùng vi điều khiển PIC hiển thị lên LCD (có code và sơ đồ mạch) Đo tốc độ động cơ dùng vi điều khiển PIC hiển thị lên LCD (có code và sơ đồ mạch) Đo tốc độ động cơ dùng vi điều khiển PIC hiển thị lên LCD (có code và sơ đồ mạch)
Trang 1Đo tốc độ động cơ dùng vi điều khiển hiển
thị lên LCD
Trang 2MỤC LỤC
DANH MỤC CÁC HÌNH VẼ VI
DANH MỤC CÁC BẢNG BIỂU VII
DANH MỤC CÁC TỪ VIẾT TẮT VIII
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 GIỚI THIỆU VỀ ĐỀ TÀI 1
1.1.1 Phương pháp nghiên cứu 1
1.1.2 Thành quả nghiên cứu 1
2.2.5 Khối cảm biến Encoder 13
CHƯƠNG 3 THIẾT KẾ VÀ THI CÔNG MẠCH 14
3.1 LƯU ĐỒ GIẢI THUẬT 14
Trang 35.2 KHUYẾT ĐIỂM 19
5.3 HƯỚNG PHÁT TRIỂN 19
TÀI LIỆU THAM KHẢO 20
PHỤ LỤC A ………21
Trang 4DANH MỤC CÁC HÌNH VẼ
Hình 2.1 : Sơ đồ khối [1] 2
Hình 2.2.1a Nguồn cung cấp cho PIC [2] 3
Hình 2.2.1b Nguồn cung cấp cho toàn mạch ( PIC + Động cơ ) [3] 3
Hình 2.2.1 Biến áp 220V~12V [4] 4
Hình 2.2.1.2 : Chỉnh lưu cầu [5] 5
Hình 2.2.1.3 : IC ổn áp 5V [6] 5
Hình 2.2.2a : Sơ đồ chân PIC 16F877 [7] 6
Hình 2.2.2b : Cấu trúc tổng quát của PIC 16F877 [8] 7
Hình 2.2.2 : LCD 16x2 [9] 9
Hình 2.2.4 Động cơ DC 6-12VDC [10] 11
Hình 2.2.4 Module Encoder [11] 13
Hình 3.1 : Sơ đồ mạch [12] 15
Hình 3.2 Sơ đồ mạch in [13] 16
Hình 4.1 : Kết quả mô phỏng [14] 17
Hình 4.2 : Mạch thực tế [15] 18
Trang 6DANH MỤC CÁC TỪ VIẾT TẮT
DC : Direct Current
AC: Alternating Current
EMF : Electromotive force
Trang 7CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về đề tài
Mục đích của đề tài là sử dụng vi điều khiển 16f877 để đo số vòng quay của cácđộng cơ đang chạy bằng encoder Việc đo tốc độ động cơ giúp cho quá trình giámsát sản xuất nhah hơn, tốt hơn, cho ra những sản phẩm như ý, chính xác Nếu takhông đo được tốc độ của động cơ thì không thể điều khiển tốc độ chính xác được.Với những máy móc hiện đại như ngày nay, trong quá trình sản xuất luôn chạy vớinhiều tốc độ khác nhau, tùy theo mỗi giai đoạn làm việc của nó, chính vì thế mà tacần phải biết tốc độ động cơ là bao nhiêu để điều chỉnh cho phù hợp
1.1.1 Phương pháp nghiên cứu
Tìm hiểu hiểu cấu tạo nguyên lý hoạt động của : vi điều khiển PIC , Cảmbiến Encoder , động cơ DC , màn hình LCD , …
Nghiên cứu tìm hiểu và viết code bằng các chương trình chuyên dụng ( PIC
C COMPILER , VAR , … )
Thiết kế lắp mạch hoàn chỉnh
1.1.2 Thành quả nghiên cứu
Thiết kế mạch đo tốc độ động cơ hoàn chỉnh và hiển thị lên màn hình LCD
1.1.3 Nguyên lý chung
Sử dụng cảm biến Encoder để đo tín hiệu xung phát ra sau đó Encoder sẽ chuyển tínhiệu xung thu được về vi điều khiển Vi điều khiển sẽ xử lý tín hiệu rồi xuất ramàn hình hiển thị LCD
Trang 8ĐỒ ÁN 1 Trang 2/22
CHƯƠNG 2 NỘI DUNG CỦA ĐỀ TÀI
2.1 Sơ đồ khối
2.1.1 Sơ đồ khối của mạch
Hình 2.1 : Sơ đồ khối [1]
Giải thích : Khi khối nguồn cấp điện vào cho Khối vi xử lý và Khối động cơ
Khối vi xử lý sẽ cấp nguồn cho các khối cảm biến Encoder và khối hiển thị ( LCD ),Khi đó khối cảm biến Encoder sẽ bắt đầu đo tốc độ quay của động cơ rồi chuyểnthành xung và chuyển về khối vi xử lý , tại đây khối vi xử lý sẽ tính toán rồi gửi dữliệu tính toán được lên đến khối hiển thị ( LCD )
2.1.2 Chức năng các khối
o Khối Nguồn : Cung cấp nguồn 5V-12V cho mạch
o Khối động cơ : Động cơ DC 6V-12V để đo
o Khối cảm biến Encoder : quy đổi tốc độ quay thành tín hiệu xung /vòng quay
Khối Động cơ
Khối vi xử lý16F877
Khối hiển thị(LCD)
Khối nguồn
Khối cảm biếnEncoder
Trang 9o Khối vi xử lý : tính toán tín hiệu xung nhận được thành dữ liệu Vòng/phút và truyền lên khối hiển thị
o Khối hiển thị : dùng LCD 16x2 để hiện thị số vòng động cơ
2.2 Tìm hiểu linh kiện
2.2.1 Khối nguồn
Hình 2.2.1a Nguồn cung cấp cho PIC [2]
Hình 2.2.1b Nguồn cung cấp cho toàn mạch ( PIC + Động cơ ) [3]
Trang 10ĐỒ ÁN 1 Trang 4/22
2.2.1.1 Biến áp :
Hình 2.2.1 Biến áp 220V~12V [4]
Biến áp là thiết bị để biến đổi điện áp xoay chiều 220V xuống điệp áp mong muốn,cấu tạo bao gồm một cuộn sơ cấp (đưa điện áp vào) và một hay nhiều cuộn thứ cấp(lấy điện áp ra sử dụng) cùng quấn trên một lõi từ có thể là lá thép hoặc lõiferi Cung cấp nhiều mức điện áp ra: 6V 9V 12V 15V 18V 24V
Trang 112.2.1.2 Diode chỉnh lưu cầu
Trang 12ĐỒ ÁN 1 Trang 6/22
IC LM7805 là IC ổn định điện áp đầu ra ở 5V Nguồn chuyển đổi điếp áp AC sang
dễ dàng
Sơ đồ chân của PIC 16F877
Hình 2.2.2a : Sơ đồ chân PIC 16F877 [7]
Trang 13Cấu trúc tổng quát của PIC 16F877:
Hình 2.2.2b : Cấu trúc tổng quát của PIC 16F877 [8]
Chức năng các chân của PIC :
2 chân Vcc/Vdd : 4~5.5
2 chân GND
1 chân VPP
2.2.2.1 Port A và thanh ghi TRIS A
Port A gồm 6 chân từ RA0 đến RA5
Việc ghi giá trị vào thanh ghi TRIS A sẽ quy định các chân của port A Nếu bằng 0 : ngõ output , bằng 1 : ngõ Input
Riêng chân RA4 : tích hợp thêm chân chức năng là chân cung cấp xungclock ngoài cho TIMER 0 ( RA4/TOCKI)
Trang 14ĐỒ ÁN 1 Trang 8/22
Các chân còn lại của PortA được đa hợp với các chân ngõ vào Analog củaADC và chân ngõ vào điện áp so sánh của bộ so sánh Camparator
2.2.2.2 Port B và thanh ghi TRIS B
Port B gồm 8 chân từ RB7-RB0
Các giá trị TRIS B qui định port B
3 chân được đa hợp với chức năng In-Circuit Debugger và Low VoltageProgramming function: RB3/PGM, RB6/PGC và RB7/PGDRB3/PGM
4 chân RB7-RB4 làm tác nhân ngắt khi trạng thái các chân này thay đổi (Nếu port B là output thì chức năng ngắt không hoạt động )
Mỗi chân port B sẽ được treo lên Vdd khi t xoá bit RBPU Tính năng nàykhông có khi port B là input
2.2.2.3 Port C và thanh ghi TRIS C
Port C gồm 8 chân từ RC7-RC0
Các giá trị TRIS C qui định port C
Các chân của port C được đa hợp với chức năng ngoại vi
Chú ý : Vài chức năng ngoại vi sẽ sẽ ghi các giá trị 0 vào thanh ghi TRISS C
và mặc địng là output , nhưng mộ số chức năng ngoại vi khác sẽ mặc định làInput
2.2.2.4 Port D và thanh ghi TRIS D
Port D gồm 8 chân từ RD7-RD0
Việc ghi giá trị vào thanh ghi TRIS D sẽ quy định các chân của port D
Nếu bằng 0 : ngõ output , bằng 1 : ngõ Input
Ngoài chức năng là port xuất/nhập , port D còn được cấu hình như 1 port vi
xử lý 8bit ( parallel slave port ) bằng cách set bit PSPMODE (TRISE<4>)
2.2.2.5 Port E và thanh ghi TRIS E
Port E gồm 3 chân từ RE2-RE0
Các chân được đa hợp với các chân ngõ vào Analog
Trang 152.2.3 Khối hiển thị : LCD 16x2
Hình 2.2.2 : LCD 16x2 [9]
LCD dùng để giao tiếp với Vi điều khiển hiện thị ở chế độ 4 bit
Chức năng các chân của LCD :
Bảng 2.2.3 : Chức năng các chân của LCD
1 Vss Chân là chân nối đất cho LCD
2 VDD Cung cấp nguồn cho LCD hoạt động
3 VEE Chân này dùng để điều chỉnh độ tương phản của LCD
4 RS Chân chọn thanh ghi(Register select).Nối chân này với
mức “0” hoặc mức “1” để chọn thanh ghi-Mức “1” :thanh ghi dữ liệu DR bên trong LCD sẽ kếtnối với Bus DB0-DB7
-Mức “0”: thanh ghi lệnh IR của LCD hoặc với bộ đếmđịa chỉ sẽ kết nối với Bus DB0-DB7
5 R/W Chân chọn mode LCD đọc khi chân này nối với mức
“1” nối chân này với mức “0” để LCD ghi
6 E Chân cho phép(enable).Sau khi các tín hiệu đặt lên bus
DB0-DB7 các lệnh chỉ chấp nhận khi có 1 xung cho
Trang 16ĐỒ ÁN 1 Trang 10/22
phép của chân E-Ở chế độ ghi:Dữ liệu ở bus sẽ được chuyển vào thanhghi bên trong LCD khi phát hiện 1 xung cho phép củachân E
-Ở chế độ đọc: Dữ liệu LCD sẽ xuất ra DB0-DB7 khiphát hiện cạnh lên của chân E và được giữ ở bus chođến khi chân E xuống mức thấp
7 DB0-DB7 dùng để trao đổi thông tin với MPU bằng 8 đường bus
Trang 17-Điện áp định mức : 12VDC
-Dòng định mức : 3A
Nguyên lý hoạt động :
Bao gồm Stator và Rotor
Stator của động cơ điện 1 chiều thường là 1 hay nhiều cặp nam châm vĩnh cửu, hay nam châm điện, rotor có các cuộn dây quấn và được nối với nguồn điện một chiều,
1 phần quan trọng khác của động cơ điện 1 chiều là bộ phận chỉnh lưu, nó có nhiệm
vụ là đổi chiều dòng điện trong khi chuyển động quay của rotor là liên tục
Pha 1: Từ trường của rotor cùng cực với stator, sẽ đẩy nhau tạo ra chuyển động quay của rotor trong động cơ điện
Pha 2: Rotor tiếp tục quay
Pha 3: Bộ phận chỉnh điện sẽ đổi cực sao cho từ trường giữa stator và rotor cùng
dấu, trở lại pha 1
Trang 18ĐỒ ÁN 1 Trang 12/22
Khi động cơ điện vận hành bình thường, rotor khi quay sẽ phát ra một điện áp gọi làsức phản điện động counter-EMF (CEMF) hoặc sức điện động đối kháng, vì nó đối kháng lại điện áp bên ngoài đặt vào động cơ điện Sức điện động này tương tự như sức điện động phát ra khi động cơ được sử dụng như một máy phát điện
2.2.5 Khối cảm biến Encoder
Nguyên lý hoạt động của encoder :
Bao gồm 1 mắt phát và 1 mắt thu hồng ngoại đặt cách nhanh qua 1 khe hở , khi ánhsáng từ mắt phát đi được tới mắt thu ( xuyên qua lỗ dĩa của encoder ) thì sẽ có tínhhiệu mức cao ( 5v) phát ra khỏi chân out , khi bị che thì chân out phát ra tín hiệumức thấp
Trang 19CHƯƠNG 3 THIẾT KẾ VÀ THI CÔNG MẠCH
3.1 Lưu đồ giải thuật
Trang 20ĐỒ ÁN 1 Trang 14/22
4 chân data cảu LCD sẽ lần lược nối vào các chân RB4-RB7
Chân ghi RS và chân E của LCD nối với chân RB1 , RB2 , chân RW nối đất
Nút nhấn Start/Stop nối vào chân RD0
Trang 213.2.2 Sơ đồ mạch in
Hình 3.2 Sơ đồ mạch in [13]
Trang 22ĐỒ ÁN 1 Trang 16/22
CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG VÀ THI CÔNG
4.1 Kết quả mô phỏng
Encoder hoạt động lấy được dữ liệu gửi về PIC
PIC tính toán số liệu rồi xuất ra kết quả hiển thị lên LCD
Trang 23Hình 4.2 : Mạch thực tế [15]
Trang 24ĐỒ ÁN 1 Trang 18/22
CHƯƠNG 5 KẾT LUẬN
5.1 Ưu điểm
Đo được tốc độ động cơ
Hiển thị chính xác các thông số không bị lỗi
Mạch đơn giản dễ chế tạo, ít tốn kém chi phí
Trang 25TÀI LIỆU THAM KHẢO
Tiếng Việt:
1 Thông tin cơ bản về linh kiện tại trang web Hshop.vn
2 Cơ bản về vi điều khiển và PIC tại http://www.picvietnam.com
3 Đo tốc độ động cơ hiển thị LCD tại http://www.picvietnam.com
Trang 26ĐỒ ÁN 1 Trang 20/22
#include <lcd_lib_4bit.c> // file giao tiep LCD
//khai bao ngo vao ra
Trang 27setup_timer_1(t1_internal);//khoi tao che do hoat dong timer1
SET_TIMER1(15536); //T_dinhthoi = (65536-15536)/(20.000/4) = 10000us = 10ms
enable_interrupts(int_ext); //su dung ngat cho bo do xung
ext_int_edge(0,h_to_l);
disable_interrupts(int_timer1);
enable_interrupts(global);//ngat toan cuc
DUNG://che do dung dong co
disable_interrupts(int_timer1);//tat che do ngat ngoai cua timer1 ( ngung lay xung tu
bo encoder )
DC = 0; //dung dong co
LCD_putcmd(0x80); LCD_putchar("DO TOC DO D.CO ");
LCD_putcmd(0xC0); LCD_putchar("DC DANG DUNG ");
while(true)
{
IF(K1==0) {WHILE(K1==0){}GOTO CHAY;}
}
CHAY://che do chay dong co
enable_interrupts(int_timer1);//bat che do ngat ngoai cua timer1 ( lay xung tu bo encoder )
DC=1;//dong co chay
LCD_putcmd(0x80); LCD_putchar("Toc do la: V");
LCD_putcmd(0xC0); LCD_putchar("DC DANG CHAY ");