ماژول سطح‌سنج آب (Water Level Sensor Module)

سنسور تشخیص سطح مایع – ایده‌آل برای پروژه‌های آردوینو

ماژول سطح‌سنج آب یک سنسور ساده، مؤثر و مقرون‌به‌صرفه برای تشخیص سطح مایعات (به ویژه آب) است. این ماژول با استفاده از اصول رسانایی الکتریکی کار می‌کند و برای نظارت بر سطح آب در مخازن، تشخیص نشت آب، ساخت سیستم آبیاری هوشمند و پروژه‌های امنیتی کاربرد فراوان دارد.


ویژگی‌های اصلی ماژول

  • طراحی ساده و کاربردی: شامل یک برد الکترونیکی و یک سنسور شانه‌ای (چند الکترود) که به راحتی در آب غوطه‌ور می‌شود.

  • خروجی آنالوگ و دیجیتال: همزمان دارای خروجی آنالوگ (برای خواندن سطح دقیق‌تر) و خروجی دیجیتال (برای تشخیص آستانه مشخص).

  • قابلیت تنظیم حساسیت: دارای پتانسیومتر برای تنظیم حساسیت خروجی دیجیتال.

  • ولتاژ کاری پایین: معمولاً با ولتاژ 5V DC (مطابق با بردهای آردوینو) کار می‌کند.

  • چراغ نشانگر: LED برای نمایش وضعیت تغذیه و فعال‌شدن خروجی دیجیتال.

  • نصب آسان: اتصال سریع با کانکتور 3 پین یا ترمینال برقدار.


کاربردهای رایج

  • سیستم هشدار پر یا خالی شدن مخزن آب (منبع، پکیج، آب‌انبار)

  • کنترلر سطح آب در مخازن آکواریوم و هیدروپونیک

  • تشخیص نشت آب و هشدار سیلاب در زیرزمین، پارکینگ یا آشپزخانه

  • ساخت سیستم آبیاری هوشمند گلخانه و باغچه

  • پروژه‌های دانش‌آموزی و آموزشی الکترونیک و رباتیک


اتصال ماژول به آردوینو (پین‌آوت)

ماژول معمولاً دارای 3 پایه اصلی است:

  1. VCC (یا +) ➜ به 5V آردوینو متصل می‌شود.

  2. GND (یا -) ➜ به GND آردوینو متصل می‌شود.

  3. S (یا SIG) – خروجی آنالوگ ➜ به یکی از پایه‌های آنالوگ (مثلاً A0) آردوینو متصل می‌شود.

  4. (اختیاری) خروجی دیجیتال (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 ثانیه
}

نکات مهم و راهنمای استفاده

  1. کالیبراسیون: قبل از استفاده، سنسور را در حالات مختلف (خشک، نیمه در آب، کامل در آب) آزمایش و مقادیر آستانه را در کد تنظیم کنید.

  2. خوردگی الکترود: سنسورهای غیرعایق‌شده در طول زمان ممکن است دچار خوردگی یا اکسیداسیون شوند. برای کاربردهای طولانی‌مدت از سنسورهای عایق‌شده (با پوشش ضدخوردگی) استفاده کنید.

  3. آب خالص: آب کاملاً خالص (مقطر) رسانایی کمی دارد و ممکن است سنسور به درستی کار نکند.

  4. نویزگیری: در محیط‌های صنعتی، از کابل‌شیلددار برای کاهش نویز استفاده کنید.


خرید ماژول سطح‌سنج آب

این ماژول به همراه کابل ارتباطی و راهنمای فارسی در فروشگاه ما موجود است. برای خرید، مشاوره فنی یا دریافت نمونه کدهای بیشتر با پشتیبانی ما در تماس باشید.

سؤالات متداول:

  • آیا این سنسور برای مایعات غیرازآب هم کاربرد دارد؟

    • بله، برای هر مایع رسانای الکتریکی (مانند برخی روغن‌ها، محلول‌های نمکی) قابل استفاده است.

  • محدوده تشخیص آن چقدر است؟

    • بستگی به طول سنسور دارد. مدل‌های معمولی از 1 تا 10 سانتیمتر را پوشش می‌دهند.

  • آیا می‌توان چند سنسور را با هم استفاده کرد؟

    • بله، با اتصال هر سنسور به یک پایه آنالوگ جداگانه روی آردوینو.