- المكونات مطلوبة
- جهاز استشعار تدفق المياه YFS201
- مخطط الرسم البياني
- كود مستشعر تدفق المياه من Arduino
- جهاز استشعار تدفق المياه من اردوينو يعمل
إذا زرت من قبل شركات تصنيع كبيرة الحجم ، فإن أول شيء ستلاحظه هو أنها كلها آلية. يتعين على صناعات المشروبات الغازية والصناعات الكيماوية قياس وتقدير كمية السوائل التي تتعامل معها باستمرار خلال عملية الأتمتة هذه ، والمستشعر الأكثر شيوعًا المستخدم لقياس تدفق السائل هو مستشعر التدفق. باستخدام مستشعر التدفق مع متحكم دقيق مثل Arduino ، يمكننا حساب معدل التدفق ، والتحقق من حجم السائل الذي يمر عبر الأنبوب ، والتحكم فيه كما هو مطلوب. بصرف النظر عن الصناعات التحويلية ، يمكن أيضًا العثور على مستشعرات التدفق في قطاع الزراعة ، وتجهيز الأغذية ، وإدارة المياه ، وصناعة التعدين ، وإعادة تدوير المياه ، وآلات القهوة ، وما إلى ذلك. علاوة على ذلك ، سيكون مستشعر تدفق المياه إضافة جيدة لمشاريع مثل موزع المياه التلقائي وأنظمة الري الذكية حيث نحتاج إلى مراقبة تدفق السوائل والتحكم فيه.
في هذا المشروع ، سنقوم ببناء جهاز استشعار لتدفق المياه باستخدام Arduino. سنقوم بربط مستشعر تدفق المياه مع Arduino و LCD ، وسنبرمجته لعرض حجم المياه التي مرت عبر الصمام. بالنسبة لهذا المشروع بالذات ، سنستخدم مستشعر تدفق الماء YF-S201 ، والذي يستخدم تأثير القاعة لاستشعار معدل تدفق السائل.
المكونات مطلوبة
- مستشعر تدفق المياه
- اردوينو UNO
- LCD (16 × 2)
- موصل مع خيوط داخلية
- توصيل الأسلاك
- يضخ
جهاز استشعار تدفق المياه YFS201
يحتوي المستشعر على 3 أسلاك باللون الأحمر والأصفر والأسود كما هو موضح في الشكل أدناه. يستخدم السلك الأحمر لجهد الإمداد الذي يتراوح من 5 فولت إلى 18 فولت والسلك الأسود متصل بـ GND. يستخدم السلك الأصفر للإخراج (نبضات) ، والتي يمكن قراءتها بواسطة MCU. يتكون مستشعر تدفق المياه من مستشعر دولاب الهواء يقيس كمية السائل الذي يمر عبره.
إن عمل حساس تدفق المياه YFS201 سهل الفهم. يعمل مستشعر تدفق المياه على مبدأ تأثير القاعة. تأثير هول هو إنتاج فرق الجهد عبر الموصل الكهربائي عندما يتم تطبيق مجال مغناطيسي في الاتجاه العمودي لتدفق التيار. تم دمج مستشعر تدفق المياه مع مستشعر تأثير القاعة المغناطيسية ، والذي يولد نبضًا كهربائيًا مع كل ثورة. يتم تصميمه بطريقة تجعل مستشعر تأثير القاعة مغلقًا عن الماء ، ويسمح لجهاز الاستشعار بالبقاء آمنًا وجافًا.
يتم عرض صورة وحدة استشعار YFS201 وحدها أدناه.
للتواصل مع الأنبوب ومستشعر تدفق المياه ، استخدمت موصلين بخيط أنثوي كما هو موضح أدناه.
وفقًا لمواصفات YFS201 ، فإن الحد الأقصى للتيار الذي يتم سحبه عند 5 فولت هو 15 مللي أمبير ، ومعدل تدفق العمل من 1 إلى 30 لترًا / دقيقة. عندما يتدفق السائل عبر المستشعر ، فإنه يتلامس مع زعانف عجلة التوربين ، التي توضع في مسار السائل المتدفق. يتم توصيل عمود عجلة التوربين بجهاز استشعار تأثير القاعة. نتيجة لذلك ، عندما يتدفق الماء عبر الصمام ، فإنه يولد نبضات. الآن ، كل ما يتعين علينا القيام به هو قياس الوقت للإيجابيات أو حساب عدد النبضات في ثانية واحدة ثم حساب معدلات التدفق باللتر في الساعة (L / Hr) ثم استخدام صيغة التحويل البسيطة للعثور على الحجم من الماء الذي مر بها. لقياس النبضات ، سنستخدم Arduino UNO. توضح لك الصورة أدناه دبوس مستشعر تدفق المياه.
مخطط الرسم البياني
يظهر الرسم التخطيطي لدائرة مستشعر تدفق المياه أدناه لربط مستشعر تدفق المياه وشاشة LCD (16 × 2) مع Arduino. إذا كنت جديدًا على Arduino و LCD ، فيمكنك التفكير في قراءة مقالة Interfacing Arduino و LCD.
يتم عرض اتصال مستشعر تدفق المياه وشاشة LCD (16 × 2) مع Arduino في تنسيق الجدول أدناه. لاحظ أن الوعاء متصل بين 5V و GND وأن دبوس الوعاء 2 متصل بـ V0 pin من شاشة LCD.
S. |
دبوس استشعار تدفق المياه |
اردوينو دبابيس |
1 |
سلك أحمر |
5 فولت |
2 |
أسود |
GND |
3 |
الأصفر |
أ 0 |
لا |
شاشة LCD |
اردوينو |
1 |
Vss |
GND (سكة أرضية من اللوح) |
2 |
VDD |
5V (سكة موجبة للوح) |
3 |
للاتصال بـ V0 تحقق من الملاحظة أعلاه |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
ه |
11 |
7 |
د 7 |
9 |
8 |
D6 إلى D3 |
3 إلى 5 |
لقد استخدمت اللوح ، وبمجرد الانتهاء من الاتصال وفقًا لمخطط الدائرة الموضح أعلاه ، بدا إعداد الاختبار الخاص بي شيئًا كهذا.
كود مستشعر تدفق المياه من Arduino
رمز Arduino لمستشعر تدفق المياه الكامل موجود في أسفل الصفحة. شرح الكود كالتالي.
نحن نستخدم ملف رأس شاشة LCD ، مما يسهل من تفاعلنا مع شاشة LCD مع Arduino ، ويتم تخصيص المسامير 12،11،5،4،3،9 لنقل البيانات بين LCD و Arduino. يتم توصيل دبوس خرج المستشعر بالدبوس 2 من Arduino UNO.
معدل التدفق المتقلب ؛ // يقيس نبضات مستشعر التدفق // لتر محسوب / ساعة تعويم المجلد = 0.0 ، l_minute ؛ مستشعر تدفقات الحرف غير الموقعة = 2 ؛ // مدخلات الاستشعار غير موقعة طويلة CurrentTime ؛ cloopTime طويلة بدون توقيع ؛ #تضمن
هذه الوظيفة عبارة عن روتين خدمة المقاطعة وسيتم استدعاؤها كلما كانت هناك إشارة مقاطعة في pin2 من Arduino UNO. لكل إشارة مقاطعة ، سيتم زيادة عدد متغير flow_frequency بمقدار 1. لمزيد من التفاصيل حول المقاطعات وعملها ، يمكنك قراءة هذه المقالة عن مقاطعات Arduino.
void flow () // وظيفة المقاطعة { flow_frequency ++ ؛ }
في الإعداد الفارغ ، نخبر MCU أن الدبوس 2 من Arduino UNO يستخدم كمدخل عن طريق إعطاء الأمر pinMode (pin ، OUTPUT). باستخدام الأمر attachInterrupt ، عندما يكون هناك ارتفاع في الإشارة عند الطرف 2 ، يتم استدعاء وظيفة التدفق. يؤدي هذا إلى زيادة العدد في متغير flow_frequency بمقدار 1. يتم استخدام الوقت الحالي و cloopTime لتشغيل الكود في كل ثانية واحدة.
إعداد باطل () { pinMode (مستشعر التدفق ، INPUT) ؛ digitalWrite (مستشعر التدفق ، عالي) ؛ Serial.begin (9600) ؛ lcd.begin (16 ، 2) ؛ attachInterrupt (digitalPinToInterrupt (جهاز استشعار التدفق) ، التدفق ، الارتفاع) ؛ // Setup Interrupt lcd.clear () ؛ lcd.setCursor (0،0) ؛ lcd.print ("مقياس تدفق المياه") ؛ lcd.setCursor (0،1) ؛ lcd.print ("ملخص الدائرة") ؛ CurrentTime = ميلي () ؛ cloopTime = CurrentTime ، }
تضمن وظيفة if تشغيل الكود بداخله لكل ثانية واحدة. بهذه الطريقة ، يمكننا حساب عدد الترددات التي ينتجها مستشعر تدفق الماء في الثانية. يتم إعطاء خصائص نبض معدل التدفق من ورقة البيانات أن التردد هو 7.5 مضروبًا في معدل التدفق. إذن معدل التدفق هو التردد / 7.5. بعد إيجاد معدل التدفق باللتر / الدقيقة ، قسمه على 60 لتحويله إلى لتر / ثانية. تضاف هذه القيمة إلى متغير المجلد لكل ثانية.
حلقة باطلة () { currentTime = millis () ؛ // كل ثانية ، احسب واطبع اللترات / الساعة إذا (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime؛ // يحدّث cloopTime إذا كان (flow_frequency! = 0) { // تردد النبض (Hz) = 7.5Q ، Q هو معدل التدفق في L / min. l_minute = (flow_frequency / 7.5) ؛ // (تردد النبض × 60 دقيقة) / 7.5Q = معدل التدفق في L / ساعة lcd.clear () ؛ lcd.setCursor (0،0) ؛ lcd.print ("معدل:") ؛ lcd.print (l_minute) ؛ lcd.print ("L / M") ؛ l_minute = l_minute / 60 ؛ lcd.setCursor (0،1) ؛ المجلد = المجلد + l_minute ؛ lcd.print ("المجلد:") ؛ lcd.print (المجلد) ؛ lcd.print ("L") ؛ تدفق_التردد = 0 ؛ // إعادة تعيين عداد Serial.print (l_minute ، DEC) ؛ // طباعة لتر / ساعة Serial.println ("L / Sec") ؛ }
تعمل وظيفة else عندما لا يكون هناك خرج من مستشعر تدفق المياه خلال الفترة الزمنية المحددة.
آخر { lcd.clear ()؛ lcd.setCursor (0،0) ؛ lcd.print ("معدل:") ؛ lcd.print (flow_frequency) ؛ lcd.print ("L / M") ؛ lcd.setCursor (0،1) ؛ lcd.print ("المجلد:") ؛ lcd.print (المجلد) ؛ lcd.print ("L") ؛ }
جهاز استشعار تدفق المياه من اردوينو يعمل
في مشروعنا ، قمنا بتوصيل مستشعر تدفق المياه بأنبوب. إذا كان صمام الإخراج للأنبوب مغلقًا ، فإن خرج مستشعر تدفق المياه يكون صفراً (بدون نبضات). لن تكون هناك إشارة مقاطعة تُرى عند الطرف 2 من Arduino ، وسيكون عدد تدفق التدفق صفرًا. في هذه الحالة ، سيعمل الكود المكتوب داخل حلقة else.
إذا تم فتح صمام الإخراج للأنبوب. يتدفق الماء عبر المستشعر ، والذي بدوره يقوم بتدوير العجلة داخل المستشعر. في هذه الحالة ، يمكننا ملاحظة النبضات التي تتولد من المستشعر. ستعمل هذه النبضات كإشارة مقاطعة إلى Arduino UNO. لكل إشارة مقاطعة (حافة صاعدة) ، سيتم زيادة عدد متغير التدفق بمقدار واحد. يضمن الوقت الحالي ومتغير cloopTIme أنه لكل ثانية واحدة يتم أخذ قيمة flow_frequency لحساب معدل التدفق والحجم. بعد الانتهاء من الحساب ، يتم تعيين متغير flow_frequency على الصفر ويبدأ الإجراء بأكمله من البداية.
يمكن أيضًا العثور على العمل الكامل في الفيديو المرتبط أسفل هذه الصفحة. آمل أن تكون قد استمتعت بالبرنامج التعليمي واستمتعت بشيء مفيد ، إذا كانت لديك أي مشاكل ، فيرجى تركها في قسم التعليقات أو استخدام منتدياتنا للأسئلة الفنية الأخرى.