Yêu cầu công nghệ: Thiết kế bộ đo nhiệt độ dùng vi điều khiển 8051 gồm: Cảm biến nhiệt độ dùng LM35 Giao tiếp bằng LCD và nút bấm, ghép nối trực tiếp vi điều khiển Điều khiển chạydừng đo: khi nhiệt độ lớn hơn nhiệt độ đặt trước (có thể cài đặt trước) thì out 1 đầu ra.Từ yêu cầu của đề bài trên, nhóm đã chọn các thiết bị chính sau đề hoàn thành: Vi điều khiển 8031, IC ADC0808, LCD16x2, cảm biến nhiệt độ LM35.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN - - BÀI TẬP LỚN VI ĐIỀU KHIỂN VÀ ỨNG DỤNG (EE4422) ĐỀ TÀI: THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ HIỂN THỊ LCD KÈM CẢNH BÁO Giảng viên hướng dẫn: TS Nguyễn Danh Huy Sinh viên thực hiện: Hà Nội, 6/2020 LÝ DO CHỌN ĐỀ TÀI Ngày nay, với phát triển công nghiệp vi điện tử, kỹ thuật số hệ thống đo lường điều khiển tự động hóa Với kỹ thuật tiên tiến vi xử lí, vi mạch số đựơc ứng dụng vào lĩnh vực đo lường điều khiển, hệ thống đo lường điều khiển khí thơ sơ, với tốc độ xử lí chậm chạp xác thay hệ thống đo lường điều khiển tự động với lệnh chương trình thiết lập trước Trong trình sản xuất nhà máy, xí nghiệp nay, việc đo khống chế nhiệt độ tự động yêu cầu cần thiết quan trọng Vì nắm bắt nhiệt độ làm việc hệ thống, dây chuyền sản xuất giúp ta biết tình trạng làm việc chúng có xử lý, cảnh báo kịp thời tránh hư hỏng cố xảy Nhận biết tầm quan trọng việc đo khống chế nhiệt độ, nhóm chúng em thực đề tài “Thiết kế mạch đo nhiệt độ hiển thị LCD kèm cảnh báo” dựa vào kiến thức học từ môn Vi điều khiển ứng dụng Trong trình thực hiện, chúng em xin chân thành cảm ơn hướng dẫn giảng dạy TS Nguyễn Danh Huy giúp chúng em hoàn thành tập lớn Nhóm sinh viên thực Vũ Hải Đăng Nguyễn Phi Đạt Nguyễn Xn Trí CHƯƠNG I: PHÂN TÍCH U CẦU CÔNG NGHỆ Đề bài: Thiết kế đo nhiệt độ dùng vi điều khiển 8051 gồm: • Cảm biến nhiệt độ dùng LM35 • Giao tiếp LCD nút bấm, ghép nối trực tiếp vi điều khiển • Điều khiển chạy/dừng đo: nhiệt độ lớn nhiệt độ đặt trước (có thể cài đặt được) out đầu Từ yêu cầu đề trên, nhóm chọn thiết bị sau để hồn thành: - Vi điều khiển 8051 IC ADC0808 LCD16x2 Cảm biến nhiệt độ LM35 Sơ đồ ghép nối đơn giản: Sơ đồ nguyên lí 1.1 Phân tích mạch Cảm biến nhiệt LM35 nối với đầu vào IN0 tương ứng với chân chọn địa đầu vào ADD A = ADD B = ADD C = Đầu số ADC0808 nối với Port 8051 Vì cảm biến LM35 làm loại LM35DZ với dải nhiệt độ max 128 độ C nên giá trị điện áp max 1.28V tương ứng với giá trị số đầu 255.= > cần đưa điện áp tham chiếu + Vref = 1.28V, - Vref = 1.2 Nguyên lý hoạt động Ta đặt cho hệ thống dải đo từ định hệ thống đo khoảng báo xử lý khơng có tượng xảy ra, hệ thống đo đo giá trị ngồi khoảng hệ thống xử lý đưa cảnh báo , hệ thống hoạt động mà ấn stop giá trị đo lưu lại cho lần đo Việc đo tính tốn thực qua thiết bị cảm biến IC, số thiết bị khác Tìm hiểu thiết bị mơ hình ( Cấu tạo, ngun lí hoạt động) Các thiết bị mơ hình: - Vi điều khiển 8051 - IC ADC0808 - LCD16x2 - Cảm biến nhiệt độ 2.1 IC ADC0808 LM35 Bộ ADC0808 ic cmos tích hợp chuyển đổi tương tự số bít Bộ chọn kênh giải mã qua chân điều khiển tương tích Với: IN0 ~ IN7: ngõ đầu vào tương tự DDR A, B, C: chân giải mã chọn ngõ vào Z1 ~ Z8: ngõ song song bit ALE: Cho phép chốt yêu cầu START: xung bắt đầu chuyển đổi CLK: xung dao dộng cho trình biến đổi A-D OE: Cho phép liệu đầu Ref(+)/(-): Chân tham chiếu điện áp Các đặc tính ADC0808: • Độ phân giải bít • Thời gian chuyển đổi nhanh : tần số 100us tới 640kHz • Nguồn ni 5V • Ngõ vào điện áp 0-5V • Nhiệt độ hoạt động -10 tới 85 độ C Cấu trúc bên ADC0808 Bảng chọn kênh: Giản đồ xung hoạt động ADC0808 Mạch dao động: Sử dụng mạch dao động cổng NOT để tạo dao động f = 640Khz Tần số mạch dao động: f = 1/(3RC) 2.2 LCD16x2 4bit Màn hình LCD 16x2 linh kiện sử dụng rộng rãi trong dự án điện tử lập trình Nó có khả hiển thị kí tự đa dạng, trực quan (chữ, số 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 tài nguyên hệ thống giá thành rẻ… Thông số kỹ thuật - Hiển thị tối đa 16 ký tự dòng - Chức chân LCD + Chân 1: (Vss) Chân nối đất cho LCD, thiết kế mạch ta nối chân với GND mạch điều khiển + Chân 2: VDD Là chân cấp nguồn cho LCD, thiết kế mạch ta nối chân với VCC = 5V mạch điều khiển + Chân 3: VEE chân điều chỉnh độ tương phản LCD + Chân 4: RS Là 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 đếm địa LCD (ở chế độ “đọc” read) 2.3 Cảm biến nhiệt độ LM35 LM35 cảm biến nhiệt độ giá rẻ, thường sử dụng để đo nhiệt độ (theo đơn vị °C) Nó đo nhiệt độ xác so với điện trở nhiệt (thermistor) tầm giá Cảm biến tạo điện áp có đầu cao cặp nhiệt điện ko cần điện áp đầu khuếch đại LM35 có điện áp đầu tỷ lệ thuận có nhiệt độ Celsius Hệ số tỷ lệ 01V / °C LM35 có độ chuẩn xác 0,4 ° C nhiệt độ phịng bình thường 0,8 ° C khoảng ° C đến + 100 ° C Một đặc tính quan trọng cảm biến thu 60 microamps từ nguồn cung ứng có khả tự sưởi ấm thấp Một số tính chất cảm biến LM35: • Đầu cảm biến thay đổi diễn tả tuyến tính • Điện áp o / p cảm biến IC tỉ lệ với nhiệt độ Celsius • Điện áp hoạt động từ -55˚ đến + 150˚C • Được vận hành tới 30 vơn 3 Lập lưu đồ thuật tốn (lưu đồ điều khiển) 3.1 Cấu hình cổng 3.1.1 Cấu hình cổng ADC0808 #define ADC0808_DATA P3 //PORT #define ADC0808_A P2_0 //PIN #define ADC0808_B P2_1 #define ADC0808_C P2_2 #define ADC0808_ALE P2_3 #define ADC0808_START P2_4 #define ADC0808_EOC P2_5 #define ADC0808_OE P2_6 #define ADC0808_CLK P2_7 3.1.2 Khai báo chân giao tiep LCD16x2 4bit #define LCD_RS P0_0 #define LCD_RW P0_1 #define LCD_EN P0_2 #define LCD_D4 P0_4 #define LCD_D5 P0_5 #define LCD_D6 P0_6 #define LCD_D7 P0_7 3.1.3 Khai báo chân cài đặt cảnh báo #define ALARM P1_7 #define UP P1_0 #define DOWN P1_1 #define SET P1_2 3.1.4 Khởi tạo LCD void LCD_Init(){ LCD_Send4Bit(0x00); delay_ms(20); LCD_RS=0; LCD_RW=0; LCD_Send4Bit(0x03); LCD_Enable(); delay_ms(5); LCD_Enable(); delay_us(100); LCD_Enable(); LCD_Send4Bit(0x02); LCD_Enable(); LCD_SendCommand( 0x28 ); // giao thuc bit, hien thi hang, ki tu 5x8 LCD_SendCommand( 0x0c); // cho phep hien thi man hinh LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh LCD_SendCommand(0x01); // xoa toan bo khung hinh } 3.1.5 Chuyển đổi xử lý tín hiệu từ LM35 Tính nhiệt độ từ ADC 8bit: (VREF*adc)/2.56f void TempShow(unsigned char z){ //Chuyen doi hien thi LCD_Puts("Nhiet do: "); LCD_PutChar((z/100)+48);//Tram LCD_PutChar((z%100/10)+48);//Chuc LCD_PutChar((z%10)+48);//Don vi LCD_Puts("'C"); Viết chương tình điều khiển cho 8051 #include #define VREF //VREF=5V //Khai bao chan giao tiep ADC0808 #define ADC0808_DATA P3 //PORT #define ADC0808_A P2_0 //PIN #define ADC0808_B P2_1 #define ADC0808_C P2_2 #define ADC0808_ALE P2_3 #define ADC0808_START #define ADC0808_EOC P2_5 #define ADC0808_OE P2_6 P2_4 #define ADC0808_CLK P2_7 //Khai bao chan giao tiep LCD16x2 4bit #define LCD_RS P0_0 #define LCD_RW P0_1 #define LCD_EN P0_2 #define LCD_D4 P0_4 #define LCD_D5 P0_5 #define LCD_D6 P0_6 #define LCD_D7 P0_7 //Khai bao chan cai dat canh bao #define ALARM P1_7 #define UP P1_0 #define DOWN P1_1 #define SET P1_2 /*****************ADC0808*********************/ //Ham doc ADC0808 theo kenh unsigned char ADC0808_Read(unsigned char channel){ unsigned char kq; ADC0808_A = channel & 0x01; ADC0808_B = channel & 0x02; ADC0808_C = channel & 0x04; ADC0808_ALE = 1; ADC0808_START = 1; ADC0808_ALE = 0; ADC0808_START = 0; while(ADC0808_EOC); while(!ADC0808_EOC); ADC0808_OE = 1; kq = ADC0808_DATA; ADC0808_OE = 0; return kq; } /*****************Ham delay*********************/ void delay_us(unsigned int t){ unsigned int i; for(i=0;i>2)&1; LCD_D7=(Data>>3)&1; } // Ham Gui Lenh Cho LCD void LCD_SendCommand(unsigned char command){ LCD_Send4Bit(command >>4);/* Gui bit cao */ LCD_Enable(); LCD_Send4Bit(command); /* Gui bit thap*/ LCD_Enable(); } void LCD_Clear(){// Ham Xoa Man Hinh LCD LCD_SendCommand(0x01); delay_us(10); } // Ham Khoi Tao LCD void LCD_Init(){ LCD_Send4Bit(0x00); delay_ms(20); LCD_RS=0; LCD_RW=0; LCD_Send4Bit(0x03); LCD_Enable(); delay_ms(5); LCD_Enable(); delay_us(100); LCD_Enable(); LCD_Send4Bit(0x02); LCD_Enable(); LCD_SendCommand( 0x28 ); // giao thuc bit, hien thi hang, ki tu 5x8 LCD_SendCommand( 0x0c); // cho phep hien thi man hinh LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh LCD_SendCommand(0x01); // xoa toan bo khung hinh } void LCD_Gotoxy(unsigned char x, unsigned char y){ unsigned char address; if(!y)address=(0x80+x); else address=(0xc0+x); delay_us(1000); LCD_SendCommand(address); delay_us(50); } void LCD_PutChar(unsigned char Data){//Ham Gui Ki Tu LCD_RS=1; LCD_SendCommand(Data); LCD_RS=0 ; } void LCD_Puts(char *s){//Ham gui chuoi ky tu while (*s){ LCD_PutChar(*s); s++; } } /**************Show Temp*********************** unsigned char Temp(unsigned char adc){//Tinh nhiet tu adc8bit return ((VREF*adc)/2.56f); //Tinh nhiet } */ void TempShow(unsigned char z){ //Chuyen doi hien thi LCD_Puts("Nhiet do: "); LCD_PutChar((z/100)+48);//Tram LCD_PutChar((z%100/10)+48);//Chuc LCD_PutChar((z%10)+48);//Don vi LCD_Puts("'C"); } /******************Ctr ngat timer 0**************************/ void INT_Timer0()interrupt { //ctr phuc vu ngat tao xung clock cho ADC0808 ADC0808_CLK=~ADC0808_CLK; //Dao bit } /******************Ctr chinh**************************/ unsigned char temp; unsigned char Tc = 25; unsigned int i = 0; void main(){ //Tao xung clock cho ADC0808 dung ngat timer TMOD=0x02; //Timer0 8bit tu nap lai TH0=TL0=236;//Tao ngat 20us TR0=1;//Khoi dong timer0 ET0=1;//Ngat timer0 EA=1;//Cho phep ngat cuc bo //init ALARM = 0; LCD_Init();//Khoi tao LCD delay_ms(200); LCD_Puts("Cai dat n.do:"); //Gui chuoi len LCD delay_ms(500); LCD_Clear(); //Xoa man hinh LCD_Puts("Gia tri dat:"); LCD_Gotoxy(0,1); TempShow(Tc); while (iTc) {ALARM=1;} else {ALARM=0;}; delay_ms(500);//0.5s doc mot lan } }//THE END Mơ phịng dùng Proteus (gồm sơ đồ ISIS) ... bài: Thiết kế đo nhiệt độ dùng vi điều khiển 8051 gồm: • Cảm biến nhiệt độ dùng LM35 • Giao tiếp LCD nút bấm, ghép nối trực tiếp vi điều khiển • Điều khiển chạy/dừng đo: nhiệt độ lớn nhiệt độ đặt... IR LCD (ở chế độ “ghi” - write) nối với đếm địa LCD (ở chế độ “đọc” read) 2.3 Cảm biến nhiệt độ LM35 LM35 cảm biến nhiệt độ giá rẻ, thường sử dụng để đo nhiệt độ (theo đơn vị °C) Nó đo nhiệt độ. .. đo khống chế nhiệt độ, nhóm chúng em thực đề tài ? ?Thiết kế mạch đo nhiệt độ hiển thị LCD kèm cảnh báo? ?? dựa vào kiến thức học từ môn Vi điều khiển ứng dụng Trong trình thực hiện, chúng em xin