0 - 30V, 5A Demonte Güç Kaynağı Tasarımı

Orijinal devrenin simulasyon dosyasını da ekleyeyim. Bu dosyayı MicroCap'te aç, sonra da toolbar'daki aşağıdaki düğmeye bas. Sana devrenin bütün noktalarındaki voltajları gösterir.

9039 eklentisine bak
Tamam analizi başlattıktan sonra basmak gerekiyormuş. Gerçekten de U2'nin 2 ve 3 nolu bacağı aynı değerde görünüyor.
Peki abi sendeki devrede fiziki olarak ölçebilir misin bu durumu? acaba bende mi anormallik var yoksa simulasyon ile devre arasında mı?
 
Şimdi benim devre üzerinde ölçümleri yaptım. Bu devrenin orijinalden tek farkı filtre kondansatörü 3.3 mF yerine 10 mF. Ölçümler neredeyse tam olarak eşleşiyor simulatör ile.
 
Şimdi benim devre üzerinde ölçümleri yaptım. Bu devrenin orijinalden tek farkı filtre kondansatörü 3.3 mF yerine 10 mF. Ölçümler neredeyse tam olarak eşleşiyor simulatör ile.

Abi tamam yav. Her zamanki gibi anormallik bende. Devre yükte değilken ölçmüştüm ben o değeri.
Şimdi 10r yükte ölçtüm. Eşit değerler. Her şey normal yani.

Şimdi iki farklı sorunum var.
Birincisi boşta kalan üçncü röle şuanda komut almıyor.
İkincisi akım sensörününü sıfırlayamıyorum. 1.30A den aşağı düşüremedim.
Şunlarla biraz boğuşayım bakalım.

En son arduino kodumun hali ise şöyle;
C:
#include <Wire.h>
#include <LiquidCrystalTr_I2C.h>

// Röle devresi
#define onikiv 9
#define yirmialtiv 8
#define otuzikiv 7

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);

const int currentSensor = A2;
const int voltageSensor = A0;
float vOUT = 0.0;
float vIN = 0.0;
float R1 = 1732.0;
float R2 = 665.0;
float Vdata = 0;
float V,I,I1;
float Cdata;
float value;

// Derece Simgesi Custom Char
byte derece[8] = {
  B01100,
  B10010,
  B10010,
  B01100,
  B00000,
  B00000,
  B00000,
  B00000
};
byte tdc[8] = {
  B01100,
  B01100,
  B01100,
  B01100,
  B01100,
  B11110,
  B10010,
  B11110
};

//////////////////////////////

// LM35 Sıcaklık Sensörü
const int lm35 = A3;

float voltaj_deger = 0;
int sicaklik = 0;
int gelen_veri = 0;
/////////////////////////////

void setup()
{
  Serial.begin(115200);
  pinMode(onikiv, OUTPUT);
  pinMode(yirmialtiv, OUTPUT);
  pinMode(otuzikiv, OUTPUT);

  digitalWrite(onikiv, HIGH);
  digitalWrite(yirmialtiv, LOW);
  digitalWrite(otuzikiv, LOW);

 
  // initialize the LCD
  lcd.begin();

  // Turn on the blacklight and print a message.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print(" 30V 5A GÜC KAYNAĞI");
  lcd.setCursor(0,1);
  lcd.print("WATT:");
  lcd.setCursor(0,2);
  lcd.print("VOLT:");
  lcd.setCursor(0,3);
  lcd.print("AMPER:");
  lcd.setCursor(14,2);
  lcd.print("TEMP");
  lcd.createChar(0, tdc);
  lcd.setCursor(18, 2);
  lcd.write(0);
  lcd.setCursor(14,3);
  lcd.print("0");
  lcd.createChar(1, derece);
  lcd.setCursor(15, 3);
  lcd.write(1);
  lcd.setCursor(16,3);
  lcd.print("C");
  delay(1000);
}

void loop() {
  // Röle Devresi Serial Monitör
  /*if(Serial.available()>0){
    char oku = Serial.read();
    Serial.println(oku);
    if(oku == '1'){
      digitalWrite(onikiv, LOW);
      digitalWrite(yirmialtiv, LOW);
      delay(1000);
      digitalWrite(otuzikiv, HIGH);
      }else if(oku == '2'){
      digitalWrite(onikiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(1000);
      digitalWrite(yirmialtiv, HIGH);
      }else if(oku == '3'){
      digitalWrite(otuzikiv, LOW);
      digitalWrite(yirmialtiv, LOW);
      delay(1000);
      digitalWrite(onikiv, HIGH);
      }else if(oku == '4'){
      digitalWrite(otuzikiv, LOW);
      digitalWrite(yirmialtiv, LOW);
      digitalWrite(onikiv, LOW);
      }
    }*/
/////////////////////////////

  // LM35 Sıcaklık Sensörü
  gelen_veri = analogRead(lm35);
  voltaj_deger = (gelen_veri / 1023.0) * 5000;
  sicaklik = voltaj_deger / 10.0;
  lcd.setCursor(14, 2);
  lcd.print("     ");
  lcd.setCursor(14,2);
  lcd.print("TEMP");
  lcd.createChar(0, tdc);
  lcd.setCursor(18, 2);
  lcd.write(0);
  lcd.setCursor(14, 3);
  lcd.print("     ");
  lcd.setCursor(14, 3);
  lcd.print(sicaklik);
 
  lcd.createChar(1, derece);
  lcd.setCursor(16, 3);
  lcd.write(1);
  lcd.print("C");
  delay(50);
  ///////////////////////////////////
 
  // Daha kararlı ortalama bir sonuç almak için 350 kez okuma yapma
  for(int i = 0; i < 350; i++)
   {
     Cdata = Cdata + analogRead(currentSensor);
     Vdata = Vdata + analogRead(voltageSensor);
     delay(1);
   }
 // Akım sensörü değerini hesaplama
 Cdata=Cdata/350;           
 V=(Cdata/1024.0)*5000;                       
 I=((V - 2500)/ 68);
 //////////////////////

 // Voltaj sensörü değerini hesaplama
 Vdata=Vdata/350;
 vOUT = (Vdata * 5.0) / 1024.0;
 vIN = (vOUT / (R2/(R1+R2)));
 //////////////////////////////
 
  // Watt hesaplama ve ekrana yazdırma
  lcd.setCursor(0,1);
  lcd.print("WATT: ");
  lcd.setCursor(6,1);
  value=(I * vIN);
  if (value<0){lcd.print("0.00");} else {lcd.print(value);}
  /////////////////////////////////////////////////////////
 
  // Amper değerini ekrana yazdırma
  lcd.setCursor(0,3);
  lcd.print("AMPER: ");
  lcd.setCursor(6,3);
  if (I<0) {lcd.print("0.00");} else {lcd.print(I);}
  //////////////////////////////////////////////////
 
  // Voltaj değerini ekrana yazdırma
  lcd.setCursor(0,2);
  lcd.print("VOLT: ");
  lcd.setCursor(6,2);
  lcd.print(vIN);
  /////////////////////////////////
 
  // Röle Devresi Otomatik Hareket
  if(vIN <= 15.00){
    digitalWrite(yirmialtiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(250);
      digitalWrite(onikiv, HIGH);
  }else if((vIN >= 15.10)||(vIN <= 17.00)){
    digitalWrite(onikiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(250);
      digitalWrite(yirmialtiv, HIGH);
  }else if(vIN >= 17.10){
    digitalWrite(onikiv, LOW);
      digitalWrite(yirmialtiv, LOW);
      delay(250);
      digitalWrite(otuzikiv, HIGH);
  }
  ///////////////////////////////////

// Değerleri sıfırlama
  Cdata=0;
  I=0;
  V=0;
  Vdata=0;
  vIN=0;
  value;
  delay(50);
}
// LCD Satır Temizleme Fonksiyonu
void SatirTemizle(int satir) {
  lcd.setCursor(0, satir);
  lcd.print("                ");
  lcd.setCursor(0, satir);
}
 
Ölçümüm yapılışı:

 
Ben program yazarken de bazan öyle oluyor. Bug bana bakıyor ben bug'a bakıyorum ama bir türlü farkedemiyorum. Gidip bir çay demleyip geliyorum ve sonra dank ediyor :)
 
Peki abi şöyle bir durum var. Ben ekranda neyi ayarladıysam onu almak istiyorum ama cihaz yüke binince voltaj düşümü oluyor.
Bunun bir çaresi var mı?
 
Peki abi şöyle bir durum var. Ben ekranda neyi ayarladıysam onu almak istiyorum ama cihaz yüke binince voltaj düşümü oluyor.
Bunun bir çaresi var mı?

O zaman regülasyon çalışmıyor demektir. Simulatör voltajları ile karşılaştır bakalım bir yerlerde farklılık çıkıyor mu.
 
O zaman regülasyon çalışmıyor demektir. Simulatör voltajları ile karşılaştır bakalım bir yerlerde farklılık çıkıyor mu.
Simulasyonda 3.3uf çıkışı 23v, bende 27v.
Simulasyondaki 3.3uf kondansatörü 4.7uf yaptım bendekiyle aynı oldu. Yine de yukarıda ki ile aynı değerlere sahip. Yani fiziki devre de 4v fazla var.

Bir diğer konu ise, bendeki voltaj potunun 3/1'i boşta. 3/2 de devre 18v'a ulaşıyor. Bu duruma kadar U2 nin 2 ve 3 nolu bacaklarında 5.8v eşit değerler var. Ancak potun işlev görmeyen 1/3 lük kısmını çevirmeye devam ettiğim de voltaj değeri 18v üstüne çıkmasa da U2 nin 3 nolu bacağında voltaj artışı 10v'a kadar çıkıyor ve 2 nolu bacaktaki 5.8v eşitliği bozuluyor.
 
Şimdi şöyle bir ayarlama yap: Voltajı 15 V değerine ayarla ve boşta ölç. Sonra da 10 [CHAR]Omega[/CHAR] direnci yük olarak bağla ve tekrar voltaj ölç. Neredeyse tam aynı olması lazım.
 
Şimdi şöyle bir ayarlama yap: Voltajı 15 V değerine ayarla ve boşta ölç. Sonra da 10 [CHAR]Omega[/CHAR] direnci yük olarak bağla ve tekrar voltaj ölç. Neredeyse tam aynı olması lazım.
12-26v kademesinde 14.35VAC alıyorum. Bu kademede 14VDC Boşta ölçerken, Yükte 13.25VDC ölçüyorum.
12-32v kademesinde 20.67VAC alıyorum. Bu kademede 15V ölçemiyorum çünkü voltaj düşümü olunca röle otomatikman bir alt kademeye geçiyor.
Bunun yerine 16VDC boşta ölçerken, Yükte düşme olmuyor.
17.00VDC ölçerken, yükte 16.96VDC ye düşüyor. 0.04V kayıp.
18.00VDC ölçerken, yükte 17.00VDC ye düşüyor. 1V kayıp
 
Kademe geçişlerini kaldır şu anda. Regülasyon sorununu çözmeye çalışıyoruz bir de kademe komplikasyonu lazım değil şu anda. En basit şekilde test etmen lazım. Zaten kademe geçişini belli bir voltaj değerine göre yaparsan olmaz. Orada histerezis metodu kullanman lazım.

20 VAC veriyorken girişe, çıkışı 15 VDC ye ayarla. Sonra da değişik yükler bağla ve boşta bırak. Voltajın neredeyse hiç değişmemesi lazım.
 
Kademe geçişlerini kaldır şu anda. Regülasyon sorununu çözmeye çalışıyoruz bir de kademe komplikasyonu lazım değil şu anda. En basit şekilde test etmen lazım. Zaten kademe geçişini belli bir voltaj değerine göre yaparsan olmaz. Orada histerezis metodu kullanman lazım.

20 VAC veriyorken girişe, çıkışı 15 VDC ye ayarla. Sonra da değişik yükler bağla ve boşta bırak. Voltajın neredeyse hiç değişmemesi lazım.
Kademe devresini komple söktüm. 12 ve 32v sargılarını direk kontrol devresine girdim.
1,5,9,12,15 ve 18v değerlerinde ölçüm yaptım.
Sadece 18v değerinde yüke binince 17v a düştü. diğerlerinde düşme olmadı.
 
Kademe devresini komple söktüm. 12 ve 32v sargılarını direk kontrol devresine girdim.
1,5,9,12,15 ve 18v değerlerinde ölçüm yaptım.
Sadece 18v değerinde yüke binince 17v a düştü. diğerlerinde düşme olmadı.

Tamam işte o zaman regülasyon çalışıyor. 18 V da olan olay voltaj düşümü değil. Orada olan şey, giriş voltajı yetersiz olduğu için senin çektiğin akımda çıkış voltajında ripple başlıyor. İnanmıyorsan osiloskop ile bak :) Eğer filtre kondansatörünü 10 mF yaparsan ripple kalmaz ve 18 V da da düşme olmaz.
 
Histerezis olayını da şu şekilde düşünmen lazım. Şu anda 14 V, 20 V, ve 32 V alabiliyoruz trafodan. Mesela 20 V ile 32 V arasındaki geçiş nasıl olacak? Çıkış voltajı 16 V değerinin altına indiği anda 20 V sargısına geçeceğiz. Ama çıkış 16 V üstüne çıkarsa hemen 32 V sargısına geçmeyeceğiz. Çıkışın 18 V üzerine çıkmasını bekleyeceğiz. Yani burada 2 V luk bir histerezis var.

20 V için alt eşik 16 V ve üst eşik 18 V.
14 V için alt eşik 10 V ve üst eşik 12 V.
 
İnanmıyorsan osiloskop ile bak :)
Yürekten inanıyorum. Osiloskopu yakmayalım şimdi :katil2:
Eee şimdi ben ne yapayım? Devre normal çalışıyor. Kademe devresi de çalışıyor. Bir kaç ufak sıkıntı var.
Voltajı ekran ile multimetre arasında tam denkleştiremiyorum. Bunun için bir sonraki devre de %1 direnç kullanacağım.
Akım sensörü ne yaptıysam 1.30A altına inmedi. Onun ya formülünde hata var, yada modül sorunlu. Bakacağız artık.
Histerezis olayını da şu şekilde düşünmen lazım. Şu anda 14 V, 20 V, ve 32 V alabiliyoruz trafodan. Mesela 20 V ile 32 V arasındaki geçiş nasıl olacak? Çıkış voltajı 16 V değerinin altına indiği anda 20 V sargısına geçeceğiz. Ama çıkış 16 V üstüne çıkarsa hemen 32 V sargısına geçmeyeceğiz. Çıkışın 18 V üzerine çıkmasını bekleyeceğiz. Yani burada 2 V luk bir histerezis var.

20 V için alt eşik 16 V ve üst eşik 18 V.
14 V için alt eşik 10 V ve üst eşik 12 V.
Ben şöyle yapmıştım.
C:
 // Röle Devresi Otomatik Hareket
  if (vIN <= 15.00) {
    digitalWrite(yirmialtiv, LOW);
    digitalWrite(otuzikiv, LOW);
    delay(250);
    digitalWrite(onikiv, HIGH);
  } else if (vIN >= 15.10) {
    digitalWrite(onikiv, LOW);
    digitalWrite(otuzikiv, LOW);
    delay(250);
    digitalWrite(yirmialtiv, HIGH);
  } 
  ///////////////////////////////////

Senin hesabına gör şöyle değiştirdim.
C:
 // Röle Devresi Otomatik Hareket
  if (vIN <= 16.00) { //16v dan küçükse 14v sargısına geç
    digitalWrite(yirmialtiv, LOW);
    digitalWrite(otuzikiv, LOW);
    delay(250);
    digitalWrite(onikiv, HIGH);
  } else if (vIN >= 18.00) {  // 18v dan büyükse 20v sargısına geç.
    digitalWrite(onikiv, LOW);
    digitalWrite(otuzikiv, LOW);
    delay(250);
    digitalWrite(yirmialtiv, HIGH);
  }
  ///////////////////////////////////
 
Şimdi bir kere senin klavye ile girdiğin bir voltajın çıkması için güç kaynağının dijital kontrollü ve regülasyonlu olması lazım. O bir sonraki proje :D Şu anda göstergeler, çıkıştaki gerçek akımı ve gerçek voltajı göstersin.
 
Şimdi bir kere senin klavye ile girdiğin bir voltajın çıkması için güç kaynağının dijital kontrollü ve regülasyonlu olması lazım. O bir sonraki proje :D Şu anda göstergeler, çıkıştaki gerçek akımı ve gerçek voltajı göstersin.
Abi klavyeden girdiğim kodu kapattım. Şuan tamamen kontrol çıkışındaki voltajı okuyarak röleler arasında geçiş yapıyorum. Yani potu çevirip 15v üzerine çıktığım anda röle 14v sargısını kapatıp, 20v sargısını açıyor.
 
Son düzenleme:

Forum istatistikleri

Konular
6,964
Mesajlar
118,948
Üyeler
2,827
Son üye
abdullah3592

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top