HIỂN THỊ TỐC ĐỘ ĐỘNG CƠ RA LED MATRIX HỆ THỐNG NHÚNG( LẤY FILE CODE PIC+ MÔ PHỎNG PROTEUS LIÊN HỆ ZALO 0327697318)

17 12 0
HIỂN THỊ TỐC ĐỘ ĐỘNG CƠ RA LED MATRIX HỆ THỐNG NHÚNG( LẤY FILE CODE PIC+ MÔ PHỎNG PROTEUS LIÊN HỆ ZALO 0327697318)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HIỂN THỊ TỐC ĐỘ ĐỘNG CƠ RA LED MATRIX HỆ THỐNG NHÚNG( LẤY FILE CODE PIC+ MÔ PHỎNG PROTEUS LIÊN HỆ ZALO 0327697318)HIỂN THỊ TỐC ĐỘ ĐỘNG CƠ RA LED MATRIX HỆ THỐNG NHÚNG( LẤY FILE CODE PIC+ MÔ PHỎNG PROTEUS LIÊN HỆ ZALO 0327697318)

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP KHOA ĐIỆN TƯ BÁO CÁO TIỂU LUẬN HỆ THỐNG NHÚNG ĐỀ TÀI: HIỂN THỊ TỐC ĐỘ ĐỘNG CƠ RA MÀN HÌNH LCD GVHD : TĂNG CẨM NHUNG SVTH : Tạ Văn Linh (NT) MSSV : K175520114028 SVTH : Nguyễn Thanh Bình MSSV : K175520114005 LỚP: 53CDT1 Thái Nguyên, ngày 25 tháng 06 năm 2021 Hệ thống hiển thị tốc độ động lên LCD CHƯƠNG I: GIỚI THIỆU I Tổng quan về đề tài II Phạm vi nghiên cứu III yêu cầu chính của đề tài Hình 1: sơ đồ khối Timer0 Hình 2: sơ đồ khối Timerl: Hình 3: sơ đồ khối Timer2 10 CHƯƠNG II: THIẾT KẾ 11 I 11 11 11 11 11 12 12 12 13 13 14 15 Thiết kế sơ đồ khối Sơ đồ khối tổng thể Hình 4: Sơ đồ khối tổng thể bộ hiển thị tốc độ động Nguyên lý hoạt động sơ đồ: Chức của khối: a) Khối điều khiển: Hình 5: Vi điều khiển Pic16F877A b) Khối hiển thị Hình 6: LCD LM044L b) Động encoder Hình 7: Động encoder Hình 8: Nguyên lý làm việc encoder Lưu đồ và chương trình Thiết kế bộ hiển thị tốc độ động LCD a Lưu đồ cho biết trình tự điều khiển Hình 9: Lưu đồ trình tự làm việc Hình 10: Chương trình code PIC C c Sơ đồ mô phỏng đề tài Proteus Hình 11: Hình mô phỏng toàn bộ mạch đề tài d Giải thích code 16 16 16 17 18 18 18 CHƯƠNG : KẾT QUẢ THỰC HIỆN VÀ KẾT LUẬN 21 CHƯƠNG I: GIỚI THIỆU I Tổng quan về đề tài Đề tài chúng em là sử dụng ngắt timer đo tốc độ động và hiện thị màn hình LCD Hiện chúng em thực hiện chương trình mô phỏng phần mềm proteus và code chương trình mô phỏng được viết phần mềm CCS II Phạm vi nghiên cứu - Do điều kiện kinh tế thì phạm vi bài tiểu luận này, chúng em thiết kế bộ đọc tốc đọ động màn hình LCD sau: + Sử dụng nguồn pin(12V) + 01 vi điều khiển Pic 16f877a + 01 LCD(20x4) để hiển thị tốc độ động + 01 động encoder - Xác định bài toán phải đạt yêu cầu sau: +) Hệ thớng có khả đọc được tớc độ động +) Hệ thống làm việc ổn định nhiệt độ môi trường thay đổi +) Kích thước nhỏ gọn, đơn giản… III Yêu cầu chính của đề tài - Sử dụng ngắt Timer để đo tốc độ động * Khái niệm về timer PIC18F77A Thực chất Timer/Counter là một bộ đếm, đếm xung nhịp (xung clock) Nó chứa ghi chứa giá trị đếm và ghi điều khiển hoạt động đếm này Nguồn xung nhịp được chọn để đếm có thể là nguồn xung nhịp nội (bên vi điều khiển), có thể lập trình chọn nguồn xung nhịp bên ngoài (đưa vào mợt chân nào đó) Người dùng có thể Lập trình Timer/Counter bắt đầu đếm từ giá trị nào cách ghi giá trị vào ghi chứa giá trị đếm Khi giá trị đếm vượt giá trị tối đa mà ghi chứa giá trị Timer/Counter thì xuất hiện hiện tượng gọi là “tràn (over flow)” - Trong PIC16f877a hiện có bợ định thười gồm: + timer0 +timer +timer a) TIMER0 Đây là một ba bộ đếm bộ định thời vi điều khiển PIC16F877A Timer01 là bộ đếm bit được kết nối với bộ chia tần số (prescaler) bit Cấu trúc Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực xung clock Ngắt Timer0 xuất hiện Timer0 bị tràn Bit TMR0IE (INTCON) là bit điều khiển Timer0 TMROID=1 cho phép ngắt Timer0 tác động, TMROIF= không cho phép ngắt Timer0 tác động Sơ đồ khối Timer0 sau: Hình 1: sơ đồ khối Timer0 Muốn Timer hoạt động chế độ Timer ta clear bit TOSC (OPTION_REG), giá trị ghi TMR0 tăng theo chu kì xung đồng hồ (tần số vào Timer0 tần số oscillator) Khi giá trị ghi TMR0 từ FFh trở 00h, ngắt Timer0 xuất hiện Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn định thời điểm ngắt Timer0 xuất hiện một cách linh động Muốn Timer0 hoạt động chế độ counter ta set bit TOSC (OPTION_REG) Khi xung tác động lên bộ đếm được lấy từ chân RA4/TOCKI Bịt TOSE (OPTION_REG) cho phép lựa chọn cạnh tác động vào bột đếm Cạnh tác động là cạnh lên TOSE=0 và cạnh tác động là cạnh xuống TOSE=1 Khi ghi TMR0 bị tràn, bit TMR0IF (INTCON) được set Đây chính là ngắt Timer0 Cờ ngắt này phải được xóa chương trình trước bộ đếm bắt đầu thực hiện lại trình đếm Ngắt Timer0 không thể “đánh thức” vi điều khiển từ chế độ sleep Bộ chia tần số (prescaler) được chia sẻ Timer0 và WDT (Watchdog Timer) Điều có nghĩa là prescaler được sử dụng cho Timer0 thì WDT khơng có được hỗ trợ prescaler và ngược lại Prescaler được điều khiển ghi OPTION_REG Bit PSA (OPTION_REG) xác định đối tượng tác động prescaler Các bit PS2 PS0 (OPTION_REG được gán giá trị Khi clear bit T10SCEN Timer1 lấy xung đếm từ oscillator từ chân RC0/TiOSO/TICKI Timer1 có hai chế đợ đếm là đồng bợ (Synchronous) và bất đồng bộ (Asynchronous) Chế độ đếm được định bit điều khiển T1SYNC (TICON) Khi T1SYNC=1 xung đếm lấy từ bên ngoài không được đồng bợ hóa với xung clock bên trong, Timer1 tiếp tục trình đến vi điều khiển chế độ sleep và ngắt Timerl tạo bị tràn có khả “đánh thức” vi điều khiển Ở chế độ đếm bất đồng bộ, Timer không thể được sử dụng để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse width modulation) Khi TOSYNC50 xung đếm vào Timer1 được đồng bợ hóa với xung clock bên Ở chế độ này Timer1 không hoạt động vi điều khiển chế độ sleep Các ghi liên quan đến Timer1 bao gồm: INTCON (địa OBh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và PEIE) PIR1 (địa (Ch): chứa cờ ngắt Timer1 (TMRTIF) PIER( địa 8Ch): cho phép ngắt Timer1 (TMRIIE) TMRIL (địa (Eh): chứa giá trị bit thấp bộ đếm Timer1 TMR1H (địa IEh): chứa giá trị bit cao bộ đếm Timer1 c) TIMER2 10 Timer2 là bộ định thời bit và được hỗ trợ hai bộ chia tần số prescaler va postscaler Thanh ghi chứa giá trị đếm Timer2 là TMR2 Bit cho phép ngắt Timer2 tác động là TMR2ỘN (T2CON) Cờ ngắt Timer2 là bit TMR2IF (PIRI) Xung ngõ vào (tần số tần số oscillator) được đưa qua bộ chia tần số prescaler bit (với tỉ số chia tần số là 1:1, 1:4 1:16 và được điều khiển bit T2CKPS1:T2CKPS0 Hình 3: sơ đồ khới Timer2 Timer2 cịn được hỗ trợ ghi PR2 Giá trị đếm ghi TMR2 tăng từ 00h đến giá trị chứa ghi PR2, sau được reset 00h Kh I reset ghi PR2 được nhận giá trị mặc định FFh Ngõ Timer2 được đưa qua bộ chia tần số postscaler với mức chia từ 1:1 đến 1:16 Postscaler được điều khiển bit T20ỤTPS3:T2OUTPS4, Ngõ postscaler đóng vai trị định việc điều khiển cờ ngắt Ngoài ngõ Timer2 cịn được kết nới với khới SSP, Timer2 cịn đóng vai trị tạo xung clock đồng bộ cho khối giao tiếp SSP Các ghi liên quan đến Timer2 bao gồm: INTCON (địa (Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ ngắt (GIE và PEIE) PIR1 (địa ( Ch): chứa cờ ngắt Timer2 (TMR2IF) PIE1 (địa 8Ch): chứa bit điều khiển Timer2 (TMR2IE) TMR2 (địa 11h): chứa giá trị đếm Timer2 T2CON (địa 12h): xác lập thông số cho Timer2 11 CHƯƠNG II: THIẾT KẾ I Thiết kế sơ đồ khối Sơ đồ khối tổng thể Sau nghiên cứu thì theo yêu cầu đề tài thì nhóm chúng tơi tiến hành thiết kế sơ đồ khối máy tính cầm tay hình sau: Hình 4: Sơ đồ khối tổng thể bộ hiển thị tốc độ động Nguyên lý hoạt động sơ đồ: Khi hệ thống được đảm bảo lúc hệ thớng được cấp nguồn và bắt đầu hoạt động Khi khối xử lý được cấp điện, khối này lấy thông tin, liệu được cài sẵn thiết bị để phân tích và đưa tín hiệu Lúc này tín hiệu được xuất động làm cho động quay và xuất khối hiển thị để hiển thị kết quả thu được Chức của khối: +) Khối nguồn: cung cấp điện áp chuẩn 12V cho PIC hoạt động +) Khối điều khiển: Xử lý thông tin nhập vào từ khới nhập liệu mã hóa và đưa khối hiển thị +) Khối hiển thị: hiển thị liệu được nhập và kết quả đưa vào LCD(20x4)sau được tính tốn từ khới điều khiển 12 a) Khối điều khiển: Có thể sử dụng loại VĐK AVR, 8051, ARM, PIC mà có khả đáp ứng cho việc thực hiện phép tính toán ( + - * / ) đáp ứng yêu cầu bài tốn Tuy nhiên hệ thớng này lựa chọn PIC 18F877A: Hình 5: Vi điều khiển Pic16F877A − Ưu điểm vi điều khiển này: + Họ vi điều khiển này có thể dễ dàng mua thị trường + Tính phổ biến cao + Giá thành hợp lí + Có đầy đủ tính mợt vi điều khiển hoạt động độc lập + Sự hỗ trợ nhà sản xuất trình biên dịch, công cụ lập trình, ngôn ngữ lập trình phổ biến + Không phức tạp lập trình + Lập trình LCD đơn giản nhiều so với họ vi điều khiển khác b) Khối hiển thị Có thể sử dụng nhiều thiết bị hiển thị có khả đáp ứng cho hệ thớng này như: LED thanh, LED ma trận, LED đơn, LCD Nhưng bài này, chúng ta nghiên cứu LCD LM044L a) LCD LM044L Đây là thiết bị hiển thị có đợ phân giải cao, hiển thị kết quả rõ ràng, giá thành khơng q đắt Vì là thiết bị đáp ứng cho hệ thống này là tốt 13 Hình 6: LCD LM044L Chức chân: ● VSS: Chân nối đất cho LCD ● VDD: Chân cấp nguồn cho LCD ● VEE: Điều chỉnh tương phản cho LCD ● RS: Chân chọn ghi (Register select) Nối chân RS với logic “0” (GND) logic “1” (VCC) để chọn ghi +) Logic “0”: Bus DB0-DB7 nối với ghi lệnh IR LCD (ở chế độ “ghi” -write) nối với bộ đếm địa LCD (ở chế độ “đọc” - read) +) Logic “1”: Bus DB0-DB7 nối với ghi liệu DR bên LCD ● 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, nối với logic “1” để LCD chế độ đọc ● E: Chân cho phép (Enable) Sau tín hiệu được đặt lên bus DB0DB7, lệnh được chấp nhận có xung cho phép chân E +) Ở chế độ ghi: Dữ liệu bus được LCD chuyển vào(chấp nhận) ghi bên phát hiện một xung (high-to-low transition) tín hiệu chân E +) Ở chế độ đọc: Dữ liệu được LCD xuất DB0-DB7 phát hiện cạnh lên (low-to-high transition) chân E và được LCD giữ bus đến nào chân E xuống mức thấp ● D0-D7: Tám đường bus liệu dùng để trao đổi thơng tin với MPU Có chế đợ sử dụng đường bus này : +) Chế độ bit : Dữ liệu được truyền cả đường, với bit MSB là bit DB7 +) Chế độ bit : Dữ liệu được truyền đường từ DB4 tới DB7, bit MSB là 14 DB7 b) Động encoder Theo yêu cầu đề tài đặt thì chúng em sử dụng động encoder, loại động chuyên dùng để điều khiển và đọc tốc độ động theo yêu cầu đề tài Hình 7: Động encoder Nguyên lý hoạt động encoder − Encoder hoạt động nguyên lý đĩa quay quanh trục, đĩa có rãnh để tín hiệu quang chiếu qua đĩa (Led) Chỗ có lỗ (rãnh) thì ánh sáng xuyên qua được, chỗ khơng có lỗ (rãnh) ánh sáng khơng xun qua được.Với tín hiệu 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 Sớ xung đếm được và tăng lên tính sớ lần ánh sáng bị cắt Cảm biến thu ánh sáng bật tắt liên tục => tạo xung vuông Việc sử dụng bợ mã hóa ghi nhận lại số xung và tốc độ xung Tín hiệu dạng xung được truyền bộ xử lý trung tâm : vi xử lý PLC,… người điều khiển biết được vị trí và tốc độ động 15 Hình 8: Nguyên lý làm việc encoder − Thông số cần quan tâm chọn Encoder: + Độ phân giải: hay cịn gọi là sớ xung – tương ứng số tín hiệu encoder đếm được quay vịng Encoder có sớ xung càng cao thì giá càng cao Thang máy thường dùng xung 1024p/r, chế tạo máy vào khoảng 360p/r, 1000p/r Ngoài cịn có xung lên đến 6000p/r 6pr + Điện áp: Encoder thường xuyên bị cháy lắp đặt không chú ý nguồn cấp Nếu encoder có dãy điện áp:5~24V thì dễ Tuy nhiên với một số encoder trục lớn: 3040mm, encoder theo máy thường gặp điện áp xác định: 5V, 12V 15V Do phải đọc kỹ lại trước lắp Vì encoder cháy thì bắt buộc thay cả con, tốn tiền + Ngõ ra: AB, ABZ, AB đảo, ABZ đảo Bạn dễ dàng xác định tín hiệu ngõ cách xem số dây được kí hiệu tem + Dạng ngõ ra: Có nhiều dạng ngõ ra, liệt kê sơ sơ gồm: Open Collector, Voltage Output, Complemental, Totem Pole, Line Driver Dạng ngõ quy định nguồn cấp, đầu đọc thông tin … − Như hệ thống sử dụng linh kiện bản sau: + PIC 16F877A + LCD1 LM044L + Động encoder 16 II.Lưu đồ và chương trình Thiết kế bộ hiển thị tốc độ động LCD a Lưu đồ cho biết trình tự điều khiển Hình 9: Lưu đồ trình tự làm việc b Chương trình PIC C 17 Hình 10: Chương trình code PIC C c Sơ đồ mô phỏng đề tài Proteus Hình 11: Hình mô phỏng toàn bộ mạch đề tài d Giải thích code 18 #include //khai báo thư viện PIC 16F844A #use delay(clock=20M) #define LCD_ENABLE_PIN PIN_E2 #define LCD_RS_PIN PIN_E0 #define LCD_RW_PIN PIN_E1 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 #include //khai báo chân LCD //khai báo thư viện LCD unsigned int16 a=0,c=0,d; //Khai báo biến sử dụng #int_TIMER0 //cờ tràn timer0 void ngat1() //hàm ngắt { c++; // tăng biến c lên đơn vị } void main() { set_tris_C(0xff); //Setup chân C input set_tris_D(0xff); //Setup chân D set_tris_E(0xff); //Setup chân E SETUP_COUNTERS(T0_EXT_L_TO_H,T0_DIV_1); đếm xung ngoài //cài đặt timer chế độ counter enable_interrupts(INT_TIMER0); //bật, ngắt timer enable_interrupts(GLOBAL); //bật, ngắt toàn cục 19 set_timer0(0); //setup timer0 giá trị ban đầu lcd_init(); while(TRUE) { set_timer0(0); //setup timer0 giá trị ban đầu delay_ms(1000); // tạo trễ giây a= get_timer0() + c*256; //công thức tính số xung giây c=0; //reset c=0 lcd_gotoxy(2,1); //thiết lập hiển thị LCD dịng printf(lcd_putc,"xung: %lux/s", a); // hiển thị sớ xung/giây dựa biến a d= (a*60)/24; //công thức tính tốc độ động phút lcd_gotoxy(1,2); //thiết lập hiển thị LCD dòng printf(lcd_putc,"tocdo: %luv/p", d); //// hiển thị tốc độ động dựa biến d } } 20 CHƯƠNG : KẾT QUẢ THỰC HIỆN VÀ KẾT LUẬN ● Quá trình thực hiện mô phỏng chương trình chạy đúng theo dự kiến đề tài ,trong thực hiện có gặp mợt sớ khó khăc chúng em đac khắc phục được ● Mô hình chúng em có hướng phát triền tớt Ví dụ phát triển lên mợt hệ thớng điều khiển có khới phát xung và mợt sớ nút bấm có chức tùy chỉnh động tốc độ 21 ... động Nguyên lý hoạt động sơ đồ: Chức của khối: a) Khối điều khiển: Hình 5: Vi điều khiển Pic16F877A b) Khối hiển thị Hình 6: LCD LM044L b) Động encoder Hình 7: Động encoder Hình 8: Nguyên... với họ vi điều khiển khác b) Khối hiển thị Có thể sử dụng nhiều thiết bị hiển thị có khả đáp ứng cho hệ thống này như: LED thanh, LED ma trận, LED đơn, LCD Nhưng bài này, chúng... DB7 b) Động encoder Theo yêu cầu đề tài đặt thì chúng em sử dụng động encoder, loại động chuyên dùng để điều khiển và đọc tốc độ động theo yêu cầu đề tài Hình 7: Động encoder

Ngày đăng: 05/01/2022, 17:17

Mục lục

    CHƯƠNG I: GIỚI THIỆU

    I. Tổng quan về đề tài

    II .Phạm vi nghiên cứu

    III . Yêu cầu chính của đề tài

    Hình 1: sơ đồ khối của Timer0

    Hình 2: sơ đồ khối của Timerl:

    Hình 3: sơ đồ khối của Timer2

    CHƯƠNG II: THIẾT KẾ

    I. Thiết kế sơ đồ khối

    1. Sơ đồ khối tổng thể