STM8+IR2153 500W Ayarlı smps güç kaynağı (DIY)

Başlatan devrecii, 09 Ağustos 2018, 23:39:01

CLR

#15
@Mucit23

O kadar proje yaptın, bir çok lcd projesi yaptın hala soruyorsun. :)

Grid'i her seferinde basmaya gerek yok, ekrana gridleri çiz, sonra diyelimki TFT'nin 16bit renk çözünürlüğü var yatay olarak 240 pixel, dikey olarak 320 pixel olsun,

2 adet buffer'a ihtiyacın var, biri eski renkler, diğeri yeni renkleri tutacak, eski renkler sinyal silinirken/tazelerken veya ekranı temizlerken kullanılacak.

buffer boyutları ise, aşağıdakinden 2 tane olacak, struct içine bunları yerleştir, sonra struct'ı array yap(2 adet yani, veya direk multi array yap)
// toplamda 2*2*3*240=2880 byte buffer harcarsın
u16 V[240];  // Vertical  coordinate
u16 H[240];  // horizontal coordinate
u16 C[240];  // bu coordinate'lardaki color bilgisi

Böylece ekranın tümünü yazmadan, sadece sinyalin değiştirdiği yerleri tazelersin, bir tek ekran temizken(sadece gridler varken), ilk basmada eski renkleri bilemeyeceğin için, birkereye mahsus, lcd'ye datayı basmadan ilgili koordinatları okuyup, eski renkler buffer'ını tazelemelisin.Yani ekran temiz veya ekran silindi flag'ı de tutmalısın.
Knowledge and Experience are Power

devrecii

@mucit23 elimde spi ram yoktu sadece uydu alıcıdan söktüğüm 8 bacakli bir flash vardı.

@CLR böyle optimizasyon sağlarsın ama sadece osiloskop için değil başka uygulamar için de ekranın titremesi çok büyük dert tir tir tiriyor vurup kırası geliyor adamın.

Ayrıca şu var osiloskopta sinyal çok karmaşık titreşikse buffere sığmayabilir çoğu zaman böyle oluyor .
   

CLR

Benim dediğim gibi yaparsan titremez, sen tüm ekranı bufferlıyorsun, yani 320*240*2=153600 byte'lık buffer gerekir(ram vs) sonra tümünü ekrana basıyorsun,

benim dediğim yöntemde ise sadece ekranda 240pixel değiştiriliyorsun, değişenlerin koordinatlarını tutarak, böylece 2880byte yeterli oluyor.

senin sisteme göre 153600/2880=53 kat daha hızlı oluyor.
Knowledge and Experience are Power

Zoroaster

#18
Bekledigim grafik bu degildi. On off on off seklinde yuk devreye girip cikarken voltajdaki degisimi gormekti. Yani voltajdaki gocmeler sonucu olusacak ripillari  gormekti. Verdigin grafikler kalici duruma ait grafikler. Ben on-off geciclerindeki grafiklerde ne oluyor bitiyor gormek isterdim.

Yanlis anlama calismalarin hosuma gidiyor sadece kullanilan teknikten dolayi elestirim. Sezgisel olarak bu guclerde  bust modu hatali bir secim iddiamin arkasinda duramam o yuzden yukteki ziplama gecislerindeki grafigi merak ediyorum. 
Seytan deliginden kacti.

Mucit23

Alıntı yapılan: CLR - 11 Ağustos 2018, 01:38:21@Mucit23

O kadar proje yaptın, bir çok lcd projesi yaptın hala soruyorsun. :)

Grid'i her seferinde basmaya gerek yok, ekrana gridleri çiz, sonra diyelimki TFT'nin 16bit renk çözünürlüğü var yatay olarak 240 pixel, dikey olarak 320 pixel olsun,

2 adet buffer'a ihtiyacın var, biri eski renkler, diğeri yeni renkleri tutacak, eski renkler sinyal silinirken/tazelerken veya ekranı temizlerken kullanılacak.

buffer boyutları ise, aşağıdakinden 2 tane olacak, struct içine bunları yerleştir, sonra struct'ı array yap(2 adet yani, veya direk multi array yap)
// toplamda 2*2*3*240=2880 byte buffer harcarsın
u16 V[240];  // Vertical  coordinate
u16 H[240];  // horizontal coordinate
u16 C[240];  // bu coordinate'lardaki color bilgisi

Böylece ekranın tümünü yazmadan, sadece sinyalin değiştirdiği yerleri tazelersin, bir tek ekran temizken(sadece gridler varken), ilk basmada eski renkleri bilemeyeceğin için, birkereye mahsus, lcd'ye datayı basmadan ilgili koordinatları okuyup, eski renkler buffer'ını tazelemelisin.Yani ekran temiz veya ekran silindi flag'ı de tutmalısın.

@CLR Bi ara buna gerçekten takıldım ama yapamadım yani. Bunu gerçekten denedinmi? Ben çünkü katman olması ve bu katmanlar üzerinde toplama yaparak basılması gerektiğini düşünüyordum. Onda da dediğin gibi ram ihtiyacı çok fazla oluyor. Burda ekran hafızasını ram olarak kullanmak gerekiyor.

Daha önce grafik çizdirme uygulamaları yapmıştım

https://youtu.be/xqd2WVPOh5o

Fakat herseferinde takıldığım nokta bu oldu. Ekrana bir kereliğine girid çizeceğiz. Daha sonra eskisini sil yenisini çiz mantığıyla grafiği çiziyoruz. Buda okey. Fakat ben eskisini silerken arka planı hep beyaz kabul ediyordum. Dolayısıyla ekranda girid çizgileri varsa bunlarıda siliyordum. Bi ara biraz uğramıştım ama kaldı öylece. Vakit bulursam yine uğraşırım.

CLR

2011'de bile yaptım, buradaki grid mantığından çok daha zor, mesela ekteki videoda bile kayan yazı varken, aynı anda zıplayan top var(belki görüntü net olmadığı için anlaşılmıyor olabilir), burada sadece müdahale ettiğim pixelleri güncelliyorum, çünkü hem yazı hareketli hemde top, ayrıca topta sinüs hareketide var, tüm ekranı ramde tutacak olsam bu küçük ekran için lpc2148'in ram'i yetmez(yaklaşık 33KB ram gerekir ama lpc2138'in ram'i 32KB). Ayrıca spi haberleşme olduğundan sürekli tüm ekranı basarsam, görüntü sağlam titrer.

http://www.uicroarm.com/nokia6100-ve-lpc2148-video


Alıntı yapılan: Mucit23 - 11 Ağustos 2018, 08:52:35@CLR .. Onda da dediğin gibi ram ihtiyacı çok fazla oluyor. Burda ekran hafızasını ram olarak kullanmak gerekiyor.

Daha önce grafik çizdirme uygulamaları yapmıştım

https://youtu.be/xqd2WVPOh5o

Fakat herseferinde takıldığım nokta bu oldu. Ekrana bir kereliğine girid çizeceğiz. Daha sonra eskisini sil yenisini çiz mantığıyla grafiği çiziyoruz. Buda okey. Fakat ben eskisini silerken arka planı hep beyaz kabul ediyordum. Dolayısıyla ekranda girid çizgileri varsa bunlarıda siliyordum. Bi ara biraz uğramıştım ama kaldı öylece. Vakit bulursam yine uğraşırım.

Öyle olmaz, ekranın eski halini beyaz kabul ettim falan, olmayacağı bellişmiş zaten, mantık dışı. Ekranda gridler var ve grafiğin nereye çizileceği belirsiz, çünkü adc verisine bağlı, sen tüm ekranı beyaz kabul ediyorsun.

Hiç emwin falan kullanmadın mı? Öyle bir gereksinim olsa, adam ekran boyutu kadar + kullanacağı kadar senden ram ister ki, öyle bir microcontroller yok dünyada.

Mantık şu, hangi pixellere ne yazdığını bileceksin bir de oranın boş halini bilmelisin.
Knowledge and Experience are Power

Mucit23

Konuyu çok dağıttık. Son olarak Bir örnek kod parçası varmı?

devrecii

@Zoroaster  Hocam tam bahsettiğiniz gibi yaptım normalde 15ohm yük var 1ohm yük 12v değdiriliyor kırmızı çizgi trigger
almak için direncin ucunda sıfıra düştüğü an çizim başlıyor bir aşağı doğru iniş ve yükseliş var ilk pixeller osiloskopda çizilmiyor  ama bir iki pixel önce düşüş başlıyor ,  düşüş yaklışık 50us gibi . İyi mi kötümü bilemedim. 

Bir tane 50Amp mosfet ve osilatör ile 1 ohm bağlayıp osiloskop görüntüsünü alacağım birde pc power suplly ile deneyeceğim.



burada osiloksop örnekleme hızı




@CLR senin yönteminde neden arrayı 240 olarak alıyorsun tam olarak anlamadım
 
Bu resme bakarsan ekranın pixellerinin nerdeyse 1/3 gitmiş senin yöntemle bu da sığmıyor 10kb senin arraylarından  lazım şu görüntü için.


devrecii

Burada daha net görünüyor. 

Hocam dikkat etmediniz galiba ama benim devrenin çıkışında 6000uf kondansatör var.


Mosfetle 500hz  düşük duty  de 12v 1R yük bindiğinde

Bu PC supply



Bu benmki


CLR

Alıntı yapılan: Mucit23 - 11 Ağustos 2018, 15:12:24Konuyu çok dağıttık. Son olarak Bir örnek kod parçası varmı?

Mantığını söyledim ya, koddan daha değerli bu.
Knowledge and Experience are Power

CLR

Alıntı yapılan: iboibo - 11 Ağustos 2018, 15:41:00senin yönteminde neden arrayı 240 olarak alıyorsun tam olarak anlamadım
 
Bu resme bakarsan ekranın pixellerinin nerdeyse 1/3 gitmiş senin yöntemle bu da sığmıyor 10kb senin arraylarından  lazım şu görüntü için.

(Resim gizlendi görmek için tıklayın.)

Öncelikle kusurabakma konunu dağıtmış olduk. Özür. Ayrıca projende gerçekten iyi ve ayrıca stm8 asm ile yazmış olman, çok daha iyi, donanıma iyi hakim olduğunu gösteriyor.

Sorun içinse senin gibi yapmazdımda ondan, sen 12800HZ'in 50 periyodunu aynı ekranda göstermeye çalışıyorsun, böylece çoğu pixeli kullanıyorsun.(bir nevi resim basılmış gibi olmuş)

Ben olsaydım enfazla 1-3 periyod gösterirdim, pixelleri 240 veya 320'ye göre oranlardım, böylece hem sinyaller daha net görünürdü hemde periyodlar.(240-320 dememin nedeni, çoğu tft bu oranlara sahip olduğu için)

Yani sinyali ekrana basarken, adc okuma aralıklarını LCD sınırlarına göre (ekranın yatay dikey pixel sayısı kaçsa artık) optimize etmek gerekiyor. 

Ekranın tüm alanını doldurursan ekranı yenilemekten başka şansın olmaz.
Knowledge and Experience are Power

CLR

Örnek vermek için aşağıdaki videoyu yükledim.

Knowledge and Experience are Power

Mucit23

Telekkürker. Biraz anladım gibi. Boş bir vakitte yapacağım bunu.

elektronik

@iboibo Elinize sağlık plazmadan sonra yine güzel bir çalışma olmuş.
çıkış trafosunun bobin çapları nedir ?.

devrecii

Hocam sarabileceğin ne kadar kalın tel kullanırsan o kadar iyi, tüm smpsler için , ben çıkış 1mm giriş için 0.4mm kullandım yeterli mi hayır.Yük bindiği zaman ısınıyor ne yazık ki.

Tavsiyem smps trafolarında , ince 0.3--0.5 gibi bobin tellerini bir araya geririp büküp tek kalın tel haline getirmek.

Trafonun sarım sayısını yanlış yazmısım   35sarım giriş  15+15 çıkış olacaktı. Şemada 40-10 demişim bu şekilde 35volltan yüksek vermez.