ในบทความนี้พ่อมดจะบอกเราถึงวิธีการสร้างระบบสำหรับตรวจสอบและควบคุมระดับน้ำในถัง มันเป็นระบบที่ง่ายและเชื่อถือได้
คุณสมบัติที่สำคัญมีดังนี้:
ตรวจสอบระดับน้ำแบบเรียลไทม์
ปั๊มเปิด / ปิดอัตโนมัติ
การหยุดฉุกเฉินของปั๊ม
เครื่องมือและวัสดุ:
-Arduino โปรมินิ
- เซ็นเซอร์อัลตราโซนิค HC-SR04;
- โมดูล MAX485;
- โมดูล LCD i2c;
จอแอลซีดี 1602;
- ไมโครคอนโทรลเลอร์ ATTINY45 / 85;
- เครื่องปรับแรงดันไฟฟ้า LM7805;
ทรานซิสเตอร์ NPN (2n3904);
- ช่องทาง MOSFET IRFD024PBF
ไดโอด 1N4007;
ขั้วต่อ 5 ขา
คอนเนคเตอร์ 4 ขา
ตัวเชื่อมต่อ -2 พิน
- ขั้วต่อที่มี 2 หน้าสัมผัส (สีน้ำเงิน) - 2 ชิ้น;
- เทอร์มินัล 2 รายชื่อ (สีเขียว);
แจ็ค DC (- 2 ชิ้น)
- แจ็คเสียง (ชาย / หญิง) - 2 ชิ้น;
- ตัวต้านทาน 1 kOhm;
- ตัวต้านทาน 10 kOhm - 3 ชิ้น;
- ตัวเก็บประจุ 100 nF - 3 ชิ้น;
ตัวเก็บประจุ 100 uF
- ปุ่ม SMD, 6x3.5mm;
-DIP สวิตช์ (SPST 2) - 2 ชิ้น;
- ปุ่มเพาเวอร์;
-Tumbler;
-12V รีเลย์ DC;
- คอนแทครีเลย์
- แหล่งจ่ายไฟ DC 5 V (> 200 mA);
- แหล่งจ่ายไฟ DC 12V (> 500 mA);
- กล่องสำหรับขนาดที่เหมาะสม
-Krepezh;
- อุปกรณ์เสริมสำหรับทิ้ง;
- ไขควง
seeing-;
ขั้นตอนที่หนึ่ง: หน่วยเซ็นเซอร์
หน่วยนี้วัดระดับน้ำและส่งข้อมูลไปยังตัวควบคุมหลัก มีเซ็นเซอร์สองตัวสำหรับวัดระดับน้ำ หนึ่งคือเซ็นเซอร์ตรวจวัดระยะทางอัลตราโซนิก HC-SR04 สกรูยาวอีกสองตัวยื่นออกมาด้านนอกดังที่แสดงในภาพ
ในการติดตั้งเซ็นเซอร์คุณต้องทำตามขั้นตอนต่อไปนี้:
วาง transducer ล้ำเสียงคว่ำหน้าของฝาครอบใกล้ด้านบนและทำเครื่องหมายสองหลุมสำหรับเครื่องส่งสัญญาณและตัวรับสัญญาณอัลตราโซนิก
ตัดรูและติดตั้งเซ็นเซอร์ด้วยกาวร้อน
จากนั้นเจาะสองรูที่มีเส้นผ่านศูนย์กลาง 3 มม. มีช่องว่าง 2-3 ซม. ที่กึ่งกลางของฝาครอบ
ใส่สลักเกลียว M3 แบบยาวโดยที่ขั้วลวดจะถูกหนีบระหว่างตัวล้างสองตัวที่ด้านหลังของฝาปิดและขันน็อต M3 อีกด้านหนึ่งให้แน่น
หน่วยเซ็นเซอร์ใช้ ATTINY45 เป็นไมโครคอนโทรลเลอร์หลัก ตามที่กล่าวไว้ก่อนหน้านี้ HC-SR04 ใช้สำหรับวัดระดับน้ำ มันทำงานได้โดยการวัดระยะทางจากด้านบนของถัง
นอกจากนี้ยังมีการควบคุมโดยใช้สลักเกลียวสองตัวในวงจรซึ่งติดตั้งทรานซิสเตอร์ ไมโครคอนโทรลเลอร์อ่านข้อมูลจากเซ็นเซอร์ทั้งสองและส่งข้อมูลไปยัง Arduino ที่ติดตั้งในชุดควบคุม
ก่อนอื่นนายต้องการส่งข้อมูลผ่านโมดูล RF-12 แต่ช่วงของโมดูลเหล่านี้ไม่ตรงกับข้อกำหนดตัวช่วยสร้างนั้นใช้ตัวแปลง MAX485 TTL เป็นตัวแปลง RS485 และทำไรเซอร์ขนาดเล็กเพื่อติดตั้งแทนโมดูล HC-12
สามารถดาวน์โหลดโครงการและลิงค์ไปยังบอร์ดได้ ตามที่อยู่นี้.
การติดตั้งมีดังนี้:
HC-SR04 ไปยังวงจรหลัก:
Vcc - 5V (CN1)
หนุน - trigPin (CN1)
echo - echoPin (CN1)
Gnd - GND (CN1)
M3 สลักเกลียวกับวงจรหลัก:
Bolt 1 - 5 V (CN1)
โบลต์ 2 - 100 (CN1)
โมดูล MAX485 (TX):
VCC - 5V (ตัวเชื่อมต่อ HC-12)
เอ - แจ็คเสียงขนาด 1/4 นิ้ว
B - แจ็คเสียงขนาด 1/4 นิ้ว
GND - GND (ตัวเชื่อมต่อ HC-12)
R0 - RX (ตัวเชื่อมต่อ HC-12)
RE - VCC (MAX485) หรือ 5V
DE - RE (ย่อมาจาก RE และ DE)
DI - TX (ตัวเชื่อมต่อ HC-12)
แจ็ค DC (ขั้วต่อ P1):
เคล็ดลับ - 5V
ปลอก - GND
ขั้นตอนที่สอง: คอนโทรลเลอร์
การทำงานของคอนโทรลเลอร์นั้นง่าย Arduino ใช้เป็นตัวควบคุมหลัก รับข้อมูลเซ็นเซอร์ที่ส่งจากบอร์ดตัวส่งสัญญาณผ่านโมดูล max485 มีหน้าจอ LCD 1602 ที่แสดงระดับน้ำปัจจุบันและการทำงานของปั๊ม มันใช้รีเลย์ 12 V เป็นสวิตช์เพื่อเปิดคอนแทคเตอร์รีเลย์ มันมีสองสวิตช์หนึ่งสำหรับแบ็คไลท์ LCD และหนึ่งสำหรับการเปิด / ปิดเครื่องสูบน้ำฉุกเฉิน
ลิงค์ไปยังแผนภาพวงจรและการออกแบบแผงวงจรพิมพ์สำหรับเครื่องส่งสัญญาณและตัวรับสัญญาณอยู่ ที่นี่.
โมดูลจอแอลซีดี i2c เชื่อมโดยตรงกับจอแอลซีดี 1602 จัมเปอร์แบ็คไลท์บนโมดูล i2c เชื่อมต่อกับสวิตช์เปิด / ปิด ปุ่มฉุกเฉิน (ใหญ่) เชื่อมต่อกับวงจรหลักผ่านตัวเชื่อมต่อ P4
โมดูล I2c LCD ไปยังวงจรหลัก (CN4):
GND - CN4-1 (GND1)
VCC - CN4-2 (5V)
SCL - CN4-3 (A5)
SDA - CN4-4 (A4)
การเชื่อมต่อคอนแทคคอนแทค:
A1 - 230 VAC1 (ศูนย์)
A2 - NO (หน้าสัมผัสรีเลย์)
S1 - 230 VAC1 (ศูนย์)
S2 - 230 VAC2 (เฟส)
L1 - ลวดมอเตอร์ปั๊ม 1
L2 - สายมอเตอร์ปั๊ม 2
เชื่อมต่อหน้าสัมผัสรีเลย์ COM กับ 230 VAC2 (บรรทัด)
ขั้นตอนที่สาม: ซอฟต์แวร์และการเขียนโปรแกรม
ตอนนี้คุณต้องตั้งโปรแกรมคอนโทรลเลอร์บนอุปกรณ์ทั้งสอง
ในการดาวน์โหลดรหัสไปที่ ATTINY45 จะดาวน์โหลดไลบรารี SoftwareSerial.h
ในฟังก์ชั่นวนรอบ
> ตรวจสอบก่อนว่าถังเต็มหรือไม่
> หากเต็มแล้วจะส่ง "255"
> หากยังไม่เต็มจะตรวจสอบระดับน้ำด้วยเซ็นเซอร์เสียงอัลตราโซนิกและส่งข้อมูลผ่านการสื่อสารแบบอนุกรม
โปรแกรมนี้ใช้ฟังก์ชั่นย่อย getwtrLvl () เพื่อรับระดับน้ำปัจจุบัน อย่างแรกคือทำการวัดเวลาที่เซ็นเซอร์ใช้ในการรับและส่งคลื่นอัลตราโซนิก จากนั้นเวลาจะถูกแปลงเป็นระยะทางโดยใช้ความเร็วของเสียง
dist = pulseIn (echoPin, HIGH); // เวลาที่ใช้โดยคลื่นเสียง
dist = dist / 28/2; // แปลเวลาเป็นระยะทางเป็นเซนติเมตร
dist = dist * 1.25; // ที่นี่ 1.25 เป็นปัจจัยแก้ไขเพื่อแก้ไขข้อผิดพลาดในการวัด
กลับ dist // ส่งคืนระยะทางไปยังฟังก์ชันการโทร
ตอนนี้สำหรับ Arduino
ในฟังก์ชั่นวน:
> ขั้นแรกมีการตรวจสอบว่ากดปุ่มฉุกเฉินหรือไม่
> ตรวจสอบเซ็นเซอร์ ส่วนหนึ่งของโปรแกรมตรวจสอบข้อผิดพลาดของเซ็นเซอร์ เช่นหากข้อมูลที่ได้รับไม่ถูกต้อง (<= 1) 5 ครั้งจากนั้นหน้าจอจะแสดงข้อผิดพลาดของเซ็นเซอร์และปั๊มปิดตัวลง
> ส่วนถัดไปจะแสดงระดับน้ำในปัจจุบันและให้คำสั่งสำหรับปั๊ม 1 หากระดับน้ำมีขนาดเล็กหรือ 0 ถ้าเป็น 100% (เต็ม)
โปรแกรมนี้ใช้สองหน้าที่ย่อย updtMotor () และ getWaterLvl () ฟังก์ชั่น updtMotor () แสดงการทำงานของปั๊มบนจอ LCD และส่งสัญญาณไปยังรีเลย์
ฟังก์ชัน getWaterLvl ตรวจสอบก่อนว่ามีข้อผิดพลาดในการเชื่อมต่อหรือไม่ หากการเชื่อมต่อระหว่างตัวส่งและตัวรับไม่ได้ถูกสร้างขึ้นในช่วงเวลาที่รอ (3000 ms) มันแสดงให้เห็นข้อผิดพลาดเซ็นเซอร์และปิดปั๊ม
เมื่อการเชื่อมต่อถูกกู้คืนการดำเนินการจะดำเนินต่อ
ทุกอย่างพร้อมแล้วขอบคุณอาจารย์สำหรับสิ่งที่น่าสนใจ ทำที่บ้าน.