สารบัญ
บทคัดย่อ
องค์ความรู้นี้เป็นการนำเสนอการประยุกต์ใช้เซนเซอร์วัดอัตราการไหลของน้ำ (Water Flow Sensor) โดยต่อร่วมกับไมโครคอนโทรลเลอร์อาดุยโน่รุ่น Duemilanove เพื่อตรวจสอบและวัดการไหลของน้ำ โดยการนับจำนวนพัลส์ของเซนเซอร์ซึ่งแปรผันตรงกับอัตราการไหล องค์ความรู้ที่ได้นี้ สามารถนำไปประยุกต์ใช้ในการจัดทำโครงงานวิศวกรรมของนักเรียนนายเรือในส่วนที่เกี่ยวข้อง เช่น อาจจะนำไปประยุกต์ใช้ตรวจสอบการไหลของน้ำในแปลงผักไฮโดรโปรนิกส์ ซึ่งจะต้องมีการไหลเวียนของน้ำและสารอาหารตลอดเวลา หากมีการหยุดไหล จะทำให้ผักที่ปลูกไว้ทั้งแปลงตายได้ ตัวอย่างโค้ดที่เขียนนี้ เป็นโค้ดเบื้องต้นในการดึงค่าออกมาจากเซนเซอร์และนำไปแสดงบนหน้าจอคอมพิวเตอร์ผ่านทางพอร์ตอนุกรม ในการพัฒนาต่อยอด สามารถให้แสดงผลออกที่จอแอลซีดี หรือ ส่งค่าไร้สายระยะไกลด้วยโมดูลสื่อสารไร้สาย เช่น Xbee หรือ โมดูลอื่น ๆ เพื่อให้เกษตรกรสามารถรับรู้ข้อมูลได้โดยที่ไม่ต้องมาคอยดูที่แปลงผัก
คุณสมบัติของเซนเซอร์
- Model: FS300A G3/4”
คุณลักษณะการใช้งาน (Specification)
- แรงดันใช้งานต่ำสุด DC 4.5 V
- กระแส 15mA (DC 5V)
- พิสัยแรงดันใช้งาน 5 V~24 V
- พิสัยที่วัดได้ 1~60 L/min
- อุณหภูมิใช้งาน ≤80 ℃
- อุณหภูมิของเหลวที่วัด ≤120 ℃
- พิสัยความชื้นสัมพัทธ์ 35%~90%
- แรงดันน้ำที่วัด ≤2.0 MPa
ทดสอบการทำงานของเซนเซอร์
การทดสอบเบื้องต้นนี้เป็นการวัดค่าเอาต์พุตของเซนเซอร์ด้วยออสซิลโลสโคป โดยต่อวงจรตามภาพ
ผลที่ได้ เซนเซอร์จะสร้างพัลส์ออกมาตามภาพ ซึ่งความถี่ของพัลส์จะเปลี่ยนแปลงตามอัตราการไหลที่เพิ่มขึ้น
รูปคลื่นที่วัดได้จากออสซิลโลสโคป จะมีแอมปลิจูดเท่ากับแหล่งจ่ายซึ่งในที่นี้คือ 5 VDC แต่ถ้าหากใช้แหล่งจ่ายที่มีแรงดันสูงกว่านี้ แอมปลิจูดของเอาต์พุตที่ได้ก็จะมีค่าเพิ่มมากขึ้นตามไปด้วย ค่าดิวตี้ไซเคิลของสัญญาณเอาต์พุตประมาณ 50% (Data Sheet = 40%~60%) และความถี่ของสัญญาณจะแปรผันตรงกับอัตราการไหลตามสมการ
จำนวนลูกคลื่นพัลส์ = 5.5Q
เมื่อ Q คือ อัตราการไหลหน่วย L/min (ค่าผิดพลาด +/- 3%)
จากสมการ หากอัตราการไหลของน้ำเท่ากับ 1 ลิตรต่อนาที ดังนั้น เซนเซอร์จะสร้างสัญญาณพัลส์จำนวน 5.5 ลูก เป็นต้น
การทดลองวัดอัตราการไหลของน้ำ
ต่อวงจรของโฟลว์เซนเซอร์เข้ากับไมโครคอนโทรลเลอร์ตามภาพ โดยเพิ่มในส่วนของตัวต้านทาน pull up ค่า 10kohm ตามวงจร
จากนั้นเขียนโค้ดตามตัวอย่าง
volatile int NbTopsFan; //measuring the rising edges of the signal
int Calc;
int hallsensor = 2; //The pin location of the sensor
void rpm () //This is the function that the interupt calls
{
NbTopsFan++; //This function measures the rising and falling edge of the hall effect sensors signal
}
// The setup() method runs once, when the sketch starts
void setup() //
{
pinMode(hallsensor, INPUT); //initializes digital pin 2 as an input
Serial.begin(9600); //This is the setup function where the serial port is initialised,
attachInterrupt(0, rpm, RISING); //and the interrupt is attached
}
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop ()
{
NbTopsFan = 0; //Set NbTops to 0 ready for calculations
sei(); //Enables interrupts
delay (1000); //Wait 1 second
cli(); //Disable interrupts
Calc = (NbTopsFan * 60 / 5.5); //(Pulse frequency x 60) / 5.5Q, = flow rate in L/hour
Serial.print (Calc, DEC); //Prints the number calculated above
Serial.print (” L/hour\r\n”); //Prints “L/hour” and returns a new line
}
ในการนำไปต่อใช้งานจริงต้องใช้ข้อต่อสำหรับท่อประปาตามภาพ
เอกสารอ้างอิง
http://www.seeedstudio.com/wiki/G3/4_Water_Flow_sensor
Flow Rate Sensor Interfacing: How to Measure Liquid with an Arduino