آردوینو پروژه های آردوینو

YF-S201 سنسور جریان آب آردوینو بخش اول

سنسور اندازه گری جریان آب yf-s201 همراه با آردوینو arduino-بخش اول
نوشته شده توسط علیرضا قربانی

مدیریت موثر آب، شامل تهیه‌ی آب با توجه به نیاز واقعی، و در نتیجه ی آن، سنجش آب، گامی بسیار مهم و اساسی در سیستم های مدیریت آب است. روش های بسیاری برای اندازه گیری جریان آب به علاوه انواع کنتورهای آب برای سنجش حجم جریان آب در خط لوله‌ها وجود دارد، اما همه ی اینها بیش از حد هزینه بر هستند. این مقاله ایده هایی را برای طراحی و توسعه ی کنتور های آبِ  خودکار کم هزینه؛ با کمک حسگر های جریان آب که به سادگی در دسترس هستند و ارزان قیمت هستند؛ در میان میگذارد. در ادامه‌ی آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.

 


سنسور جریان آب اثر هال YF-S201


اندازه گیری دقیق جریان آب ، یک گام ضروری از هر دو نقطه نظر شرایط اقتصادی و کیفی است. کنتور‌ها به عنوان دستگاه‌هایی عالی برای سنجش جریان آب، ثابت شده هستند؛ و اکنون بسیار ساده است تا یک سامانه‌ی مدیریت آب با استفاده از حسگر جریان آب  YF-S201 بسازیم. YF-S201 در خط عبوری آب قرار می‌گیرد و دارای یک حسگر چرخ دنده به منظور اندازه‌گیری میزان‌ آبی است که از درون آن عبور می‌کند. درون YF-S201  یک عدد سنسور مغناطیسی یکپارچه‌ی اثر هال وجود دارد که با  هر چرخش (‌دور ) یک پالس الکتریکی خارج می‌کند.سنسور جریان آب اثر هال YF-S201 یک سنسور الکترونیکی است که برای اندازه‌گیری جریان آب در سیستم‌ها و دستگاه‌های مختلف استفاده می‌شود. این سنسور با تکنولوژی اثر هال (Hall effect) کار می‌کند. اثر هال، پدیده‌ای است که در مواد مغناطیسی وقوع می‌کند و با اعمال میدان مغناطیسی، بارهای الکتریکی در جهت عمود بر جهت جریان و با اندازه‌ای برابر با جریان ایجاد می‌شوند. عملکرد اصلی این سنسور بر اساس اندازه‌گیری تعداد اندازه‌گیری‌های اثر هال در هنگام عبور آب از داخل سنسور است. با توجه به تعداد اندازه‌گیری‌ها در یک بازه زمانی مشخص، می‌توان سرعت جریان آب را محاسبه کرد. همچنین، با در نظر گرفتن مساحت عرضه‌ای سنسور، میزان حجم آب عبوری نیز محاسبه می‌شود.

سنسور YF-S201 از ابزارهای پرکاربرد در سیستم‌های کنترل و اندازه‌گیری جریان آب در مصارف مختلف مانند:

  • اندازه‌گیری جریان آب در سیستم‌های آبیاری
  • اندازه‌گیری مصرف آب در سیستم‌های تهویه مطبوع
  • کنترل و اندازه‌گیری مصرف آب در ماشین‌های شستشو
  • اندازه‌گیری میزان مصرف آب در خانه‌ها و ساختمان‌ها

بررسی پایه های سنسور YF-S201


سنسور جریان آب yf-s201 اثر هال ، دارای سه سیم است :

  •  قرمز / سیم تعذیه سنسور  (VCC ) . می‌توان آن را به ۵ الی ۲۴ ولت DC  متصل کرد.
  • مشکی / GND
  • زرد / خروحی سنسور (Pulse putput)

توسط شمارش پالس از خروجی حسگر، میتوانیم به آسانی، نرخ جریان آب را با استفاده یک فرمول تبدیل مناسب محاسبه کنیم.(در واحد لیتر بر ساعت L/hr ).

 

 

yf-s201

yf-s201

 

سنسور جریان آب YF-S201

سنسور جریان آب YF-S201

 


مشخصات کلی سنسور جریان آب YF S201


  • اندازه‌گیری جریان آب در محدود ۱ الی ۳۰ لیتر در دقیقه
  • دمای کاری منفی ۲۵ الی ۸۰ درجه سانتی گراد
  • محدوده رطوبت کاری ۳۵ الی ۹۰ درصد
  • فشار قابل تحمل :کمتر از ۱٫۷۵Mpa
  • ولتاژ کاری حداقل ۴٫۵ ولت DC الی ۲۵ ولت DC

 


سخت افزار مورد نیاز


آردوینو UNO 

سنسور اندازه‌گیری جریان آب YF-S201

 


سخت افزار و اتصالات


متصل کردن حسگر جریان آب به آردوینو، نیازمند حداقل اتصالات داخلی است. سیم های قرمز (VCC) و مشکی (GND) از حسگر جریان آب را به ۵v و Gnd آردوینو، متصل میکنیم و سیم پالس خروجی ( سیم زرد رنگ) را به پین دیجیتال شماره ۲ آردوینو متصل می‌کنیم. توجه داشته باشید که حسگر جریان آب ،تشنه‌ی قدرت نیست و تنها حداکثر ۱۵ الی ۲۰ میلی‌آمپر جریان در ولتاژ ۵ ولت از ورودی می‌کشد.

 

اتصال سنسور جریان آب به‌ آردوینو

اتصال سنسور جریان آب به‌ آردوینو

 

 

 


کد آردوینو


کدی که در زیر قرار دارد وقفه‌ی خارجی شماره‌ی صفری که بر روی پین شماره ۲ دیجیتال آردوینو UNO قرار دارد استفاده می‌کند. همانطور که گفته شد از پین شماره ۲ به منظور خواندن سیگنالی که از سنسور جریان آب خارح می‌شود استفاده می‌شود. به محضی که یک سیگنال بر روی پین شماره‌ی ۲ ظاهر شود ، برنامه در هرحایی که باشد متوقف می‌شود و بلافاصله تابع pulseCunter() صدا زده می‌شود. در این تابع تعداد پالس‌هایی که به پین شماره ۲ فرستاده می‌شود محاسبه می‌شود. بعد از محاسبه‌ی پالس ، برنامه دقیقا از همان جایی که متوقف شده بود ، شروع به ادامه‌ می‌کند.

آموزش وقفه بخش اول

آموزش وقفه بخش دوم

کد زیر را بر روی آردوینو خود آپلود کنید و نیجه را بر بر روی سریال مانیتور نرم افزار آردوینو خود مشاهده کنید.

volatile int flow_frequency; // اندازه گیری تعداد پالس ها
unsigned int l_hour; // محاسبه‌ی لیتر بر ساعت
unsigned char flowsensor = 2; // Sensor Input
unsigned long currentTime;
unsigned long cloopTime;
void flow() // تابع وقفه
{
	flow_frequency++;
}
void setup()
{
	pinMode(flowsensor, INPUT);
	digitalWrite(flowsensor, HIGH); // پین شماره ۲ به و وضعیت پول آپ تعریف می‌شود
	Serial.begin(9600);
	attachInterrupt(0, flow, RISING); // تنظیم وقفه و نسبت دادن تابع وقفه
	sei(); //فعال کردن وقفع
	currentTime = millis();
	cloopTime = currentTime;
}
void loop()
{
	currentTime = millis();
	// در هر ثانیه مقدار آب گذرنده از سنسور بر حسب لیتر بر ساعت محاسبه می شود
	if (currentTime >= (cloopTime + 1000))
	{
		cloopTime = currentTime; // Updates cloopTime
								 // Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
		l_hour = (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flowrate in L/hour
		flow_frequency = 0; // Reset Counter
		Serial.print(l_hour, DEC); // Print litres/hour
		Serial.println(" L/hour");
	}
}

 

 


تحلیل کد آردوینو YF-S201


این کد برای اندازه‌گیری جریان آب با استفاده از یک سنسور جریان YF-S201 و محاسبه میزان جریان آب به واحد لیتر بر ساعت (L/hour) نوشته شده است. کد به طور خلاصه به صورت زیر عمل می‌کند:

ابتدا متغیرها و پین‌های مورد نیاز تعریف می‌شوند:

volatile int flow_frequency: تعداد پالس‌ها (اندازه‌گیری‌ها) که توسط سنسور جریان آب ایجاد می‌شود و برای محاسبه جریان آب استفاده می‌شود.
unsigned int l_hour: مقدار لیتر بر ساعت که بر اساس تعداد پالس‌ها محاسبه می‌شود و نشان دهنده جریان آب است.
unsigned char flowsensor = 2: شماره پین متصل به سنسور جریان آب.
unsigned long currentTime: زمان فعلی به میلی‌ثانیه.
unsigned long cloopTime: زمان آخرین بروزرسانی محاسبات.

تابع flow():

این تابع به عنوان تابع وقفه (interrupt) استفاده می‌شود.
هنگامی که سنسور جریان آب یک پالس تشخیص می‌دهد، تابع flow() فراخوانی می‌شود و مقدار flow_frequency یک واحد افزایش می‌یابد.

تابع setup():

تنظیمات اولیه میکروکنترلر و سنسور انجام می‌شود.
پین شماره ۲ به عنوان ورودی (INPUT) تعریف می‌شود و به حالت HIGH تنظیم می‌شود.
تابع flow() با اتصال به وقفه در نازل RISING به پین ۰ ارتباط داده می‌شود.
قابلیت فعال شدن وقفه با دستور sei() تنظیم می‌شود.

تابع loop():

این تابع به صورت مداوم اجرا می‌شود و جریان آب را اندازه‌گیری و محاسبه می‌کند.
مقدار زمان فعلی با استفاده از millis() در متغیر currentTime ذخیره می‌شود.
در هر ثانیه (با فاصله زمانی ۱۰۰۰ میلی‌ثانیه)، محاسبات انجام می‌شود:
مقدار جریان آب بر حسب لیتر بر ساعت (l_hour) بر اساس تعداد پالس‌ها (flow_frequency) محاسبه می‌شود.
مقدار l_hour نمایش داده می‌شود و با واحد “L/hour” به کامپیوتر ارسال می‌شود.
تعداد پالس‌ها (flow_frequency) به صفر بازنشانی می‌شود تا برای محاسبه جریان آب در دوره‌های بعدی آماده باشد.

از این کد می‌توان برای نمایش مقدار جریان آب بر حسب لیتر بر ساعت در یک پروژه‌ی کنترل و اندازه‌گیری مصرف آب استفاده کرد. این کد به صورت مداوم جریان آب را اندازه‌گیری می‌کند و نتایج را به کامپیوتر یا واحد نمایش دیگر ارسال می‌کند.تا این قسمت از آموزش به معرفی و اتصال سنسور به آردوینو پرداختیم. همچنین نمونه‌ برنامه‌ای برای تست در اختیار شما قرار گرفت که سنسور خود را تست کنید. ولی همانطور که مشاهده می‌کنید برای محاسبه‌ی مقدار جریان آب از یک سری عملیات ریاضی استفاده شده است که در بخش بعدی به توضیح آن‌ها می‌پردازیم.

 

برای ورود به بخش دوم این آموزش اینجا کلید کنید

درباره نویسنده

علیرضا قربانی

علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

تبادل نظر و رفع عیب با ثبت دیدگاه

۹ دیدگاه

  • سلام من دنبال وسیله ای هستم که در مسیر جریان لوله آب ورودی به واحد آپارتمان قرار داده و میزان مصرف آب در هر واحد آپارتمانی را مشخص کنم . ضمنا جا برای نصب کنتور آب نداریم . ولی هر واحد فلکه ورودی آب دارد وفقط می نوانیم فلکه ورودی آب برداشته و بجای آن این وسیله یا سنسور را که میزان مصرف آب را تعیین می کن نصب کنیم . ممکنه راهنماییم کنید . آیا این کار عملی هست ؟

  • با سلام تلفنی با مسوول فنی تماس گرفتم
    اموزشهایی که دارید خیلی عالی است ولی کاربردی نیست صرفا اطلاعی است.
    مثل همین سنسور که مشخص نیست خروجی این کیت به چی وصل می شه ؟نحوه محاسبه اش چطوری ؟قطعاتش تو بازار هست یا نه؟ و یک کلیپ ۵ دقیقه ای از عملکرد مدار باشه.
    و اخر اینکه کیت اماده این و سایر اموزش ها اگر هست اعلام شود لطفا

  • با سلام خدمت شما دوست عزیز و تشکر بابت مطالب خوب ومفید شما
    جناب مهندس قربانی امکانش هست یک توضیحیم راجعبه این بدید که اگر ما نرخ کل اب مصرفی را در یک دوره ی زمانی خاص بخواهیم نحوه ی نوشن کد چه تغییری میکنه؟؟ .ممنون از توجه شما

    • با سلام و تشکر از توجه شما
      در حال حاضر نویسنده در دسترس نمی‌باشد. برای این موضوع باید فرمول مربوطه را وارد کدها کنید. منتظر باشید تا در خصوص انتشار آن اقدام شود.

  • با سلام خدمت شما و تشکر از سایت خوبتون و مطالب مفیدتون
    دوتا سوال داشتم :
    برای شروع به کارباسنسور YFS201 با اردوینو نیاز به کتابخانه اون داره که تو اردوینو بتونم اضافه کنم و نتونستم پیدا کنم ممنون میشم برام بزارین::”” با تشکر
    و اینکه یه سوال در باره برنامه نویسی اون : چجوری میشه دوتا برنامه نوشته شده جدا رو درباره یه سنسور باهم ادغام کرد ممنونم اگه جواب بدید
    منصوری

  • سلام
    در مورد این سنسور یه سوال دارم. وضعیت تویز پذیریش چطوریه؟ میدان مغناطیسی موتور الکتریکی یا جرقه های جاروبک ها تاثیر داره روی کار این سنسور؟ ممنون از شما