- Thành phần bắt buộc
- Cảm biến lưu lượng nước YFS201
- Sơ đồ mạch
- Mã cảm biến dòng nước Arduino
- Cảm biến lưu lượng nước Arduino hoạt động
Nếu bạn đã từng đến thăm các công ty sản xuất quy mô lớn, điều đầu tiên bạn sẽ nhận thấy là tất cả đều được tự động hóa. Các ngành công nghiệp nước giải khát và công nghiệp hóa chất phải liên tục đo lường và định lượng chất lỏng mà họ đang xử lý trong quá trình tự động hóa này và cảm biến phổ biến nhất được sử dụng để đo lưu lượng của chất lỏng là Cảm biến dòng chảy. Bằng cách sử dụng cảm biến lưu lượng với bộ vi điều khiển như Arduino, chúng ta có thể tính toán tốc độ dòng chảy và kiểm tra thể tích chất lỏng đã đi qua đường ống và kiểm soát nó theo yêu cầu. Ngoài các ngành công nghiệp sản xuất, cảm biến lưu lượng cũng có thể được tìm thấy trong lĩnh vực nông nghiệp, chế biến thực phẩm, quản lý nước, công nghiệp khai thác, tái chế nước, máy pha cà phê, v.v. Hơn nữa, cảm biến lưu lượng nước sẽ là một bổ sung tốt cho các dự án như Máy lọc nước tự động và Hệ thống tưới thông minh, nơi chúng ta cần theo dõi và kiểm soát dòng chảy của chất lỏng.
Trong dự án này, chúng tôi sẽ xây dựng một cảm biến lưu lượng nước bằng Arduino. Chúng tôi sẽ giao diện cảm biến lưu lượng nước với Arduino và LCD, và lập trình nó để hiển thị khối lượng nước đã đi qua van. Đối với dự án cụ thể này, chúng tôi sẽ sử dụng cảm biến lưu lượng nước YF-S201, sử dụng hiệu ứng hội trường để cảm nhận tốc độ dòng chảy của chất lỏng.
Thành phần bắt buộc
- Cảm biến lưu lượng nước
- Arduino UNO
- LCD (16x2)
- Đầu nối với luồng nội bộ
- Kết nối dây
- Ống
Cảm biến lưu lượng nước YFS201
Cảm biến có 3 dây ĐỎ, VÀNG, ĐEN như hình bên dưới. Dây màu đỏ được sử dụng để cung cấp điện áp trong khoảng từ 5V đến 18V và dây màu đen được kết nối với GND. Dây màu vàng được sử dụng cho đầu ra (xung), có thể được đọc bởi MCU. Cảm biến lưu lượng nước bao gồm một cảm biến chong chóng để đo lượng chất lỏng đã đi qua nó.
Hoạt động của cảm biến lưu lượng nước YFS201 rất đơn giản để hiểu. Cảm biến lưu lượng nước hoạt động dựa trên nguyên lý hiệu ứng sảnh. Hiệu ứng Hall là sự tạo ra hiệu điện thế trên một vật dẫn điện khi đặt một từ trường theo hướng vuông góc với hướng của dòng điện. Cảm biến lưu lượng nước được tích hợp với cảm biến hiệu ứng từ trường, tạo ra xung điện với mỗi vòng quay. Thiết kế của nó theo cách mà cảm biến hiệu ứng hội trường được niêm phong khỏi nước và cho phép cảm biến luôn an toàn và khô ráo.
Hình ảnh của riêng mô-đun cảm biến YFS201 được hiển thị bên dưới.
Để kết nối với đường ống và cảm biến lưu lượng nước, tôi đã sử dụng hai đầu nối có ren cái như hình bên dưới.
Theo Thông số kỹ thuật của YFS201, dòng điện tối đa mà nó tạo ra ở 5V là 15mA và tốc độ dòng làm việc là 1 đến 30 lít / phút. Khi chất lỏng chảy qua cảm biến, nó sẽ tiếp xúc với cánh tản nhiệt của bánh tua bin, cánh tản nhiệt này được đặt trên đường đi của chất lỏng đang chảy. Trục của bánh tuabin được kết nối với một cảm biến hiệu ứng Hall. Do đó, bất cứ khi nào nước chảy qua van, nó sẽ tạo ra xung động. Bây giờ, tất cả những gì chúng ta phải làm là đo thời gian cho điểm cộng hoặc đếm số xung trong 1 giây và sau đó tính tốc độ dòng chảy theo lít trên giờ (L / Hr) và sau đó sử dụng công thức chuyển đổi đơn giản để tìm thể tích của nước đã đi qua nó. Để đo các xung, chúng ta sẽ sử dụng Arduino UNO. Hình dưới đây cho bạn thấy sơ đồ chân của cảm biến lưu lượng nước.
Sơ đồ mạch
Các dòng nước sơ đồ mạch cảm biến được hiển thị bên dưới giao diện một bộ cảm biến dòng chảy và LCD (16x2) với Arduino. Nếu bạn chưa quen với Arduino và LCD, bạn có thể cân nhắc đọc Bài viết về Giao diện Arduino và LCD này.
Kết nối của cảm biến lưu lượng nước và màn hình LCD (16x2) với Arduino được đưa ra dưới đây ở định dạng bảng. Lưu ý rằng nồi được kết nối giữa 5V và GND và chân 2 của nồi được kết nối với chân V0 của màn hình LCD.
S.NO |
Chân cảm biến lưu lượng nước |
Ghim Arduino |
1 |
Dây điện màu đỏ |
5V |
2 |
Đen |
GND |
3 |
Màu vàng |
A0 |
S. không |
LCD |
Arduino |
1 |
Vss |
GND (đường ray nối đất của breadboard) |
2 |
VDD |
5V (Đường ray dương của bảng mạch) |
3 |
Để kết nối với V0, hãy kiểm tra lưu ý ở trên |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
số 8 |
D6 đến D3 |
3 đến 5 |
Tôi đã sử dụng breadboard và sau khi kết nối được thực hiện theo sơ đồ mạch được hiển thị ở trên, thiết lập thử nghiệm của tôi trông giống như thế này.
Mã cảm biến dòng nước Arduino
Mã Arduino của cảm biến lưu lượng nước hoàn chỉnh được đưa ra ở cuối trang. Giải thích về mã như sau.
Chúng tôi đang sử dụng tệp tiêu đề của màn hình LCD, điều này giúp giảm bớt giao diện giữa màn hình LCD với Arduino và các chân 12,11,5,4,3,9 được phân bổ để truyền dữ liệu giữa LCD và Arduino. Chân đầu ra của cảm biến được kết nối với chân 2 của Arduino UNO.
dễ bay hơi int flow_frequency; // Đo xung cảm biến lưu lượng // Tính toán lít / giờ float vol = 0.0, l_minute; không dấu char flowsensor = 2; // Đầu vào cảm biến dài currentTime không dấu; cloopTime dài không dấu; #include
Hàm này là một quy trình phục vụ ngắt và nó sẽ được gọi bất cứ khi nào có tín hiệu ngắt tại chân 2 của Arduino UNO. Đối với mỗi tín hiệu ngắt, số lượng flow_frequency biến sẽ tăng lên 1. Để biết thêm chi tiết về các ngắt và hoạt động của chúng, bạn có thể đọc bài viết này về ngắt Arduino.
void flow () // Hàm ngắt { flow_frequency ++; }
Trong thiết lập void, chúng tôi nói với MCU rằng chân 2 của Arduino UNO được sử dụng làm ĐẦU VÀO bằng cách đưa ra lệnh pinMode (pin, OUTPUT). Bằng cách sử dụng lệnh đính kèm, bất cứ khi nào có tín hiệu tăng lên ở chân 2, hàm luồng sẽ được gọi. Điều này làm tăng số lượng trong biến flow_frequency lên 1. Thời gian hiện tại và cloopTime được sử dụng để mã chạy sau mỗi 1 giây.
void setup () { pinMode (flowsensor, INPUT); digitalWrite (cảm biến chảy, CAO); Serial.begin (9600); lcd.begin (16, 2); AttachInterrupt (digitalPinToInterrupt (cảm biến dòng chảy), dòng chảy, RISING); // Thiết lập ngắt lcd.clear (); lcd.setCursor (0,0); lcd.print ("Đồng hồ đo lưu lượng nước"); lcd.setCursor (0,1); lcd.print ("Thông báo Mạch"); currentTime = millis (); cloopTime = currentTime; }
Hàm if đảm bảo rằng cứ một giây mã bên trong nó chạy. Bằng cách này, chúng ta có thể đếm số tần số do cảm biến lưu lượng nước tạo ra trong một giây. Đặc điểm xung tốc độ dòng chảy từ biểu dữ liệu được cho rằng tần số là 7,5 nhân với tốc độ dòng chảy. Vì vậy, tốc độ dòng chảy là tần số / 7,5. Sau khi tìm được tốc độ dòng chảy tính bằng lít / phút, hãy chia nó cho 60 để chuyển nó thành lít / giây. Giá trị này được thêm vào biến vol cứ một giây.
void loop () { currentTime = millis (); // Cứ sau mỗi giây, tính toán và in ra lít / giờ if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Cập nhật cloopTime if (flow_frequency! = 0) { // Tần số xung (Hz) = 7,5Q, Q là tốc độ dòng tính bằng L / phút. l_minute = (flow_frequency / 7.5); // (Tần số xung x 60 phút) / 7.5Q = lưu lượng tính bằng L / giờ lcd.clear (); lcd.setCursor (0,0); lcd.print ("Tỷ lệ:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("Tập:"); lcd.print (vol); lcd.print ("L"); flow_frequency = 0; // Đặt lại Counter Serial.print (l_minute, DEC); // In ra lít / giờ Serial.println ("L / Sec"); }
Chức năng khác hoạt động khi không có đầu ra từ cảm biến lưu lượng nước trong khoảng thời gian nhất định.
khác { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Tỷ lệ:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Tập:"); lcd.print (vol); lcd.print ("L"); }
Cảm biến lưu lượng nước Arduino hoạt động
Trong dự án của chúng tôi, chúng tôi đã kết nối cảm biến lưu lượng nước với một đường ống. Nếu van đầu ra của đường ống bị đóng, đầu ra của cảm biến lưu lượng nước bằng 0 (Không có xung). Sẽ không có tín hiệu ngắt nào được nhìn thấy ở chân 2 của Arduino và số lượng tần số dòng chảy sẽ bằng không. Trong điều kiện này, mã được viết bên trong vòng lặp khác sẽ hoạt động.
Nếu van đầu ra của đường ống được mở. Nước chảy qua cảm biến, làm quay bánh xe bên trong cảm biến. Trong điều kiện này, chúng ta có thể quan sát các xung, được tạo ra từ cảm biến. Các xung này sẽ hoạt động như một tín hiệu ngắt đến Arduino UNO. Đối với mọi tín hiệu ngắt (cạnh tăng), số lượng biến tần số dòng chảy sẽ được tăng lên một. Thời gian hiện tại và biến cloopTIme đảm bảo rằng cứ một giây, giá trị của flow_frequency được lấy để tính tốc độ dòng chảy và khối lượng. Sau khi tính toán kết thúc, biến flow_frequency được đặt thành 0 và toàn bộ quy trình được bắt đầu lại từ đầu.
Hoạt động hoàn chỉnh cũng có thể được tìm thấy trong video được liên kết ở cuối trang này. Hy vọng bạn thích hướng dẫn và thưởng thức một cái gì đó hữu ích, nếu bạn có bất kỳ vấn đề nào, vui lòng để lại chúng trong phần bình luận hoặc sử dụng diễn đàn của chúng tôi cho các câu hỏi kỹ thuật khác.