- ส่วนประกอบ
- โมดูลเซ็นเซอร์อัลตราโซนิก
- การทำงานของเครื่องควบคุมระดับน้ำอัตโนมัติ
- แผนภาพวงจรและคำอธิบาย
- การเขียนโปรแกรม
ในโครงการตัวบ่งชี้ระดับน้ำอัตโนมัติและตัวควบคุมที่ใช้ Arduinoนี้ เราจะวัดระดับน้ำโดยใช้เซ็นเซอร์อัลตราโซนิก หลักการพื้นฐานของการวัดระยะทางอัลตราโซนิกขึ้นอยู่กับ ECHO เมื่อคลื่นเสียงถูกส่งออกไปในสภาพแวดล้อมคลื่นเสียงเหล่านั้นจะกลับไปยังจุดกำเนิดเป็น ECHO หลังจากกระทบสิ่งกีดขวางใด ๆ ดังนั้นเราต้องคำนวณเวลาเดินทางของเสียงทั้งสองเท่านั้นหมายถึงเวลาขาออกและเวลากลับไปยังจุดเริ่มต้นหลังจากกระทบกับอุปสรรค และหลังจากการคำนวณเราจะได้ผลลัพธ์ที่เป็นระยะทาง แนวคิดนี้ใช้ในโครงการเครื่องควบคุมน้ำของเราที่ปั๊มมอเตอร์น้ำจะเปิดโดยอัตโนมัติเมื่อระดับน้ำในถังต่ำ นอกจากนี้คุณยังสามารถตรวจสอบวงจรแสดงระดับน้ำอย่างง่ายสำหรับโครงการนี้ในเวอร์ชันที่ง่ายกว่า
ส่วนประกอบ
- Arduino Uno
- โมดูลเซ็นเซอร์อัลตราโซนิก
- 16x2 LCD
- รีเลย์ 6 โวลต์
- ULN2003
- 7806
- PVT
- ลวดทองแดง
- แบตเตอรี่ 9 โวลท์หรือ 12 Voltadaptor
- การเชื่อมต่อสายไฟ
โมดูลเซ็นเซอร์อัลตราโซนิก
เซ็นเซอร์อัลตราโซนิก HC-SR04 ใช้สำหรับวัดระยะทางในช่วง 2 ซม. - 400 ซม. ด้วยความแม่นยำ 3 มม. โมดูลเซ็นเซอร์ประกอบด้วยเครื่องส่งสัญญาณอัลตราโซนิกตัวรับและวงจรควบคุม
โมดูลเซ็นเซอร์อัลตราโซนิกทำงานกับปรากฏการณ์ธรรมชาติของ ECHO ของเสียง ชีพจรจะถูกส่งไปประมาณ 10us เพื่อทริกเกอร์โมดูล หลังจากนั้นโมดูลจะส่งสัญญาณอัลตร้าซาวด์ 40 KHz 8 รอบโดยอัตโนมัติและตรวจสอบเสียงสะท้อน สัญญาณหลังจากกระทบกับสิ่งกีดขวางจะส่งกลับและถูกจับโดยเครื่องรับ ดังนั้นระยะทางของสิ่งกีดขวางจากเซ็นเซอร์จึงคำนวณโดยสูตรที่ระบุ
ระยะทาง = (เวลา x ความเร็ว) / 2.
ในที่นี้เราได้แบ่งผลคูณของความเร็วและเวลาด้วย 2 เนื่องจากเวลาคือเวลาทั้งหมดที่ใช้ในการไปถึงอุปสรรคและย้อนกลับ ดังนั้นเวลาในการเข้าถึงอุปสรรคจึงเป็นเพียงครึ่งหนึ่งของเวลาทั้งหมด
การทำงานของเครื่องควบคุมระดับน้ำอัตโนมัติ
การทำงานของโครงการนี้ง่ายมากเราใช้โมดูลเซ็นเซอร์อัลตราโซนิกซึ่งส่งคลื่นเสียงในถังเก็บน้ำและตรวจจับการสะท้อนของคลื่นเสียงที่เป็น ECHO ก่อนอื่นเราต้องเรียกโมดูลเซ็นเซอร์อัลตราโซนิกเพื่อส่งสัญญาณโดยใช้ Arduino จากนั้นรอรับ ECHO Arduino อ่านเวลาระหว่างการทริกเกอร์และรับ ECHO เรารู้ว่าความเร็วของเสียงอยู่ที่ประมาณ 340 เมตร / วินาที ดังนั้นเราจึงสามารถคำนวณระยะทางโดยใช้สูตรที่กำหนด:
ระยะทาง = (เวลาเดินทาง / 2) * ความเร็วของเสียง
โดยที่ความเร็วของเสียงอยู่ที่ประมาณ 340 เมตรต่อวินาที
การใช้วิธีนี้ทำให้เราได้ระยะห่างจากเซ็นเซอร์ถึงผิวน้ำ หลังจากนั้นเราต้องคำนวณระดับน้ำ
ตอนนี้เราต้องคำนวณความยาวทั้งหมดของถังน้ำ เมื่อเราทราบความยาวของถังน้ำแล้วเราสามารถคำนวณระดับน้ำได้โดยการลบระยะทางที่เกิดจากอัลตราโซนิกออกจากความยาวทั้งหมดของถัง และเราจะได้ระยะระดับน้ำ. ตอนนี้เราสามารถแปลงระดับน้ำนี้เป็นเปอร์เซ็นต์ของน้ำและสามารถแสดงบน LCD ได้ การทำงานของโครงการตัวบ่งชี้ระดับน้ำที่สมบูรณ์แสดงไว้ในแผนภาพด้านล่าง
แผนภาพวงจรและคำอธิบาย
ดังแสดงในวงจรควบคุมระดับน้ำที่ ระบุด้านล่างพิน“ ทริกเกอร์” และ“ ก้อง” ของโมดูลเซ็นเซอร์อัลตราโซนิกจะเชื่อมต่อโดยตรงกับพิน 10 และ 11 ของ arduino 16x2 LCD เชื่อมต่อกับ arduino ในโหมด 4 บิต ขาควบคุม RS, RW และ En เชื่อมต่อโดยตรงกับขา arduino 7, GND และ 6 และขาข้อมูล D4-D7 เชื่อมต่อกับ 5, 4, 3 และ 2 ของ arduino และต่อสัญญาณกริ่งที่ขา 12 รีเลย์ 6 โวลต์คือ ยังเชื่อมต่อที่พิน 8 ของ arduino ผ่านULN2003เพื่อเปิดหรือปิดปั๊มมอเตอร์น้ำ นอกจากนี้ยังใช้ตัวควบคุมแรงดันไฟฟ้า 7805 สำหรับจ่ายไฟ 5 โวลต์ให้กับรีเลย์และวงจรที่เหลือ
ในวงจรนี้โมดูลเซ็นเซอร์อัลตราโซนิกจะอยู่ที่ด้านบนของถัง (ถังเก็บน้ำ) เพื่อการสาธิต โมดูลเซ็นเซอร์นี้จะอ่านระยะห่างระหว่างโมดูลเซ็นเซอร์และผิวน้ำและจะแสดงระยะทางบนหน้าจอ LCD พร้อมข้อความ "พื้นที่น้ำในถังคือ:" หมายความว่าเราอยู่ที่นี่แสดงสถานที่ว่างหรือปริมาตรของน้ำแทนที่จะเป็นระดับน้ำ เนื่องจากฟังก์ชันนี้เราสามารถใช้ระบบนี้ในถังเก็บน้ำใดก็ได้ เมื่อระดับน้ำเปล่าถึงระยะประมาณ 30 ซม. Arduino จะเปิดปั๊มน้ำโดยรีเลย์ขับ ตอนนี้ LCD จะแสดง“ ระดับน้ำต่ำ”“ มอเตอร์เปิดอยู่” และไฟ LED แสดงสถานะรีเลย์จะเริ่มติดสว่าง
ทีนี้ถ้าพื้นที่ว่างถึงระยะประมาณ 12 ซม. arduino จะปิดรีเลย์และ LCD จะแสดงข้อความ“ Tank is full”“ Motor Closed” Buzzer ยังส่งเสียงบี๊บเป็นระยะเวลาหนึ่งและไฟ LED สถานะรีเลย์จะดับลง
การเขียนโปรแกรม
ในการตั้งโปรแกรม Arduino สำหรับตัวควบคุมระดับน้ำก่อนอื่นเราจะกำหนดพินทั้งหมดที่เราจะใช้ในโครงการเพื่อเชื่อมต่ออุปกรณ์ภายนอกเช่นรีเลย์ LCD เสียงกริ่งเป็นต้น
#define trigger 10 #define echo 11 #define motor 8 #define buzzer 12
จากนั้นเราจะเริ่มต้นอุปกรณ์ทั้งหมดที่ใช้ในโครงการ
lcd.begin (16,2); pinMode (ทริกเกอร์เอาท์พุท); pinMode (เสียงสะท้อน, อินพุต); PinMode (มอเตอร์เอาท์พุท); pinMode (เสียงกริ่งเอาท์พุท); lcd.print ("ระดับน้ำ"); lcd.setCursor (0,1); lcd.print ("ตัวบ่งชี้"); ล่าช้า (2000);
ตอนนี้เริ่มต้นโมดูลเซ็นเซอร์อัลตราโซนิกและอ่านเวลาในการส่งและรับเวลาของคลื่นอัลตราโซนิกหรือเสียงโดยใช้ pulseIn (พิน) จากนั้นทำการคำนวณและแสดงผลบน LCD 16x2 โดยใช้ฟังก์ชันที่เหมาะสม
digitalWrite (ทริกเกอร์สูง); delayMicroseconds (10); digitalWrite (ทริกเกอร์ LOW); delayMicroseconds (2); เวลา = pulseIn (ก้อง, สูง); ระยะทาง = เวลา * 340/20000; lcd.clear (); lcd.print ("ช่องว่างในน้ำ"); lcd.setCursor (0,1); lcd.print ("ถังคือ:"); lcd.print (ระยะทาง); lcd.print ("ซม.");
หลังจากนั้นเราจะตรวจสอบเงื่อนไขว่าถังน้ำเต็มหรือระดับน้ำต่ำหรือไม่และดำเนินการตามนั้น
ถ้า (ระยะ <12 && temp == 0) {digitalWrite (มอเตอร์ LOW); digitalWrite (กริ่งสูง); lcd.clear (); lcd.print ("ถังเก็บน้ำเต็ม"); lcd.setCursor (0,1); lcd.print ("มอเตอร์ปิดอยู่"); ล่าช้า (2000); digitalWrite (เสียงกริ่งต่ำ); ล่าช้า (3000); อุณหภูมิ = 1; } else if (ระยะทาง <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("ถังเก็บน้ำเต็ม"); lcd.setCursor (0,1); lcd.print ("มอเตอร์ปิดอยู่"); ล่าช้า (5000); }