Cảm biến độ ẩm: điện dung, điện trở, ẩm kế khô ướt – cấu tạo, nguyên lý, chế tạo và điểm sương

Cảm biến độ ẩm hoạt động thế nào: độ ẩm tương đối, tuyệt đối, điểm sương; cảm biến điện dung polyme, điện trở, ẩm kế tóc, khô ướt, gương lạnh; chế tạo và đọc SHT31 bằng ESP32.

Độ ẩm ảnh hưởng tới sức khỏe, chất lượng hàng hóa và độ bền thiết bị: kho thuốc, kho nông sản, phòng sạch, nhà kính trồng rau, tủ chống ẩm máy ảnh, máy lạnh, máy sấy đều cần đo độ ẩm. Cảm biến độ ẩm phổ biến nhất hiện nay là một con chip nhỏ có lớp polyme hút hơi nước, nhưng trước đó người ta đã đo độ ẩm bằng sợi tóc, bằng hai nhiệt kế khô ướt và bằng một tấm gương được làm lạnh. Bài viết giải thích các đại lượng độ ẩm, cấu tạo và nguyên lý của cảm biến điện dung, điện trở và các dụng cụ cổ điển, quy trình chế tạo cảm biến dạng chip, rồi hướng dẫn đọc SHT31 bằng ESP32, kiểm tra CRC và tính điểm sương.

1. Độ ẩm tương đối, độ ẩm tuyệt đối và điểm sương

Đồ thị lượng hơi nước trong một mét khối không khí theo nhiệt độ ở độ ẩm tương đối 100, 70, 50 và 25 phần trăm; điểm 30 độ C 70 phần trăm ứng với 21,2 gam trên mét khối và điểm sương 23,9 độ C; ba thẻ giải thích độ ẩm tương đối, độ ẩm tuyệt đối, điểm sương
Lượng hơi nước tối đa không khí chứa được tăng nhanh theo nhiệt độ (hình tự vẽ, tính theo công thức Magnus).
  • Độ ẩm tương đối (%RH): áp suất hơi nước đang có chia cho áp suất hơi nước bão hòa ở cùng nhiệt độ. Đây là con số trên đồng hồ đo ẩm và cũng là đại lượng các cảm biến điện tử đo trực tiếp.
  • Độ ẩm tuyệt đối (g/m³): khối lượng hơi nước trong một mét khối không khí. Không khí 30 °C, 70 %RH chứa khoảng 21,2 g/m³.
  • Điểm sương: nhiệt độ mà không khí phải được làm lạnh tới (giữ nguyên lượng hơi nước) để bắt đầu ngưng tụ. Với 30 °C, 70 %RH, điểm sương khoảng 23,9 °C: một lon nước lạnh hơn 23,9 °C sẽ "đổ mồ hôi".

Cùng một lượng hơi nước, khi nhiệt độ tăng thì độ ẩm tương đối giảm. Vì vậy cảm biến độ ẩm luôn đo cả nhiệt độ, và phải đặt sao cho nhiệt độ của nó bằng nhiệt độ không khí cần đo; chỉ chênh 1 °C ở khoảng 50 %RH đã làm số đọc lệch khoảng 3 %RH.

Công thức Magnus tính áp suất hơi nước bão hòa (hPa): es = 6,112 × exp(17,62 × T / (243,12 + T)). Từ đó: điểm sương Td = 243,12 × γ / (17,62 − γ) với γ = ln(RH/100) + 17,62 × T / (243,12 + T); độ ẩm tuyệt đối = 216,7 × e / (273,15 + T) với e = RH/100 × es.

2. Đo độ ẩm trước thời điện tử

Ẩm kế tóc cổ điển trong hộp gỗ có mặt kính: sợi tóc căng dọc khung, kéo kim chỉ quay trên mặt số tròn
Ẩm kế tóc cổ: sợi tóc dài ra khi không khí ẩm và ngắn lại khi khô, kéo kim quay trên mặt số. Ảnh: Rama, CC BY-SA 3.0 fr, Wikimedia Commons, đã thu nhỏ.
  • Ẩm kế tóc: tóc người (đã tẩy dầu) dài thêm khoảng 2 đến 3 % khi độ ẩm tăng từ 0 lên 100 %. Một bó tóc căng giữa giá đỡ và cần kim. Không cần điện, nhưng chậm, trễ và phải chỉnh lại định kỳ. Nhiều đồng hồ ẩm cơ khí treo tường ngày nay dùng dải vật liệu tổng hợp thay tóc.
  • Ẩm kế khô ướt: hai nhiệt kế giống nhau, một bọc vải tẩm nước. Nước bốc hơi làm lạnh nhiệt kế ướt; không khí càng khô, bốc hơi càng mạnh, chênh lệch càng lớn. Tra bảng (hoặc dùng công thức) ra độ ẩm. Loại quay tay cho luồng gió đều qua bầu ướt.
  • Ẩm kế gương lạnh: một tấm gương được làm lạnh bằng phần tử Peltier tới khi xuất hiện lớp sương (phát hiện bằng tia sáng phản xạ). Nhiệt độ gương lúc đó chính là điểm sương. Chính xác nhất, dùng làm chuẩn để hiệu chuẩn các cảm biến khác.

3. Cảm biến độ ẩm điện dung

Mặt cắt phần tử độ ẩm điện dung: đế silic có mạch đo, điện cực dưới, lớp polyme polyimide hút ẩm, điện cực trên xốp cho hơi nước đi qua, các phân tử nước trong không khí và trong lớp polyme; bên phải là đồ thị điện dung tăng gần tuyến tính theo độ ẩm
Cấu tạo phần tử độ ẩm điện dung và đặc tính điện dung theo độ ẩm (hình tự vẽ).

Phần tử cảm biến là một tụ điện nhỏ: điện cực dưới, một lớp polyme mỏng (thường là polyimide dày vài micromet) và điện cực trên dạng xốp hoặc răng lược để hơi nước đi qua. Polyme hút và nhả hơi nước theo độ ẩm môi trường cho tới khi cân bằng. Vì nước có hằng số điện môi khoảng 80 còn polyme khô chỉ khoảng 3 đến 4, mỗi phần trăm độ ẩm làm điện dung tăng thêm một lượng nhỏ nhưng đều đặn. Trong các cảm biến số như SHT3x, HDC1080, BME280, tụ điện này được chế tạo ngay trên con chip có mạch đo điện dung, cảm biến nhiệt độ, bộ chuyển đổi số và bộ nhớ chứa hệ số hiệu chuẩn.

Đầu dò đo độ ẩm và nhiệt độ đã tháo nắp bảo vệ: thân trụ màu đen, phía trước có phần tử độ ẩm điện dung dạng tấm nhỏ và cảm biến nhiệt độ, nắp nhựa có khe thông khí đặt bên cạnh
Đầu dò đo độ ẩm đã tháo nắp: phần tử điện dung dạng tấm nhỏ và cảm biến nhiệt độ Pt100. Ảnh: Harke, phạm vi công cộng, Wikimedia Commons, đã thu nhỏ.
  • Ưu điểm: đo được 0 đến 100 %RH, sai số khoảng ±2 %RH ở loại tốt, đáp ứng vài giây, ít tiêu thụ điện.
  • Độ trễ: số đọc khi độ ẩm đang tăng và đang giảm lệch nhau khoảng 1 %RH.
  • Nhiễm bẩn: hơi dung môi, keo, sơn, cồn có thể ngấm vào polyme và làm lệch số đọc; nhiều hãng hướng dẫn sấy chip ở nhiệt độ cao rồi để hồi ẩm để phục hồi.
  • Ngưng tụ: nước đọng trên chip làm số đọc kẹt ở 100 % cho tới khi khô; nơi hay đọng sương nên dùng loại có bộ sưởi trong chip hoặc màng lọc PTFE.

4. Các loại khác

Sáu thẻ so sánh các loại cảm biến độ ẩm: điện dung polyme chính xác và phổ biến nhất, điện trở muối hoặc polyme dẫn rẻ nhưng kém chính xác, ẩm kế khô ướt, gương lạnh dùng làm chuẩn, ẩm kế tóc không cần điện, cảm biến độ ẩm đất chỉ cho giá trị tương đối
Các loại cảm biến và dụng cụ đo độ ẩm (hình tự vẽ).
  • Điện trở: lớp muối hút ẩm hoặc polyme dẫn điện giữa hai điện cực răng lược; điện trở giảm theo hàm mũ khi độ ẩm tăng. Rẻ nhưng sai số lớn (khoảng ±5 %RH), dải đo hẹp; cảm biến DHT11 thuộc loại này. Phải đo bằng điện xoay chiều để không phân cực lớp muối.
  • Độ ẩm đất: các que cắm đất đo điện trở (dễ bị ăn mòn) hoặc điện dung (bền hơn) giữa hai bản cực; kết quả phụ thuộc loại đất, chỉ nên dùng để so sánh "khô hơn, ướt hơn" và đặt ngưỡng tưới.
Ẩm kế khô ướt kiểu quay tay: khung kim loại chứa hai nhiệt kế thủy tinh song song, một nhiệt kế có bầu bọc vải, tay cầm gỗ để quay
Ẩm kế khô ướt kiểu quay tay: quay để gió thổi qua bầu ướt, đọc hai nhiệt độ rồi tra bảng. Ảnh: CambridgeBayWeather, phạm vi công cộng, Wikimedia Commons, đã thu nhỏ.

5. Chế tạo cảm biến độ ẩm điện dung dạng chip

Sáu bước chế tạo cảm biến độ ẩm điện dung dạng chip: tấm silic CMOS có sẵn mạch đo, phủ điện cực và polyme, đóng vỏ có cửa sổ, hiệu chuẩn trong buồng độ ẩm, ổn định lão hóa, kiểm tra cuối bằng ẩm kế gương lạnh
Các bước chính chế tạo cảm biến độ ẩm dạng chip (hình tự vẽ).
  1. Tấm silic CMOS: chế tạo mạch đo điện dung, cảm biến nhiệt độ bán dẫn, bộ chuyển đổi số, bộ nhớ và giao tiếp I2C như một vi mạch thông thường.
  2. Điện cực và polyme: phủ điện cực dưới, quay phủ lớp polyimide và nung đóng rắn, rồi phủ điện cực trên dạng xốp hoặc răng lược.
  3. Đóng vỏ: vỏ nhựa nhỏ (vài milimét) chừa cửa sổ hở ngay trên lớp polyme; loại dùng ngoài trời có thêm màng PTFE chống bụi và nước nhưng cho hơi nước đi qua.
  4. Hiệu chuẩn: đưa hàng nghìn chip vào buồng khí hậu, giữ ở nhiều mức độ ẩm và nhiệt độ chuẩn, đo từng chip rồi ghi hệ số bù vào bộ nhớ của chính chip đó. Nhờ vậy người dùng không phải hiệu chuẩn.
  5. Ổn định: lớp polyme mới có độ trôi ban đầu; chip được sấy và để ổn định trước khi xuất xưởng.
  6. Kiểm tra: lấy mẫu so với ẩm kế gương lạnh, đo độ trễ và thời gian đáp ứng.

6. Thực hành: đọc SHT31 bằng ESP32 và tính điểm sương

Linh kiện

Sơ đồ nối và các byte trao đổi

Sơ đồ nối module SHT31 với ESP32: VIN vào 3V3, GND vào GND, SCL vào GPIO22, SDA vào GPIO21, ADDR nối GND để có địa chỉ 0x44; bên dưới là các byte I2C: ESP32 gửi 88, 24, 00, SHT31 trả 6 byte gồm hai byte nhiệt độ, một byte CRC, hai byte độ ẩm, một byte CRC
Sơ đồ nối và ví dụ các byte trao đổi qua I2C (hình tự vẽ; byte và CRC tính theo thuật toán của chương trình).
SHT31ESP32
VIN, GND3V3, GND
SDA, SCLGPIO21, GPIO22
ADDRGND (địa chỉ 0x44); nối VIN thì địa chỉ là 0x45

Chương trình

Chương trình chỉ dùng thư viện Wire: gửi lệnh đo một lần 0x2400, chờ 16 ms, đọc 6 byte, kiểm tra CRC của từng giá trị rồi đổi ra nhiệt độ, độ ẩm.

/*
  PYWORLD.VN - Cảm biến độ ẩm điện dung SHT31 với ESP32: đọc qua I2C bằng Wire, kiểm tra CRC-8, tính điểm sương
  SHT31: VIN = 3V3, GND = GND, SDA = GPIO21, SCL = GPIO22, chân ADDR nối GND (địa chỉ 0x44)
  In nhiệt độ, độ ẩm tương đối, điểm sương (công thức Magnus) và độ ẩm tuyệt đối (g/m³)
*/

#include <Wire.h>
#include <math.h>

#define CHAN_SDA 21
#define CHAN_SCL 22

const uint8_t DIA_CHI_SHT31 = 0x44;
const uint16_t LENH_DO_MOT_LAN = 0x2400;   // Đo một lần, độ lặp lại cao, không kéo dài xung SCL
const float MAGNUS_B = 17.62;
const float MAGNUS_C = 243.12;              // °C

// CRC-8 của SHT3x: đa thức 0x31, giá trị đầu 0xFF
uint8_t tinhCrc(const uint8_t *duLieu, int n) {
  uint8_t crc = 0xFF;
  for (int i = 0; i < n; i++) {
    crc ^= duLieu[i];
    for (int b = 0; b < 8; b++) {
      crc = (crc & 0x80) ? (uint8_t)((crc << 1) ^ 0x31) : (uint8_t)(crc << 1);
    }
  }
  return crc;
}

bool docSht31(float *nhietDo, float *doAm) {
  Wire.beginTransmission(DIA_CHI_SHT31);
  Wire.write(LENH_DO_MOT_LAN >> 8);
  Wire.write(LENH_DO_MOT_LAN & 0xFF);
  if (Wire.endTransmission() != 0) {
    return false;
  }
  delay(16);                                 // Thời gian đo tối đa khoảng 15 ms
  if (Wire.requestFrom(DIA_CHI_SHT31, (uint8_t)6) != 6) {
    return false;
  }
  uint8_t b[6];
  for (int i = 0; i < 6; i++) {
    b[i] = Wire.read();
  }
  // Mỗi giá trị 16 bit đi kèm 1 byte CRC
  if (tinhCrc(b, 2) != b[2] || tinhCrc(b + 3, 2) != b[5]) {
    return false;
  }
  uint16_t thoT = (b[0] << 8) | b[1];
  uint16_t thoRh = (b[3] << 8) | b[4];
  *nhietDo = -45.0f + 175.0f * thoT / 65535.0f;
  *doAm = 100.0f * thoRh / 65535.0f;
  return true;
}

void setup() {
  Serial.begin(115200);
  Wire.begin(CHAN_SDA, CHAN_SCL, 100000);
  Serial.println("\nSHT31: nhiet do, do am, diem suong");
}

void loop() {
  float t, rh;
  if (!docSht31(&t, &rh)) {
    Serial.println("Khong doc duoc SHT31 hoac sai CRC: kiem tra day va dia chi 0x44");
    delay(2000);
    return;
  }
  // Điểm sương theo công thức Magnus: gamma = ln(RH/100) + b·T/(c+T); Td = c·gamma / (b - gamma)
  float gamma = logf(rh / 100.0f) + MAGNUS_B * t / (MAGNUS_C + t);
  float diemSuong = MAGNUS_C * gamma / (MAGNUS_B - gamma);
  // Độ ẩm tuyệt đối từ áp suất hơi nước (hPa): e = RH/100 × 6,112 × exp(b·T/(c+T))
  float apHoi = rh / 100.0f * 6.112f * expf(MAGNUS_B * t / (MAGNUS_C + t));
  float doAmTuyetDoi = 216.7f * apHoi / (273.15f + t);
  Serial.printf("Nhiet do %.2f C | Do am %.1f %%RH | Diem suong %.1f C | %.1f g/m3\n", t, rh, diemSuong, doAmTuyetDoi);
  delay(2000);
}

Giải thích

  • Mỗi giá trị 16 bit đi kèm một byte CRC-8 (đa thức 0x31, giá trị đầu 0xFF). Sai CRC nghĩa là dữ liệu bị nhiễu trên đường truyền; chương trình bỏ lần đọc đó.
  • Nhiệt độ = −45 + 175 × giá trị thô / 65535; độ ẩm = 100 × giá trị thô / 65535 (theo datasheet SHT3x).
  • Điểm sương và độ ẩm tuyệt đối tính theo công thức Magnus ở mục 1.
  • Đọc mỗi 2 giây. Đo quá dày làm chip tự nóng lên một chút và độ ẩm đọc thấp đi.

Kết quả mong đợi

Hình minh họa Serial Monitor đọc SHT31 bằng ESP32: nhiệt độ, độ ẩm tương đối, điểm sương và độ ẩm tuyệt đối; hà hơi vào cảm biến độ ẩm tăng lên khoảng 78 phần trăm; thông báo lỗi khi rút dây SDA
Kết quả mong đợi trên Serial Monitor (hình minh họa; nhiệt độ và độ ẩm là ví dụ).

Đặt module xa ESP32 và bộ nguồn (các linh kiện này ấm lên), tránh nắng chiếu trực tiếp. Muốn đo ngoài trời, đặt cảm biến trong hộp chắn bức xạ có khe thông gió.

7. Xử lý lỗi thường gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
"Khong doc duoc SHT31"Sai địa chỉ (ADDR nối VIN), sai chân SDA, SCLChạy chương trình quét I2C; đổi địa chỉ thành 0x45 nếu cần
Thỉnh thoảng sai CRCDây I2C dài, nhiễuRút ngắn dây, giảm tốc độ I2C, thêm điện trở kéo lên 4,7 kΩ
Độ ẩm thấp hơn đồng hồ khác vài %Cảm biến bị ấm do đặt gần ESP32, nguồnĐưa cảm biến ra xa, để thoáng gió
Độ ẩm kẹt ở 100 %Nước đọng trên chipĐể khô; nơi hay đọng sương dùng loại có màng lọc hoặc bộ sưởi
Số đọc trôi dần sau khi sơn, dán keo gần đóHơi dung môi ngấm vào polymeThông gió, sấy theo hướng dẫn của hãng, tránh dung môi

8. Xem thêm


Tin tức liên quan

CAN bus (phần 1): tín hiệu, khung tin, phân xử ưu tiên và gửi nhận bằng ESP32
CAN bus (phần 1): tín hiệu, khung tin, phân xử ưu tiên và gửi nhận bằng ESP32

Giải thích CAN bus: hai dây CAN_H, CAN_L, mức trội và mức lặn, khung tin có ID 11 bit, phân xử ưu tiên, CRC và ACK. Kèm hai chương trình ESP32 dùng bộ điều khiển TWAI: tự kiểm tra và hai nút gửi nhận.

Các nguồn sai số khi đo lực bằng load cell: lệch tâm, rão, trễ, nhiệt độ và ngân sách sai số
Các nguồn sai số khi đo lực bằng load cell: lệch tâm, rão, trễ, nhiệt độ và ngân sách sai số

Vì sao đo lực thực tế sai hơn phiếu thông số load cell: lệch tâm và gá lắp, rão, trễ, phi tuyến, nhiệt độ, cáp và bộ đọc; ví dụ ngân sách sai số và danh sách kiểm tra nhanh.

Quy tắc quyết định và tỉ số TUR: khi nào được kết luận đạt, dải bảo vệ và rủi ro chấp nhận sai
Quy tắc quyết định và tỉ số TUR: khi nào được kết luận đạt, dải bảo vệ và rủi ro chấp nhận sai

Quy tắc quyết định theo ISO/IEC 17025 và ILAC-G8: bốn trường hợp kết quả sát giới hạn, chấp nhận đơn giản và dải bảo vệ, rủi ro chấp nhận sai, tỉ số TUR 4:1 và cách chọn quy tắc.

Kiểm định máy thử kéo nén theo ISO 7500-1: lực kế chuẩn, sai số, lặp lại và xếp cấp dải đo
Kiểm định máy thử kéo nén theo ISO 7500-1: lực kế chuẩn, sai số, lặp lại và xếp cấp dải đo

Kiểm định hệ thống đo lực của máy thử kéo nén theo ISO 7500-1: hai cách đặt lực, trình tự ba loạt đo, chỉ tiêu q, b, v, f0, a, bảng cấp 0,5 đến 3 và ví dụ dải 100 kN.

Cảm biến chuyển vị: biến trở, LVDT, điện dung, dòng xoáy, laser – cấu tạo, nguyên lý và chế tạo
Cảm biến chuyển vị: biến trở, LVDT, điện dung, dòng xoáy, laser – cấu tạo, nguyên lý và chế tạo

Cảm biến chuyển vị hoạt động thế nào: biến trở thẳng, LVDT, điện dung, dòng điện xoáy, laser tam giác lượng, từ giảo, cách chế tạo và đo vị trí, vận tốc bằng thước điện trở với ESP32.

Hiệu chuẩn transmitter áp suất 4–20 mA: sơ đồ vòng, sai số theo khoảng đo, lúc nhận và sau chỉnh
Hiệu chuẩn transmitter áp suất 4–20 mA: sơ đồ vòng, sai số theo khoảng đo, lúc nhận và sau chỉnh

Hiệu chuẩn transmitter áp suất 4–20 mA: sơ đồ vòng dòng điện, công thức dòng và sai số theo phần trăm khoảng đo, trình tự lúc nhận và sau chỉnh, ví dụ 0–16 bar, lưu ý về HART và điểm 0.

Cảm biến áp suất: cấu tạo, nguyên lý áp trở, điện dung, áp điện và cách chế tạo
Cảm biến áp suất: cấu tạo, nguyên lý áp trở, điện dung, áp điện và cách chế tạo

Cảm biến áp suất hoạt động thế nào: áp suất tuyệt đối và tương đối, màng và ống Bourdon, áp trở silic, điện dung, áp điện, quy trình chế tạo MEMS và cách đọc loại 0,5–4,5 V bằng ESP32.

Vali nhựa hay vali nhôm: chọn loại nào để đựng thiết bị, dụng cụ
Vali nhựa hay vali nhôm: chọn loại nào để đựng thiết bị, dụng cụ

So sánh vali nhựa và vali nhôm đựng thiết bị theo chống nước, chống bụi, chịu va đập, nhiệt độ, vẻ ngoài, khóa và bảo dưỡng; khi nào nên chọn mỗi loại và sơ đồ chọn nhanh.


Bình luận
Đã thêm vào giỏ hàng