Viršįtraukiantis maitinimo šaltinis naudojant „Arduino“

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame pranešime mes sukursime akumuliatoriaus pašalinimo / nuolatinės srovės kintamą maitinimo šaltinį, kuris automatiškai nutrauks maitinimą, jei srovės srautas per apkrovą viršys nustatytą slenksčio lygį.

Autorius Girishas Radhakrishananas



Pagrindinės techninės savybės

Siūloma pertraukiamo maitinimo grandinė, naudojama naudojant „Arduino“, turi 16 X 2 LCD ekraną, kuris naudojamas realiu laiku parodyti įtampą, srovę, energijos suvartojimą ir iš anksto nustatytą ribinės srovės ribą.

Būdami elektronikos entuziastu, mes išbandome prototipus ant kintamos įtampos maitinimo šaltinio. Daugeliui iš mūsų priklauso pigus kintamo maitinimo šaltinis, kuris gali neturėti nei įtampos matavimo / srovės matavimo funkcijos, nei trumpojo jungimo ar per didelės srovės apsaugos.



Taip yra todėl, kad maitinimo šaltinis su šiomis paminėtomis funkcijomis gali bombarduoti jūsų piniginę ir bus per didelis, kad būtų naudojamas hobiui.

Trumpas jungimas ir per didelis srovės srautas yra problema pradedantiesiems profesionalams, o pradedantieji tai linkę dažniau dėl savo nepatyrimo, jie gali pakeisti maitinimo šaltinio poliškumą arba neteisingai sujungti komponentus ir pan.

Tai gali sukelti neįprastai didelę srovės srovę per grandinę, dėl to puslaidininkių ir pasyviųjų komponentų šiluminis išsiskyrimas gali sunaikinti vertingus elektroninius komponentus. Šiais atvejais omo įstatymas virsta priešu.

Jei niekada nedarėte trumpojo jungimo ar keptos grandinės, tada sveikiname! Jūs esate vienas iš nedaugelio žmonių, kurie puikiai tinka elektronikoje arba niekada neišbandote kažko naujo elektronikoje.

Siūlomas elektros energijos tiekimo projektas gali apsaugoti elektroninius komponentus nuo tokio kepimo sunaikinimo, kuris bus pakankamai pigus vidutiniam elektronikos mėgėjui ir pakankamai lengva sukonstruoti tokį, kuris yra šiek tiek aukštesnis už pradedančiųjų lygį.

Dizainas

Maitinimo šaltinyje yra 3 potenciometrai: vienas skirtas skystųjų kristalų ekrano kontrastui reguliuoti, vienas - išėjimo įtampai nuo 1,2 V iki 15 V reguliuoti, o paskutinis potenciometras naudojamas dabartinei ribai nustatyti nuo 0 iki 2000 mA arba 2 Amperų.

Skystųjų kristalų ekranas kas sekundę atnaujins keturis parametrus: įtampą, srovės suvartojimą, iš anksto nustatytą srovės ribą ir apkrovos suvartojamą energiją.

Srovės suvartojimas per apkrovą bus rodomas miliampais, iš anksto nustatyta srovės riba bus rodoma miliampais, o energijos suvartojimas bus rodomas mililitais.
Grandinė yra padalinta į 3 dalis: maitinimo elektronika, LCD ekrano jungtis ir galios matavimo grandinė.

Šie 3 etapai gali padėti skaitytojams geriau suprasti grandinę. Dabar pažiūrėkime galios elektronikos skyrių, kuris valdo išėjimo įtampą.

Schema:

Viršįtraukiantis maitinimo šaltinis naudojant „Arduino“

12v-0-12v / 3A transformatorius bus naudojamas mažinant įtampą, 6A4 diodai pavers kintamą įtampą į nuolatinę įtampą, o 2000uF kondensatorius išlygins nereguliarų nuolatinės srovės tiekimą iš diodų.

LM 7809 fiksuotas 9 V reguliatorius pavers nereguliuojamą nuolatinę įtampą į reguliuojamą 9 V nuolatinės srovės maitinimą. 9 V maitinimas maitins „Arduino“ ir relę. „Arduino“ įvesties tiekimui pabandykite naudoti nuolatinės srovės lizdą.

Nepraleiskite tų 0,1uF keraminių kondensatorių, kurie užtikrina gerą išėjimo įtampos stabilumą.

LM 317 suteikia kintamą išėjimo įtampą apkrovai, kuri turi būti prijungta.

Išėjimo įtampą galite reguliuoti sukdami 4,7K omo potenciometrą.

Tai užbaigia galios skyrių.

Dabar pažiūrėkime ekrano ryšį:

Išsami ryšio informacija

Virš srovės nutraukimo maitinimo šaltinio rodymo grandinė naudojant „Arduino“

Čia nėra ko daug paaiškinti, tiesiog prijunkite „Arduino“ ir LCD ekraną pagal grandinės schemą. Norėdami pagerinti kontrastą, sureguliuokite 10K potenciometrą.

Aukščiau pateiktame ekrane rodomi keturių paminėtų parametrų pavyzdiniai rodmenys.

Galios matavimo etapas

Dabar išsamiai pažiūrėkime galios matavimo grandinę.

Galios matavimo grandinę sudaro voltmetras ir ampermetras. „Arduino“ gali matuoti įtampą ir srovę vienu metu, prijungdamas rezistorių tinklą pagal grandinės schemą.

rezistorių tinklas, skirtas per didelę srovę nutraukti maitinimą naudojant „Arduino“

Išsamesnė informacija apie pirmojo dizaino relės jungtį:

Išsami „Arduino“ relės jungties informacija

Keturi lygiagrečiai 10 omų rezistoriai, sudarantys 2,5 omų šuntinį rezistorių, kuris bus naudojamas srovės srautui per apkrovą matuoti. Rezistoriai turėtų būti bent 2 vatų.

10k om ir 100k omų rezistoriai padeda „Arduino“ matuoti įtampą esant apkrovai. Šie rezistoriai gali būti tokie, kurių galia yra normali.

Jei norite sužinoti daugiau apie „Arduino“ pagrindu veikiančio ampermetro ir voltmetro veikimą, patikrinkite šias dvi nuorodas:

Voltmetras: https://homemade-circuits.com/2016/09/how-to-make-dc-voltmeter-using-arduino.html

Ampermetras: https://homemade-circuits.com/2017/08/arduino-dc-digital-ammeter.html

10K omų potenciometras yra skirtas maksimaliam srovės lygiui išėjime sureguliuoti. Jei srovės srautas per apkrovą viršija iš anksto nustatytą srovę, išvesties maitinimas bus atjungtas.
Ekrane galite pamatyti iš anksto nustatytą lygį, kuris bus minimas kaip „LT“ (riba).

Tarkime, pavyzdžiui: jei nustatysite ribą kaip 200, ji išduos srovę iki 199 mA. Jei srovės suvartojimas bus lygus 200 mA arba didesnis, išvestis bus nedelsiant nutraukta.

Išvestį įjungia ir išjungia „Arduino“ kaištis Nr. 7. Kai šis kaištis yra aukštas, tranzistorius įjungia relę, jungiančią įprastus ir įprastai atidarytus kaiščius, kuris atlieka teigiamą apkrovos tiekimą.

Diodas IN4007 sugeria aukštos įtampos atgalinį EMF iš relės ritės, įjungdamas ir išjungdamas relę.

Programos kodas:

//------------------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------------------//

Dabar jau būtumėte įgiję pakankamai žinių, kad sukurtumėte maitinimo šaltinį, kuris apsaugotų jus vertingais elektroniniais komponentais ir moduliais.

Jei turite kokių nors konkrečių klausimų dėl šios srovės išjungimo maitinimo grandinės naudojant „Arduino“, nedvejodami klauskite komentarų skyriuje, galite gauti greitą atsakymą.




Ankstesnis: Padarykite šį pažangų skaitmeninį ampermetrą naudodami „Arduino“ Kitas: Įvadas į EEPROM „Arduino“