ตัวบ่งชี้ระดับน้ำไร้สายอัลตราโซนิก - พลังงานแสงอาทิตย์

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





เครื่องควบคุมระดับน้ำอัลตราโซนิกเป็นอุปกรณ์ที่สามารถตรวจจับระดับน้ำในถังโดยไม่ต้องสัมผัสทางกายภาพและส่งข้อมูลไปยังไฟ LED ที่อยู่ห่างไกลในโหมด GSM ไร้สาย

ในโพสต์นี้เราจะสร้างตัวบ่งชี้ระดับน้ำไร้สายพลังงานแสงอาทิตย์ที่ใช้อัลตราโซนิกโดยใช้ Arduino ซึ่ง Arduinos จะส่งและรับที่ความถี่ไร้สาย 2.4 GHz เราจะตรวจจับระดับน้ำในถังโดยใช้อัลตราโซนิกส์แทนวิธีอิเล็กโทรดแบบเดิม



ภาพรวม

ตัวบ่งชี้ระดับน้ำเป็นอุปกรณ์ที่ต้องมีหากคุณเป็นเจ้าของบ้านหรือแม้แต่อาศัยอยู่ในบ้านเช่า ก ตัวบ่งชี้ระดับน้ำ แสดงข้อมูลสำคัญอย่างหนึ่งสำหรับบ้านของคุณซึ่งมีความสำคัญพอ ๆ กับการอ่านมิเตอร์พลังงานของคุณนั่นคือปริมาณน้ำที่เหลือ? เพื่อให้เราสามารถติดตามปริมาณการใช้น้ำและเราไม่จำเป็นต้องปีนขึ้นไปชั้นบนเพื่อเข้าถึงถังเก็บน้ำเพื่อตรวจสอบปริมาณน้ำที่เหลือและไม่ต้องหยุดการใช้น้ำอย่างกะทันหันอีกต่อไป

เราอยู่ในปี 2018 (ในขณะที่เขียนบทความนี้) หรือหลังจากนั้นเราสามารถสื่อสารไปยังทุกที่ในโลกได้ทันทีเราเปิดตัวรถแข่งไฟฟ้าไปยังอวกาศเราเปิดตัวดาวเทียมและโรเวอร์ไปยังดาวอังคารเรายังสามารถลงจอดได้ สิ่งมีชีวิตบนดวงจันทร์ยังไม่มีผลิตภัณฑ์เชิงพาณิชย์ที่เหมาะสมในการตรวจจับปริมาณน้ำที่เหลืออยู่ในถังเก็บน้ำของเรา?



เราสามารถพบตัวชี้วัดระดับน้ำที่จัดทำโดยนักเรียนชั้นประถมศึกษาปีที่ 5 สำหรับงานมหกรรมวิทยาศาสตร์ที่โรงเรียน โครงการง่ายๆเช่นนี้ไม่ได้เกิดขึ้นในชีวิตประจำวันของเราได้อย่างไร คำตอบคือตัวชี้วัดระดับถังเก็บน้ำไม่ใช่โครงการง่ายๆที่นักเรียนระดับประถมศึกษาปีที่ 5 สามารถสร้างขึ้นมาเพื่อบ้านของเราได้ มีมากมาย ข้อควรพิจารณาในทางปฏิบัติ ก่อนที่เราจะออกแบบ

•ไม่มีใครต้องการเจาะรูบนตัวถังน้ำเพื่อหาขั้วไฟฟ้าซึ่งอาจทำให้น้ำรั่วในภายหลัง
•ไม่มีใครอยากใช้สายไฟ 230/120 VAC ใกล้ถังน้ำ
•ไม่มีใครอยากเปลี่ยนแบตเตอรี่ทุกเดือน
•ไม่มีใครอยากต่อสายไฟยาวเพิ่มเติมที่แขวนอยู่บนห้องเพื่อบอกระดับน้ำเนื่องจากไม่ได้มีการวางแผนไว้ล่วงหน้าในขณะสร้างบ้าน
•ไม่มีใครต้องการใช้น้ำที่ผสมกับการกัดกร่อนโลหะของอิเล็กโทรด
•ไม่มีใครต้องการลบการตั้งค่าตัวบ่งชี้ระดับน้ำขณะทำความสะอาดถัง (ด้านใน)

เหตุผลบางประการที่กล่าวมาข้างต้นอาจดูไร้สาระ แต่คุณจะพบว่าผลิตภัณฑ์ที่วางจำหน่ายทั่วไปไม่ค่อยพอใจกับข้อเสียเหล่านี้ นั่นเป็นสาเหตุที่การแพร่หลายของผลิตภัณฑ์เหล่านี้น้อยลงมากในครัวเรือนทั่วไป *
* ในตลาดอินเดีย

หลังจากพิจารณาประเด็นสำคัญเหล่านี้แล้วเราได้ออกแบบตัวบ่งชี้ระดับน้ำที่ใช้งานได้จริงซึ่งควรลบข้อเสียที่กล่าวถึง

การออกแบบของเรา:

•ใช้เซ็นเซอร์อัลตราโซนิกในการวัดระดับน้ำจึงไม่มีปัญหาการกัดกร่อน
•การแสดงระดับน้ำแบบเรียลไทม์แบบไร้สายที่ 2.4 GHz
•สัญญาณไร้สายมีความแรงเพียงพอสำหรับอาคารสูง 2 ชั้น
•พลังงานแสงอาทิตย์ไม่ต้องใช้ไฟ AC อีกต่อไปหรือเปลี่ยนแบตเตอรี่
•สัญญาณเตือนถังเต็ม / ล้นขณะเติมน้ำมันเต็มถัง

มาตรวจสอบรายละเอียดวงจร:

เครื่องส่ง:

วงจรเครื่องส่งสัญญาณไร้สาย ซึ่งวางอยู่บนถังจะส่งข้อมูลระดับน้ำทุกๆ 5 วินาทีตลอด 24 ชั่วโมงทุกวัน เครื่องส่งประกอบด้วย Arduino nano, เซ็นเซอร์อัลตราโซนิก HC-SR04, โมดูล nRF24L01 ซึ่งจะเชื่อมต่อเครื่องส่งและตัวรับแบบไร้สายที่ 2.4 GHz

แผงโซลาร์เซลล์ขนาด 9 V ถึง 12 V ที่มีเอาต์พุตกระแส 300mA จะให้พลังงานแก่วงจรเครื่องส่งสัญญาณ แผงวงจรการจัดการแบตเตอรี่จะทำการชาร์จแบตเตอรี่ Li-ion เพื่อให้เราสามารถตรวจสอบระดับน้ำได้แม้ว่าจะไม่มีแสงแดดก็ตาม

ให้เราสำรวจวิธีการวางเซ็นเซอร์อัลตราโซนิกที่ถังเก็บน้ำ:

โปรดทราบว่าคุณต้องใช้ความคิดสร้างสรรค์ในการสร้างวงจรและป้องกันไม่ให้ฝนตกและแสงแดดโดยตรง

ตัดรูเล็ก ๆ เหนือฝาถังเพื่อวางเซ็นเซอร์อัลตราโซนิกและปิดผนึกด้วยกาวบางชนิดที่คุณหาได้

วางเซ็นเซอร์อัลตราโซนิกไว้ในถังน้ำ

ตอนนี้วัดความสูงเต็มของถังจากล่างถึงฝาเขียนเป็นเมตร ตอนนี้วัดความสูงของความสามารถในการกักเก็บน้ำของถังตามที่แสดงในภาพด้านบนและเขียนเป็นเมตร
คุณต้องป้อนสองค่านี้ในโค้ด

แผนผังของเครื่องส่งสัญญาณ:

การเชื่อมต่อเครื่องส่งสัญญาณอัลตราโซนิกสำหรับการควบคุมระดับน้ำ

หมายเหตุ: nRF24L01 ใช้ 3.3V เนื่องจาก Vcc ไม่เชื่อมต่อกับเอาต์พุต 5V ของ Arduino

แหล่งจ่ายไฟสำหรับเครื่องส่ง:

การออกแบบแหล่งจ่ายไฟควบคุมระดับน้ำอัลตราโซนิก

ตรวจสอบให้แน่ใจว่ากำลังขับของแผงโซลาร์เซลล์เช่นเอาท์พุท (กระแสโวลต์ x) มากกว่า 3 วัตต์ แผงเซลล์แสงอาทิตย์ ควรเป็น 9V ถึง 12V

แนะนำให้ใช้แผง 12V และ 300mA ซึ่งคุณสามารถหาซื้อได้ง่ายในตลาด แบตเตอรี่ควรอยู่ที่ประมาณ 3.7V 1000 mAh

โมดูลชาร์จ Li-ion 5V 18650:

ภาพต่อไปนี้แสดงมาตรฐาน วงจรชาร์จ 18650

อินพุตสามารถเป็น USB (ไม่ได้ใช้) หรือ 5V ภายนอกจาก LM7805 IC ตรวจสอบให้แน่ใจว่าคุณได้รับโมดูลที่ถูกต้องตามที่แสดงไว้ด้านบนซึ่งควรมี TP4056 การป้องกันซึ่งมีการตัดแบตเตอรี่ต่ำและการป้องกันไฟฟ้าลัดวงจร

เอาต์พุตของสิ่งนี้ควรป้อนให้กับอินพุตของ XL6009 ซึ่งจะเพิ่มแรงดันไฟฟ้าให้สูงขึ้นโดยใช้เอาต์พุตของสกรูไดรเวอร์ขนาดเล็กที่ XL6009 ควรปรับเป็น 9V สำหรับ Arduino

ภาพประกอบของ XL6009 DC to DC boost converter:

นั่นเป็นการสรุปฮาร์ดแวร์ของเครื่องส่งสัญญาณ

รหัสสำหรับเครื่องส่ง:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
const byte address[6] = '00001'
const int trigger = 3
const int echo = 2
const char text_0[] = 'STOP'
const char text_1[] = 'FULL'
const char text_2[] = '3/4'
const char text_3[] = 'HALF'
const char text_4[] = 'LOW'
float full = 0
float three_fourth = 0
float half = 0
float quarter = 0
long Time
float distanceCM = 0
float distanceM = 0
float resultCM = 0
float resultM = 0
float actual_distance = 0
float compensation_distance = 0
// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //
void setup()
{
Serial.begin(9600)
pinMode(trigger, OUTPUT)
pinMode(echo, INPUT)
digitalWrite(trigger, LOW)
radio.begin()
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
full = water_hold_capacity
three_fourth = water_hold_capacity * 0.75
half = water_hold_capacity * 0.50
quarter = water_hold_capacity * 0.25
}
void loop()
{
delay(5000)
digitalWrite(trigger, HIGH)
delayMicroseconds(10)
digitalWrite(trigger, LOW)
Time = pulseIn(echo, HIGH)
distanceCM = Time * 0.034
resultCM = distanceCM / 2
resultM = resultCM / 100
Serial.print('Normal Distance: ')
Serial.print(resultM)
Serial.println(' M')
compensation_distance = full_height - water_hold_capacity
actual_distance = resultM - compensation_distance
actual_distance = water_hold_capacity - actual_distance
if (actual_distance <0)
{
Serial.print('Water Level:')
Serial.println(' 0.00 M (UP)')
}
else
{
Serial.print('Water Level: ')
Serial.print(actual_distance)
Serial.println(' M (UP)')
}
Serial.println('============================')
if (actual_distance >= full)
{
radio.write(&text_0, sizeof(text_0))
}
if (actual_distance > three_fourth && actual_distance <= full)
{
radio.write(&text_1, sizeof(text_1))
}
if (actual_distance > half && actual_distance <= three_fourth)
{
radio.write(&text_2, sizeof(text_2))
}
if (actual_distance > quarter && actual_distance <= half)
{
radio.write(&text_3, sizeof(text_3))
}
if (actual_distance <= quarter)
{
radio.write(&text_4, sizeof(text_4))
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

เปลี่ยนค่าต่อไปนี้ในรหัสที่คุณวัด:

// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //

นั่นสรุปเครื่องส่ง

ผู้รับ:

วงจรควบคุมตัวรับระดับน้ำอัลตราโซนิก

เครื่องรับสามารถแสดงได้ 5 ระดับ สัญญาณเตือนเมื่อถังถึงขีดความสามารถในการกักเก็บน้ำสูงสุดขณะเติมถัง 100 ถึง 75% - ไฟ LED ทั้งสี่ดวงจะเรืองแสง, ไฟ LED สามดวง 75 ถึง 50% จะเรืองแสง, ไฟ LED สองดวง 50 ถึง 25% จะเรืองแสง, 25% และ LED น้อยกว่าหนึ่งดวงจะเรืองแสง
เครื่องรับสามารถใช้พลังงานจากแบตเตอรี่ 9V หรือจาก ที่ชาร์จสมาร์ทโฟนเป็น USB สาย mini-B

รหัสสำหรับผู้รับ:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
int i = 0
const byte address[6] = '00001'
const int buzzer = 6
const int LED_full = 5
const int LED_three_fourth = 4
const int LED_half = 3
const int LED_quarter = 2
char text[32] = ''
void setup()
{
pinMode(buzzer, OUTPUT)
pinMode(LED_full, OUTPUT)
pinMode(LED_three_fourth, OUTPUT)
pinMode(LED_half, OUTPUT)
pinMode(LED_quarter, OUTPUT)
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
digitalWrite(LED_full, HIGH)
delay(300)
digitalWrite(LED_three_fourth, HIGH)
delay(300)
digitalWrite(LED_half, HIGH)
delay(300)
digitalWrite(LED_quarter, HIGH)
delay(300)
digitalWrite(LED_full, LOW)
delay(300)
digitalWrite(LED_three_fourth, LOW)
delay(300)
digitalWrite(LED_half, LOW)
delay(300)
digitalWrite(LED_quarter, LOW)
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
}
void loop()
{
if (radio.available())
{
radio.read(&text, sizeof(text))
Serial.println(text)
if (text[0] == 'S' && text[1] == 'T' && text[2] == 'O' && text[3] == 'P')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
for (i = 0 i <50 i++)
{
digitalWrite(buzzer, HIGH)
delay(50)
digitalWrite(buzzer, LOW)
delay(50)
}
}
if (text[0] == 'F' && text[1] == 'U' && text[2] == 'L' && text[3] == 'L')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == '3' && text[1] == '/' && text[2] == '4')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'H' && text [1] == 'A' && text[2] == 'L' && text[3] == 'F')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'L' && text[1] == 'O' && text[2] == 'W')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, LOW)
digitalWrite(LED_quarter, HIGH)
}
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

สรุปว่ารับ.

หมายเหตุ: หากไม่มีไฟ LED ติดแสดงว่าเครื่องรับสัญญาณไม่สามารถรับสัญญาณจากเครื่องส่งได้ คุณควรรอ 5 วินาทีเพื่อรับสัญญาณจากเครื่องส่งหลังจากเปิดวงจรตัวรับสัญญาณ

ต้นแบบของผู้แต่ง:

เครื่องส่ง:

ต้นแบบเครื่องส่งสัญญาณอัลตราโซนิก

ผู้รับ:

ต้นแบบเครื่องรับอัลตราโซนิก

หากคุณมีคำถามใด ๆ เกี่ยวกับวงจรควบคุมระดับน้ำไร้สายอัลตราโซนิกพลังงานแสงอาทิตย์นี้โปรดอย่าลังเลที่จะแสดงความคิดเห็นคุณสามารถคาดหวังว่าจะได้รับคำตอบอย่างรวดเร็ว




คู่ของ: วิธีสร้างวงจร Boost Converter อย่างง่าย ถัดไป: วิธีออกแบบตัวแปลง Flyback - บทช่วยสอนที่ครอบคลุม