در این آموزش قصد داریم شما را با نحوه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو آشنا کنیم. البته در این مطلب ابتدا درباره این سنسور اطلاعاتی به دست میآورید و سپس نحوه استفاده از آن را خواهید آموخت؛ پس با ما و بلاگ بهنام رباتیک همراه باشید.
لوازم مورد نیاز برای پروژه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو
برد آردوینو Uno
ماژول تشخیص سطح آب
ماژول تشخیص سطح آب YwRobot
سنسور تشخیص سطح مایع Waveshare
سیم جامپر
بازر
سنسور تشخیص سطح آب چیست؟
در صنایعی که با مایعات و آب سروکار دارند، معمولاً از سنسور تشخیص سطح آب بهره میبرند تا از سرریز شدن مایع از درون تانکر جلوگیری کنند. در خانهها نیز میتوان از این سنسور برای بررسی سطح آب در آکواریومها بهره برد. هدف از به کارگیری این سنسور، تشخیص میزان بالاآمدگی آب به طور لحظهای است تا در صورت نیاز، اقدامات لازم صورت بگیرد.
روشهای زیادی برای بررسی سطح مایعات وجود دارد. برخی از سنسورها عمل محاسبه را با توجه به فشار وارد آمده توسط جاذبه خاص مایع و فاصله عمودی نسبت به سطح انجام میدهند و برخی دیگر نیز امواج اولتراسونیک را از مبدلی که خودش امواج منعکس شده را تشخیص داده و شناسایی میکند را از بین میبرند تا عمق مایع را محاسبه نماید. در این میان، سنسوری که ما در این پروژه به کار بردهایم، با آردوینو سازگاری کامل دارد و با توجه محاسبات مقاومتی کار میکند.
سنسور تشخیص سطح آب چگونه کار میکند؟
این سنسور که یکی از پرکاربردترین ماژولهای تشخیص سطح آب است، بر اساس تغییرات مقاومتی فعالیت میکند. بر روی این ماژول، خطوط موازی رسانایی قرار گرفتهاند که اتصال به زمین دارند و در واقع مسیر عبور جریان برق هستند. آب رسانای خوبی است به همین دلیل وقتی این خطوط در آب قرار دارند، مدار اتصال کوتاه میکند و مقاومت ماژول کاهش مییابد.
با ثابت کردن این ماژول در ظرف مایعات، مقاومت متغیر با توجه به سطح مایع، روی یک عدد ثابت خواهد شد و همزمانی که سطح مایع بیشتر میشود، مقاومت مس متصل کم خواهد شد و به همین خاطر جریان بیشتری از مدار عبور میکند. به عبارت دیگر، سنسور به عنوان یک مقاومت فعالیت خواهد کرد. با این روش، سنسور میتواند سطح مایع را اندازهگیری نماید.
خروجی سنسور به صورت ولتاژ آنالوگ است؛ یعنی هر چه سطح مایع بیشتر شود، ولتاژ خروجی بیشتر خواهد شد.
آشنایی با پینهای ماژول قبل از آغاز پروژه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو
این ماژول سه پین دارد:
- +: پین منبع تغذیه 2.5 ولت
- –: اتصال به زمین
- S: خروجی آنالوگ
شما میتوانید پینهای این ماژول را در تصویر زیر ببینید.
سیمکشی مدار پروژه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو
برای اینکه از این سنسور استفاده کنید، نیازی به هیچ کتابخانه خاصی نخواهید داشت زیرا فقط کافی است مقدار آنالوگ پین خروجی را بخوانید و بر اساس آن، سطح مایع را شناسایی نمایید.
شما میتوانید سیمکشی مدار این پروژه را طبق تصویر زیر انجام دهید.
کدنویسی پروژه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو
کدهای داده شده را از طریق نرمافزار Arduino IDE در برد آردوینو آپلود و پنجره سریال مانیتور را اجرا کنید. سپس سنسور را در آب قرار دهید تا نتایج را ببینید.
/* Water level sensor
* by Hanie Kiani
* https://behnamrobotic.com/learn/
*/
const int analogInPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(analogInPin);
Serial.print("Sensor = " );
Serial.print(sensorValue*100/1024);
Serial.println("%");
delay(1000);
}
استفاده از سنسور تشخیص سطح آب به عنوان تشخیصدهنده باران
شما میتوانید سنسور تشخیص سطح آب به همراه یک بازر را به عنوان تشخیصدهنده باران به کار ببرید. برای اینکه ببینید باران میبارد یا خیر، سنسور را به صورت افقی بگذارید تا قطرات باران روی آن بیفتند و مقدار پین S افزایش یابد.
زمانی که سنسور مرطوب شد، بازر هر ثانیه صدای بیپ خواهد داد. در نهایت وقتی سنسور کاملاً خیس شد، بازر با صدایی بلند و ممتد، هشدار میدهد.
سیمکشی پروژه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو برای شناسایی باران
کدنویسی پروژه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو برای شناسایی باران
برای اینکه با این سنسور سطح آب را اندازهگیری کنید، کدهایی که در ادامه دادهایم را در نرمافزار Arduino IDE و برد آردوینو Uno آپلود نمایید.
توضیحات کد پروژه راه اندازی سنسور تشخیص سطح آب و مایعات با آردوینو برای شناسایی باران
تابع map() رنج اندازهگیری 0 تا 1024 سنسور را به سه بخش تقسیم میکند.
/*
* Rain Detector with Water level sensor
* by Hanie kiani
* https://behnamrobotic.com/category/arduino/arduino-project/
*/
const int sensorMin = 0; // sensor minimum
const int sensorMax = 1024; // sensor maximum
const int buzzer = 9;
void setup() {
Serial.begin(9600);
pinMode(buzzer, OUTPUT);
}
void loop() {
int sensorReading = analogRead(A0);
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
// range value:
switch (range) {
case 0: // Sensor is wet
Serial.println("ٌWet!");
tone(buzzer, 5000);
break;
case 1: // Sensor getting wet
Serial.println(" Warning");
tone(buzzer, 1000 , 5);
break;
case 2: // Sensor dry
Serial.println("Dry");
noTone(buzzer);
break;
}
delay(10); // delay between reads
}