Hướng dẫn sử dụng cảm biến độ ẩm điện dung với Arduino
Bạn đang có ý định trồng cây trong nhà hoặc ngoài vườn, nhưng không có thời gian để tưới và mong muốn xây dựng một hệ thống tưới tự động khi độ ẩm trong đất quá khô. Bằng việc sử dụng cảm biến độ ẩm điện dung sẽ giải quyết vấn đề này giúp cho bạn. Thông qua bài hướng dẫn các bạn sẽ nắm rõ hơn về cảm biến độ ẩm đất điện dung và nguyên lý hoạt động của cảm biến. Qua đó các bạn sẽ cùng tham gia thực hiện một dự án nhỏ để đo độ ẩm của đất.
Xem ngay: Sử dụng cảm biến độ ẩm đất (Soil Moisture Sensor) với Arduino
Để tạo động lực cho Team Arduino KIT ra nhiều bài viết chất lượng hơn, các bạn có thể ủng hộ mình bằng cách Donate qua MoMo, Ngân hàng, Paypal…Nhấn vào link bên dưới nhé.
Tổng quan về cảm biến độ ẩm điện dung
Cảm biến độ ẩm đất điện dung có khả năng hoạt động hiệu quả. Chúng dễ dàng được cắm vào đất và tạo ra tín hiệu đầu ra tương tự với độ ẩm của đất.
Cảm biến này sử dụng một IC hẹn giờ 555 để đo tốc độ sạc của một điện trở và tụ điện ảo được tạo thành bởi hai đường mạch PCB gần nhau. Điện dung của cảm biến và tốc độ sạc của nó thay đổi theo lượng nước trong môi trường.
Cảm biến được tích hợp với bộ điều chỉnh điện áp 3,3V, giúp tương thích với các MCU 3,3V và 5V. Ngoài ra, nó tiêu thụ dòng điện thấp hơn 5mA.
Lưu ý rằng cảm biến này chỉ cung cấp thông tin định tính về độ ẩm của đất. Khi đất ẩm hơn, giá trị đầu ra sẽ giảm, còn khi đất khô hơn, giá trị đầu ra sẽ tăng. Với nguồn cấp 5V, phạm vi đầu ra dao động từ 1,5V (đất ẩm) đến 3V (đất khô).
Thông số kỹ thuật
Operating Voltage | 3.3 to 5.5V |
Operating Current | < 5mA |
Output Voltage at 5V | 1.5V to 3V (approx.) |
Sensor Probe L x W (PCB) | 98 x 23mm (3.86 x 0.91″) |
Cable Length | 20cm (8″) |
Cảm biến độ ẩm đất điện dung hoạt động như thế nào?
Để hiểu về nguyên lý hoạt động của cảm biến độ ẩm đất điện dung, trước tiên bạn cần hiểu hoạt động của tụ điện trong mạch RC.
Trong một mạch RC đơn giản như thế này, khi một điện áp dương được đặt vào Vin, tụ điện (C) bắt đầu nạp điện qua điện trở (R). Theo thời gian, điện áp tụ điện tăng lên bằng điện áp đầu vào. Tại đây, các bạn có thể thấy đồ thị điện áp theo thời gian sạc của tụ.
Thời gian để tụ điện nạp đầy phụ thuộc vào giá trị của điện trở và tụ điện. Nếu bạn giữ R không đổi và thử hai giá trị điện dung (C) khác nhau, các bạn quan sát sẽ thấy rằng một tụ điện có điện dung lớn hơn cần nhiều thời gian để sạc hơn, trong khi một tụ điện có điện dung nhỏ hơn cần ít thời gian hơn.
Cảm biến độ ẩm điện dung tích hợp một IC 555 để tạo ra các sóng vuông ổn định. Nó được kết nối vào mạch RC, trong đó đầu dò đất tạo thành một tụ điện. Tín hiệu từ bộ tích hợp được biến đổi thành dạng sóng tam giác và sau đó được đưa vào bộ chỉnh lưu và tụ điện làm trơn để tạo ra một đầu ra DC ổn định.
Vì vậy, nếu đất khô, tụ điện sẽ tích điện nhanh, dẫn đến biên độ sóng tam giác lớn hơn và điện áp đầu ra cao hơn. Ngược lại, khi đất ẩm ướt, tụ điện tích điện chậm hơn, dẫn đến biên độ của sóng tam giác nhỏ hơn, từ đó tạo ra điện áp đầu ra thấp hơn.
Sơ đồ chân cảm biến độ ẩm điện dung
Cảm biến độ ẩm đất điện dung có đầu nối loại JST PH2.0 3 chân. Một đầu của cáp được cung cấp cắm vào module cảm biến, trong khi đầu còn lại là đầu nối cái 3 chân kiểu Dupont sẽ được nối vào Arduino.
- VCC: là chân cấp nguồn. Khuyến cáo nên cấp nguồn cho cảm biến từ 3,3V đến 5V.
- GND: là chốt nối đất.
- AOUT: Chân cung cấp một đầu ra điện áp tương tự tỷ lệ thuận với độ ẩm trong đất. Đầu ra có thể được đọc bằng đầu vào tương tự trên Arduino. Khi độ ẩm tăng lên, điện áp đầu ra giảm và ngược lại.
Linh kiện cần thiết cho dự án
TÊN LINH KIỆN | SỐ LƯỢNG | NƠI BÁN |
Arduino Uno R3 | 1 | Shopee | Cytron |
Cảm biến độ ẩm điện dung | 1 | Shopee | Cytron |
Dây cắm (Đực – Cái) | 10 – 20 | Shopee | Cytron |
Sơ đồ đấu nối cảm biến độ ẩm đất điện dung với Arduino
Soil Moisture Sensor (Cảm biến độ ẩm điện dung) | Arduino |
VCC | 5V |
GND | GND |
AOUT | A0 |
Code ví dụ cảm biến độ ẩm điện dung
Đoạn code dưới là một ví dụ về cách sử dụng cảm biến độ ẩm đất điện dung để đo độ ẩm của đất và hiển thị trạng thái của đất trên Serial Monitor.
Trong ví dụ này mình sẽ sử dụng các giá trị ngưỡng sau:
- < 277 quá ẩm ướt
- 277 – 380 tiêu chuẩn, không cần tưới
- > 380 quá khô, cần tưới nước
Các giá trị ngưỡng này, các bạn cần thí nghiệm để đưa ra giá trị phù hợp đối với cảm biến của bạn.
/* Change these values based on your observations */ #define wetSoil 277 // Define max value we consider soil 'wet' #define drySoil 380 // Define min value we consider soil 'dry' // Define analog input #define sensorPin A0 void setup() { Serial.begin(9600); } void loop() { // Read the Analog Input and print it int moisture = analogRead(sensorPin); Serial.print("Analog output: "); Serial.println(moisture); // Determine status of our soil if (moisture < wetSoil) { Serial.println("Status: Soil is too wet"); } else if (moisture >= wetSoil && moisture < drySoil) { Serial.println("Status: Soil moisture is perfect"); } else { Serial.println("Status: Soil is too dry - time to water!"); } Serial.println(); // Take a reading every second delay(1000); }
Sau khi mọi thứ đã hoàn thành, các bạn tiến hành nạp Code và xem kết quả bên dưới.