[VI ĐIỀU KHIỂN PIC] - BÀI 14: CẢM BIẾN NHIỆT ĐỘ ĐỘ ẨM PIC16F877A CCS - BeeLab

Monday, June 12, 2017

[VI ĐIỀU KHIỂN PIC] - BÀI 14: CẢM BIẾN NHIỆT ĐỘ ĐỘ ẨM PIC16F877A CCS


DHT11 là cảm biến nhiệt độ và độ ẩm. Nó ra đời sau và được sử dụng thay thế cho dòng SHT1x ở những nơi không cần độ chính xác cao về nhiệt độ và độ ẩm.

dht11 pic16f877a ccs
DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1 dây. 
Thông số kỹ thuật:




- Sơ đồ kết nối vi xử lý:

[​IMG]




[​IMG]
MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong khoảng thời gian >18ms. Trong Code mình để 25ms. Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt độ và độ ẩm.
MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp. Nếu >40us mà chân DATA ko được kéo xuống thấp nghĩa là ko giao tiếp được với DHT11.



§ Byte 2: giá trị phần thập phân của độ ẩm (RH%)
§ Byte 3: giá trị phần nguyên của nhiệt độ (TC)
§ Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
§ Byte 5 : kiểm tra tổng.
ð Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm và nhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa.
o Đọc dữ liệu:
Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1 về MCU, tương ứng chia thành 5 byte kết quả của Nhiệt độ và độ ẩm.
§ Bit 0:

[​IMG]
[​IMG]
Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11 kéo lên 1. Nếu chân DATA là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn tại 70us là 1. Do đó trong lập trình ta bắt sườn lên của chân DATA, sau đó delay 50us. Nếu giá trị đo được là 0 thì ta đọc được bit 0, nếu giá trị đo được là 1 thì giá trị đo được là 1. Cứ như thế ta đọc các bit tiếp theo