- ส่วนประกอบที่จำเป็น
- YFS201 เซ็นเซอร์การไหลของน้ำ
- แผนภูมิวงจรรวม
- รหัสเซ็นเซอร์การไหลของน้ำ Arduino
- Arduino Water Flow Sensor ทำงาน
หากคุณเคยเยี่ยมชม บริษัท การผลิตขนาดใหญ่สิ่งแรกที่คุณจะสังเกตเห็นก็คือ บริษัท ทั้งหมดเป็นระบบอัตโนมัติ อุตสาหกรรมน้ำอัดลมและอุตสาหกรรมเคมีต้องตรวจวัดและหาปริมาณของเหลวที่จัดการในระหว่างกระบวนการอัตโนมัตินี้อย่างต่อเนื่องและเซ็นเซอร์ที่ใช้กันมากที่สุดในการวัดการไหลของของเหลวคือFlow Sensor. ด้วยการใช้เซ็นเซอร์การไหลกับไมโครคอนโทรลเลอร์เช่น Arduino เราสามารถคำนวณอัตราการไหลและตรวจสอบปริมาตรของของเหลวที่ไหลผ่านท่อและควบคุมได้ตามต้องการ นอกเหนือจากอุตสาหกรรมการผลิตเซ็นเซอร์การไหลยังสามารถพบได้ในภาคเกษตรกรรมการแปรรูปอาหารการจัดการน้ำอุตสาหกรรมเหมืองแร่การรีไซเคิลน้ำเครื่องชงกาแฟ ฯลฯ นอกจากนี้เซ็นเซอร์การไหลของน้ำจะเป็นส่วนเสริมที่ดีสำหรับโครงการต่างๆเช่นตู้น้ำอัตโนมัติ และระบบชลประทานอัจฉริยะที่เราต้องตรวจสอบและควบคุมการไหลของของเหลว
ในโครงการนี้เราจะไปสร้างเซ็นเซอร์การไหลของน้ำโดยใช้ Arduino เราจะเชื่อมต่อเซ็นเซอร์การไหลของน้ำกับ Arduino และ LCD และตั้งโปรแกรมให้แสดงปริมาตรของน้ำซึ่งไหลผ่านวาล์ว สำหรับโครงการนี้เราจะใช้เซ็นเซอร์การไหลของน้ำYF-S201 ซึ่งใช้เอฟเฟกต์ห้องโถงเพื่อตรวจจับอัตราการไหลของของเหลว
ส่วนประกอบที่จำเป็น
- เซ็นเซอร์การไหลของน้ำ
- Arduino UNO
- จอแอลซีดี (16x2)
- เชื่อมต่อกับเกลียวภายใน
- การเชื่อมต่อสายไฟ
- ท่อ
YFS201 เซ็นเซอร์การไหลของน้ำ
เซ็นเซอร์มี 3 สายแดงเหลืองและดำตามที่แสดงในรูปด้านล่าง สายสีแดงใช้สำหรับแรงดันไฟฟ้าซึ่งอยู่ในช่วง 5V ถึง 18V และสายสีดำเชื่อมต่อกับ GND สายสีเหลืองใช้สำหรับเอาต์พุต (พัลส์) ซึ่ง MCU สามารถอ่านได้ เซ็นเซอร์การไหลของน้ำประกอบด้วยเซ็นเซอร์ตะไลที่วัดปริมาณของเหลวที่ไหลผ่าน
การทำงานของเซ็นเซอร์การไหลของน้ำ YFS201นั้นเข้าใจง่าย เซ็นเซอร์การไหลของน้ำทำงานบนหลักการของเอฟเฟกต์ฮอลล์ Hall effect คือการสร้างความต่างศักย์ของตัวนำไฟฟ้าเมื่อสนามแม่เหล็กถูกนำไปใช้ในทิศทางที่ตั้งฉากกับการไหลของกระแสไฟฟ้า เซ็นเซอร์การไหลของน้ำถูกรวมเข้ากับเซ็นเซอร์เอฟเฟกต์ฮอลล์แม่เหล็กซึ่งจะสร้างพัลส์ไฟฟ้าทุกครั้งที่มีการปฏิวัติ การออกแบบของมันเป็นไปในลักษณะที่เซ็นเซอร์เอฟเฟกต์ห้องโถงถูกปิดผนึกจากน้ำและช่วยให้เซ็นเซอร์ปลอดภัยและแห้งอยู่เสมอ
ภาพของโมดูลเซ็นเซอร์ YFS201 เพียงอย่างเดียวแสดงอยู่ด้านล่าง
ในการเชื่อมต่อกับท่อและเซ็นเซอร์การไหลของน้ำฉันใช้ขั้วต่อสองตัวที่มีเกลียวตัวเมียดังที่แสดงด้านล่าง
ตามข้อกำหนดของ YFS201กระแสไฟฟ้าสูงสุดที่ดึงที่ 5V คือ 15mA และอัตราการไหลของการทำงานคือ 1 ถึง 30 ลิตร / นาที เมื่อของเหลวไหลผ่านเซ็นเซอร์จะสัมผัสกับครีบของล้อกังหันซึ่งวางอยู่ในเส้นทางของของเหลวที่ไหล เพลาของล้อกังหันเชื่อมต่อกับเซ็นเซอร์เอฟเฟกต์ห้องโถง ด้วยเหตุนี้เมื่อใดก็ตามที่น้ำไหลผ่านวาล์วมันจะสร้างพัลส์ ตอนนี้สิ่งที่เราต้องทำคือการวัดเวลาสำหรับ pluses หรือนับจำนวนพัลส์ใน 1 วินาทีจากนั้นคำนวณอัตราการไหลเป็นลิตรต่อชั่วโมง (L / Hr) จากนั้นใช้สูตรการแปลงอย่างง่ายเพื่อหาปริมาตร ของน้ำที่ไหลผ่าน ในการวัดพัลส์เราจะใช้ Arduino UNO ภาพด้านล่างแสดงให้คุณเห็น pinout ของเซ็นเซอร์การไหลของน้ำ
แผนภูมิวงจรรวม
การไหลของน้ำวงจรเซ็นเซอร์แผนภาพแสดงอยู่ด้านล่างเพื่อติดต่อเซ็นเซอร์การไหลของน้ำและจอแอลซีดี (16x2) กับ Arduino หากคุณยังใหม่กับ Arduino และ LCD คุณสามารถลองอ่านบทความ Interfacing Arduino และ LCD
การเชื่อมต่อของเซ็นเซอร์การไหลของน้ำและ LCD (16x2) กับ Arduino แสดงไว้ด้านล่างในรูปแบบตาราง โปรดทราบว่าหม้อเชื่อมต่อระหว่าง 5V และ GND และขาของหม้อ 2 เชื่อมต่อกับขา V0 ของ LCD
ส. อบจ |
ขาเซ็นเซอร์การไหลของน้ำ |
หมุด Arduino |
1 |
สายสีแดง |
5V |
2 |
ดำ |
GND |
3 |
สีเหลือง |
A0 |
ส. เลขที่ |
LCD |
Arduino |
1 |
Vss |
GND (รางพื้นของเขียงหั่นขนม) |
2 |
VDD |
5V (รางบวกของเขียงหั่นขนม) |
3 |
สำหรับการเชื่อมต่อกับ V0 ให้ตรวจสอบหมายเหตุด้านบน |
|
4 |
อาร์เอส |
12 |
5 |
RW |
GND |
6 |
จ |
11 |
7 |
D7 |
9 |
8 |
D6 ถึง D3 |
3 ถึง 5 |
ฉันใช้เขียงหั่นขนมและเมื่อการเชื่อมต่อเสร็จสิ้นตามแผนภาพวงจรที่แสดงด้านบนการตั้งค่าการทดสอบของฉันจะมีลักษณะดังนี้
รหัสเซ็นเซอร์การไหลของน้ำ Arduino
รหัส Arduino เซ็นเซอร์การไหลของน้ำที่สมบูรณ์จะได้รับที่ด้านล่างของหน้า คำอธิบายของรหัสมีดังนี้
เรากำลังใช้ไฟล์ส่วนหัวของ LCD ซึ่งช่วยให้การเชื่อมต่อ LCD กับ Arduino ง่ายขึ้นและพิน 12,11,5,4,3,9 ได้รับการจัดสรรสำหรับการถ่ายโอนข้อมูลระหว่าง LCD และ Arduino ขาเอาต์พุตของเซ็นเซอร์เชื่อมต่อกับขา 2 ของ Arduino UNO
flow_frequency int ผันผวน; // วัดพัลส์เซนเซอร์การไหล // คำนวณลิตร / ชั่วโมง โฟลต vol = 0.0, l_minute; ถ่าน Flowensor ที่ไม่ได้ลงชื่อ = 2; // Sensor Input Long currentTime ที่ไม่ได้ลงชื่อ; cloopTime ยาวที่ไม่ได้ลงนาม; # รวม
ฟังก์ชันนี้เป็นรูทีนบริการขัดจังหวะและจะเรียกเมื่อใดก็ตามที่มีสัญญาณขัดจังหวะที่พิน 2 ของ Arduino UNO สำหรับสัญญาณขัดจังหวะทุกครั้งจำนวนของตัวแปร flow_frequency จะเพิ่มขึ้น 1 สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการขัดจังหวะและการทำงานคุณสามารถอ่านบทความนี้เกี่ยวกับการขัดจังหวะ Arduino
การไหลเป็นโมฆะ () // ฟังก์ชันขัดจังหวะ { flow_frequency ++; }
ในการตั้งค่าเป็นโมฆะเราจะบอก MCU ว่าพิน 2 ของ Arduino UNO ใช้เป็น INPUT โดยให้คำสั่ง pinMode (พิน, เอาต์พุต) โดยใช้คำสั่ง attachInterrupt เมื่อใดก็ตามที่สัญญาณเพิ่มขึ้นที่พิน 2 ฟังก์ชันการไหลจะถูกเรียกใช้ ซึ่งจะเพิ่มจำนวนในตัวแปร flow_frequency ขึ้น 1 เวลาปัจจุบันและ cloopTime ใช้เพื่อให้โค้ดทำงานในทุกๆ 1 วินาที
การตั้งค่าเป็นโมฆะ () { pinMode (Flowensor, INPUT); digitalWrite (flowensor, สูง); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (โฟลว์เซนเซอร์) การไหลการเพิ่มขึ้น); // ตั้งค่าขัดจังหวะ lcd.clear (); lcd.setCursor (0,0); lcd.print ("เครื่องวัดการไหลของน้ำ"); lcd.setCursor (0,1); lcd.print ("วงจรย่อย"); currentTime = มิลลิวินาที (); cloopTime = currentTime; }
ฟังก์ชัน if ช่วยให้มั่นใจได้ว่าทุก ๆ หนึ่งวินาทีโค้ดที่อยู่ข้างในจะทำงาน ด้วยวิธีนี้เราสามารถนับจำนวนความถี่ที่เกิดจากเซ็นเซอร์การไหลของน้ำต่อวินาที ลักษณะของพัลส์อัตราการไหลจากแผ่นข้อมูลจะให้ความถี่ 7.5 คูณด้วยอัตราการไหล ดังนั้นอัตราการไหลคือความถี่ / 7.5 หลังจากพบอัตราการไหลซึ่งเป็นลิตร / นาทีให้หารด้วย 60 เพื่อแปลงเป็นลิตร / วินาที ค่านี้จะเพิ่มให้กับตัวแปร vol ทุก ๆ หนึ่งวินาที
โมฆะ loop () { currentTime = millis (); // ทุกวินาทีคำนวณและพิมพ์ลิตร / ชั่วโมง if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // อัปเดต cloopTime ถ้า (flow_frequency! = 0) { // ความถี่พัลส์ (Hz) = 7.5Q, Q คืออัตราการไหลเป็น L / นาที l_minute = (อัตราการไหล / 7.5); // (ความถี่พัลส์ x 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); vol = vol + l_minute; lcd.print ("ฉบับ:"); lcd.print (ฉบับ); lcd.print ("L"); flow_frequency = 0; // รีเซ็ตตัวนับ Serial.print (l_minute, DEC); // พิมพ์ลิตร / ชั่วโมง Serial.println ("L / Sec"); }
ฟังก์ชั่นอื่นจะทำงานเมื่อไม่มีเอาต์พุตจากเซ็นเซอร์การไหลของน้ำภายในช่วงเวลาที่กำหนด
อื่น ๆ { 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"); }
Arduino Water Flow Sensor ทำงาน
ในโครงการของเราเราเชื่อมต่อเซ็นเซอร์การไหลของน้ำกับท่อ ถ้าวาล์วขาออกของท่อปิดเอาต์พุตของเซ็นเซอร์การไหลของน้ำจะเป็นศูนย์ (ไม่มีพัลส์) จะไม่มีสัญญาณขัดจังหวะที่ขา 2 ของ Arduino และจำนวน flow_frequency จะเป็นศูนย์ ในเงื่อนไขนี้โค้ดที่เขียนไว้ในลูปอื่นจะทำงาน
ถ้าวาล์วขาออกของท่อเปิดอยู่ น้ำไหลผ่านเซ็นเซอร์ซึ่งจะหมุนวงล้อภายในเซ็นเซอร์ ในสภาวะนี้เราสามารถสังเกตเห็นพัลส์ซึ่งสร้างขึ้นจากเซ็นเซอร์ พัลส์เหล่านี้จะทำหน้าที่เป็นสัญญาณขัดจังหวะไปยัง Arduino UNO สำหรับทุกสัญญาณขัดจังหวะ (ขอบที่เพิ่มขึ้น) จำนวนของตัวแปร flow_frequency จะเพิ่มขึ้นทีละหนึ่ง เวลาปัจจุบันและตัวแปร cloopTIme ช่วยให้มั่นใจได้ว่าทุก ๆ หนึ่งวินาทีจะนำค่าของ flow_frequency มาใช้ในการคำนวณอัตราการไหลและปริมาตร หลังจากการคำนวณเสร็จสิ้นตัวแปร flow_frequency จะถูกตั้งค่าเป็นศูนย์และขั้นตอนทั้งหมดจะเริ่มต้นจากจุดเริ่มต้น
นอกจากนี้คุณยังสามารถดูการทำงานทั้งหมดได้ในวิดีโอที่เชื่อมโยงที่ด้านล่างของหน้านี้ หวังว่าคุณจะสนุกกับบทช่วยสอนและสนุกกับสิ่งที่เป็นประโยชน์หากคุณมีปัญหาใด ๆ โปรดทิ้งไว้ในส่วนความคิดเห็นหรือใช้ฟอรัมของเราสำหรับคำถามทางเทคนิคอื่น ๆ