Cảm biến lưu lượng: tua bin, chênh áp, điện từ, siêu âm, Coriolis – cấu tạo, nguyên lý và chế tạo
Cảm biến lưu lượng hoạt động thế nào: tua bin, thể tích, chênh áp, điện từ, siêu âm, xoáy, Coriolis, nhiệt; cách chế tạo và đo lít mỗi phút, tổng lít bằng cảm biến tua bin với ESP32.
Cảm biến lưu lượng (lưu lượng kế) đo lượng chất lỏng hay chất khí chảy qua ống trong một đơn vị thời gian: đồng hồ nước gia đình, máy lọc nước, trạm xăng, hệ thống tưới, dây chuyền pha chế đồ uống, đường ống khí nén. Có rất nhiều nguyên lý đo, mỗi loại hợp với một lưu chất và một dải đo. Bài viết giải thích các đại lượng lưu lượng, tám nguyên lý chính (tua bin, thể tích, chênh áp, điện từ, siêu âm, xoáy, Coriolis, nhiệt), cách chế tạo từng loại, rồi hướng dẫn đọc cảm biến lưu lượng kiểu tua bin bằng ESP32 để đo lít mỗi phút và tổng số lít.
1. Lưu lượng thể tích và lưu lượng khối lượng
- Lưu lượng thể tích Q (L/phút, m³/h) = vận tốc trung bình v × tiết diện ống A. Ống đường kính trong 20 mm, nước chảy 1 m/s: A ≈ 3,14 cm², Q ≈ 0,314 L/s ≈ 18,8 L/phút.
- Lưu lượng khối lượng (kg/h) = lưu lượng thể tích × khối lượng riêng. Với chất khí, khối lượng riêng thay đổi mạnh theo áp suất và nhiệt độ, nên khi pha trộn, đốt, tính tiền khí người ta cần lưu lượng khối lượng.
- Tổng lưu lượng (m³, lít) là tích phân lưu lượng theo thời gian: con số trên đồng hồ nước.
- Dải đo (turndown): tỉ số giữa lưu lượng lớn nhất và nhỏ nhất đo được với sai số cho phép. Lưu lượng kế chênh áp chỉ khoảng 3:1 đến 4:1, lưu lượng kế điện từ có thể trên 100:1.
2. Tám nguyên lý đo lưu lượng

| Nguyên lý | Đo cái gì | Ưu điểm | Hạn chế |
|---|---|---|---|
| Tua bin, cánh quạt | Tốc độ quay của cánh | Rẻ, ra xung, dễ đọc bằng vi điều khiển | Có phần quay bị mòn, sợ cặn bẩn |
| Thể tích (bánh răng oval, đĩa lắc) | Mỗi vòng đẩy qua một thể tích cố định | Rất chính xác với chất lỏng nhớt (dầu, xăng) | Có phần quay, cản dòng |
| Chênh áp (tấm lỗ, Venturi, ống Pitot) | Chênh áp suất trước và tại chỗ thắt | Đơn giản, có tiêu chuẩn tính toán, đo được hơi nước nóng | Dải đo hẹp, gây tổn thất áp |
| Điện từ | Điện áp cảm ứng trong chất lỏng dẫn điện | Không cản dòng, không phần động, chịu được bùn, nước thải | Chỉ đo chất lỏng dẫn điện; không đo dầu, khí |
| Siêu âm | Chênh lệch thời gian truyền âm xuôi và ngược dòng | Không cản dòng; loại kẹp ngoài không cần cắt ống | Cần đoạn ống thẳng dài; bọt khí làm sai |
| Xoáy (vortex) | Tần số các xoáy sinh sau vật cản | Đo được chất lỏng, khí, hơi nước | Không đo được lưu lượng rất thấp |
| Coriolis | Độ xoắn của ống đang rung khi có dòng chảy | Đo trực tiếp khối lượng và cả khối lượng riêng, sai số khoảng 0,1 % | Đắt, nặng với ống lớn |
| Nhiệt | Nhiệt lượng dòng khí mang đi | Đo trực tiếp khối lượng khí lưu lượng nhỏ | Phụ thuộc loại khí, cần hiệu chuẩn theo khí |

Lưu lượng kế phao (diện tích thay đổi) là dạng cơ khí đơn giản nhất: ống côn đặt đứng, phao bên trong. Dòng chảy càng lớn, phao càng bị đẩy cao tới chỗ ống rộng hơn. Không cần điện, nhìn là đọc được; loại có cảm biến từ bên ngoài ống còn cho tín hiệu điện.
3. Chênh áp: Venturi và tấm lỗ

Khi dòng chảy đi qua chỗ thắt, vận tốc tăng và áp suất giảm (định luật Bernoulli). Đo chênh áp ΔP giữa đoạn ống lớn và chỗ thắt bằng một cảm biến chênh áp, ta có Q = C · A · √(2 · ΔP / ρ), trong đó C là hệ số xả của thiết bị. Vì lưu lượng tỉ lệ với căn bậc hai của chênh áp, ở 10 % lưu lượng chỉ còn 1 % chênh áp: phần đầu thang rất kém chính xác. Tấm lỗ rẻ, dễ thay nhưng làm mất nhiều áp suất; ống Venturi tốn kém hơn nhưng tổn thất ít.
4. Điện từ và siêu âm


- Điện từ: chất lỏng dẫn điện là một "dây dẫn" chuyển động trong từ trường của hai cuộn dây. Theo định luật cảm ứng Faraday, giữa hai điện cực xuất hiện điện áp U = B · v · D (D là đường kính ống). Chỉ cần độ dẫn điện tối thiểu cỡ vài µS/cm, nên đo được nước sạch, nước thải, bùn, hóa chất, nhưng không đo được dầu hay nước cất.
- Siêu âm chênh lệch thời gian: hai đầu dò đặt chéo nhau, lần lượt phát và thu. Sóng đi xuôi dòng nhanh hơn sóng đi ngược dòng; hiệu thời gian (cỡ nano giây) tỉ lệ với vận tốc dòng. Loại kẹp ngoài gắn lên mặt ngoài ống bằng gel truyền âm, không cần cắt ống. Loại Doppler đo độ lệch tần số do hạt và bọt trong dòng.
- Xoáy: dòng chảy qua một vật cản sinh ra dãy xoáy luân phiên hai bên (dãy xoáy Kármán) với tần số f = St · v / d, trong đó St gần như không đổi trên dải rộng. Một cảm biến áp điện sau vật cản đếm xoáy.
- Coriolis: ống cong được cho rung ở tần số riêng; khi có dòng chảy, lực Coriolis làm hai nhánh ống rung lệch pha nhau. Độ lệch pha tỉ lệ lưu lượng khối lượng; tần số rung cho biết khối lượng riêng.
5. Cảm biến tua bin với cảm biến Hall

Loại cảm biến lưu lượng nước rẻ, phổ biến cho máy lọc nước, máy pha cà phê, hệ thống tưới (đầu ren G1/2, G3/4) gồm một rô to nhựa có gắn nam châm quay trong khoang nước, và một cảm biến Hall đặt ngoài vách kín. Mỗi vòng quay cho một hoặc vài xung. Tần số xung tỉ lệ với lưu lượng theo hệ số K; loại G1/2 thường ghi f (Hz) = 7,5 × Q (L/phút), tức 450 xung mỗi lít. Đây là con số danh định, mỗi cảm biến lệch vài phần trăm và đặc tính không thẳng ở lưu lượng rất thấp, nên nên hiệu chuẩn lại.
6. Chế tạo các loại lưu lượng kế

- Tua bin: rô to nhựa POM (loại rẻ) hoặc inox (loại công nghiệp) quay trên trục gốm hay ổ đá để ít ma sát; nam châm nhỏ đúc liền trong rô to; cảm biến Hall đặt ngoài vách kín nên phần điện không chạm nước.
- Điện từ: ống thép không gỉ được lót lớp PTFE hoặc cao su cách điện; hai cuộn từ ôm ngoài ống; hai điện cực inox (hoặc titan, tantali với hóa chất) xuyên qua lớp lót. Mạch kích từ xung vuông để loại điện áp phân cực điện cực.
- Siêu âm: cặp đầu dò áp điện đặt chéo trong thân ống hoặc kẹp ngoài; mạch đo thời gian phân giải tới phần trăm nano giây.
- Coriolis: ống mỏng uốn cong, cuộn kích rung ở giữa, hai cuộn đo pha ở hai đầu; ống phải có độ đàn hồi ổn định suốt đời sử dụng.
- Chênh áp: tấm lỗ, ống Venturi gia công đúng kích thước theo tiêu chuẩn để tính được hệ số xả; cảm biến chênh áp có mạch khai căn.
- Hiệu chuẩn: cho chảy qua thiết bị vào bình chuẩn (hoặc lên cân) trong thời gian đo chính xác, lập hệ số K ở nhiều mức lưu lượng.
7. Thực hành: đo lưu lượng nước bằng cảm biến tua bin và ESP32
Linh kiện
- ESP32 DevKit V1 30 chân.
- Một cảm biến lưu lượng nước kiểu tua bin 3 dây (đỏ 5 V, đen GND, vàng tín hiệu), ví dụ loại ren G1/2.
- Một đi-ốt Schottky (ví dụ 1N5819 hoặc BAT85); dây cắm; băng tan và đầu nối ống.
Sơ đồ nối

| Dây cảm biến | Nối tới |
|---|---|
| Đỏ | VIN (5 V khi cắm USB) |
| Đen | GND |
| Vàng | Catot đi-ốt Schottky (đầu có vạch); anot đi-ốt nối GPIO27 |
Tùy loại, ngõ ra của cảm biến có thể là cực thu hở hoặc có sẵn điện trở kéo lên tới 5 V. Đi-ốt Schottky xử lý được cả hai: khi cảm biến kéo dây vàng xuống, GPIO27 xuống khoảng 0,3 V; khi dây vàng lên 5 V, đi-ốt bị phân cực ngược và GPIO27 chỉ được điện trở kéo lên bên trong ESP32 nâng tới 3,3 V.
Chương trình
/*
PYWORLD.VN - Cảm biến lưu lượng kiểu tua bin (cánh quạt + cảm biến Hall) với ESP32: lưu lượng (L/phút) và tổng lít
Cảm biến nguồn 5 V (dây đỏ VIN, dây đen GND); dây tín hiệu vàng qua đi-ốt Schottky về GPIO27, bật điện trở kéo lên bên trong
Hệ số K: tần số (Hz) = 7,5 × lưu lượng (L/phút), tức 450 xung mỗi lít; hiệu chỉnh lại bằng cách hứng nước vào bình đong
*/
#define CHAN_XUNG 27
const float HE_SO_K = 7.5; // Hz cho mỗi L/phút (theo thông số cảm biến, cần hiệu chỉnh)
const float XUNG_MOI_LIT = HE_SO_K * 60.0; // 7,5 × 60 = 450 xung/lít
const uint32_t CHU_KY_MS = 1000;
volatile uint32_t demXung = 0;
portMUX_TYPE khoaNgat = portMUX_INITIALIZER_UNLOCKED;
uint32_t tongXung = 0;
void IRAM_ATTR ngatXung() {
demXung = demXung + 1;
}
void setup() {
Serial.begin(115200);
pinMode(CHAN_XUNG, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(CHAN_XUNG), ngatXung, FALLING);
Serial.printf("\nCam bien luu luong tua bin: K = %.1f Hz/(L/phut), %.0f xung/lit\n", HE_SO_K, XUNG_MOI_LIT);
}
void loop() {
static uint32_t mocTruoc = millis();
uint32_t bayGio = millis();
if (bayGio - mocTruoc < CHU_KY_MS) {
return;
}
portENTER_CRITICAL(&khoaNgat);
uint32_t soXung = demXung;
demXung = 0;
portEXIT_CRITICAL(&khoaNgat);
float giay = (bayGio - mocTruoc) / 1000.0f;
mocTruoc = bayGio;
tongXung += soXung;
float tanSo = soXung / giay;
float luuLuong = tanSo / HE_SO_K; // L/phút
float tongLit = tongXung / XUNG_MOI_LIT;
Serial.printf("Tan so %.1f Hz | Luu luong %.2f L/phut | Tong %.3f L (%lu xung)\n", tanSo, luuLuong, tongLit, (unsigned long)tongXung);
}
Giải thích và hiệu chuẩn
- Ngắt sườn xuống đếm xung; mỗi giây chương trình lấy số xung, tính tần số, lưu lượng = tần số / 7,5 và cộng dồn tổng.
- Tổng lít = tổng xung / 450.
- Hiệu chuẩn: cho nước chảy qua cảm biến vào một bình đong khoảng 2 L với lưu lượng vừa phải, ghi tổng xung. Hệ số mới = số xung / (số lít × 60). Ví dụ 2 L được 930 xung: K = 930 / 120 = 7,75. Sửa
HE_SO_Krồi nạp lại.
Kết quả mong đợi

8. Xử lý lỗi thường gặp
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Không có xung dù nước chảy | Đi-ốt lắp ngược; lắp cảm biến ngược chiều mũi tên | Vạch đi-ốt hướng về phía cảm biến; xoay cảm biến đúng chiều dòng |
| Lưu lượng nhỏ không đo được | Dưới ngưỡng khởi động của rô to | Dùng cảm biến cỡ nhỏ hơn hoặc loại điện từ, siêu âm |
| Tổng lít lệch so với bình đong | Hệ số K danh định khác thực tế | Hiệu chuẩn lại bằng bình đong ở lưu lượng làm việc |
| Xung nhảy khi bơm chạy | Bọt khí, nhiễu từ động cơ bơm | Xả khí trong ống, đi dây tín hiệu xa dây động lực |
| Rô to kẹt sau một thời gian | Cặn, cát trong nước | Lắp lưới lọc trước cảm biến |
9. Xem thêm
- Ngắt GPIO trên ESP32 và cách đếm xung.
- Lưu dữ liệu vào bộ nhớ flash bằng Preferences, để giữ tổng số lít khi mất điện.
- Vòng dòng 4-20 mA: ngõ ra của lưu lượng kế điện từ, siêu âm công nghiệp.
- Các bài khác trong loạt: cảm biến áp suất, cảm biến mức, cảm biến từ trường.
Xem thêm