在這篇文章中,我們將構(gòu)建一個電池消除器/直流可變電源,如果流過負(fù)載的電流超過預(yù)設(shè)的閾值水平,它將自動切斷電源。
主要技術(shù)特點
所提出的使用Arduino的過流切斷電源電路具有16 X 2 LCD顯示屏,用于實時顯示電壓,電流,功耗和預(yù)設(shè)閾值電流限制。
作為電子愛好者,我們在可變電壓電源上測試我們的原型。我們大多數(shù)人都擁有一個便宜的可變電源,它可能既沒有電壓測量/電流測量功能,也沒有短路或內(nèi)置過流保護。
這是因為具有這些上述功能的電源可能會轟炸您的錢包,并且對于愛好使用來說會過度殺傷。
短路和過電流對于初學(xué)者到專業(yè)人士來說都是一個問題,初學(xué)者由于缺乏經(jīng)驗而更容易出現(xiàn)這種情況,他們可能會反轉(zhuǎn)電源的極性或以錯誤的方式連接組件等。
這些東西會導(dǎo)致流過電路的電流異常高,導(dǎo)致半導(dǎo)體和無源元件的熱失控,從而導(dǎo)致有價值的電子元件的破壞。在這些情況下,歐姆定律變成了敵人。
如果您從未短路或油炸電路,那么恭喜您!您是少數(shù)幾個在電子產(chǎn)品方面完美的人之一,或者您從不嘗試電子產(chǎn)品中的新事物。
擬議的電源項目可以保護電子元件免受這種油炸破壞,這對于普通的電子愛好者來說足夠便宜,并且對于略高于初學(xué)者水平的人來說也足夠容易建造一個。
設(shè)計
電源有 3 個電位計:一個用于調(diào)節(jié) LCD 顯示屏對比度,一個用于調(diào)節(jié) 1.2 V 至 15V 的輸出電壓,最后一個電位計用于設(shè)置 0 至 2000
mA 或 2 安培的電流限制。
LCD顯示屏將每秒更新四個參數(shù):電壓,電流消耗,預(yù)設(shè)電流限制和負(fù)載功耗。
負(fù)載電流消耗將以毫安為單位顯示;預(yù)設(shè)的電流限制將以毫安為單位顯示,功耗將以毫瓦為單位顯示。
該電路分為3部分:電力電子,LCD顯示器連接和功率測量電路。
這3個階段可以幫助讀者更好地了解電路?,F(xiàn)在讓我們看看控制輸出電壓的電力電子部分。
示意圖:
12v-0-12v / 3A變壓器將用于降壓,6A4二極管將交流電轉(zhuǎn)換為直流電壓,2000uF電容器將平滑二極管的不穩(wěn)定直流電源。
LM 7809 固定 9V 穩(wěn)壓器可將非穩(wěn)壓直流轉(zhuǎn)換為穩(wěn)壓 9V 直流電源。9V 電源將為 Arduino 和繼電器供電。嘗試使用 DC 插孔作為
arduino 的輸入電源。
不要跳過那些為輸出電壓提供良好穩(wěn)定性的0.1uF陶瓷電容器。
LM 317 為要連接的負(fù)載提供可變輸出電壓。
您可以通過旋轉(zhuǎn) 4.7K 歐姆電位器來調(diào)節(jié)輸出電壓。
權(quán)力部分到此結(jié)束。
現(xiàn)在讓我們看看顯示連接:
連接詳細(xì)信息
這里沒有什么可解釋的,只需按照電路圖連接Arduino和LCD顯示屏即可。調(diào)整 10K 電位計以獲得更好的觀看對比度。
上圖顯示了上述四個參數(shù)的樣本讀數(shù)。
功率測量臺
現(xiàn)在,讓我們詳細(xì)看看功率測量電路。
功率測量電路由電壓表和電流表組成。Arduino 可以根據(jù)電路圖通過連接電阻網(wǎng)絡(luò)同時測量電壓和電流。
上述設(shè)計的繼電器連接細(xì)節(jié):
四個并聯(lián)的 10 歐姆電阻器形成 2.5 歐姆分流電阻器,用于測量流過負(fù)載的電流。每個電阻應(yīng)至少為 2 瓦。
10k 歐姆和 100k 歐姆電阻器可幫助 Arduino 測量負(fù)載電壓。這些電阻器可以是具有正常額定功率的電阻器。
提供 10K 歐姆電位計,用于調(diào)節(jié)輸出端的最大電流電平。如果流過負(fù)載的電流超過預(yù)設(shè)電流,則輸出電源將斷開。
您可以在顯示屏中看到預(yù)設(shè)級別,它將被稱為“LT”(限制)。
例如:如果將限制設(shè)置為200,它將提供電流直到199mA。如果電流消耗等于200 mA或更高,輸出將立即切斷。
輸出由 Arduino 引腳 #7 打開和關(guān)閉。當(dāng)該引腳為高電平時,晶體管激勵繼電器,繼電器連接公共引腳和常開引腳,為負(fù)載傳導(dǎo)正電源。
二極管IN4007吸收繼電器線圈的高壓反電動勢,同時打開和關(guān)閉繼電器。
程序代碼:
//------------------Program Developed by R.GIRISH------------------//
#include 《LiquidCrystal.h》
#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 《 AnalogValue)
{
PeakVoltage = AnalogValue;
}
else
{
delayMicroseconds(10);
}
}
input_A0 = PeakVoltage * Resolution;
PeakVoltage = 0;
for(sample = 0; sample 《 5000; sample ++)
{
AnalogValue = analogRead(input_2);
if(PeakVoltage 《 AnalogValue)
{
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(“------------------------------”);
}
-
電源電路
+關(guān)注
關(guān)注
48文章
1001瀏覽量
65353 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187956
發(fā)布評論請先 登錄
相關(guān)推薦
怎樣檢測電機電流,過流切斷電源
過壓過流保護芯片
過壓過流保護芯片
淺談開關(guān)電源的過流保護電路
![淺談開關(guān)<b class='flag-5'>電源</b>的<b class='flag-5'>過</b><b class='flag-5'>流</b>保護<b class='flag-5'>電路</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
過流繼電器的調(diào)節(jié)步驟和安裝注意事項
模塊過流保護怎么處理
母聯(lián)獨立過流保護的作用
熱繼電器如何切斷電路?
BUCK電路元件的過流值該如何正確選擇?
過壓和欠壓自動切斷電路分析
![<b class='flag-5'>過</b>壓和欠壓自動<b class='flag-5'>切斷電路</b>分析](https://file1.elecfans.com/web2/M00/C1/D9/wKgaomXa-eKAFOLFAACIXR0X_Uo686.jpg)
評論