Demonte Güç Kaynağı Kademeli Trafo KiCad Çizimi

ben de ekranda yer olmadığı için öyle düşünmüştüm zaten. ama şöyle olablir , set ekranı okeyi alınca hemen çıkışı göstermeye başlar enkodere veya keypade dokunulduğunda set moduna döner. lakin yazılımın içinden nasıl çıkarsın bilmiyorum.
Hallederiz bir şekilde. Önce şu kaynapı tüketen kodları bulmalıyım. O iş sıkıntı benim için.
 
Benim Rigol DP832A nın ekranında ayarlanan değer ve ölçülen değer ayrı olarak yazılıyor. Ama ne kadar gerekli birşey emin değilim. Bence ayarlarken ayarlanan değeri göstersin, ayarlama bittikten sonra ölçülen değeri göstersin. Ayarlanan değeri görmek için de bir düğmeye basmak gereksin (mesela enkoderin butonu)

IMG_20220320_011916.jpg
 
Benim Rigol DP832A nın ekranında ayarlanan değer ve ölçülen değer ayrı olarak yazılıyor. Ama ne kadar gerekli birşey emin değilim. Bence ayarlarken ayarlanan değeri göstersin, ayarlama bittikten sonra ölçülen değeri göstersin. Ayarlanan değeri görmek için de bir düğmeye basmak gereksin (mesela enkoderin butonu)

16172 eklentisine bak
Hiç bu kadar detaya gereksinim duymadım. Madem yapıyorum elimden gelenin en iyisini yapayım diye zorluyorum.
Ayrıca aklımda bir özellik daha var ama sonra söyleyeceğim.
Koca rigolun on-off düğmesine bak yav. Rezillik. Ben daha iyisini yaparım :katil2:
 
@taydin abi hazır bu proje hızlanmışken şu kırmızı ışığın stabil çalışma olayınıda halletsek de başka derdimiz kalmasa.

Yanlış hatırlamıyorsam @mehmetaliözdemir kademe değiştiği için opamp voltajı değişiyor demişti. Ben de her kademe için ayrı bir direnç bloğu koyup transistörle anahtarlayabiliriz demiştim. Yani kademe 12v da ise şu bloğu, kullan, 26v da ise ötekini kullan gibi bir şey. Ama bu nanoya ekstra yük olabilir. Bunun yerine yine bir zener ve tr ikilisi ile sabit bir voltaj ayarlasak olmaz mı?
 
Farklı farklı zamanlarda konuşulduğu için her şey birbirine girmeye başladı. Hafıza tazelemek adına şöyle özetleyeyim.

R18 ve R19 dirençleri besleme gerilimi ve opampın çıkışına bağlı olarak transistörün çalışma noktasını belirliyor. Transistor de ledi yakıyor. Bu dirençlerin şu andaki değeri 20-30v civarı için ayarlı. 12v kademesinde çalışırken kısık yanıyor. Bu değerleri 12 volta göre ayarlayınca bu sefer de 30v kademesinde sönmüyor. Benim çözümüm ayrı bir sargı ile opamp beslemesini ayrıp sabitlemek oldu. Kademe değişse de opamp besleme voltajı değişmediği için sorun ortadan kalktı.

Sana önerdiğim çözüm ise transistörü iptal edip opampın çıkışını gerilim bölücü ile arduinonun analog portuna girmek ve bu sorunu yazılımla çözmekti. Madem işi arduino yapacak led yakmak yerine ekrana yazdırmak daha iyi olur diye düşünmüştüm.

Tabi @taydin zihni sinir bir çözüm bulursa bu karmaşık çözüm önerilerine gerek kalmaz.
Polish_20220320_015418305.jpg
 
Son düzenleme:
Sana önerdiğim çözüm ise transistörü iptal edip opampın çıkışını gerilim bölücü ile arduinonun analog portuna girmek ve bu sorunu yazılımla çözmekti. Madem işi aduino yapacak led yakmak yerine ekrana yazdırmak daha iyi olur diye düşünmüştüm.
Ben de aynı anda birden çok konuyla uğraştığımdan hatırlayamıyorum ne konuştuğumuzu. O zaman ben ledi komple devre dışı bırakayım. Opamp çıkışını analog pine gireyim. Ama bunun hesabını yazılım tarafında nasıl yapacağımı bilmiyorum.
 


Ben de işin o kısmında sana güveniyordum. :dusun2:
Hallederiz. Biraz mantık yürütmeye çalışalım.

Şimdi sonuç olarak analog pine 0 ile 5v arasında değer girmemiz gerek.

O zaman direnç bölücüyü maks voltajımız olan 30v'a göre ayarlayalım.

Şimdi voltajımız 30v olduğunda opamp çıkışımız 5v olduğuna göre bu değerin analog karşılığını bir değişken içine alırız.

Misal 1023 olsun bu değer.

Buradan kademe bloğuna bir sorgu atıp hangi kademede çalıştığımızı öğrenelim.

Yine misal 12v kademesinde çalışıyoruz.
O zaman bizim değişkenimizin içinde 1023 yok.
Ne var misal 100 var

İşte burası benim tıkandığım nokta.
Bu 100'ü ne yaparsak istediğimizi elde ederiz?
Buradaki matematiksel hesabı bilemiyorum.

Şunu yapmak kolay;
C:
for(int i=0; i!= 1023;i++) {
 elimdeki_deger = elimdeki_deger + i;
 if(elimdeki_deger == 1023){
  Ekrana CV yaz
 }
}

Yani buna benzer birşey olacak ama biraz kafa yormak lazım.
 
IMG_20220320_111902.jpg

ilerliyorum. Üstündeki sürücü entegrenin datasını çalıştıktan sonra okumayı bıraktığım için yazılar kayık çıkıyor ekrana sığmıyordu biraz daha okuyunca ekranı 2ye bölündüğünü ve sağ sol seçimi için 2 pin verdiğini bunlar 1-0
0-1 set ederek sağ sol kısma geçiş yapıldığını öğrendim
 
sw.png

CS1B-CS2B pinleriyle ekranın sağına soluna geçiş yapıyormuşuz
 
hafiza.png

@Gokrtl senin hafızayı dolduran başka birşey var.
Bunların hepsini ekleyerek derledim.
1. de hafıza 9730'du
1 ve 2de 9800 oldu
1-2 ve 3'de 9812 oldu
1-2-3 ve 4 de 9826 oldu
1-2-3-4 ve 5'de 9838 oldu
 
Akım sınırlama LED ile ilgili değişikliği de yaptım benim demonte kartta


Bence akım sınırlama LED doğrudan hardware tarafından kontrol edilmesi lazım. Böylece gerçek zamanlı olarak olup biten görülebilir.
 
16178 eklentisine bak
@Gokrtl senin hafızayı dolduran başka birşey var.
Bunların hepsini ekleyerek derledim.
1. de hafıza 9730'du
1 ve 2de 9800 oldu
1-2 ve 3'de 9812 oldu
1-2-3 ve 4 de 9826 oldu
1-2-3-4 ve 5'de 9838 oldu
Ekran kodlarının tamamını kapattım.
Bu durumda diğer kodlar 32% yer tutuyor. Buda 9886 byte yapıyor.

Sadece çerçeveleri açtığımda 33% e çıkıyor ve 10296 byte yapıyor.
10296 - 9886 = 410 byte. Sadece çerçevelerin kapladığı alan.

Şimdi sırayla verileri ekrana yazdırdığım kodları açacağım.
ilk önce Voltaj değerini açıyorum. Bunu açınca hafıza 47% ye çıkıyor. 14592 yeni bytle değeri. 14592 - 10296 = 4296 byte yer kaplıyor.
Şimdi Akım değerini açıyorum. Bunu açınca hafıza 48% ye çıkıyor. 14820 yeni byte değeri. 14820 - 14592 = 228 byte yer kaplıyor.

Burada görünüşe göre Voltaj değeri çok fazla yer kaplıyor. Akım değeri onunla aynı kodlara sahip olmasına rağmen sadece 228 byte yer kaplıyor.
Şimdi Voltaj değerini kapatıp akım değerini açık bırakacağım. Bunu yapmamdaki amaç, akım değeri hala 228byte mı kullanacak görmek istiyorum. Çünkü eğer Voltaj değerini kapattıktan sonra 4296 byte yer tutmaya devam ederse anlayacağım ki kod biloğu ilk çalıştığında bu değeri alıyor, sonraki aynı kodlarda çok cüzi byte larda yer tutuyor.

Evet tam tahmin ettiğim gibi. Aşağıdaki fonksiyonu ilk kullandığımda 4296 byte yer tutuyor.
Sonraki kullanımların her birinde ise 200 byte civarı yer tutuyor.

C:
//// EKRANA DEĞERLERİ BASMA FONKSİYONU //////
void drawPrnt(int font1, int font2, int drw1, int drw2, int drwstc1, int drwstc2, int drwstc3, int drw3, float prnt, int sec ) {
  if (sec == 1) {
    u8g2.setFont(font1);
    u8g2.drawStr(drw1, drw2, drw3);
    u8g2.setFont(font2);
    u8g2.setCursor(drwstc1, drwstc2);
    u8g2.print(prnt);
  } else if (sec == 2) {
    u8g2.setFont(font1);
    u8g2.drawStr(drw1, drw2, drw3);
    u8g2.setFont(font2);
    u8g2.drawStr(drwstc1, drwstc2, drwstc3);
  }
}
////////////////////////////////////////////

//// Voltaj değerini ekrana yazdırma /////
  drawPrnt(u8g2_font_8x13B_mr, u8g2_font_VCR_OSD_tr, 72, 20, 15, 21, "0", "V", vIN, 1);
  /////////////////////////////////////////

  //// Amper değerini ekrana yazdırma //////
  double valueI = (I < 0) ? 0.00 : I;
  drawPrnt(u8g2_font_8x13B_mr, u8g2_font_VCR_OSD_tr, 72, 46, 15, 47, "0", "A", valueI, 1);
  /////////////////////////////////////////


Şimdi adım adım gitmeye devam.
Aynı fonksiyonu 2 kere kullandım ve 48% , 14820 byte yer kaplıyor.
Aynı fonksiyonu 3 kere kullanıyorum 85% , 26406 byte yer kullanıyor. Haydaa durduk yere değer iki katına çıktı.
Üçüncü kez aynı fonksiyonu açtığımda tek başına 37% , 11586 byte kullanıyor.
Bu hiç adil değil.

Bunun sebebini şöyle açıklayabilirim;
Kullandığım fonksiyonda "if - else if" yapısı var.
Akım ve Voltaj değerlerini yazdırmak için fonksiyonun içindeki "if" bloğunu kullanıyorum.
Üçüncü verim olan kademe değerini ekrana yazdırmak için ise "else if" içindeki bloğu kullanıyorum.
Dolayısıyla kullandığım kod yapısı farklı olduğu için hafıza da ilk defa yazılıyormuş gibi yer tutuyor.
Ama yinede voltaj - akım bölümü ilk çalıştırıldığında 4296 byte yer tutarken, kademe bölümü ilk çalıştığında 11586 byte yer tuttu.
İki kod bloğu arasında gördüğüm tek fark, birinde u8g2.print kullanırken diğerinde u8g2.drawStr kullanmışım.
Buradaki 11586 byte lık farkı yaratan "drawStr" fonksiyonu gibi görünüyor. Bunu "print"'e çevirmeye çalışacağım.

Kodları "printe" çevirdim. Hiç bir fark olmadı. Hatta "else if" bloğunu komple kaldırdım yine değişmedi.

Bu durumda en son çare "font" lara bakmaktı ve baktım.
Eureka!!! Buldum!!!
Burada kullanılan fontlar program hafızasını etkiliyormuş. Font ları değiştirdiğim de hafızanın 48%'ini kullanmaya devam etti.
85% ye filan fırlamadı.
Bu font işide sıkıcı biraz. Onlarca font arasında çalışan var, çalışmayan var, bir ton testten sonra bulmuştum. Şimdi tekrar arama yapacağım sanırım.
 
Rigolün Windows 1.0 versiyonu :katil1:

Ekrandaki simgeler lazım olduğunda çıkacak.
ON: Çıkş aktif olduğunda görünecek.
CC: Akım sınırlama aktif olduğunda görünecek.
FAN: Fan çalışmaya başladığında görünecek

İyi geceler...

20220326_023038.jpg
 
O değil de beni kim gaza getirdi yav? Çabuk çıksın ortaya.
Onuda yapayım bunuda yapayım derken mesai yapmaya başladım kartın başında.
Ne güzel iki pot takıp çıkacaktım kenara :katil2:
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,956
Mesajlar
118,801
Üyeler
2,825
Son üye
karahanli7

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