ماژول سنسور جریان آب YFS201 Water Flow Sensor
ماژول سنسور جریان آب YFS201 Water Flow Sensor
ماژول سنسور جریان آب YFS201 (یا همچنین شناخته شده به عنوان ماژول سنسور جریان آب YF-S201) یک سنسور جریان آب دیجیتال است که به صورت تجاری در دسترس است. این سنسور جریان آب به شما امکان میدهد تا سطح جریان آب را در یک لوله یا خط لوله مشخص کنید.ماژول YFS201 دارای ساختاری ساده است. این شامل یک بخش مکانیکی با پرههایی است که در مسیر جریان آب قرار میگیرند و یک بخش الکترونیکی است که سیگنال خروجی دیجیتال را تولید میکند. وقتی جریان آب از طریق پرهها عبور میکند، سرعت جریان پرهها را تغییر میدهد و این تغییرات سیگنال خروجی را تحت تاثیر قرار میدهد.این سنسور از پروتکل دیجیتال پالسی استفاده میکند و خروجی آن یک سیگنال دیجیتال است. این سیگنال را میتوان به عنوان ورودی به میکروکنترلر یا برد Arduino وصل کرد تا اطلاعات مربوط به جریان آب را دریافت و پردازش کند.با استفاده از اطلاعات حاصل از این سنسور، میتوانید جریان آب را اندازهگیری کنید و از آن برای کنترل فرآیندهای مرتبط با آب مانند کنترل سطح آب، سیستمهای آبیاری، مصرف آب و غیره استفاده کنید.
مشخصات فنی YFS201
- ولتاژ کاری: 5 ولت (DC)
- جریان کاری: کمتر از 15 میلی آمپر
- ورودی و خروجی: دیجیتال
- قطر داخلی لوله: 1/2 اینچ (حدود 12.7 میلیمتر)
- قطر خارجی لوله: 3/4 اینچ (حدود 19.05 میلیمتر)
- محدوده دمای کاری: 0-80 درجه سانتیگراد
- محدوده جریان قابل اندازهگیری: 1.5-30 لیتر در دقیقه
- دقت اندازهگیری: ±10%
بررسی پایه های YFS201
- VCC: این پین برای تأمین ولتاژ تغذیه سنسور استفاده میشود، معمولاً +5 ولت. این پین را به قطب مثبت منبع تغذیه متصل کنید.
- GND: این پین زمین یا مرجع مشترک سنسور است. این پین را به قطب منفی منبع تغذیه یا زمین وصل کنید.
- OUT: این پین خروجی دیجیتال سنسور است. این پین سیگنال پالسی ارائه میدهد که نسبت به میزان جریان آبی که از طریق سنسور عبور میکند، تناسب دارد. این پین را به پین ورودی دیجیتال میکروکنترلر یا دستگاه دریافتی دیگر متصل کنید تا اطلاعات مربوط به نرخ جریان آب را بخوانید.
به همراه ماژول سنسور جریان آب YFS201 Water Flow Sensor چه اقلامی باید خریداری شود؟
- آردوینو
- کابل فلت و برد بورد
- LCD و یا OLED
راه اندازی سنسور YFS201 با آردوینو
در این کد آردوینو نرخ جریان را به لیتر در دقیقه محاسبه میکند و حجم کل آبی که از طریق سنسور عبور کرده را ردیابی میکند. از یک اینتراپت برای شمارش پالسهای تولید شده توسط سنسور استفاده میکند و بر اساس آن پالسها، نرخ جریان و حجم کل محاسبه میشود.در بخش setup()،پین flowPin به عنوان ورودی تعریف شده و به پین دیجیتال 2 متصل میشود.اینتراپت برای پالسهای سنسور تنظیم میشود تا تابع pulseCounter در هر لحظه از کاهش پالس فعال شود.در بخش loop()،با توقف 1 ثانیه (delay(1000))، نرخ جریان و حجم کل محاسبه و چاپ میشوند.توابع calculateFlowRate() و printData() فراخوانی میشوند.تابع pulseCounter()،هربار که یک پالس دریافت میشود، مقدار flowRate افزایش مییابد.تابع calculateFlowRate()،نرخ جریان محاسبه میشود با تبدیل پالسها به واحد لیتر در دقیقهمقدار کل میلیلیترها را افزایش داده و حجم کل را محاسبه میکند.مقدار flowRate صفر شده و برای محاسبات بعدی آماده میشود.این کد به صورت پیوسته نرخ جریان و حجم کل آب را بررسی میکند و آنها را چاپ میکند. از تابع attachInterrupt() برای شمارش پالسهای سنسور استفاده شده است. برای دسترسی به اطلاعات، مانیتور سریال را از طریق پورت سریال آردوینو میتوانید مشاهده کنید.
const int flowPin = 2; // پین OUT سنسور را به پین دیجیتال 2 متصل کنید
unsigned int flowRate; // متغیری برای ذخیره نرخ جریان
unsigned long totalMilliliters;
unsigned long totalLiters;
void setup() {
Serial.begin(9600);
pinMode(flowPin, INPUT);
attachInterrupt(digitalPinToInterrupt(flowPin), pulseCounter, FALLING);
}
void loop() {
// هر 1 ثانیه نرخ جریان و حجم کل را چاپ کنید
delay(1000);
calculateFlowRate();
printData();
}
void pulseCounter() {
flowRate++;
}
void calculateFlowRate() {
flowRate = (flowRate * 60) / 7.5; // تبدیل پالسها در ثانیه به نرخ جریان در لیتر در دقیقه
totalMilliliters += (flowRate / 60); // افزایش مقدار میلیلیترهای کل
totalLiters = totalMilliliters / 1000; // محاسبه حجم کل بر حسب لیتر
flowRate = 0; // تنظیم مجدد نرخ جریان
}
void printData() {
Serial.print("نرخ جریان: ");
Serial.print(flowRate);
Serial.print(" لیتر در دقیقه\t");
Serial.print("حجم کل: ");
Serial.print(totalLiters);
Serial.println(" لیتر");
}
راه اندازی سنسور YFS201 با میکروپایتون
در این کد که با میکروپایتون نوشته شده است، نرخ جریان را به لیتر در دقیقه محاسبه میکند و حجم کل آبی که از طریق سنسور عبور کرده را ردیابی میکند. از یک منقطع کننده برای شمارش پالسهای تولید شده توسط سنسور استفاده شده است و بر اساس آن پالسها، نرخ جریان و حجم کل محاسبه میشود.ابتدا، ماژولهای مورد نیاز را از پکیج machine وارد میکنیم.پین flowPin را به پین دیجیتال 2 تعیین میکنیم و آن را به عنوان یک پین ورودی تنظیم میکنیم.سه متغیر به نامهای flowRate، totalMilliliters و totalLiters را تعریف میکنیم و با مقدار اولیه صفر مقداردهی میکنیم.تابع pulse_counter را تعریف میکنیم که هربار که یک پالس دریافت شود، متغیر flowRate را یک واحد افزایش میدهد.تابع calculate_flow_rate را تعریف میکنیم که در هر فراخوانی، نرخ جریان را به واحد لیتر در دقیقه تبدیل کرده و آن را در متغیر flowRate ذخیره میکند. همچنین، مقدار میلیلیترهای کل را با توجه به نرخ جریان به روزرسانی میکند و حجم کل آب را محاسبه میکند. در پایان، متغیر flowRate را صفر میکند.تابع print_data را تعریف میکنیم که در هر فراخوانی، نرخ جریان و حجم کل آب را چاپ میکند.با استفاده از منقطعکننده، تابع pulse_counter به پین flowPin متصل میشود تا دریافت هر پالس باعث افزایش مقدار flowRate شود.با استفاده از تایمر flow_timer، تابع calculate_flow_rate هر یک ثانیه فراخوانی میشود تا نرخ جریان و حجم کل به روز شوند.با استفاده از تایمر print_timer، تابع print_data هر 5 ثانیه فراخوانی میشود تا اطلاعات چاپ شوند.
from machine import Pin, Timer
flowPin = Pin(2, Pin.IN)
flowRate = 0
totalMilliliters = 0
totalLiters = 0
def pulse_counter(p):
global flowRate
flowRate += 1
def calculate_flow_rate(t):
global flowRate, totalMilliliters, totalLiters
flowRate = (flowRate * 60) // 7.5 # تبدیل پالسها در ثانیه به نرخ جریان در لیتر در دقیقه
totalMilliliters += flowRate // 60 # افزایش مقدار میلیلیترهای کل
totalLiters = totalMilliliters // 1000 # محاسبه حجم کل بر حسب لیتر
flowRate = 0 # تنظیم مجدد نرخ جریان
def print_data(t):
print("نرخ جریان: {} لیتر در دقیقه\tحجم کل: {} لیتر".format(flowRate, totalLiters))
# اتصال منقطع کننده به پین شمارنده پالس
flowPin.irq(trigger=Pin.IRQ_FALLING, handler=pulse_counter)
# محاسبه نرخ جریان و حجم کل هر 1 ثانیه
flow_timer = Timer(-1)
flow_timer.init(period=1000, mode=Timer.PERIODIC, callback=calculate_flow_rate)
# چاپ اطلاعات هر 5 ثانیه
print_timer = Timer(-1)
print_timer.init(period=5000, mode=Timer.PERIODIC, callback=print_data)
مشخصات
- کاربری
- مناسب برای استفاده صنعتی
- نوع ماژول
- جریان
- سطح تجربه مورد نیاز
- پیشرفته
- ولتاژ مورد نياز
- 5 تا 18 ولت DC
- ولتاژ خروجی
- 5 ولت
- طول کابل
- 15 سانتی متر
- دمای کاری
- 25 - تا + 80 درجه سانتی گراد
- تعداد پایه ها
- 3
- ترتیب پایه ها
- سیم قرمز: تغذیه مثبت، سیم مشکی: GND، سیم زرد: دیتا
- فرکانس
- 50 % Duty Cycle در خروجی
- دقت اندازه گیری
- ±10%
- خروجی
- 5V TTL
- تعداد خروجی
- 1
- جریان مصرفی درحالت فعال
- 15 میلی آمپر
- سایر توضیحات
- جریان کاری : 1 تا 30 Liters/Minuteرطوبت : 35%-80% RH
- سایر قابلیتها
- حداکثر فشار آب : 2.0 MPپالس در لیتر : 450
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.