แหล่งจ่ายไฟตัดกระแสเกินโดยใช้ Arduino

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





ในโพสต์นี้เราจะสร้างตัวกำจัดแบตเตอรี่ / แหล่งจ่ายไฟแบบแปรผัน DC ซึ่งจะตัดการจ่ายโดยอัตโนมัติหากกระแสไหลผ่านโหลดเกินระดับเกณฑ์ที่กำหนดไว้ล่วงหน้า

โดย Girish Radhakrishanan



คุณสมบัติทางเทคนิคหลัก

วงจรจ่ายไฟตัดกระแสไฟฟ้าที่นำเสนอโดยใช้ Arduino มีจอ LCD 16 X 2 ซึ่งใช้เพื่อแสดงแรงดันไฟฟ้ากระแสไฟการใช้พลังงานและขีด จำกัด กระแสไฟที่กำหนดไว้ล่วงหน้าตามเวลาจริง

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



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

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

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

หากคุณไม่เคยทำไฟฟ้าลัดวงจรหรือไฟฟ้าลัดวงจรขอแสดงความยินดี! คุณเป็นหนึ่งในไม่กี่คนที่มีความสมบูรณ์แบบในด้านอิเล็กทรอนิกส์หรือคุณไม่เคยลองอะไรใหม่ ๆ เกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์

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

การออกแบบ

แหล่งจ่ายไฟมี 3 โพเทนชิโอมิเตอร์หนึ่งตัวสำหรับปรับความคมชัดของจอแสดงผล LCD ตัวหนึ่งสำหรับปรับแรงดันเอาต์พุตตั้งแต่ 1.2 V ถึง 15V และโพเทนชิออมิเตอร์ตัวสุดท้ายใช้สำหรับกำหนดขีด จำกัด กระแสตั้งแต่ 0 ถึง 2000 mA หรือ 2 แอมแปร์

จอแสดงผล LCD จะอัปเดตคุณด้วยพารามิเตอร์สี่ตัวทุก ๆ วินาที: แรงดันไฟฟ้าการใช้กระแสไฟฟ้าขีด จำกัด กระแสที่ตั้งไว้ล่วงหน้าและการใช้พลังงานโดยโหลด

การใช้กระแสไฟฟ้าผ่านโหลดจะแสดงเป็นมิลลิแอมป์ขีด จำกัด กระแสที่ตั้งไว้ล่วงหน้าจะแสดงเป็นมิลลิแอมป์และการใช้พลังงานจะแสดงเป็นมิลลิวัตต์
วงจรแบ่งออกเป็น 3 ส่วนคืออิเล็กทรอนิกส์กำลังการเชื่อมต่อจอแสดงผล LCD และวงจรวัดกำลัง

3 ขั้นตอนนี้อาจช่วยให้ผู้อ่านเข้าใจวงจรได้ดีขึ้น ตอนนี้เรามาดูส่วนอิเล็กทรอนิกส์กำลังซึ่งควบคุมแรงดันไฟฟ้าขาออก

แผนภาพ:

แหล่งจ่ายไฟตัดกระแสเกินโดยใช้ Arduino

จะใช้หม้อแปลง 12v-0-12v / 3A เพื่อลดแรงดันไฟฟ้าไดโอด 6A4 จะแปลง AC เป็นแรงดันไฟฟ้ากระแสตรงและตัวเก็บประจุ 2000uF จะทำให้แหล่งจ่ายไฟ DC ขาดหายไปจากไดโอด

ตัวควบคุม 9V คงที่ LM 7809 จะแปลง DC ที่ไม่มีการควบคุมเป็นแหล่งจ่ายไฟ DC 9V ที่มีการควบคุม แหล่งจ่ายไฟ 9V จะจ่ายไฟให้ Arduino และรีเลย์ ลองใช้แจ็ค DC สำหรับอินพุตของ arduino

อย่าข้ามตัวเก็บประจุเซรามิก 0.1uF ซึ่งให้เสถียรภาพที่ดีสำหรับแรงดันไฟฟ้าขาออก

LM 317 ให้แรงดันไฟฟ้าขาออกผันแปรสำหรับโหลดที่จะเชื่อมต่อ

คุณสามารถปรับแรงดันเอาต์พุตได้โดยการหมุนโพเทนชิออมิเตอร์ 4.7K โอห์ม

ที่สรุปส่วนพลังงาน

ตอนนี้เรามาดูการเชื่อมต่อการแสดงผล:

รายละเอียดการเชื่อมต่อ

วงจรแสดงแหล่งจ่ายไฟตัดกระแสเกินปัจจุบันโดยใช้ Arduino

ไม่มีอะไรจะอธิบายที่นี่มากเพียงต่อสาย Arduino และจอแสดงผล LCD ตามแผนภาพวงจร ปรับโพเทนชิออมิเตอร์ 10K เพื่อความคมชัดในการรับชมที่ดีขึ้น

หน้าจอด้านบนแสดงการอ่านตัวอย่างสำหรับพารามิเตอร์ทั้งสี่ที่กล่าวถึง

ขั้นตอนการวัดกำลัง

ตอนนี้เรามาดูรายละเอียดวงจรการวัดกำลังกัน

วงจรวัดกำลังประกอบด้วยโวลต์มิเตอร์และแอมป์มิเตอร์ Arduino สามารถวัดแรงดันและกระแสพร้อมกันโดยเชื่อมต่อเครือข่ายของตัวต้านทานตามแผนภาพวงจร

เครือข่ายตัวต้านทานสำหรับแหล่งจ่ายไฟตัดกระแสเกินโดยใช้ Arduino

รายละเอียดการเชื่อมต่อรีเลย์สำหรับการออกแบบข้างต้น:

รายละเอียดการเชื่อมต่อรีเลย์ Arduino

ตัวต้านทาน 10 โอห์มสี่ตัวขนานกันซึ่งเป็นตัวต้านทานแบบแบ่ง 2.5 โอห์มซึ่งจะใช้ในการวัดการไหลของกระแสผ่านโหลด ตัวต้านทานควรมีอย่างน้อย 2 วัตต์ต่อตัว

ตัวต้านทาน 10k โอห์มและ 100k โอห์มช่วยให้ Arduino วัดแรงดันไฟฟ้าที่โหลด ตัวต้านทานเหล่านี้สามารถเป็นหนึ่งเดียวกับกำลังวัตต์ปกติ

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการทำงานของแอมป์มิเตอร์และโวลต์มิเตอร์ที่ใช้ Arduino โปรดดูลิงก์ทั้งสองนี้:

โวลต์มิเตอร์: https://homemade-circuits.com/2016/09/how-to-make-dc-voltmeter-using-arduino.html

แอมมิเตอร์: https://homemade-circuits.com/2017/08/arduino-dc-digital-ammeter.html

โพเทนชิออมิเตอร์ 10K โอห์มมีไว้สำหรับปรับระดับกระแสสูงสุดที่เอาต์พุต หากกระแสไหลผ่านโหลดเกินกว่ากระแสที่ตั้งไว้ล่วงหน้าแหล่งจ่ายเอาท์พุตจะถูกตัดการเชื่อมต่อ
คุณสามารถดูระดับที่ตั้งไว้ล่วงหน้าในจอแสดงผลซึ่งจะกล่าวถึงเป็น“ LT” (ขีด จำกัด )

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

เอาต์พุตถูกเปิดและปิดโดย Arduino pin # 7 เมื่อพินนี้อยู่สูงทรานซิสเตอร์จะจ่ายพลังงานให้กับรีเลย์ซึ่งเชื่อมต่อพินทั่วไปและพินที่เปิดตามปกติซึ่งทำหน้าที่จ่ายไฟบวกสำหรับโหลด

ไดโอด IN4007 ดูดซับ EMF แรงดันสูงกลับจากขดลวดรีเลย์ขณะเปิดและปิดรีเลย์

รหัสโปรแกรม:

//------------------Program Developed by R.GIRISH------------------//
#include
#define input_1 A0
#define input_2 A1
#define input_3 A2
#define pot A3
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int Pout = 7
int AnalogValue = 0
int potValue = 0
int PeakVoltage = 0
int value = 0
int power = 0
float AverageVoltage = 0
float input_A0 = 0
float input_A1 = 0
float output = 0
float Resolution = 0.00488
float vout = 0.0
float vin = 0.0
float R1 = 100000
float R2 = 10000
unsigned long sample = 0
int threshold = 0
void setup()
{
lcd.begin(16,2)
Serial.begin(9600)
pinMode(input_3, INPUT)
pinMode(Pout, OUTPUT)
pinMode(pot, INPUT)
digitalWrite(Pout, HIGH)
}
void loop()
{
PeakVoltage = 0
value = analogRead(input_3)
vout = (value * 5.0) / 1024
vin = vout / (R2/(R1+R2))
if (vin <0.10)
{
vin = 0.0
}
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_1)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A0 = PeakVoltage * Resolution
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_2)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
potValue = analogRead(pot)
threshold = map(potValue, 0, 1023, 0, 2000)
input_A1 = PeakVoltage * Resolution
output = (input_A0 - input_A1) * 100
output = output * 4
power = output * vin
while(output >= threshold || analogRead(input_1) >= 1010)
{
digitalWrite(Pout, LOW)
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Power Supply is')
lcd.setCursor(0,1)
lcd.print('Disconnected.')
delay(1500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Press Reset the')
lcd.setCursor(0,1)
lcd.print('Button.')
delay(1500)
}
}
while(output >= threshold || analogRead(input_2) >= 1010)
{
digitalWrite(Pout, LOW)
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Power Supply is')
lcd.setCursor(0,1)
lcd.print('Disconnected.')
delay(1500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Press Reset the')
lcd.setCursor(0,1)
lcd.print('Button.')
delay(1500)
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('V=')
lcd.print(vin)
lcd.setCursor(9,0)
lcd.print('LT=')
lcd.print(threshold)
lcd.setCursor(0,1)
lcd.print('I=')
lcd.print(output)
lcd.setCursor(9,1)
lcd.print('P=')
lcd.print(power)
Serial.print('Volatge Level at A0 = ')
Serial.println(analogRead(input_1))
Serial.print('Volatge Level at A1 = ')
Serial.println(analogRead(input_2))
Serial.print('Voltage Level at A2 = ')
Serial.println(analogRead(input_3))
Serial.println('------------------------------')
}

//------------------Program Developed by R.GIRISH------------------//

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

หากคุณมีคำถามเฉพาะเกี่ยวกับเรื่องนี้มากกว่าวงจรจ่ายไฟตัดกระแสโดยใช้ Arduino อย่าลังเลที่จะถามในส่วนความคิดเห็นคุณอาจได้รับคำตอบอย่างรวดเร็ว




ก่อนหน้านี้: สร้างแอมป์มิเตอร์ดิจิตอลขั้นสูงโดยใช้ Arduino ถัดไป: รู้เบื้องต้นเกี่ยวกับ EEPROM ใน Arduino