Cảm biến mức: phao, điện cực, thủy tĩnh, siêu âm, radar – cấu tạo, nguyên lý và chế tạo
Cảm biến mức hoạt động thế nào: phao, điện cực, điện dung, áp suất thủy tĩnh, siêu âm, radar, âm thoa rung, cách chế tạo và đo mức bồn nước bằng HC-SR04 với ESP32 có bù nhiệt độ.
Cảm biến mức cho biết trong bồn, giếng, silo còn bao nhiêu chất lỏng hay vật liệu rời: để máy bơm tự bật khi nước cạn và tắt khi đầy, để kho xăng dầu biết lượng tồn, để nhà máy không bao giờ để bồn hóa chất tràn. Có loại chỉ báo một mức (báo đầy, báo cạn) và loại đo liên tục cả chiều cao. Bài viết giới thiệu các loại cảm biến mức thường gặp, giải thích nguyên lý phao, điện cực, điện dung, áp suất thủy tĩnh, siêu âm, radar và âm thoa rung, cách chế tạo từng loại, rồi hướng dẫn đo mức nước trong bồn bằng cảm biến siêu âm HC-SR04 và ESP32 có bù nhiệt độ.
1. Các loại cảm biến mức

| Loại | Báo điểm / liên tục | Nguyên lý | Dùng ở đâu |
|---|---|---|---|
| Phao | Cả hai | Phao nổi theo mặt chất lỏng, đóng công tắc hoặc kéo biến trở | Bơm nước sinh hoạt, bình xăng xe |
| Điện cực dẫn | Điểm | Chất lỏng dẫn điện nối hai điện cực | Bồn nước, nồi hơi; không dùng cho dầu, nước cất |
| Điện dung | Cả hai | Chất lỏng thay chỗ không khí quanh điện cực, điện dung tăng | Hóa chất, dầu, hạt, bột |
| Áp suất thủy tĩnh | Liên tục | Áp suất ở đáy tỉ lệ với chiều cao cột chất lỏng | Giếng khoan, bể nước, sông hồ |
| Siêu âm | Liên tục | Đo thời gian tiếng vọng từ mặt chất lỏng | Bể hở, bể nước thải, kênh mương |
| Radar | Liên tục | Sóng vô tuyến phản xạ từ mặt chất lỏng | Bồn kín có hơi, bụi, nhiệt độ thay đổi |
| Âm thoa rung | Điểm | Âm thoa ngập vật liệu thì đổi tần số rung | Silo hạt, bột; chống tràn, chống chạy khô bơm |
2. Phao và điện cực: đơn giản và bền

- Phao lật (phao bơm): quả phao treo bằng dây cáp, bên trong có viên bi thép và công tắc. Nước dâng làm phao lật ngửa, bi lăn đè công tắc. Khoảng chênh giữa mức bật và mức tắt do chiều dài dây treo quyết định.
- Phao trượt trên ống: ống kín chứa công tắc lưỡi gà; phao có nam châm vòng trượt dọc ống, đi tới đâu đóng công tắc tới đó. Nhiều công tắc nối với chuỗi điện trở cho ra tín hiệu gần như liên tục.
- Phao có cần và biến trở: cách đo xăng trong ô tô, xe máy truyền thống: cần phao xoay một biến trở, đồng hồ đọc điện trở.
- Điện cực dẫn: vài thanh inox dài ngắn khác nhau thả vào bồn; nước ngập tới thanh nào thì dòng điện nhỏ chạy qua thanh đó. Dùng điện áp xoay chiều để điện cực không bị ăn mòn điện phân. Chỉ dùng được với chất lỏng dẫn điện.

3. Áp suất thủy tĩnh

Áp suất ở đáy cột chất lỏng là p = ρ · g · h. Với nước (ρ ≈ 1000 kg/m³), mỗi mét chiều cao tạo khoảng 9,81 kPa, tức gần 0,1 bar. Đặt một cảm biến áp suất ở đáy bồn (hoặc thả cảm biến dạng que chìm xuống đáy giếng) là đo được mức liên tục. Cần lưu ý:
- Dùng cảm biến áp suất tương đối: cáp của cảm biến chìm có một ống thông khí nhỏ để mặt sau màng luôn ở áp suất khí quyển; nếu không, kết quả sẽ thay đổi theo thời tiết.
- Kết quả phụ thuộc khối lượng riêng: cùng 30 kPa là khoảng 3,06 m nước nhưng 3,64 m dầu diesel.
- Bồn kín có áp suất phía trên thì phải dùng cảm biến chênh áp, một cổng ở đáy, một cổng ở đỉnh bồn.
Nguyên lý, cấu tạo và chế tạo cảm biến áp suất được trình bày chi tiết trong bài cảm biến áp suất của loạt này.
4. Siêu âm và radar: đo không chạm

- Siêu âm: đầu dò phát một chùm xung âm thanh tần số cao (40 kHz với module nhỏ, 20–80 kHz với loại công nghiệp), rồi chuyển sang chế độ nghe tiếng vọng từ mặt chất lỏng. Khoảng cách d = c · t / 2. Vận tốc âm thanh c thay đổi theo nhiệt độ, khoảng 0,17 % mỗi °C (331,3 m/s ở 0 °C, 343,4 m/s ở 20 °C), nên cảm biến công nghiệp luôn có cảm biến nhiệt độ đi kèm để bù.
- Vùng mù: ngay sau khi phát, đầu dò còn rung nên không nghe được tiếng vọng quá gần. Module HC-SR04 có vùng mù khoảng 2 cm, loại công nghiệp vài chục cm. Bọt, hơi nước dày, mặt chất lỏng dậy sóng làm tiếng vọng yếu hoặc lạc.
- Radar: dùng sóng vô tuyến thay cho âm thanh. Loại FMCW phát tín hiệu có tần số tăng đều theo thời gian; tín hiệu phản xạ về trễ một chút nên lệch tần số với tín hiệu đang phát; độ lệch tỉ lệ với khoảng cách. Sóng vô tuyến không cần không khí để truyền và gần như không bị nhiệt độ, áp suất, hơi nước ảnh hưởng; radar 80 GHz có chùm rất hẹp, đo được trong bồn nhỏ có nhiều vật cản bên trong.

Âm thoa rung (báo mức điểm) dùng hai nhánh thép rung ở tần số riêng nhờ phần tử áp điện; khi bị vật liệu ngập, tần số và biên độ rung giảm, mạch điện tử phát hiện sự thay đổi đó. Loại này không cần hiệu chỉnh, chạy được với hầu hết chất lỏng và bột.
5. Chế tạo các loại cảm biến mức

- Công tắc phao trượt: công tắc lưỡi gà (hai lá thép từ trong ống thủy tinh hàn kín) đặt ở đúng các độ cao trong ống inox; phao nhựa hoặc inox có nam châm vòng; đổ keo kín đầu ống.
- Đầu dò siêu âm: đĩa gốm áp điện dán vào một lớp phối hợp trở kháng (nhựa epoxy có hạt thủy tinh rỗng) để âm thanh truyền ra không khí tốt hơn; phía sau là lớp đệm hút rung để rút ngắn thời gian rung dư; tất cả đổ keo trong vỏ nhựa.
- Radar: chip thu phát tần số cao, anten in trên mạch hoặc anten loa, thấu kính nhựa PTFE; bộ xử lý số làm phép biến đổi Fourier để tìm độ lệch tần số.
- Cảm biến thủy tĩnh: màng gốm điện dung hoặc màng inox áp trở trong vỏ inox; cáp có ống thông khí và lõi chịu lực để treo.
- Âm thoa: hai nhánh thép không gỉ gia công chính xác để có tần số riêng ổn định; phần tử áp điện vừa kích rung vừa đo rung.
- Hiệu chuẩn: đổ chất lỏng tới các mức biết trước; với bồn nằm hay bồn hình dạng phức tạp, lập bảng đối chiếu mức và thể tích.
6. Thực hành: đo mức bồn nước bằng HC-SR04 và ESP32
Linh kiện
- ESP32 DevKit V1 30 chân.
- Một module siêu âm HC-SR04, một điện trở 1 kΩ, một điện trở 2 kΩ (hoặc hai điện trở 1 kΩ nối tiếp).
- Dây cắm; hộp che cho module nếu dùng lâu dài.
Sơ đồ nối

| HC-SR04 | ESP32 |
|---|---|
| VCC | VIN (5 V khi cắm USB) |
| TRIG | GPIO5 (mức 3,3 V vẫn kích được) |
| ECHO | Qua điện trở 1 kΩ tới GPIO18; từ GPIO18 có điện trở 2 kΩ xuống GND |
| GND | GND |
HC-SR04 chạy 5 V, chân ECHO ra xung 5 V. Cầu phân áp 1 kΩ / 2 kΩ hạ xuống khoảng 3,3 V cho an toàn chân ESP32. Gắn module ở chính giữa nắp, mặt đầu dò song song với mặt nước, tránh thành bồn và ống dẫn trong vùng chùm khoảng 15°.
Chương trình
/*
PYWORLD.VN - Đo mức nước trong bồn bằng cảm biến siêu âm HC-SR04 và ESP32, có bù nhiệt độ của vận tốc âm thanh
HC-SR04: VCC = VIN (5 V), GND = GND, TRIG = GPIO5, ECHO qua cầu phân áp 1 kΩ / 2 kΩ vào GPIO18
Cảm biến gắn ở nắp bồn nhìn thẳng xuống; mức nước = chiều cao lắp đặt - khoảng cách đo được
*/
#define CHAN_TRIG 5
#define CHAN_ECHO 18
const float CAO_LAP_DAT_MM = 1000.0; // Khoảng cách từ mặt cảm biến tới đáy bồn
const float MUC_DAY_MM = 850.0; // Mức nước khi bồn đầy (chừa vùng mù gần cảm biến)
const float DIEN_TICH_DAY_DM2 = 50.0; // Diện tích đáy bồn (dm²), ví dụ bồn hộp 50 x 100 cm
const float NHIET_DO_C = 30.0; // Nhiệt độ không khí trong bồn, dùng để tính vận tốc âm thanh
const int SO_LAN_DO = 5;
float vanTocAmMmUs() {
// Vận tốc âm thanh trong không khí khô: khoảng 331,3 + 0,606 × T (m/s), đổi ra mm/µs
return (331.3f + 0.606f * NHIET_DO_C) / 1000.0f;
}
// Một lần đo: trả về khoảng cách (mm), hoặc -1 nếu không có tiếng vọng
float doMotLan() {
digitalWrite(CHAN_TRIG, LOW);
delayMicroseconds(4);
digitalWrite(CHAN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(CHAN_TRIG, LOW);
unsigned long thoiGian = pulseIn(CHAN_ECHO, HIGH, 30000); // Chờ tối đa 30 ms (khoảng 5 m)
if (thoiGian == 0) {
return -1;
}
return thoiGian * vanTocAmMmUs() / 2.0f; // Âm thanh đi rồi về: chia 2
}
// Lấy trung vị của nhiều lần đo để loại tiếng vọng lạc
float doTrungVi() {
float kq[SO_LAN_DO];
int n = 0;
for (int i = 0; i < SO_LAN_DO; i++) {
float d = doMotLan();
if (d > 0) {
kq[n++] = d;
}
delay(60); // Chờ tiếng vọng cũ tắt hẳn trước lần đo sau
}
if (n == 0) {
return -1;
}
for (int i = 1; i < n; i++) { // Sắp xếp chèn
float x = kq[i];
int j = i - 1;
while (j >= 0 && kq[j] > x) {
kq[j + 1] = kq[j];
j--;
}
kq[j + 1] = x;
}
return kq[n / 2];
}
void setup() {
Serial.begin(115200);
pinMode(CHAN_TRIG, OUTPUT);
pinMode(CHAN_ECHO, INPUT);
Serial.printf("\nDo muc bon: cao lap dat %.0f mm, day %.0f mm, van toc am %.1f m/s\n",
CAO_LAP_DAT_MM, MUC_DAY_MM, vanTocAmMmUs() * 1000);
}
void loop() {
float khoangCach = doTrungVi();
if (khoangCach < 0) {
Serial.println("Khong co tieng vong: kiem tra day ECHO, cam bien nghieng hoac be mat song");
} else {
float muc = CAO_LAP_DAT_MM - khoangCach;
if (muc < 0) {
muc = 0;
}
float phanTram = muc / MUC_DAY_MM * 100.0f;
float lit = DIEN_TICH_DAY_DM2 * muc / 100.0f; // dm² × dm = lít
Serial.printf("Khoang cach %.0f mm | Muc %.0f mm | %.0f %% | %.0f lit\n", khoangCach, muc, phanTram, lit);
}
delay(1000);
}
Giải thích
- Xung 10 µs ở TRIG làm module phát 8 chu kỳ siêu âm 40 kHz; chân ECHO lên mức cao suốt thời gian chờ tiếng vọng.
pulseIn()đo độ dài xung này, giới hạn chờ 30 ms (khoảng 5 m). - Vận tốc âm thanh tính theo nhiệt độ đặt trong
NHIET_DO_C; ở 30 °C là khoảng 349,5 m/s. Có thể nối thêm một cảm biến nhiệt độ để cập nhật tự động. - Mỗi kết quả lấy trung vị của 5 lần đo, cách nhau 60 ms, để loại bỏ tiếng vọng lạc từ thành bồn hay sóng nước.
- Mức = chiều cao lắp đặt − khoảng cách; thể tích (lít) = diện tích đáy (dm²) × mức (dm), đúng với bồn có tiết diện đều.
Kết quả mong đợi

Hơi nước ngưng tụ trên đầu dò là nguyên nhân hỏng phổ biến của HC-SR04 trong bồn nước. Dùng lâu dài nên chọn đầu dò siêu âm chống nước loại một đầu dò, hoặc cảm biến áp suất chìm.
7. Xử lý lỗi thường gặp
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Luôn "Khong co tieng vong" | Chưa nối cầu phân áp đúng, ECHO không tới GPIO18 | Kiểm tra dây; thử đặt tay trước module ở 20 cm |
| Khoảng cách nhảy lung tung | Chùm sóng chạm thành bồn, ống, phao; mặt nước sóng | Dời module ra giữa, dùng ống dẫn sóng, tăng số lần đo trung vị |
| Bồn gần đầy đọc sai | Mặt nước vào vùng mù của cảm biến | Đặt mức đầy thấp hơn cảm biến ít nhất 5 cm (loại công nghiệp: theo thông số) |
| Kết quả lệch đều vài phần trăm | Nhiệt độ thực khác NHIET_DO_C | Sửa nhiệt độ hoặc thêm cảm biến nhiệt độ để bù |
| Module chết sau vài tuần | Hơi nước đọng, ăn mòn | Dùng đầu dò chống nước hoặc cảm biến áp suất chìm |
8. Xem thêm
- Vòng dòng 4-20 mA và cách đọc cảm biến mức công nghiệp bằng ESP32.
- ESP32 điều khiển relay để bật tắt máy bơm theo mức.
- Mức logic 3,3 V và 5 V: vì sao chân ECHO cần cầu phân áp.
- Các bài khác trong loạt: cảm biến áp suất, cảm biến tiệm cận điện dung, cảm biến lưu lượng.
Xem thêm