Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
615 KB
Nội dung
Mạch đo nhiệt độ GVHD: Trần Hữu Danh MỤC LỤC Trang Lời mở đầu - I Giới thiệu đề tài - 1.1.Yêu cầu giới thiệu đề tài -1.2 Mục đích đề tài II Giải đề tài - 2.1.Vi điều khiển MSP430G2252 - 2.2.Cảm biến nhiệt DS18B20 2.3 Text LCD III Sơ đồ 3.1.Sơ đồ khối 3.2.Sơ đồ mạch chi tiết 10 IV Lập trình cho vi điều khiển -10 Lưu đồ giải thuật -10 Code -11 V Kết luận - 17 Ưu điểm -17 Khuyết điểm 17 Hướng phát triển ứng dụng 18 VI VII Tài liệu tham khảo -18 Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh LỜI NÓI ĐẦU Kỹ thuật vi điều khiển phát triển, ứng dụng vào nhiều lĩnh vực sản xuất cơng nghiệp, tự động hóa, đời sống nhiều lĩnh vực khác So với kỹ thuật số kỹ thuật vi điểu khiển nhỏ gọn nhiều tích hợp lại có khả lập trình để điều khiển Nên tiện dụng động Với tính ưu việt vi điều khiển phạm vi đồ án nhỏ này, em dùng vi điều khiển Mục đích đề tài hướng đến: ứng dụng tính DS18b20 vi điều khiển để đo hiển thị nhiệt độ Việc thực xong đồ án môn học kiến thức học, số sách tham khảo số nguồn tài liệu khác nên khơng tránh khỏi thiếu sót Vì vậy, nhóm mong đóng góp ý kiến quý báo thầy cô, anh chị bạn bè để đề tài hoàn thành tốt phương diện kinh tế, thẩm mĩ kỹ thuật Qua xin gửi lời cảm ơn chân thành đến thầy Trần Hửu Danh người trực tiếp giảng dạy, với đóng góp ý kiến bạn tạo điều kiện cho tơi hồn thành đồ án mơn học Cần Thơ, ngày 30 tháng 11 năm 2011 Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh ĐỀ TÀI MẠCH ĐO NHIỆT ĐỘ HIỂN THỊ LCD I GIỚI THIỆU ĐỀ TÀI 1.1 Yêu cầu giới hạn đề tài Yêu cầu: Yêu cầu đặc đề tài thiết kế mạch đo, hiển thị nhiệt độ cập nhật thay đổi nhiệt độ môi trường cách liên tục Giới hạn đề tài: Đo hiển thị nhiệt độ mơi trường hình LCD Dùng cảm biến DS18B20 cập nhật thay đổi nhiệt độ mơi trường Mạch mở rộng thêm phần báo động nhiệt độ 2.1 Mục đích đề tài : Một số mục tiêu cần đạt thực đề tài: Hiểu cấu tạo vi điều khiển MSP430 Tìm hiểu cảm biến nhiệt độ DS18B20 Cách lập trình ngôn ngữ C sử dụng phần mềm IAR để lập trình cho họ vi điều khiển MSP430 II – GIẢI QUYẾT ĐỀ TÀI 2.1 Vi điều khiển MSP430G2252 : Sơ đồ chân: Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh Một số đặc tính kĩ thuật: Là vi điều khiển 16 bit kiến trúc kiểu RISC Tần số hoạt động lên tới 16MHz Điện hoạt động thấp 1,8 _ 3,6V Ultra-Low Power Consumption: − Active Mode: 220 mA at MHz, 2.2 V − Standby Mode: 0.5 mA − Off Mode (RAM Retention): 0.1 mA 10 Bit 200-ksps (kilosamples per second) A/D converter Có chế độ tiết kiệm điện Có 16 chân xuất nhập Hỗ trợ giao tiếp I2C,SPI 16 bit Timer Sơ đồ khối: Chức chân : Chân 1: nối với nguồn Vcc Chân 2: xuất/nhập thông thường, Timer0_A, ngã vào TACLK, ngã ACLK, ngã vào A0 ADC10, comparator_A+, ngã vào CA0 Chân 3: xuất/nhập thông thường, Timer0_A, capture: CCI0A input, compare: ngã OUT0, ngã vào A1 ADC10, comparator_A+, ngã vào CA0 Chân 4: xuất/nhập thông thường, Timer0_A, capture: CCI1A input, compare: ngã OUT1, ngã vào A2 ADC10, comparator_A+, ngã vào CA2 Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh Chân 5: xuất/nhập thông thường, ngã xung đồng hồ biến đổi ADC10, ngã comparator_A+, ngã vào A3 ADC10, điện tham chiếu âm ADC10, comparator_A+, ngã vào CA3 Chân 6: xuất/nhập thơng thường, ngã tín hiệu SMCLK, Timer0_A, capture: CCI2A input, compare: ngã OUT2, ngã vào A4 ADC10, điện tham chiếu dương ADC10, comparator_A+, ngã vào CA4 Chân 7: xuất/nhập thông thường, Timer0_A, compare: ngã OUT0, USI: xung clock ngã vào chế độ I2C, xung clock vào/ra chế độ SPI, ngã vào A5 ADC10, comparator_A+, ngã vào CA5 Chân 8: xuất/nhập thông thường Chân 9: xuất/nhập thông thường Chân 10: xuất/nhập thông thường Chân 11: xuất/nhập thông thường Chân 12: xuất/nhập thông thường Chân 13: xuất/nhập thông thường Chân 14: xuất/nhập thông thường, Timer0_A, compare: ngã OUT1, USI: ngã liệu chế độ SPI, USI: xung đồng hồ I2C chế độ I2C, ngã vào A6 ADC10, comparator_A+, ngã vào CA6 Chân 15: xuất/nhập thông thường, ngã comparator_A+, liệu ngã vào chế độ SPI mode, liệu I2C chế độ SPI, ngã vào A6 ADC10, comparator_A+, ngã vào CA7 Chân 16: Reset Chân 17: chọn chế độ kiểm tra cho chân JTAG Port 1, cầu chì bảo vệ kết nối đến Test Chân 18: ngã kết nối dao động thạch anh, xuất/nhập thông thường Chân 19: ngã vào dao động thạch anh, xuất/nhập thông thường, Timer0_A, compare: ngã OUT1 2.2 Cảm biến nhiệt DS18B20 o Ðể đo nhiệt độ xác, tất nhiên cần có đầu dò thích hợp Ðầu dò cảm biến nhiệt độ có nhiệm vụ vận chuyển từ nhiệt độ qua tín hiệu điện Dựa vào lý thuyết thực tế mạch cần thiết kế ta dùng phương pháp đo IC cảm biến nhiệt độ o Các IC cảm biến nhiệt độ có độ xác cao, dễ tìm giá thành rẻ Một số IC DS18B20, loại thông dụng thị trường nay, đồng thời có đặc tính làm việc phù hợp với thiết kế chi tiết mạch a.Các đặc tính DS18B20 Các đặc điểm kỹ thuật cảm biến DS18B20 kể cách tóm tắt sau: Sử dụng giao diện dây nên cần có chân để truyền thơng Độ phân giải đo nhiệt độ từ bit tới 12bit Dải đo nhiệt độ -55°C đến 125°C, với khoảng nhiệt độ -10°C to +85°C độ xác ±0.5°C.Có chức cảnh báo nhiệt độ vượt qua giá trị cho trước Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh Rất thích hợp với ứng dụng đo lường đa điểm nhiều đầu đo nối bus, bus gọi bus dây (1-wire) Thời gian lấy mẫu biến đổi thành số tương đối nhanh, không 200 ms Không cần thêm linh kiện bên ngồi Điện áp nguồn ni thay đổi khoảng rộng, từ 3.0 V đến 5.5 V DC cấp thơng qua đường dẫn liệu Dòng tiêu thụ chế độ nghỉ cực nhỏ Thời gian chuyển đổi nhiệt độ tối đa 750ms cho mã hóa 12 bit Mỗi cảm biến có mã định danh 64 bit chứa nhớ ROM chip, giá trị giúp phân biệt IC với bus Tổ chức nhớ Scratchpad: Bộ nhớ DS1820 bao gồm bytes: Byte lưu giá trị nhiệt độ chuyển đổi Byte lưu giá trị ngưỡng nhiệt độ ( giá trị lưu điện) Byte ghi cấu hình cho hoạt động DS1820 Byte 5,6 không sử dụng Byte ghi đọc lưu giá trị CRC từ byte đến byte Phương thức giao tiếp: • Việc đo nhiệt độ DS18B20 thực theo lần lấy mẫu Mỗi lần lấy mẫu ngăn cách tín hiệu reset presence pulse Reset xem trình ngăn cách khởi động lại trình đo nhiệt độ mới, presence pulse giống tín hiệu báo hiệu cho vđk biết DS18B20 có mặt • Các bước lần lấy mẫu: - Khởi tạo xung reset nhận tín hiệu nhận dạng từ DS18B20 - Gửi lệnh ROM - Gửi lệnh chức nhớ Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh Nhiệt độ / giá trị chuyển đổi: Độ phân giải nhiệt độ đo cấu hình chế độ bits, 10bits, 11bits, 12bits Ở chế độ mặc định DS1820 hoạt động độ phân giải 12bits Giá trị nhiệt độ lưu nhớ gồm 2bytes-16bits: số âm lưu dạng bù Bit cao bit dấu (S) S=0 giá trị nhiệt độ dương S=1 giá trị nhiệt độ âm Nếu cấu hình độ phân giải 12bits tất bit sử dụng Nếu độ phân giải 11bits bit khơng sử dụng Tương tự cấu hình 10bits bit 1,0 khơng sử dụng, cấu hình bits bit 2,1,0 khơng sử dụng b.Giãn đồ thời gian chương trình reset, đọc ghi cho DS18B20: Reset Đọc ghi: Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh b.Cách kết nối DS18B20 với vi điều khiển 2.3 Text LCD: Giới thiệu: Là thiết bị thông dụng dùng để hiển thị thông tin đặc biệt hiển thị chữ LCD 1602 có hàng 16 cột, hiển thị tối đa 32 ký tự lúc (16 chữ hàng 16 chữ hàng ) Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh Cách bố trí chân: 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 VDD: 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 Vee: Chân dùng để điều chỉnh độ tương phản 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 R/W: 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 đặt lên bus DB0DB7, lệnh chấp nhận có xung cho phép chân E Mode bit: LCD cho phép giao tiếp với điều khiển theo chế độ bit Trong chế độ này, chân D0, D1, D2 D3 LCD không sử dụng (để trống), có chân từ D4 đến D7 kết nối với chip điều khiển Các instruction data bit ghi đọc cách chia thành phần, gọi Nibbles, nibble gồm bit giao tiếp thông qua chân D7:4, nibble cao xử lí trước nibble thấp sau Ưu điểm lớn phương pháp tối thiểu số lines dùng cho giao tiếp LCD Tuy nhiên, việc đọc ghi nibble tương đối khó khăn đọc ghi liệu bit Trang Mạch đo nhiệt độ GVHD: Trần Hữu Danh III SƠ ĐỒ 3.1 Sơ đồ khối : Các linh kiện dùng khối: - Khối cảm biến:DS18B20 - Khối xử lý trung tâm: MSP430G2252 - Khối hiển thị: LCD 1602 3.2 Sơ đồ mạch chi tiết : L C D -1 U V C C _ C IR C L E 10k VD D Vo R S R /W E D B0 D B1 D B2 D B3 D B4 D B5 D B6 D B7 K (L E D -) V S S (G N D ) 10 11 12 13 16 14 1u SW 15 A ( LE D +) 16 R V C C _ C IR C L E 330 U 1 16 V C C _ C IR C L E U k VD D G N D D S18B20 D Q Vcc /R S T TE S T P P P P P P P 2 Vss P P 1 P P P P P P P 20 14 15 11 R 10k V C C _ C IR C L E 18 19 16 17 18 19 12 13 10 M SP430 V C C _ C IR C L E V C C _ C IR C L E O U T 3 O U T 19 Y 1 AD J V IN 18 IN U G N D 2 U LM 7805 1000u J1 1000u L M 1 /TO 22p 22p IV Lập trình cho vi điều khiển: 4.1 Lưu đồ giải thuật Trang 10 Mạch đo nhiệt độ GVHD: Trần Hữu Danh 4.2 Code: #include #define RS BIT2 #define EN BIT3 #define DQ BIT0 #define B4 BIT4 #define B5 BIT5 #define B6 BIT6 #define B7 BIT7 #define line_1 #define line_2 #define clr_scr 0x80 0xC0 0x01 //******************reset cho ds18b20***************** unsigned char reset(void) { unsigned char pre; P2DIR|=DQ; P2OUT&=~DQ; delay_cycles(480); P2DIR&=~DQ; delay_cycles(70); Trang 11 Mạch đo nhiệt độ GVHD: Trần Hữu Danh if ((P2IN&DQ)==0) { pre=1; } else { pre=0; } delay_cycles(410); return(pre); } //***************doc bit************************* unsigned char read_bit(void) { P2DIR |=DQ; P2OUT&=~DQ ; delay_cycles(2); P2DIR&=~DQ; delay_cycles(6); return(DQ); } //********************ghi bit******************* void viet_bit1() { P2DIR|=DQ; P2OUT &=~DQ; delay_cycles(4); P2DIR&=~DQ ; delay_cycles(38); } void viet_bit0() { P2DIR|=DQ; P2OUT&=~DQ; delay_cycles(41); P2DIR&=~DQ; } //************************doc nhiet do****************************** unsigned char read_byte() { unsigned char i,tam=1; unsigned char value = 0; for (i=0;i=1; } } //**************************************************************** //**************cac ham phuc vu cho LCD*************************** void enable() { P1DIR|=EN; P1OUT|=EN; delay_cycles(10); P1OUT&=~EN; delay_cycles(20); } //**********thiet lap du lieu cho cac chan du lieu**************************** void set_data_lsb(unsigned char data) //ham gui byte data thap { unsigned char convert=0; convert=data&0x01; if(convert==0x01) {P1DIR|=B4; P1OUT|=B4; } Trang 13 Mạch đo nhiệt độ GVHD: Trần Hữu Danh else P1OUT&=~B4; convert=data&0x02; if(convert==0x02) { P1DIR|=B5; P1OUT|=B5;} else P1OUT&=~B5; convert=data&0x04; if(convert==0x04) {P1DIR|=B6; P1OUT|=B6; } else P1OUT&=~B6; convert=data&0x08; if(convert==0x08) { P1DIR|=B7; P1OUT|=B7;} else P1OUT&=~B7; } void set_data_msb(unsigned char data) //ham gui byte data cao { unsigned char convert=0; convert=data&0x10; if(convert==0x10) {P1DIR|=B4; P1OUT|=B4;} else P1OUT&=~B4; convert=data&0x20; if(convert==0x20) {P1DIR|=B5; P1OUT|=B5;} else P1OUT&=~B5; convert=data&0x40; if(convert==0x40) {P1DIR|=B6; P1OUT|=B6;} else P1OUT&=~B6; convert=data&0x80; if(convert==0x80) { P1DIR|=B7; P1OUT|=B7;} else P1OUT&=~B7; } //************************HAM GUI LENH****************************************** void ghilenh(unsigned char cmd) { P1DIR|=RS; Trang 14 Mạch đo nhiệt độ GVHD: Trần Hữu Danh P1OUT&=~RS; set_data_msb(cmd); enable(); set_data_lsb(cmd); enable(); } //**************************ham gui data************************************* void lcd_putchar(unsigned char data) { P1DIR|=RS; P1OUT|=RS; set_data_msb(data); enable(); set_data_lsb(data); enable(); } ////////////////////////////////////////////////////////////////// void hienthi_nhietdo(char giatri) { unsigned char chuc; unsigned char donvi; unsigned char tram; unsigned char phandu; tram=giatri/100; phandu=giatri%100; chuc=phandu/10; donvi=phandu%10; tram+=0x30; chuc+=0x30; donvi+=0x30; lcd_putchar(tram); lcd_putchar(chuc); lcd_putchar(donvi); } void hienthi_sole(int phanle) { int nghinle,du_nghin; unsigned char tramle,du_tram; unsigned char chucle; unsigned char donvile; nghinle=phanle/1000; du_nghin=phanle%1000; tramle=du_nghin/100; du_tram=du_nghin%100; chucle=du_tram/10; donvile=du_tram%10; Trang 15 Mạch đo nhiệt độ GVHD: Trần Hữu Danh nghinle+=0x30; tramle+=0x30; chucle+=0x30; donvile+=0x30; lcd_putchar(nghinle); lcd_putchar(tramle); lcd_putchar(chucle); lcd_putchar(donvile); } void hienthi_do(char nhiet) { nhiet+=0x30; lcd_putchar(nhiet); } void lcd_putsf(char *s) { while(*s) { lcd_putchar(*s); s++; }; } //****************************ham khoi tao lcd************************* void lcd_init() { delay_cycles(100); P1OUT&=~RS; // che gui lenh set_data_lsb(0x03); enable(); enable(); enable(); set_data_lsb(0x02); enable(); ghilenh ( 0x28 ); //cd 4bit,2dong,5x7 ghilenh( 0x0c); //bat hien thi,tat tro ghilenh ( 0x06 ); //* entry mode set, increment & scroll left ghilenh ( 0x01 ); //* clear display } //************************************************ //************************************************** void main() { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer //P1_dir->_byte=0xff; //port1 la dau //P2_dir->_bit.b0=0; //bit cua port2 la dau vao //sw=1; //set muc logic cua dau vao len Trang 16 Mạch đo nhiệt độ GVHD: Trần Hữu Danh //P2_dir->_bit.b1=1; unsigned char lsb_byte=0; unsigned char msb_byte=0; unsigned char nhietdo=0; int sole=0; //unsigned char giatri; unsigned char sosanh; P1DIR|=0XFF; lcd_init(); ghilenh(clr_scr); while(1) { ghilenh(line_1); lcd_putsf("Nhom5_baocaovxl"); ghilenh(line_2); lcd_putsf("Today:"); if( reset()==1){ viet_byte(0x0CC); viet_byte(0x044); } // delay_cycles(65000); if(reset()==1){ viet_byte(0x0CC); viet_byte(0x0BE); } lsb_byte=read_byte(); msb_byte=read_byte(); sole=(lsb_byte&0x0f); sole*=625; nhietdo=(msb_byte4); // nhietdo&=0x7f; sosanh=nhietdo&0x80; unsigned char trunggian=0; if(sosanh==0x80) { lcd_putsf("-"); trunggian=~nhietdo; hienthi_nhietdo(trunggian+1); lcd_putsf("."); hienthi_sole(0x0000); hienthi_do(175); lcd_putsf("C "); } else {hienthi_nhietdo(nhietdo); lcd_putsf("."); hienthi_sole(sole); hienthi_do(175); lcd_putsf("C "); Trang 17 Mạch đo nhiệt độ GVHD: Trần Hữu Danh } delay_cycles(100000); } } V Kết luận: 5.1 Ưu điểm Mạch hoạt động tốt, đặc biệt nhiệt độ môi Trường Nâng cao khả ứng dụng môi trường nhiệt cơng nghiệp Mạch đơn giản,tiêu tốn điện 5.2 Khuyết điểm Chương trình dài Vẫn khoảng sai số nhiệt độ định 5.3 Hướng phát triển ứng dụng Mở rộng thang đo lớn với độ phân giải cao hơn, Ứng dụng để điều khiển tự động thiết bị điều chỉnh nhiệt độ tự động nhiệt độ vườn ươm, ổn định nhiệt độ phòng, điều khiển thiết bị nhà… Trong công nghiệp, dùng để đo nhiệt độ động cơ, nhiệt độ kho bảo quản sản phẩm… để có phướng pháp điều chỉnh nhiệt độ cho thích hợp Như vậy, tuổi thọ động cao, sản phẩm bảo quản an toàn Là phần nhà thông minh tương lai VI.Tài liệu tham khảo [1] http://www.alldatasheet.com/datasheet-pdf/pdf/424790/TI/MSP430G2252IN20.html [2] http://pdf1.alldatasheet.com/datasheet-pdf/view/58557/DALLAS/DS18B20.html [3] 53354756-Giao-trinh-vdk-MSP430 Trang 18 ... sosanh; P1DIR|=0XFF; lcd_init(); ghilenh(clr_scr); while(1) { ghilenh(line_1); lcd_putsf("Nhom5 _baocaovxl" ); ghilenh(line_2); lcd_putsf("Today:"); if( reset()==1){ viet_byte(0x0CC); viet_byte(0x044);