Mạch Điện Lý Thú

Đo mức nước, mức nhiên liệu đang có trong bồn, bể chứa sử dụng cảm biến siêu âm SR04 và Arduino

Nếu bạn có 1 bồn chứa nước hoặc nhiên liệu đóng kín, bạn sẽ gặp phải vấn đề giống như tôi: Làm sao để biết lượng nước (nhiện liệu) đang có trong bồn mà không cần mở bồn ra kiểm tra?

Đương nhiên là lắp đồng hồ đo rồi! Dạo quanh chợ 1 vòng thì than ôi, đủ các loại hàng từ cơ đến điện tử, giá cả đắt đỏ và hiệu quả chưa được kiểm chứng. Vậy là Quyết Định tự làm 1 bộ đo cho riêng mình – Tiêu chí: Ngon – Bổ – Rẻ.

Bộ đo này sử dụng các module siêu âm có sẵn trên thị trường. Các bạn có thể sử dụng Module siêu âm chống nước  hoặc Module siêu âm KHÔNG chống nước . Code hoạt động trên cả 2 loại và không cần chỉnh sửa gì cả, ráp đúng chân là chạy.

Module JSN-SR04T – Chống nước
Module HC-SR04 – Không chống nước

Trong bài viết này, mình sẽ lập trình bằng để đo mức (level) nước, nhiên liệu:

  • Đơn vị đo “cm”
  • Hiển thị đồng thời qua màn LCD 16×2 dưới dạng thanh báo “%” còn lại và Serial qua máy tính dưới dạng “cm” và có cảnh báo.
  • Hiển thị LCD 16×2 dùng cách mắc trực tiếp – Hơi tốn chân GPIO của board Arduino nhưng đỡ tiền mua module I2C (Nếu không muốn dùng cách này có thể tham khảo bài sau để sử dụng cách module I2C cho tiết kiệm chân)
  • Đo môi trường ngoài không khí. Trong điều kiện khắc nghiệt, độ ẩm cao.

NGUYÊN LÝ HOẠT ĐỘNG

Cảm biến khoảng cách siêu âm SR04 được sử dụng rất phổ biến để xác định khoảng cách vì RẺ và CHÍNH XÁC. Cảm biến sử dụng sóng siêu âm và có thể trong khoảng từ 2 -> 300 cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình.

  • Cảm biến SR04 có 4 chân là: Vcc, Trig, Echo, GND.
  • Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds – us) từ chân Trig. Sau đó, cảm biến sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại được sóng phản xạ ở pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biển và quay trở lại. 

Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (106 / (340*100)). Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.

Các bước tính toán như sau:

  • Đặt chân TRIG của module lên mức Cao (5V) trong ít nhất 10 μs (microseconds)
  • Sau đó module siêu âm ghi lại thời gian và gửi ra sóng âm tần số 40Khz
  • Sóng siêu âm truyền xuống bề mặt chất lỏng trong bể và phản xạ lại
  • Sóng phản xạ sau đó truyền ngược về đầu dò
  • Module siêu âm nhận được sóng phản xạ và đánh dấu thời gian nhận được sóng phản hồi
  • Cuối cùng, module siêu âm đưa chân ECHO lên mức cao trong khoảng thời gian (microseconds ) phản hồi sóng âm (Gửi đi – nhận về) và tính toán ra khoảng cách.

Kết quả trên chân ECHO có thể được chuyển đổi khá đơn giản về: 58 μs/cm

Vì vậy, nếu chân ECHO lên mức cao trong thời gian 5800 μs (5.8 ms) , thì chúng ta tính được khoảng cách giữa cảm biến và mức chất lỏng trong bể là:

5800μs / 58μs/cm = 100cm = 1m

Mô phỏng bồn chứa và cách đo

VẬT TƯ CẦN THIẾT

– 01 Board Arduino loại bất kỳ

Ở bài này dùng Arduino Uno

-01 module JSN-SR04T hoăc HC-SR04

Module JSN-SR04T
Đầu dò siêu âm chống nước của module JSN-SR04T

Module siêu âm chống nước JSN-SR04T rất tiện dụng cho các ứng dụng ngoài trời như cảm biến đỗ xe; đo khoảng cách ngoài trời; bể cá, bể nước, đo mức nhiên liệu xăng, dầu,…

Bảng thông số của module JSN-SR04T mình trích ra từ tài liệu nhà sản xuất: Download

Giải thích:

Điện áp hoạt độngDC 3 – 5.5V
Dòng tiêu thụKhoảng 8mA
Tần số đầu dò40KHz
Dải đo20cm – 600cm
Sai số+- 1cm
Độ phân giải1mm
Góc mở đầu dò75 độ

Chú ý: Vì cảm biến JSN-SR04T có góc mở rất lớn ( >= 75 độ) nên KHÔNG phù hợp đo khoảng cách trong không gian chật hẹp. Chỉ nên dùng trong không gian mở như ngoài trời hoặc bể chứa kích thước lớn- không vật cản.

Nếu đo trong không gian chật hẹp thì sai số rất lớn do sóng phản xạ lại bị va đập vào vật cản hoặc thành bể – bình chứa.

Ảnh dưới mô tả góc quét và phản xạ của 1 loại cảm biến siêu âm trên thị trường, tùy loại sẽ có góc khác nhau:

Góc quét và phản xạ của 1 loại cảm biến siêu âm

-01 màn hình LCD 16×2

LCD 16×2

-01 biến trở 10K để chỉnh độ tương phản màn hình

Biến trở

SƠ ĐỒ NGUYÊN LÝ

Sơ đồ chân kết nối:

MODULE PINARDUINO PIN
Trigger pin (Module SR04)Pin 8
Echo Pin (Module SR04)Pin 9
RS Pin (LCD)Pin A4
EN Pin (LCD)Pin A5
D4 Pin (LCD) Pin 5
D5 Pin (LCD) Pin 4
D6 Pin (LCD) Pin 3
D7 Pin (LCD) Pin 2
Những chân còn lại của LCDNối theo sơ đồ (hĩnh vẽ)
LED xanhPin 6
LED đỏPin 7
5V5V
GNDGND

THƯ VIỆN CHO CẢM BIẾN SIÊU ÂM

Hướng dẫn: Tải thư viện về và copy vào thư mục library của Arduino trong Documents

CODE

  • Code Arduino sử dụng thư viện LiquidCrystal, hiển thị đồng thời LCD dạng “%” và Serial đợn vị đo “cm”, môi trường đo trong không khí, có điều chỉnh mức cảnh báo “dưới ngưỡng” hoặc “vượt ngưỡng” cho phép, tín hiệu cảnh báo “dưới ngưỡng” hoặc “vượt ngưỡng” đưa ra 2 đèn LED (dễ dàng thay bằng còi hú, relay.. tùy bạn chỉnh) và cảnh báo cả trên Serial: Download here
  • Điều chỉnh “%” lượng nước hiển thị trên LCD thông qua 2 dòng này trong code (Các bạn tự điều chỉnh phù hợp với thực tế bể chứa nhà bạn – Nên tính toán sao cho vẫn còn dư 10cm so với ngưỡng cảnh báo để dự phòng khẩn cấp):

const int tankEmptyDepth = 200; // Khoảng cách từ cảm biến đến mặt nước 200cm- Bể hết-> Hiển thị 0% (Tối đa 600cm – Khuyến nghị dùng trong 250cm)
const int tankFullDepth = 25; // Khoảng cách từ cảm biến đến mặt nước còn 25cm- Bể đầy-> Hiển thị 100% (Tối thiểu 20cm)

  • Điều chỉnh thông số cảnh báo “dưới ngưỡng” hoặc “vượt ngưỡng” ở 2 dòng dưới đây (Các bạn tự điều chỉnh phù hợp với thực tế bể chứa nhà bạn – Nên tính toán sao cho vẫn còn dư 10cm so với ngưỡng cảnh báo để dự phòng khẩn cấp ) :

int maximumRange = 190; // Khoảng cách từ cảm biến đến mặt nước 190cm- Bể sắp hết-> cảnh báo (Tối đa 600cm – Khuyến nghị dùng tối đa trong khoảng 250-450cm)
int minimumRange = 30; // Khoảng cách từ cảm biến đến mặt nước còn 30cm- Bể sắp đầy-> cảnh báo (Tối thiểu 20cm)

  • Chân kết nối 2 LED cảnh báo: Pin 6 và Pin 7 của Arduino nối với Anot (+) của mỗi LED (Có thể nối Loa báo động hoặc Relay vào 2 chân này thay cho LED) :
define G_LED 6 // Onboard Green LED – Pin 6
define R_LED 7 // Onboard Red LED – Pin 7

TEST

Mạch hoạt động khá tốt, khoảng cách đo tối thiểu 20cm và tối đa 6m (khuyến cáo đo tối đa trong khoảng 2.5 – 4m).

  • Nếu muốn đó chính xác hơn và dùng trong không gian nhỏ, chật hẹp thì nên dùng module HC-SR04
  • Nếu muốn đo trong không gian rộng rãi + yêu cầu chống nước, đo dưới nước, đo trong môi trường khắc nghiệt thì nên dùng module JSC-SR04T

Nguồn: scottiestech.info

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 *