đồ án vi xử lý điều khiển nhiệt độ độ ẩm

42 3.4K 25
đồ án vi xử lý điều khiển nhiệt độ độ ẩm

Đ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

II. phần cứng 1. Mạch nguyên ly 2. Các khối trong mạch • Khối xử lý trung tâm • Khối nguồn Tạo điện áp chuẩn 5V cho vi điều khiển. D1 tạo điện áp 1 chiều, các bộ tụ C1, C2 để san phẳng và làm ổn định điện áp ra cho vi điều khiển. • Khối đo độ ẩm HS1101 là cảm biến điện dung. Khi độ ẩm thay đổi, điện dung của HS1101 thay đổi. Do vậy, để đo được độ ẩm người ta thiết kế mạch đo điện dung của HS1101. Trong thực tế, người ta thường ghép nối HS1101 và IC NE555. Khi đó giá trị điện dung của HS1101 thay đổi thì làm thay đổi tần số đầu ra của IC555. Như vậy chỉ cần đo tần số đầu ra là có thể đo được điện dung của HS1101. • Khối đo nhiệt độ • Khối role Khi t mở. Chân tiếp điểm kéo xuống đất. Vcc mức 1, tạo ra sự chênh áp. • Khối hiển thị LCD • Khối reset • Khối dao động • Khối nút nhấn III.tìm hiểu về các linh kiện được sử dụng Trong mạch đo nhiệt độ và độ ẩm dùng cảm biến nhiệt độ DS18B20 và cảm biến điện dung HS1101 hiển thị ra màn hình LCD ta cần sử dụng các linh kiện sau: …………. 1. Vi điều khiển 89S52 a. Hình ảnh a. Cấu tạo và chức năng các chân trên 89s52 AT89S52 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24 chân có tác dụng kép (có nghĩa là 1 chân có 2 chức năng), mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ. * PORT Port 0: là port có 2 chức năng ở các chân từ 32- 39. Trong các thiết kế cỡ nhỏ không dùng đến bộ nhớ mở rộng thì port 0 có chức năng là xuất/nhập dữ liệu. Nếu trong các thiết kế cỡ lớn phải dùng đến bộ nhớ mở rộng thì port 0 được kết hợp giữa bus địa chỉ và bus dữ liệu. Port 1: là port có 1 chức năng từ chân 1- 8. Có thể dùng cho giao tiếp với thiết bị ngoài nếu cần. Vì không có chức năng khác ngoài xuất/nhập nên nó chỉ được dùng giao tiếp với các thiết bị bên ngoài. Port 2: là 1 port có tác dụng kép trên các chân 21- 28 được dùng như các đường xuất nhập hoặc là byte cao của các bus địa chỉ đối với thiết bị dùng bộ nhớ mở rộng. Port3: là port có tác dụng kép trên các chân 10- 17, port này có nhiều chức năng cụ thể như sau: P3.0 RXT Ngõ vào đữ liệu nối tiếp P3.1 TXD Ngõ xuất dữ liệu nối tiếp P3.2 INT0 Ngõ vào ngắt 0 P3.3 INT1 Ngõ vào ngắt 1 P3.4 T0 Ngõ vào của timer/ couter 0 P3.5 T1 Ngõ vào của timer/ couter 1 P3.6 WR Tín hiệu ghi dữ liệu lên bộ nhớ ngoài P3.7 RD Tín hiệu đọc dữ liệu bộ nhớ ngoài * các ngõ tín hiệu điều khiển PSEN PSEN là tín hiệu ngõ ra ở chân 29 có ứng dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nối với chân 0E( output ennable) của EPROM cho phép đọc các byte mã lệnh. PSEN ở mức 0 khi 89s52 lấy lệnh, các mã lệnh của chương trình đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh để giải lệnh. PSEN ở mức 1 khi 89s52 thi hành chhuowng trình trong ROM nội. ALE ALE ở chân số 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt. Vì khi 89s52 truy xuất bộ nhớ bên ngoài port 0 có chức năng là đường địa chỉ và dữ liệu nên phải tách riêng ra. Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động. EA Ngõ tín hiệu vào EA ở chân 31 thường được mắc lên nguồn. Nếu ở mức 1 thì 89s52 thi hành chương trình từ ROM nội trong khaongr địa chỉ thấp 8kbyte. Nếu ở mức 0 thì 89s52 sẽ thi hành chương trình từ bộ nhớ mở rộng. RST Ngõ tín hiệu RST (reset) ở chân số 9. Khi 89s52 thực hiện 2 chu kỳ máy hoặc khi cấp điện mạch tự động reset. X1,X2 Ngõ tín hiệu dao động X1, X2 ở chân 18, 19. Thường được nối với thạch anh để tạo dao động. Vcc Vcc là chân số 40, thường được nối lên nguồn 5V. 2. Cảm biến nhiệt độ DS18B20 a. Hình ảnh DS18B20 là IC cảm biến nhiệt độ chỉ bao gồm 3 chân, đóng gói dạng TO-92 b. Cấu tạo DS18B20 gồm 3 chân Vcc, GND, DATA. Sơ đồ kết nối: c. Đặc tính kỹ thuật + Lấy nhiệt độ theo giao thức 1 dây (1wire) + Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit, tùy theo sử dụng. Trong trường hợp không config thì nó tự động ở chế độ 12 bit. Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit +Có thể đo nhiệt độ trong khoảng -55 -> +125°C. Với khoảng nhiệt độ là -10°C to +85°C thì độ chính xác ±0.5°C,±0.25°C ,±0.125°C,±0.0625°C. theo số bít config. + Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép. Người dùng có thể lập trình chức năng này cho DS18B20. Bộ nhớ nhiệt độ cảnh báo không bị mất khi mất nguồn vì nó có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze. + Cam bien nhiet do DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn có thể kiểm tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp với các IC này. Với DS18B20 bạn hoàn toàn có thể tạo cho mình mạch cảm biến nhiệt độ theo y muốn. + Điện áp sử dụng : 3 – 5.5 V + Dòng tiêu thụ tại chế độ nghỉ rất nhỏ. d. Lập trình đo nhiệt độ với vi điều khiển 89s52 Khi xử ly DS18b20 chúng ta cần quan tâm đến 2 nhóm lệnh sau: + nhóm lệnh truy cập ROM + nhóm lệnh chức năng bộ nhớ • Nhóm lệnh truy cập ROM - READ ROM (33h) Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC. Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không sẽ xảy ra xung đột trên bus do tất cả các thiết bị tớ cùng đáp ứng. - MATCH ROM (55h) Lệnh này được gửi đi cùng với 64 bit ROM tiếp theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào. Chỉ có DS1820 nào có 64 bit trên ROM trung khớp với chuỗi 64 bit vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo. Còn các cảm biến DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ một xung reset. Lệnh này được sử dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp có nhiều cảm biến một dây. - SKIP ROM (CCh) Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ nhớ của DS1820 mà không cần gửi chuỗi mã 64 bit ROM. Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang hiệu quả khi trên bú chỉ có một cảm biến. - SEARCH ROM (F0h) Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành viên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm. - ALARM SEARCH (ECh) Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng. Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến. Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820. Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp (scratchpath) của cảm biến DS1820. khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức năng có thể được mô tả ngắn gọn như sau: - WRITE SCRATCHPAD (4Eh) Lệnh này cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820. Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vào thanh ghi TL (byte 3 của bộ nhớ nháp). Dữ liệu truyền theo trình tự đầu tiên là bit có y nghĩa nhất và kế tiếp là những bit có y nghĩa giảm dần. Cả hai byte này phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có dữ liệu khác xuất hiện. - READ SCRATCHPAD (BEh) Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp. Quá trình đọc bắt đầu từ bit có y nghĩa nhấy của byte 0 và tiếp tục cho đến byte rhứ 9 (byte 8 – CRC). Thiết bị chủ có thể xuất ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc. - COPYSCRATCHPAD (48h) Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3) vào bộ nhớ EEPROM. Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu việc đo. - CONVERT T (44h) Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị phân). Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ nháp Thời gian chuyển đổi không quá 200 ms, trong thời gian đang chuyển đổi nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0. - READ POWER SUPPLY (B4h) Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một đường dẫn riêng. • Nhóm lệnh chức năng bộ nhơ Để xử ly được nhiệt độ được từ DS18B20 chúng ta cần quan tâm đến hàm : -float ds18b20_readtemp(void): Đây là hàm giúp các bạn tính toán và trả về giá trị nhiệt độ mà DS18b20 đo được Chúng ta có hàm đọc nhiệt độ float ds18b20_readtemp(void) { float temp; unsigned char a,b; DS18B20_Init(); // Khoi tao DS18b20 ds18b20_writebyte(0xCC) ; // Cho phep VDK truy cap thang den cac lenh bo nho cua DS18b20 ds18b20_writebyte(0x44) ; // Khoi dong qua trinh do va chuyen doi nhiet do ra so nhi phan DS18B20_Init() ; ds18b20_writebyte(0xCC) ; ds18b20_writebyte(0xBE) ; // Cho phep doc du lieu tu bo nho DS18b20 ra ngoai a = ds18b20_readbyte(); temp=((float)(a&0x0f))/16; // Lay phan thuc cua gia tri nhiet do b = ds18b20_readbyte(); a =((a&0xf0)>>4)|((b&0x0f)>3)&1; } // -------------------------------------------------// Ham Gui 1 Lenh Cho LCD void lcd1602_send_command (unsigned char cX ) { lcd1602_send_4bit_data ( cX >>4 ); // gui 4 bit cao lcd1602_enable() ; lcd1602_send_4bit_data ( cX ); lcd1602_enable() ; } // -------------------------------------------------- // gui 4 bit thap // Ham Khoi Tao LCD void lcd1602_init ( void ) { lcd1602_send_4bit_data ( 0x00 ); delay_ms(200); LCD_RS=0; LCD_RW=0; LCD_E=0; // che do gui lenh lcd1602_send_4bit_data ( 0x03 ); // ket noi 8 bit lcd1602_enable() ; lcd1602_enable () ; lcd1602_enable () ; lcd1602_send_4bit_data ( 0x02 ); // ket noi 4 bit lcd1602_enable() ; lcd1602_send_command( 0x2C ); // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8 lcd1602_send_command( 0x80); lcd1602_send_command( 0x0C); // cho phep hien thi man hinh lcd1602_send_command( 0x06 ); // tang ID, khong dich khung hinh lcd1602_send_command( CLEAR_LCD ); // xoa toan bo khung hinh } // -------------------------------------------------// Ham Thiet Lap Vi Tri Con Tro void lcd1602_gotoxy(unsigned char x, unsigned char y) { unsigned char address; if(!y) address = (LINE_1+x); else address = (LINE_2+x); delay_ms(3); lcd1602_send_command(address); delay_ms(1); } // -------------------------------------------------// Ham Xoa Man Hinh LCD void lcd1602_clear(void) { lcd1602_send_command( CLEAR_LCD ); //delay_us(300); } // -------------------------------------------------// Ham Gui 1 Ky Tu Len LCD void lcd1602_putchar ( unsigned int cX ) { LCD_RS=1; lcd1602_send_command( cX ); LCD_RS=0; } // -------------------------------------------------// Ham Gui 1 Chuoi Ky Tu Len LCD void lcd1602_puts(char *s) { while (*s) { lcd1602_putchar(*s); s++; } } //Khai bao bien su dung int xung,dem,frequency; //********************************************************************* *********// void delay_18B20(unsigned int i) { while(i--); } //********************************************************************* *********// void Init_DS18B20(void) { unsigned char x=0; DQ = 1; delay_18B20(8); DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20); } //********************************************************************* *********// unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; delay_18B20(4); } return(dat); } //********************************************************************* *********// void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; } } //********************************************************************* *********// int ReadTemp(void) { unsigned char a=0; unsigned char b=0; unsigned char t=0; int nhiet_thuc; Init_DS18B20(); WriteOneChar(0xCC); // cho phep dieu khien truy nhap truc tiep den lenh nho sensor ma khong can gui chuoi ma sensor WriteOneChar(0x44); lieu delay_18B20(100); // khoi dong qua trinh do va chuyen doi du Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); // Cho phep thiet bi doc nd bo nho nhap delay_18B20(100); a=ReadOneChar(); b=ReadOneChar(); nhiet_thuc=b4; return(nhiet_thuc); } code int HS1101_Table[101]={ 8109,8090,8070,8051,8033,8015,7997,7979,7961,7944, 7927,7910,7894,7878,7862,7846,7830,7815,7799,7784, 7769,7755,7740,7726,7711,7697,7683,7669,7655,7641, 7628,7614,7600,7587,7574,7560,7547,7534,7521,7507, 7494,7481,7468,7455,7442,7429,7416,7403,7390,7377, 7364,7350,7337,7324,7311,7298,7284,7271,7257,7244, 7230,7216,7203,7189,7175,7161,7147,7132,7118,7103, 7089,7074,7059,7045,7029,7014,6999,6984,6968,6952, 6936,6920,6904,6888,6872,6855,6838,6821,6804,6787, 6770,6752,6735,6717,6699,6680,6662,6644,6625,6606, 6587}; / ***************************************************************** ************** Noi Dung : Doc gia tri do am. Tham Bien : frequency: tan so do duoc tu bo dao dong NE555 ket hop HS1101. Tra Ve : Gia tri do am do duoc tu HS1101. ********************************************************************** **********/ int HS1101_GetHumi(int frequency) { int i; for(i=0;iHS1101_Table[i])return i; } return 100; } //Ham ngat void ngat0(void) interrupt 0 { xung++; } void ngat_timer_0(void) interrupt 1 { dem++; if(dem >= 4000) { dem=0; frequency = xung-2600; xung=0; } } void main(void) { int humi,nhiet_do,nhiet_do2,nhiet_do3,nhiet_do_khong_che=40,fr; char str[20]; TMOD = 0x02; TH0=TL0=-250; IT0=1; IE=0x83; TR0=1; lcd1602_init(); lcd1602_clear(); while(1) { if(sw1 == 0) {nhiet_do_khong_che++; if(nhiet_do_khong_che>=150) nhiet_do_khong_che=0; } if(sw2 == 0) {nhiet_do_khong_che--; nhiet_do_khong_che=150; } nhiet_do = ReadTemp(); if(nhiet_do_khong_che= nhiet_do-4)&&(nhiet_do2 = nhiet_do2-4)&&(nhiet_do3 nhiet_do_khong_che) relay =1; else relay=0; humi=HS1101_GetHumi(frequency); sprintf(str,"Do Am: %d %% ",humi); //sprintf(str,"tanso=%dhz ",fr); lcd1602_gotoxy(1,0); lcd1602_puts(str); sprintf(str,"T=%doC Tkc=%doC ",nhiet_do,nhiet_do_khong_che); lcd1602_gotoxy(1,1); lcd1602_puts(str); } delay_ms(100); } } 2. Mô phỏng bằng phần mềm Proteus Khi T < Tkc thì rorowle (D1) chưa hoạt động( D1 tắt) Khi T > Tkc thì rơle hoạt động [...]... công thức liên hệ giữa độ ẩm và điện dung: (2) Trong đó: oC@55% = 180pF ( tài liệu của hãng ) oC(pf) chính là điện dung đo được Từ (1) và (2) ta có mỗi liên hệ giữa tần số và độ ẩm Giải pháp tính toán: Ta thấy hàm độ ẩm là hàm mũ 3, nên rất khó tính toán mối liên hệ F và RH Ta thấy hàm C(pf) là hàm đồng biến với RH Do vậy ta F sẽ nghịch biến với RH Từ đó ta có phương... quan hệ RH và F, ta thu được bảng F[100] = {7410;7392;….;6019} Mảng này có 100 phần tử tương đương với độ ẩm từ 0-100% Như vậy, khi ta đo được tần số F, ta chọn F>=F và sát nhất với F Khi đó Độ ẩm RH =i% Bảng 1: Bảng tính giá trị độ ẩm qua tần số 4 Hiển thị LCD a Hình ảnh b Cấu tạo và các chức năng - Chân vcc, Vss,VEE: Cấp dương nguồn - 5v và đất tương ứng thì V EE được dùng... giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820 Bằng các lệnh chức năng thiết bị... nháp cần được đọc - COPYSCRATCHPAD (48h) Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3) vào bộ nhớ EEPROM Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu vi ̣c đo - CONVERT T (44h) Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị phân) Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên... +-2% Dãy nhiệt độ hoạt động từ -400C à 1000C Cảm biến HS1101 được sử dụng phổ biến trong cuộc sống, ngoài ra nó còn dùng kết hợp với cảm biến DS18B20 dùng đo nhiệt độ Nguyên ly làm vi ̣c Cảm biến HS1101 là cảm biến điện dung Khi độ ẩm thay đổi, điện dung của HS1101 thay đổi Do vậy, để đo được độ ẩm người ta thiết kế mạch đo điện dung của HS1101 Trong thực tế, người ta... Với DS18B20 bạn hoàn toàn có thể tạo cho mình mạch cảm biến nhiệt độ theo y muốn + Điện áp sử dụng : 3 – 5.5 V + Dòng tiêu thụ tại chế độ nghỉ rất nhỏ d Lập trình đo nhiệt độ với vi điều khiển 89s52 Khi xử ly DS18b20 chúng ta cần quan tâm đến 2 nhóm lệnh sau: + nhóm lệnh truy cập ROM + nhóm lệnh chức năng bộ nhớ • Nhóm lệnh truy cập ROM - READ ROM (33h) Cho phép đọc... Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang hiệu quả khi trên bú chỉ có một cảm biến - SEARCH ROM (F0h) Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành vi n tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm - ALARM SEARCH (ECh) Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng... để kiểm tra bít cờ bận để xem LCD có sẵn sàne nhân thông tin Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS = 0 như sau: Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi các công vi ̣c bên trong và sẽ không nhận bất kỳ thông tin mới nào Khi D7 = 0 thì LCD sẵn sàng nhận thông tin mới Lưu y chúng ta nên kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu nào lên LCD 5 Role... // cho phep hien thi man hinh lcd1602_send_command( 0x06 ); // tang ID, khong dich khung hinh lcd1602_send_command( CLEAR_LCD ); // xoa toan bo khung hinh } // -// Ham Thiet Lap Vi Tri Con Tro void lcd1602_gotoxy(unsigned char x, unsigned char y) { unsigned char address; if(!y) address = (LINE_1+x); else address = (LINE_2+x); delay_ms(3); lcd1602_send_command(address); delay_ms(1); ... tính toán: Ta thấy hàm độ ẩm là hàm mũ 3, nên rất khó tính toán mối liên hệ F và RH Ta thấy hàm C(pf) là hàm đồng biến với RH Do ta F sẽ nghịch biến với RH Từ ta có phương... ta cần quan tâm đến hàm : -float ds18b20_readtemp(void): Đây là hàm giúp các bạn tính toán và trả về giá trị nhiệt độ mà DS18b20 đo Chúng ta có hàm đọc nhiệt độ float ds18b20_readtemp(void)... làm thay đổi tần số đầu IC555 Như cần đo tần số đầu là có thể đo điện dung HS1101 Sơ đồ ghép nối HS1101 với NE555 c Cách thức đo độ ẩm Ta có công thức tính tần số sau : d

Ngày đăng: 17/10/2015, 10:24

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan