เครื่องจ่ายน้ำอัตโนมัติโดยใช้ Arduino |
ต้องใช้วัสดุ
- Solenoid Valve
- Arduino Uno (เวอร์ชันใดก็ได้)
- HCSR04 - เซนเซอร์อัลตราโซนิค
- IRF540 MOSFET
- 1k และ 10k Resistor
- เขียงหั่นขนม
- สายเชื่อมต่อ
แนวคิดการทำงาน
แนวคิดที่อยู่เบื้องหลังเครื่องจ่ายน้ำอัตโนมัติเป็นเรื่องง่ายมาก เราจะใช้เซนเซอร์อัลตราซาวด์ HCSR04เพื่อตรวจสอบว่าวัตถุใด ๆ ที่วางแก้วไว้ก่อนเครื่องจ่าย วาล์วขดลวดแม่เหล็กไฟฟ้าจะถูกนำมาใช้เพื่อควบคุมการไหลของน้ำซึ่งเมื่อพลังงานน้ำจะไหลออกและเมื่อ de-energized น้ำจะหยุด ดังนั้นเราจะเขียนโปรแกรม Arduino ซึ่งจะตรวจสอบว่ามีวัตถุใดอยู่ใกล้ก๊อกหรือไม่ถ้าใช่แล้วขดลวดแม่เหล็กไฟฟ้าจะเปิดขึ้นและรอจนกว่าวัตถุจะถูกลบออกทันทีที่วัตถุถูกเอาออกขดลวดแม่เหล็กไฟฟ้าจะปิดลงโดยอัตโนมัติดังนั้นจึงปิด อุปทานของน้ำ เรียนรู้เพิ่มเติมเกี่ยวกับการใช้เซ็นเซอร์อัลตราโซนิกกับ Arduino ที่นี่
แผนภูมิวงจรรวม
แผนผังวงจรที่สมบูรณ์สำหรับเครื่องจ่ายน้ำแบบ Arduinoมีดังต่อไปนี้
วาล์วขดลวดแม่เหล็กไฟฟ้าที่ใช้ในโครงการนี้คือวาล์ว 12V ที่มีกระแสไฟสูงสุดที่ 1.2A และมีกระแสไฟฟ้าอย่างต่อเนื่องที่ 700mAนั่นคือเมื่อเปิดวาล์วมันจะกินประมาณ 700mA เพื่อให้วาล์วเปิดอยู่ ดังที่เราทราบ Arduino เป็นคณะกรรมการพัฒนาการที่ทำงานร่วมกับ 5V และด้วยเหตุนี้เราจำเป็นต้องมีวงจรควบคุมการสลับสำหรับ Solenoidเพื่อเปิดและปิด
อุปกรณ์สวิตชิ่งที่ใช้ในโครงการนี้เป็นIRF540N N-Channel MOSFET มี 3 ขาเกต, แหล่งที่มาและท่อระบายน้ำจากขา 1 ตามลำดับดังที่แสดงในแผนภาพวงจรขั้วบวกของขดลวดแม่เหล็กไฟฟ้าจะขับเคลื่อนด้วยพิน Vin ของ Arduino เนื่องจากเราจะใช้อะแดปเตอร์ขนาด 12V เพื่อจ่ายพลังงานให้กับ Arduino และ Pin Vin จะส่งออก 12V ซึ่งสามารถใช้ควบคุม Solenoid ได้ ขั้วบวกขั้วลบของขดลวดแม่เหล็กไฟฟ้าเชื่อมต่อกับพื้นดินผ่านหมุด Source และ Drain ของ MOSFET ดังนั้นขดลวดแม่เหล็กไฟฟ้าจะถูกขับเคลื่อนเฉพาะเมื่อ MOSFET เปิดอยู่เท่านั้น
ขาประตูของ MOSFET ใช้เพื่อเปิดหรือปิด มันจะยังคงปิดถ้าขาประตูเป็นสายดินและจะเปิดถ้าแรงดันประตูมีการใช้ เพื่อป้องกันไม่ให้ MOSFET ดับเมื่อไม่ใช้แรงดันไฟฟ้ากับสลักเกลียวขายึดประตูจะถูกดึงลงสู่พื้นแม้ว่าจะมีตัวต้านทาน 10k ขา Arduino 12 ใช้เพื่อเปิดหรือปิด MOSFET ดังนั้นขา D12 จะเชื่อมต่อกับขาประตูผ่านตัวต้านทาน 1K ตัวต้านทานแบบ 1K นี้ถูกใช้เพื่อวัตถุประสงค์ในการ จำกัด กระแส
อัลตราโซนิคเซนเซอร์ขับเคลื่อนโดย + 5V และหมุดล่างของ Arduino Echoและทริกเกอร์ขาเชื่อมต่อกับขา 8 ขาและ 9 ตามลำดับ จากนั้นเราสามารถโปรแกรม Arduino ใช้ Ultrasonic sensor เพื่อวัดระยะทางและเปิด MOSFET เมื่อวัตถุถูกตรวจพบ วงจรทั้งหมดเป็นเรื่องง่ายและด้วยเหตุนี้จึงสามารถสร้างที่ด้านบนของกระดานทำบอร์ดได้อย่างง่ายดาย เหมืองมองข้างล่างนี้หลังจากทำการเชื่อมต่อ
การเขียนโปรแกรม Arduino Board
สำหรับโครงการนี้เราจะต้องเขียนโปรแกรมที่ใช้เซ็นเซอร์อัลตราซาวด์ HCSR-04 เพื่อวัดระยะทางของวัตถุที่อยู่ข้างหน้า เมื่อระยะทางน้อยกว่า 10 ซม. เราต้องเปิด MOSFET และอื่น ๆ เราต้องปิด MOSFET เราจะใช้ LED บนเมนที่เชื่อมต่อกับขา 13 และสลับไปมาพร้อมกับ MOSFET เพื่อให้เราสามารถตรวจสอบได้ว่า MOSFET อยู่ในสถานะเปิดหรือปิดอยู่ โปรแกรมที่สมบูรณ์จะทำเช่นเดียวกันจะได้รับในตอนท้ายของหน้านี้ ด้านล่างนี้ฉันได้อธิบายโปรแกรมโดยการแบ่งออกเป็นตัวอย่างที่มีความหมายขนาดเล็ก
โปรแกรมจะเริ่มต้นด้วยคำนิยามแมโคร เรามีทริกเกอร์และecho pin สำหรับ Ultrasonic sensor และขาประตู MOSFET และ LED เป็น I / O สำหรับ Arduino ของเรา ดังนั้นเราจึงได้กำหนดให้ pin เหล่านี้จะเชื่อมต่ออยู่ ในฮาร์ดแวร์ของเราที่เรามีการเชื่อมต่อเสียงสะท้อนและทริกเกอร์ขาถึง 8 และ 9 THขาดิจิตอลตามลำดับ จากนั้นขา MOSFET จะเชื่อมต่อกับขา 12 และไฟ LED แบบออนบอร์ดโดยค่าเริ่มต้นจะเชื่อมต่อกับขา 13 เรากำหนดเหมือนกันโดยใช้บรรทัดต่อไปนี้
#define trigger 9 #define echo 8 #define LED 13 # กำหนด MOSFET 12
ภายในติดตั้งฟังก์ชั่นที่เราประกาศซึ่งหมุดเป็นอินพุทและเอาท์พุทที่มี ในฮาร์ดแวร์ของเราเท่านั้นขาEchoของ Ultrasonic (US) เป็นขาเข้าขาและส่วนที่เหลือทั้งหมดเป็นขาออก ดังนั้นเราจึงใช้ฟังก์ชันpinModeของ Arduino เพื่อระบุข้อมูลดังที่แสดงด้านล่าง
pinMode (ไก OUTPUT); pinMode (ก้อง INPUT); pinMode (LED, OUTPUT); pinMode (MOSFET, OUTPUT);
ภายในฟังก์ชันลูปหลักเราเรียกใช้ฟังก์ชันที่เรียกว่าmeasure_distance () ฟังก์ชั่นนี้ใช้เซ็นเซอร์สหรัฐในการวัดระยะทางของวัตถุในด้านหน้าของมันและการปรับปรุงค่าของตัวแปรทางไกล ' เมื่อต้องการวัดระยะทางโดยใช้เซ็นเซอร์ของสหรัฐฯขาพิ้นท์จะต้องถูกจัดให้อยู่ในระดับต่ำเป็นเวลาสองวินาทีต่อวินาทีจากนั้นให้จับไว้สูงเป็นเวลาสิบไมโครวินาทีและตรึงไว้ต่ำอีกสองวินาที วิธีนี้จะส่งเสียงสัญญาณอัลตราซาวด์ออกสู่อากาศซึ่งจะสะท้อนจากวัตถุที่อยู่ข้างหน้าและขาสะท้อนจะรับสัญญาณที่สะท้อนออกมา จากนั้นเราจะใช้เวลาในการคำนวณระยะทางของวัตถุที่อยู่ข้างหน้าเซ็นเซอร์ ถ้าคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่อ HC-SR04 Ultrasonic sensor กับ Arduinoให้อ่านแม้ว่าจะมีลิงค์ โปรแกรมคำนวณระยะทางคือให้ด้านล่าง
digitalWrite (ไกต่ำ); delayMicroseconds (2); digitalWrite (ไก HIGH); delayMicroseconds (10); digitalWrite (ไกต่ำ); delayMicroseconds (2); เวลา = pulseIn (ก้อง HIGH); ระยะเวลา = * 340/20000;
เมื่อมีการคำนวณระยะทางแล้วเราจะต้องเปรียบเทียบค่าของระยะทางโดยใช้คำสั่งง่ายๆถ้าหากค่าน้อยกว่า 10 ซม. เราจะทำให้ MOSFET และ LED ไปสูงในคำสั่งelse อื่นที่เราทำ MOSFET และ LED เพื่อไป ต่ำ. โปรแกรมที่จะทำเช่นเดียวกันจะแสดงด้านล่าง
ถ้า (ระยะทาง <10) { digitalWrite (LED, HIGH); digitalWrite (MOSFET, HIGH); } else { DigitalWrite (LED, LOW); digitalWrite (MOSFET, LOW); }
การทำงานของเครื่องจ่ายน้ำอัตโนมัติ
ทำการเชื่อมต่อตามที่แสดงในวงจรและอัปโหลดโปรแกรมด้านล่างที่กำหนดลงในบอร์ด Arduino ของคุณ จัดให้ง่ายเพื่อเชื่อมต่อวาล์วขดลวดแม่เหล็กไฟฟ้ากับช่องรับน้ำและเปิดเครื่องโดยใช้อะแดปเตอร์ 12V เข้ากับเต้าเสียบ DC ของบอร์ด Arduino ตรวจสอบให้แน่ใจว่าไฟ LED บนตัวเครื่องปิดอยู่ซึ่งจะทำให้แน่ใจได้ว่า Solenoid ยังปิดอยู่ การตั้งค่าที่ฉันได้ทำเพื่อแสดงให้เห็นโครงการดังที่แสดงด้านล่าง
ที่คุณสามารถดูฉันได้วางเซ็นเซอร์ Ultrasonic โดยตรงด้านล่างวาล์วขดลวดแม่เหล็กไฟฟ้าเช่นว่าเมื่อกระจก / แก้ววางอยู่ด้านล่าง Solenoid จะได้รับตรงข้ามกับเซ็นเซอร์อัลตราโซนิก วัตถุนี้จะได้รับการตรวจจับด้วยเซ็นเซอร์อัลตราโซนิคและ MOSFET พร้อมกับ LED จะเปิดขึ้นจึงทำให้ขดลวดแม่เหล็กไฟฟ้าเปิดขึ้นและน้ำไหลลง
ในทำนองเดียวกันเมื่อแก้วถูกลบเซ็นเซอร์อัลตราโซนิกบอกกับ Arduino ไม่มีกระจกอยู่ด้านหน้าของมันและทำให้ Arduino ปิดวาล์วการทำงานที่สมบูรณ์ของโครงการสามารถพบได้ในวิดีโอด้านล่าง หากคุณมีข้อสงสัยในการทำงานนี้ให้โพสต์ไว้ในส่วนความคิดเห็นหรือใช้ฟอรัมเพื่อขอความช่วยเหลือทางเทคนิค
คำเตือน: วาล์ว Solenoid ต่างๆมีแรงดันไฟฟ้าและแรงกระแทกในการทำงานที่แตกต่างกันตรวจสอบให้แน่ใจว่าขดลวดแม่เหล็กไฟฟ้าของคุณทำงานบน 12V และใช้พลังงานไม่เกิน 1.5A
รหัส
#define trigger 9
#define echo 8
#define LED 13
# กำหนด MOSFET 12
#define echo 8
#define LED 13
# กำหนด MOSFET 12
float time = 0, ระยะทาง = 0;
การตั้งค่าเป็นโมฆะ ()
{
Serial.begin (9600);
pinMode (ไก OUTPUT);
pinMode (ก้อง INPUT);
pinMode (LED, OUTPUT);
pinMode (MOSFET, OUTPUT);
pinMode (ก้อง INPUT);
pinMode (LED, OUTPUT);
pinMode (MOSFET, OUTPUT);
ล่าช้า (2000);
}
void loop ()
{
measure_distance ();
}
void loop ()
{
measure_distance ();
ถ้า (ระยะทาง <10)
{
digitalWrite (LED, HIGH); digitalWrite (MOSFET, HIGH);
}
else
{
DigitalWrite (LED, LOW); digitalWrite (MOSFET, LOW);
}
{
digitalWrite (LED, HIGH); digitalWrite (MOSFET, HIGH);
}
else
{
DigitalWrite (LED, LOW); digitalWrite (MOSFET, LOW);
}
ล่าช้า (500);
}
}
โมฆะ measure_distance ()
{
digitalWrite (เรียก, ต่ำ);
delayMicroseconds (2);
digitalWrite (ไก HIGH);
delayMicroseconds (10);
digitalWrite (ไกต่ำ);
delayMicroseconds (2);
เวลา = pulseIn (ก้อง HIGH);
ระยะเวลา = * 340/20000;
}
{
digitalWrite (เรียก, ต่ำ);
delayMicroseconds (2);
digitalWrite (ไก HIGH);
delayMicroseconds (10);
digitalWrite (ไกต่ำ);
delayMicroseconds (2);
เวลา = pulseIn (ก้อง HIGH);
ระยะเวลา = * 340/20000;
}
วีดีโอ
สอบถามข้อมูลเพิ่มเติมได้ทางไหนอีกคะ
ตอบลบสวัสดีค่ะ สอบถามเพิ่มเติมได้ทางไหนบ้างคะ
ตอบลบ