Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
1,03 MB
Nội dung
1 [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD Nội dung: MẠCH ĐO NHIỆT ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ HIỂN THỊ LCD I KHÁI NIỆM CƠ BẢN VỀ MẠCH ĐO NHIỆT ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ 1.1 Khái niệm mạch đo nhiệt độ 1.2 Mơ hình điều khiển động 1.3 Hiển thị LCD II NGUYÊN LÝ HOẠT ĐỘNG PIC16F877A 2.1 Chức ADC PIC16F877A 2.2 Cài đặt chế độ ADC III NGUYÊN LÝ HOẠT ĐỘNG CỦA IC LM35 IV KHỐI HIỂN THỊ LCD 4.1 Cách nối dây LCD 4.2 Các hàm LCD V CÁC CHẾ ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ 5.1 Chế độ chọn mode hiển thị 10 5.2 Chế độ giảm mức điều chỉnh ngưỡng nhiệt độ bật/tắt động 10 5.3 Chế độ tăng mức điều chỉnh ngưỡng nhiệt độ bật/tắt động 11 5.4 Chế độ bật - tắt động 11 VI CÁC KHỐI CHỨC NĂNG KHÁC 12 6.1 Tần số hoạt động 12 6.2 Nguồn cung cấp cho PIC 12 VII CODE NẠP CHO PIC16F877A 13 VIII SƠ ĐỒ MẠCH THIẾT KẾ 18 IX SƠ ĐỒ MẠCH IN 19 X SẢN PHẨM THỰC TẾ 19 Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD MẠCH ĐO NHIỆT ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ HIỂN THỊ LCD I KHÁI NIỆM CƠ BẢN VỀ MẠCH ĐO NHIỆT ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ 1.1 Khái niệm mạch đo nhiệt độ Nhiệt độ đại lượng vật lý vơ hướng Để đo đạc tính tốn giá trị ta phải dùng cảm biến Mạch đo nhiệt độ dùng loại cảm biến LM35 Các cảm biến LM35 cảm biến nhiệt, mạch tích hợp xác cao mà điện áp đầu tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius(*) Bộ cảm biến LM35 khơng u cầu cân chỉnh ngồi vốn chúng cân chỉnh Chúng đưa điện áp 10mV cho thay đổi 10C Chương sau hướng dẫn chọn cảm biến họ LM35 cho phù hợp với mạch đo nhiệt độ cần thiết kế Như cần cảm biến LM35 ta tính giá trị nhiệt độ thời điểm xác định dựa vào giá trị điện áp đầu LM35 Như nói trên, ứng với thay đổi 10C, giá trị đầu tăng thêm 10mV Do đo, qua chuyển đổi tín hiệu tương tự (điện áp) sang tín hiệu số (bit) để hiển thị kết đo đạc tính tốn, xử lý kết Mạch chuyển đổi tương tự sang số ta dùng IC ADC0804, Vi điểu khiển, Pic… Ở dùng PIC16F877A, vừa chuyển đổi ADC, hiển thị LCD, vừa điều khiển động 1.2 Mô hình điều khiển động Để điều khiện động quay hay ngừng quay giống cơng tắc điện, bật quay tắt ngừng Quan trọng bật tắt phải thực cách tự động Giống nhiệt độ phịng mức 26oC quạt tự bật nhiệt độ phòng xuống thấp 22oC quạt tự động tắt Để làm điều phải có thiết bị đo nhiệt độ, nhiệt độ lớn hay nhỏ mức điện áp ngưỡng cài đặt động (quạt) điều khiển theo chế độ định sẵn Chương sau tìm hiểu sâu nguyên lý điều khiển cung chế độ khác dùng để điều khiện động 1.3 Hiển thị LCD Khi nhiệt đo qua cảm biến chuyển đổi qua tín hiệu số Chúng ta cần thiết bị để thị giá trị đo Thiết bị LED LCD,… Trong đề tài này, nhóm dùng LCD để hiển thị kết qua đo hiển thị chế độ điều khiện động LCD thiết bị thị hình với kích cỡ 2x16 Tức với hàng chữ, hàng 16 ký tự Để hiển thị nhiều dòng ký tự ta phải hiển thị Tùy thuộc vào mức quy mô mà ta lựa chọn thiết bị hiển thị phù hợp II NGUYÊN LÝ HOẠT ĐỘNG PIC16F877A 2.1 Chức ADC PIC16F877A - Trong PIC 16F877A có hỗ trợ chuyển đổi ADC 10 bit kênh PIC16F877A có ngõ vào Analog (RA4:RA0) RE2:RE0) Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD Kết chuyển đổi từ tín hiệu tương tự sang tín hiệu số 10 bít tương ứng lưu ghi ADRESH:ADRESL Khi không sử dụng chuyển đổi ADC, ghi sử dụng ghi thơng thường Khi q trình chuyển đơi hồn tất, kết lưu vào hai ghi ADRESH:ADRESL Cờ ngắt ADIF set Quá trình chuyển đổi tương tự sang số bao gốm bước sau: Thiết lập thông số cho chuyển đổi ADC Chọn ngõ vào alalog, chọn điện áp mẫu Chọn kênh chuyển đổi AD (Thanh ghi ADCON0) Chọn xung Clock cho kênh chuyển đổi AD Cho phép chuyển đổi AD hoạt động Thiết lập cờ ngắt cho AD Clear bit ADIF Set bit ADIE Set bit PEIE Set bit GIE Đợi trình lấy mẫu hồn tất Bắt đầu q trình chuyển đổi Đợi q trình chuyển đổi hồn tất Đọc kết chuyển đổi xóa cờ ngắt, set bit Tiếp tục thực bước cho trình chuyển đổi 2.2 Cài đặt chế độ ADC Cài đặt chế độ ADC: Setup_adc(mode): Cú pháp: Setup_adc (mode); Setup_adc2(mode); Thông số: Mode - chế độ tín hiệu tương tự sang tín hiệu số Sự lựa chọn hợp lý thay đổi phụ thuộc vào thiết bị Xem thiết bị có tập tin h cho tất lựa chọn Một vài lựa chọn tiêu biểu bao gồm: ADC_OFF ADC_CLOCK_INTERNAL ADC_CLOCK_DIV_32 - Trả về: Khơng định nghĩa - Chức năng: Định hình thể chuyển từ tín hiệu tương tự sang tín hiệu số - Tiện lợi: Chỉ có thiết bị có chuyển đổi tín hiệu tương tự sang tín hiệu số - Yêu cầu: Những số định nghĩa tập tin h thiết bị Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD Ví dụ: setup_adc_ports( ALL_ANALOG ); setup_adc (ADC_CLOCK_INTERNAL ); set_adc_channel( ); value = read_adc(); setup_adc( ADC_OFF ); Setup_adc_ports(value): Thiết lập chân ADC có sẵn để chuyển từ tín hiệu tương tự sang tín hiệu số Cú pháp: Setup_adc_ports (value) Thông số: Value - Một số định nghĩa tập tin h thiết bị - Trả về: Không định nghĩa - Chức năng: Cài đặt chân ADC tín hiệu tương tự, tín hiệu số kết hợp điện áp tham chiếu để sử dụng tính tóan giá trị ADC Sự kết hợp chân tín hiệu tương tự cho phép thay đổi phụ thuộc vào chip định nghĩa cách sử dụng bit OR để ghép chân chọn với Kiểm tra thiết bị bao gồm tập tin chân điện áp tham chiếu đặt danh sách hòan chỉnh Hằng số ALL_ANALOG NO_ANALOG hợp lý cho tất chip Một vài ví dụ khác định nghĩa chân là: ANALOG_RA3_REF - Kích hoạt tất chân tín hiệu tương tự chân RA3 điện áp tham chiếu RA0_RA1_RA3_ANALOG - Chỉ có chân RA0, RA1, RA3 tín hiệu tương tự - Tiện lợi: Chức có sẵn thiết bị với phần cứng Analog/Digital - Yêu cầu: Những số định nghĩa tập tin h thiết bị Ví dụ: //Tất chân analog Setup_adc_ports( ALL_ANALOG ); Chân A0,A1,A3 analog, tất chân lại digital Điện áp +5V sử dụng điện áp tham chiếu Setup_adc_ports( RA0_RA1_RA3_ANALOG ); //Chân A0,A1 analog,chân A3 sử dụng cho điện áp tham chiếu tất chân lại digital Setup_adc_ports( A0_RA1_ANALOGRA3_REF ); Set_adc_channel(channel): Chỉ rõ kênh dung để sử dụng cho việc gọi Analog/Digital Cú pháp: set_adc_channel (chan) Thông số: Chân số kênh chọn.Số chân bắt đầu đặt nhãn datasheet AN0,AN1 - Trả về: Không định nghĩa Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD - Chức năng: Chỉ rõ kênh sử dụng cho việc gọi lệnh READ_ADC() Phải chờ khoảng thời gian ngắn sau thay đổi kênh trước nhận giá trị đọc hợp lý Thời gian thay đổi phụ thuộc vào trở kháng nguồn đầu vào Khoảng 10us nói chung tốt cho hầu hết ứng dụng Không cần thay đổi kênh trước lần đọc kênh không thay đổi Tiện lợi: Chức có sẵn thiết bị với phần cứng Analog/Digital - u cầu:Khơng cần thứ Ví dụ: Set_adc_channel(2); delay_us(10); value = read_adc(); read_adc(mode): Bắt đầu trình chuyển đổi đọc giá trị.Chế độ điều khiển chức Cú pháp: value = read_adc ([mode]); Thông số: mode thông số không bắt buộc.Nếu sử dụng giá trị có thể: ADC_START_AND_READ (Liên tục đọc,và mặc định ) ADC_START_ONLY (Bắt đầu trình chuyển đổi trả giá trị) ADC_READ_ONLY (Đọc kết chuyển đổi cuối ) - Trả về: bit 16 bit số nguyên phụ thuộc vào #DEVICE ADC= directive (directive:lời dẫn, 16) - Chức năng: Đây chức đọc giá trị số từ chuyển đổi tín hiệu tương tự sang tín hiệu số Gọi lệnh setup_adc(), setup_adc_ports() and set_adc_channel() nên làm vài lần trước chức gọi Dãy giá trị trả phụ thuộc vào số lượng bit tbộ chuyển đổi Analog/Digital chip đặt DEVICE ADC= directive sau: #DEVICE bit 10 bit 11 bit 12 bit 16 bit ADC=8 00-FF 00-FF 00-FF 00-FF 00-FF ADC=10 x 0-3FF X 0-3FF x ADC=11 x x 0-7FF x x ADC=16 0-FF00 0-FFC0 0-FFEO 0-FFF0 0-FFFF Lưu ý: X không định nghĩa - Tiện lợi: Chức có sẵn thiết bị với phần cứng Analog/Digital - Yêu cầu: Những chân cố định định nghĩa tập tin h thiết bị Ví dụ: Setup_adc( ADC_CLOCK_INTERNAL ); Setup_adc_ports( ALL_ANALOG ); Set_adc_channel(1); While ( input(PIN_B0) { delay_ms( 5000 ); value = read_adc(); printf("A/D value = %2x\n\r", value); } Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD read_adc(ADC_START_ONLY); sleep(); value=read_adc(ADC_READ_ONLY); ADC_done():Trả chuyển đổi hòan thành việc chuyển đổi - Tiền xử lý có liên quan: #DEVICE ADC=xx : Định hình thể read_adc trả kính thước Ví dụ, sử dụng PIC với 10 bit A/D bạn sử dụng 10 cho xx- trả bye có trọng số cao nhất, 10 trả tòan giá trị đọc A/D 10 bit Các ngắt có liên quan: INT_AD: Ngắt xảy q trình chuyển đổi hồn tất INT_ADOF: Ngắt xảy trình chuyển đổi thời gian chờ Các tập tin có liên quan: Khơng có,tất chức cài đặt sẵn Các thơng số getenv() có liên quan: ADC_CHANNELS : Số kênh Analog/Digital ADC_RESOLUTION : Số lượng bit trả lệnh read_adc III NGUYÊN LÝ HOẠT ĐỘNG CỦA IC LM35 LM 35 cảm biến nhiệt độ LM35 có chân (2 chân cấp nguồn chân xuất điện áp tùy theo nhiệt độ) Nhiệt độ tăng 1C điện áp xuất chân out LM35 tăng 10mV Hình 1: Hình Để đo lường nhiệt độ dùng nhiều loại cảm biến nhiệt khác, loại có ưu điểm riêng phù hợp với nhu cầu riêng Ở đề tài đo nhiệt độ mơi trường bình thường nên sử dụng LM35 tối ưu vì: loại cảm biến có độ xác cao, tầm hoạt động tuyến tính từ 0-128 độ C, tiêu tán công suất thấp Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD Chân 1: Đấu với nguồn Nguồn cung cấp từ 4V đến 20V tùy loại IC LM35 sử dụng Chân 2: Chân Vout cho giá trị thay đổi theo nhiệt độ môi trường Ứng với giá trị nhiệt độ đầu vào ta có mức điện áp tương ứng Với chênh lệch 1oC điện áp đầu chênh lệch 10mV Chân 3: Chân nối đất Sơ đồ mạch hình bên: (Hình 3) (Hình 3) IV KHỐI HIỂN THỊ LCD Như đề cấp trước, LCD dùng LCD hàng, hàng 16 ký tự Để sử dụng LCD , ta đọc file “LCD.C” thư viện Driver CCS Ở CCS hướng dẫn cách ta dây cho chân LCD, đồng thời CCS viết sẵn cho ta hàm thao tác cho LCD: 4.1 Cách nối dây LCD Cách nối dây: // Định nghĩa chức chân // D0 Enable // D1 RS (Reset) // D2 RW (Rewrite) // D4 D4 // D5 D5 // D6 D6 // D7 D7 // LCD chân D0-D3 không sử dụng 4.2 Các hàm LCD - Wrtchar("char") : hàm để xuất ký tự LCD - Setcursor(x,y) : hàm cho phép trỏ nhảy tới vị trí (x,y) LCD Mơ ví dụ dùng LCD Proteus: Code : #include #include #device *=16 ADC=10 #include Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD #use delay(clock=20000000) void hiennhietdo() // Ham hien thi nhiet do duoc tu LM35 { int8 t,chuc,donvi; setcursor(0,0); wrtchar("- DO NHIET DO -"); // Hien thi dong tren t = ct; chuc = t/10 + 48; // Tach so hang chuc va hang don vi donvi = t%10 + 48; setcursor(0,1); wrtchar("NHIET DO: "); // Hien thi so nhiet len LCD wrtchar(chuc); wrtchar(donvi); wrtchar("*C"); delay_ms(50); } V CÁC CHẾ ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ - Các chế độ điều khiển Code chọn chế độ điều khiện ứng với nút bấm Phím 1: Chọn chế độ - mode Phím 2: Chỉnh tăng ngưỡng nhiệt độ Phím 3: Chỉnh giảm ngưỡng nhiệt độ Phím 4: Chế độ bật tắt động Void readkb() // Ham phat hien phim bam { anphim=0; if(INPUT(PIN_C0)==0) // Neu phim duoc an (phim chon mode) { delay_ms(150); // Ham delay chong rung phim while(INPUT(PIN_C0)==0); // Cho den nut duoc tha mode++; // Tang mode len de chuyen sang mode ke tiep if(mode==3) mode=0; // Lap lai mode da chuyen qua het cac mode anphim=1; Page [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD } else { if(INPUT(PIN_C1)==0) // Neu phim duoc an (phim giam) { delay_ms(150); // Chong rung phim (cho phim duoc an luc) if(INPUT(PIN_C1)==0) { if(mode==1) { if(tmin>0) tmin ; anphim=1; } // Giam nguong theo mode, "tmin" >0 giảm if(mode==2) { if(tmax>tmin+1) tmax ; anphim=1; } // de "tmax" không nhỏ "tmin" +1 } } else { if(INPUT(PIN_C2)==0) // Neu phim duoc an (phim tang) { delay_ms(150); // Cho phim duoc an luc if(INPUT(PIN_C2)==0) { if(mode==1) { if(tmintmax-1 } if(mode==2) { if(tmax=tmin&&ct0) tmin ; anphim=1; } // Giam nguong theo mode, "tmin" >0 thi giam if(mode==2) { if(tmax>tmin+1) tmax ; anphim=1; } // de "tmax" khong nho hon "tmin" +1 } } 5.3 Chế độ tăng mức điều chỉnh ngưỡng nhiệt độ bật/tắt động Phím bấm thứ kích hoạt chế độ điều khiển Khi chọn chế độ mode tắt bật động chế độ điều khiển làm tăng giá trị ngưỡng cài đặt nhiệt độ để tắt bật động Code: If (INPUT(PIN_C2)==0) // Neu phim duoc an (phim tang) { delay_ms(150); // Cho phim duoc an luc if (INPUT(PIN_C2)==0) { If (mode==1) { If (tmintmax-1 } if(mode==2) { if(tmax=tmin&&ct 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NODEBUG //No Debug mode for ICD #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #FUSES NOWRT //Program memory not write protected #FUSES RESERVED //Used to set the reserved FUSE bits #use delay(clock=20000000) int8 mode,tmin,tmax; // Khai bao cac bien dung ct int16 ct; int1 bat,anphim,docnhietdo; int8 cnt=0; void readkb() // Ham phat hien phim bam { anphim=0; if(INPUT(PIN_C0)==0) // Neu phim duoc an (phim chon mode) { delay_ms(150); // Ham delay chong rung phim while(INPUT(PIN_C0)==0); // Cho den nut duoc tha mode++; // Tang mode len de chuyen sang mode ke tiep if(mode==3) mode=0; // Lap lai mode da chuyen qua het cac mode Page 13 14 [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD anphim=1; } else { if(INPUT(PIN_C1)==0) // Neu phim duoc an (phim giam) { delay_ms(150); // Chong rung phim (cho phim duoc an luc) if(INPUT(PIN_C1)==0) { if(mode==1) { if(tmin>0) tmin ; anphim=1; } // Giam nguong theo mode, "tmin" >0 giảm if(mode==2) { if(tmax>tmin+1) tmax ; anphim=1; } // de "tmax" không nhỏ "tmin" +1 } } else { if(INPUT(PIN_C2)==0) // Neu phim duoc an (phim tang) { delay_ms(150); // Cho phim duoc an luc if(INPUT(PIN_C2)==0) { if(mode==1) { if(tmintmax-1 } if(mode==2) { if(tmax=tmin&&ct mot ngat tuong ung voi 0.1s ) ENABLE_INTERRUPTS(INT_TIMER1); // Cho phep ngat timer1 ENABLE_INTERRUPTS(GLOBAL); // Cho phep ngat toan cuc ct = READ_ADC(); // Doc gia tri nhiet dau tien ct = ct*0.49; while(1) // Vong lap vo han { selectmode(); { if(docnhietdo==1) // Neu nhiet duoc doc thi hien thi LCD neu dang { // o mode hien thi va tien hanh kiem tra nguong if(mode==0) { hiennhietdo(); } check(); // Kiem tra nguong } readkb(); } while(anphim==0); // Lien tuc lap lai viec kiem tra xem nhiet } // co duoc doc hay ko va kiem tra phim bam } VIII SƠ ĐỒ MẠCH THIẾT KẾ Page 18 19 [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD Mạch mô phần mềm Protues 7.6 IX SƠ ĐỒ MẠCH IN X SẢN PHẨM THỰC TẾ Page 19 ... - Mạch đo nhiệt độ điều khiển động cơ, hiển thị LCD MẠCH ĐO NHIỆT ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ HIỂN THỊ LCD I KHÁI NIỆM CƠ BẢN VỀ MẠCH ĐO NHIỆT ĐỘ ĐIỀU KHIỂN ĐỘNG CƠ 1.1 Khái niệm mạch đo nhiệt độ Nhiệt. .. Chế độ bật - tắt động Phím bấm thứ kích hoạt chế độ điều khiển Khi chọn chế độ mode tắt bật động chế độ điều khiển tắt bật động Code: Page 11 12 [at_nightfall_09] - Mạch đo nhiệt độ điều khiển động. .. ADC, hiển thị LCD, vừa điều khiển động 1.2 Mơ hình điều khiển động Để điều khiện động quay hay ngừng quay giống cơng tắc điện, bật quay tắt ngừng Quan trọng bật tắt phải thực cách tự động Giống nhiệt