Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
989
Tıklama
0
Öne Çıkarma
buck-boost converter yüksek bobin akımı
F
5 yıl
Yüzbaşı
Konu Sahibi

Devre çalışıyor. duty'i yavaş yavaş arttırıyor. çıkışta belirli bir yere kadar düzgün gerilim alıyorum. bir noktadan sonra bobin üstündeki akım aşırı yükselmeye başlıyor. sebebi ne olabilir?


şematik çizim
< Resime gitmek için tıklayın >

analog analiz
< Resime gitmek için tıklayın >

ARDUINO KODU

[/code]

//MK


const int pot_pin = A0; //potansiyometreden okunan degerin pini
const int feedback = A1; //cikistaki feedback'in 1/10 miktarindaki degeri
int vout = 0; //vout'u tanimladik
int vpot = 0; //vpot degerini tanimladik
int duty = 1; //duty'i tanimladik
int i=1; //i

void setup() {
cli(); // stop interrupts----- interrupt'lari durdurduk
TCCR1A = 0xA2; //registerleri belirledik
TCCR1B = 0x19; //registerleri belirledik
TIMSK1 = 0x01 ; // overflow interrupt
ICR1 = 249 ; // 31.25us cycle time, 32kHz PWM but 64kHz drive pulses (differential)----- frekansi ayarladik
OCR1A = 125-100 ; // example U drive
OCR1B = 125 ;
GTCCR = 0x83 ; // clear and halt prescalers
TCNT1 = 0xFFFF ; // synchronize counters exactly.
GTCCR = 0x00 ; // allow prescalers to fly
sei(); // allow interrupts-----interrut'lari tekrardan baslattik
pinMode(pot_pin, INPUT);
pinMode(feedback, INPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);

}

ISR(TIMER1_OVF_vect){

OCR1A=duty; //dutyi buradan ayarla bu kismi silebiliriz.
OCR1B=249-duty;
}



void loop(){

oku(); //potansiyometreden istenen gerilim ve cikistan alinan gerilimi okutuyoruz

while(i==1){

for(i=1;i<25;i++){
duty=duty+1;
delay(4);
}
}

oku();

if(vout < vpot){ //istenen gerilim cikis geriliminden buyuk ise calistirir--YUKSELTME

while(vout<vpot){ //cikis pot geriliminden dusuk oldugunda duty'i yukseltmesi daha sonra tekrardan okumasini istiyoruz.

duty=duty+1;
dutybelirleme();
delay(4+duty/10);

oku();
}
}

else if(vout > vpot){ //istenen gerilim cikis geriliminden kucuk ise calisir--DUSURME

while(vout>vpot){ //cikis pot geriliminden yuksek oldugunda duty'i dusurmesi daha sonra tekrardan okumasini istiyoruz.


duty=duty+1;
dutybelirleme();
delay(4+duty/10);
oku();

}
}

delay(10); //araya kucuk delay koyduk.

}

void dutybelirleme(){

if(duty>225){
duty=225; //duty'i sinirlandirdik.
}
else if(duty<25){
duty=25; //duty'i sinirlandirdik.
}
}

void oku(){

vpot = analogRead(pot_pin); //pottan okunan degeri vpot'a atadik

vout = analogRead(feedback ); //cikistan okunan degeri vout'a atadik

if(vpot>780){ //pot degeri 4V'dan(cikistan alinan deger icin 40V'a tekabul ediyor) buyuk oldugunda 40V'a cekiyor.
vpot=780;
}

}
[code]





< Bu mesaj bu kişi tarafından değiştirildi Frost 112 -- 22 Aralık 2018; 0:6:1 >

K
5 yıl
Binbaşı

F
5 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: kukubara

D1 ters sanki.
buck boost topolojisinde öyle. neden ters dedin ki



K
5 yıl
Binbaşı

F
5 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: kukubara

Uygulamada biraz daha farklı gibi.

https://www.elprocus.com/buck-boost-converter-circuit-theory-working-applications/
orada gördüğünüz diyotun sağa doğru dönük olduğu devre sadece boost devresidir. Devrenin yerleşiminde sorun yok sadece arduino ile biraz daha kontrol edilmesi gözüküyor gibi. Güç elektroniği hakkında biraz araştırma yaparsanız buck, boost, buck-boost converter hakkında daha fazla bilgiye sahip olabilirsiniz. iyi günler.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.