Cảm biến áp suất bài 1: Đo mực nước bằng cảm biến áp suất khí BMP180

Cảm biến áp suất bài 1: Đo mực nước bằng cảm biến áp suất khí BMP180

Series: Cảm biến áp suất

wp-content/uploads/2019/11/0.jpg
  • Cảm biến áp suất bài 1: Đo mực nước bằng cảm biến áp suất khí BMP180

Có rất nhiều phương pháp để đo mực chất lỏng (độ sâu, chiều cao cột chất lỏng). Cách đơn giản là đo trực tiếp bằng thước hoặc phao nổi. Một số chất lỏng không dẫn điện như xăng, dầu có thể đo bằng biến trở + phao, như trong các bình xăng xe máy phổ thông. Phức tạp hơn, đó là các phương pháp đo bằng điện dung, sóng radar, sóng siêu âm, hay đo bằng cảm biến áp suất.

Trong bài này, mình sẽ giới thiệu phương pháp đo mực nước (đứng yên) bằng bằng cảm biến áp suất.

Điều đặc biệt là mình sẽ dùng một loại cảm biến áp suất khi quyển giá rẻ, đó là BMP180.

Trời ơi! Tin được không? Dùng cảm biến khí đo mực chất lỏng??? 😉

Video hướng dẫn

Demo at 11:45

Các bạn hãy like, share & sub kênh ủng hộ mình nhé. :*

Phương pháp tính mực chất lỏng dựa vào áp suất.

Sự tồn tại áp suất trong lòng chất lỏng

Chất lỏng không chỉ gây ra áp suất lên thành bình và đáy bình chứa, mà chúng còn gây ra áp suất lên các vật ở bên trong lòng của chúng.

Trong một chất lỏng đứng yên, áp suất tại những điểm trên cùng một mặt phẳng nằm ngang (có cùng độ sâu h), có độ lớn như nhau. Đây là một đặc điểm quan trọng của áp suất chất lỏng, được ứng dụng nhiều trong khoa học và kĩ thuật.

Công thức tính mực chất lỏng dựa vào áp suất

Áp suất gây ra bởi cột chất lỏng lên điểm (A) trong lòng chất lỏng được tính như sau:

p = d * h trong đó:
p: áp suất tại điểm A (pa)
d: trọng lượng riêng của chất lỏng (N/m3)
h: chiều cao (độ sâu) từ A tới mặt thoáng (m)


Suy ra, công thức tính chiều cao (h) từ điểm (A) tới mặt thoáng là: h = p / d

Mỗi loại chất lỏng sẽ có trọng lượng riêng (d) khác nhau và thường không thay đổi.

Nhiệm vụ của chúng ta là đi tìm áp suất (p).

Cảm biến áp suất khí quyển BMP180

BMP180 là cảm biến áp suất khí quyển với độ chính xác cao, được sản xuất bởi BOSCH. Nó là bản nâng cấp của BMP085.

Với giá thành rẻ, tiêu thụ điện năng thấp, kích thước rất nhỏ và đặc biệt là độ chính xác cao, nó được tích hợp trong điện thoại, các thiết bị GPS và thiết bị đo khí áp.

Thông số kĩ thuật:

Khoảng đo áp suất300-1100 hPa (tương ứng với +9000m ~ -500m so với mặt nước biển)
Độ chính xác tương đối± 12 hPa (tương ứng với ± 1m 950 ~ 1050hPa @ 25°C)
Độ chính xác tuyệt đối± 1 hPa (950 ~ 1050 hPa, 0 ~+ 40 ° C)
Hệ số bù nhiệt độ1.5 Pa/K, ứng với At 12.6cm /K (khoản 25°C ~ 40°C tại 900hPa)
Khoản đo nhiệt độ-40 °C ~ +85°C
Điện áp hoạt động3.3v
Kích thước11.5 x 14.5 mm
Kháccó cảm biến nhiệt độ


Tại sao dự án này lại dùng BMP180? Vì nó rẻ và sẵn có, thích hợp với các bạn DIY.

Nguyên lý đo mực nước bằng cảm biến BMP180

Trước hết, vì cảm biến BMP180 không thể tiếp xúc với nước nên phải cách ly nó bằng một cái túi kín để không cho nước vào cũng như khí lọt ra.

Yêu cầu túi phải có màng mỏng, mềm để nó “trong suốt về áp lực”. Tức là khi ta nhúng cái túi đó vào nước, sẽ có một áp lực lên màng túi. Lúc này, bản thân màng túi sẽ hoàn toàn không chống lại áp lực đó. Thay vào đó, phần không khí bên trong sẽ chịu toàn bộ áp lực nước gây lên màng túi.

Lúc này, cảm biến BMP180 sẽ gián tiếp ghi nhận được áp suất nước lên màng túi. Đó chính là điều kiện để thực hiện dự án này 😀

Trở lại với các công thức ở trên, để đo được mực chất lỏng, ta cần tìm ra áp suất (p) tại điểm cần đo.

Áp suất chất lỏng (nước) tại một điểm mặt thoáng (nơi có độ sâu bằng 0) cũng chính là áp suất khí quyển tại điểm đó. Đặt cảm biến tại một điểm trên mặt nước, ta đo được áp suất khí quyển, tạm gọi là pTop.

Khi nhúng túi cảm biến vào trong lòng chất lỏng tại điểm (A) với độ sâu (h), áp suất trong túi sẽ tăng lên. Lúc này ta ghi nhận được giá trị áp suất, gọi là pA.

Phần chênh lệch áp suất giữ pTop pA chính là áp suất (p) mà chúng ta cần tìm.

p = pA - pTop

Thông số áp suất từ cảm biến BMP180 xuất ra có đơn vị là Pascal. Dựa vào công thức chuyển đổi pascal -> centimet H2O, ta sẽ tính được độ sâu tại điểm đặt cảm biến.

1 pa = 0.010197162129779 cmH2O

Suy ra:

h = 0.010197162129779 * p = 0.010197162129779 * (pA - pTop)

Chuẩn bị phần cứng

Về phần điện, chúng ta cần:

  • 1 board ESP8266
  • 1 board cảm biến khí áp BMP180
  • một cáp micro USB để nạp và cấp nguồn
  • 4 sợi bus kết nối

Ngoài ra, như đã nói ở phần nguyên lý đo, chúng ta cần cái túi nhỏ, keo nến và một số dụng cụ khác. Các bạn xem trong video để biết thêm chi tiết.

Sơ đồ kết nối:

ESP8266 BMP180
3v3Vcc
GNDGND
D1SCL
D2SDA


Kết nối ESP8266 với máy tính thông qua cáp micro USB.

Coding

Chúng ta cần cài thêm thư viện “Adafruit BMP085 Library” cho Arduino.

Code siêu nhanh, siêu đơn giản.

BMP180_ESP8266_Serial.ino

  1. /*
  2. * author: lvdinh
  3. * https://xcode.vn
  4. * 2019/11/26
  5. * v0.0.1
  6. *
  7. *	BMP180 SCL <-> D1 ESP8266
  8. *	BMP180 SDA <-> D2 ESP8266
  9. */
  10.  
  11. #include <Adafruit_BMP085.h>
  12. #define rate 0.010197162129779 //pa -> cmH2O
  13.  
  14. int32_t offset = 101284;	//áp suất trên mặt nước
  15.  
  16. Adafruit_BMP085 bmp;
  17. int32_t pa;
  18.  
  19. void setup()
  20. {
  21.     Serial.begin(115200);
  22.     Serial.println("begin");
  23.     while (!bmp.begin())
  24.     {
  25.         Serial.println("Cannot start sensor!");
  26.         delay(1000);
  27.     }
  28. }
  29.  
  30. void loop()
  31. {
  32.     if (Serial.available())
  33.     {
  34.         String str = Serial.readStringUntil('\n');
  35.         if (str == "reset")
  36.         {
  37.             offset = pa;
  38.             Serial.printf("Reset: %d\n", offset);
  39.         }
  40.     }
  41.  
  42.     pa = bmp.readPressure();
  43.     float cm = (pa - offset) * rate;
  44.     Serial.printf("Pressure: %d pa, Water level: %f cm\n", pa, cm);
  45.     delay(500);
  46. }

Thử nghiệm

Trước khi thử nghiệm, ta cần kiểm tra thật kĩ túi cảm biến, tránh để nước lọt vào sẽ gây chết cảm biến.

Trong lúc nhúng cảm biến vào nước, phải cẩn thận, không lỡ tay nhúng luôn cả ESP8266 vào =))

Sau khi lấy túi cảm biến ra, phải luôn để xuôi sao cho ESP8266 cao hơn túi cảm biến. Tránh để nước chảy men theo bus kết nối tới ESP8266 gây chết board.

Kết luận và đánh giá

Như vậy mình đã hướng dẫn xong cách đo mực nước bằng cảm biến khí áp BMP180.

Đây là dự án đơn giản dạng POC (Proof Of Concept). Mục tiêu đạt được là đã chứng minh rằng phương pháp đo mực chất lỏng bằng cảm biến áp suất là hoàn toàn khả thi.

Tuy nhiên, nếu muốn áp dụng vào vận hành thực tế, chúng ta cần tìm được loại vật liệu đủ tốt để làm túi bọc cảm biến. Hoặc phải tìm được dạng housing khác tốt hơn dạng túi.

Mình đang tìm một loại cảm biến khác có thể dùng được trong môi trường công nghiệp, với hi vọng làm được tới mức sản phẩm hoàn thiện, dùng được trong thực tiễn.

Mình có một số đánh giá về ưu, nhược điểm của phương pháp này như sau:

Ưu điểm

  • cảm biến giá rẻ và sẵn có
  • đơn giản, dễ làm, dễ trúng 😛

Nhược điểm

  • đây là phương pháp tiếp xúc nên phải cẩn thận với các chất lỏng ăn mòn
  • nếu chất lòng có nồng độ không đồng đều (ví dụ: nước muối càng sâu càng có nồng độ cao), sẽ sai số

Chúc các bạn thành công!

Nhớ like, share và subcribe ủng hộ kênh Youtube xcode.vn nhé!
Xin cám ơn các bạn <3!

Các điểm có thể cải tiến

  • thêm tính năng đo nhiệt độ chất lỏng vì BMP180 có tích hợp cảm biến nhiệt độ
  • gắn pin và tích hợp kết nối không dây (RF, wifi) để đo được sâu hơn
  • thêm bộ lọc cho cảm biến

Source code và tham khảo

Code: xcode.vn|pressure-sensor
Áp suất chất lỏng

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *