ماژول سطحسنج آب (Water Level Sensor Module)
سنسور تشخیص سطح مایع – ایدهآل برای پروژههای آردوینو
ماژول سطحسنج آب یک سنسور ساده، مؤثر و مقرونبهصرفه برای تشخیص سطح مایعات (به ویژه آب) است. این ماژول با استفاده از اصول رسانایی الکتریکی کار میکند و برای نظارت بر سطح آب در مخازن، تشخیص نشت آب، ساخت سیستم آبیاری هوشمند و پروژههای امنیتی کاربرد فراوان دارد.
ویژگیهای اصلی ماژول
-
طراحی ساده و کاربردی: شامل یک برد الکترونیکی و یک سنسور شانهای (چند الکترود) که به راحتی در آب غوطهور میشود.
-
خروجی آنالوگ و دیجیتال: همزمان دارای خروجی آنالوگ (برای خواندن سطح دقیقتر) و خروجی دیجیتال (برای تشخیص آستانه مشخص).
-
قابلیت تنظیم حساسیت: دارای پتانسیومتر برای تنظیم حساسیت خروجی دیجیتال.
-
ولتاژ کاری پایین: معمولاً با ولتاژ 5V DC (مطابق با بردهای آردوینو) کار میکند.
-
چراغ نشانگر: LED برای نمایش وضعیت تغذیه و فعالشدن خروجی دیجیتال.
-
نصب آسان: اتصال سریع با کانکتور 3 پین یا ترمینال برقدار.
کاربردهای رایج
-
سیستم هشدار پر یا خالی شدن مخزن آب (منبع، پکیج، آبانبار)
-
کنترلر سطح آب در مخازن آکواریوم و هیدروپونیک
-
تشخیص نشت آب و هشدار سیلاب در زیرزمین، پارکینگ یا آشپزخانه
-
ساخت سیستم آبیاری هوشمند گلخانه و باغچه
-
پروژههای دانشآموزی و آموزشی الکترونیک و رباتیک
اتصال ماژول به آردوینو (پینآوت)
ماژول معمولاً دارای 3 پایه اصلی است:
-
VCC (یا +) ➜ به 5V آردوینو متصل میشود.
-
GND (یا -) ➜ به GND آردوینو متصل میشود.
-
S (یا SIG) – خروجی آنالوگ ➜ به یکی از پایههای آنالوگ (مثلاً A0) آردوینو متصل میشود.
-
(اختیاری) خروجی دیجیتال (DO) ➜ اگر از خروجی دیجیتال استفاده میکنید، این پایه را به یک پایه دیجیتال (مثلاً D2) وصل کنید.
کد نمونه آردوینو (خواندن مقدار آنالوگ)
// آردوینو – خواندن سطح آب با سنسور آنالوگ
// اتصال: پایه سیگنال (S) سنسور به پایه A0 آردوینو
const int waterSensorPin = A0; // پایه اتصال سنسور
int waterLevelValue = 0; // متغیر ذخیره مقدار خوانده شده
void setup() {
Serial.begin(9600); // شروع ارتباط سریال برای نمایش نتایج
Serial.println(“Water Level Sensor Test Start…”);
}
void loop() {
// خواندن مقدار آنالوگ از سنسور (مقدار بین 0 تا 1023)
waterLevelValue = analogRead(waterSensorPin);
// نمایش مقدار خام در Serial Monitor
Serial.print(“Sensor Value: “);
Serial.print(waterLevelValue);
// تفسیر مقدار و نمایش سطح تقریبی
if(waterLevelValue == 0) {
Serial.println(” – سنسور در هوا است (خشک)”);
}
else if(waterLevelValue > 0 && waterLevelValue <= 300) {
Serial.println(” – سطح آب کم”);
}
else if(waterLevelValue > 300 && waterLevelValue <= 600) {
Serial.println(” – سطح آب متوسط”);
}
else if(waterLevelValue > 600) {
Serial.println(” – سطح آب زیاد”);
}
delay(1000); // تاخیر 1 ثانیه بین خواندنها
}
کد نمونه آردوینو (استفاده از خروجی دیجیتال + آنالوگ)
// آردوینو – استفاده همزمان از خروجی دیجیتال و آنالوگ سنسور
// اتصال: پایه آنالوگ سنسور به A0، پایه دیجیتال سنسور به D2
const int analogSensorPin = A0; // پایه آنالوگ
const int digitalSensorPin = 2; // پایه دیجیتال
int analogValue = 0; // مقدار آنالوگ
bool digitalState = false; // وضعیت دیجیتال
void setup() {
Serial.begin(9600);
pinMode(digitalSensorPin, INPUT); // تنظیم پایه دیجیتال به عنوان ورودی
Serial.println(“Water Sensor – Analog & Digital Test”);
}
void loop() {
// خواندن مقدار آنالوگ
analogValue = analogRead(analogSensorPin);
// خواندن وضعیت دیجیتال (LOW = آب تشخیص داده شده، HIGH = آب تشخیص داده نشده)
digitalState = digitalRead(digitalSensorPin);
// نمایش اطلاعات
Serial.print(“Analog Value: “);
Serial.print(analogValue);
Serial.print(” | Digital State: “);
if(digitalState == LOW) {
Serial.println(“WATER DETECTED! (سطح آب به آستانه رسیده)”);
// در اینجا میتوانید هشدار بدهید یا رلهای را فعال کنید
}
else {
Serial.println(“No Water (سطح آب پایین است)”);
}
// نمایش سطح به صورت گرافیکی ساده در Serial Monitor
int waterLevelBar = map(analogValue, 0, 1023, 0, 50); // تبدیل به مقیاس 0-50
Serial.print(“Level: [“);
for(int i = 0; i < 50; i++) {
if(i < waterLevelBar) {
Serial.print(“█”); // کاراکتر بلوک برای نمایش سطح
}
else {
Serial.print(” “);
}
}
Serial.println(“]”);
delay(2000); // تاخیر 2 ثانیه
}
کد پیشرفتهتر (با هشدار و کنترل رله)
// آردوینو – سیستم هشدار سطح آب با کنترل رله
// اتصال: سنسور به A0، رله به پایه D8
const int waterSensorPin = A0;
const int relayPin = 8; // پایه کنترل رله
const int buzzerPin = 9; // پایه بوزر (اختیاری)
const int greenLED = 10; // LED سبز (سطح نرمال)
const int redLED = 11; // LED قرمز (هشدار)
// آستانههای سطح آب (مقادیر را بر اساس آزمایش تنظیم کنید)
const int LOW_THRESHOLD = 200; // زیر این مقدار = کمآبی
const int HIGH_THRESHOLD = 800; // بالای این مقدار = پر شدن
void setup() {
Serial.begin(9600);
pinMode(relayPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
digitalWrite(relayPin, HIGH); // در ابتدا رله خاموش (با توجه به نوع رله ممکن است معکوس باشد)
digitalWrite(buzzerPin, LOW);
Serial.println(“Water Level Control System Started”);
}
void loop() {
int waterLevel = analogRead(waterSensorPin);
Serial.print(“Water Level: “);
Serial.println(waterLevel);
// کنترل بر اساس سطح آب
if(waterLevel < LOW_THRESHOLD) {
// حالت کمآبی: روشن کردن پمپ (رله)
digitalWrite(relayPin, LOW); // فعال کردن رله (پمپ روشن)
digitalWrite(greenLED, LOW);
digitalWrite(redLED, HIGH); // نور قرمز = هشدار
tone(buzzerPin, 1000, 500); // بوزر (اختیاری)
Serial.println(“STATUS: Low Water – PUMP ON”);
}
else if(waterLevel > HIGH_THRESHOLD) {
// حالت پر بودن: خاموش کردن پمپ
digitalWrite(relayPin, HIGH); // غیرفعال کردن رله (پمپ خاموش)
digitalWrite(greenLED, LOW);
digitalWrite(redLED, HIGH); // نور قرمز = هشدار پر شدن
Serial.println(“STATUS: Tank Full – PUMP OFF”);
}
else {
// حالت نرمال
digitalWrite(relayPin, HIGH); // پمپ خاموش
digitalWrite(greenLED, HIGH); // نور سبز = وضعیت نرمال
digitalWrite(redLED, LOW);
Serial.println(“STATUS: Normal”);
}
delay(1000); // بررسی هر 1 ثانیه
}
نکات مهم و راهنمای استفاده
-
کالیبراسیون: قبل از استفاده، سنسور را در حالات مختلف (خشک، نیمه در آب، کامل در آب) آزمایش و مقادیر آستانه را در کد تنظیم کنید.
-
خوردگی الکترود: سنسورهای غیرعایقشده در طول زمان ممکن است دچار خوردگی یا اکسیداسیون شوند. برای کاربردهای طولانیمدت از سنسورهای عایقشده (با پوشش ضدخوردگی) استفاده کنید.
-
آب خالص: آب کاملاً خالص (مقطر) رسانایی کمی دارد و ممکن است سنسور به درستی کار نکند.
-
نویزگیری: در محیطهای صنعتی، از کابلشیلددار برای کاهش نویز استفاده کنید.
خرید ماژول سطحسنج آب
این ماژول به همراه کابل ارتباطی و راهنمای فارسی در فروشگاه ما موجود است. برای خرید، مشاوره فنی یا دریافت نمونه کدهای بیشتر با پشتیبانی ما در تماس باشید.
سؤالات متداول:
-
آیا این سنسور برای مایعات غیرازآب هم کاربرد دارد؟
-
محدوده تشخیص آن چقدر است؟
-
آیا میتوان چند سنسور را با هم استفاده کرد؟