Bir Dot Matrisin Parlaklık Sorunsalı

Başlatan halukece, 23 Ağustos 2006, 16:24:18

halukece

Merhaba arkadaşlar;

Bir dot matris projem var. 2 tane 5x7 kullanıyorum. Amacım aşağı yukarı karakter/şekil kaydırmak. Bunun üzerine araştırdım uğraştım bişeyler yaptım.

Satır tarama kullandım.Kaydırma yönü itibariyle en kolay onda karar kıldım.Sütun taramada bit kaydırma hoşuma gitmedi.Titreme sorunu oluşuyordu ve kayma hızını ayarlıyamadım.Her neyse...

2 tane 5x7 dot matris 3 tane 595 ve 16f628 var devremde. 595 ler kaskat bağlı ilk 595 satırları sürüyor, diğer iki 595 sütunları sürüyor. Satır tarama yapıyorum ve aynı anda iki matrisinde aynı satırları sürülmüş oluyor.Sutunlara da istediğim 2 farklı karekteri yazabiliyorum. istediğimde buydu zaten.dotları birbirinden bağımsız çalıştırmaktı.yazılım olarak CCS kullandım.Kaydırma için en kolay algoritmayı araştırmam sonucu buldum adına Circular Buffer diyolarmış.Yazılım işim tamam ama ufak bi sorun kaldı. Parlaklık yeterli deil. Ortak katod display kullandım. t anında bi satırın sürüldüğünü düşündüğümüzde 595 in bir pini birbirine parelel bağlı 10 ledi sürmeye çalışması(hepsi yanıyorsa) yada birkısmı için verdiği akım yeterli değil sanırım. 595 yerine içinde transistör barındıran başka bi 595 daha varmış onu tavsiye edebilirsiniz ama maliyet kurtarmaz. :oops:
uln2003 kullancaktım ama bir faydası olmadı yada ben kullanamadım. Her sutunda 33R lik dirençler var. Son bir çare 7 satırı deilde 14 satırı tarayıp bir taramada max yanması
gereken led sayısını 5 e düşürmek ne kadar faydalı olur görüceğiz.
Yazılım pratikliğim gidiyor o zamanda.  :(

void ShowDot(BYTE d1,BYTE d2){
	BYTE i,k,m,n;
	BYTE Temp[3];

	for (k=0;k<hiz;k++){
		for (i=0;i<8;i++){
               Temp[0]= 1<<i; // Satır Tarama
               Temp[1]= ~Harf[d1][(i+m)%8]; // Dot 1
               Temp[2]= ~Harf[d2][i]; // Dot 2 
		Write595(Temp);
	                Bekle10Us(30);
		Temp[1]=0x0;
		Temp[2]=0x0;
		Write595(Temp);		
		NOP(1);
		}
		if ((k+1)%(hiz/katsayi)==0){
		if (yon==UP){ m=m+1;if (m==8)m=0; }
		if (yon==DOWN){m=m-1;if (m==0)m=8; }
		}
	}	
}


Bu konuda fikirlerinizi almak isterim. En maliyetli parlaklık artırmak için devrede nasıl değişiklik olması gerekir sizce.

Özel bir soru: Aynı anda olması mümkün değil ama diyelim 1 sütundaki tüm ledler yanıyor ve her bir satırdan ortalama 10mA aksa ve toplam 70mA yapar. Bu akım sutunu süren, o an logic 0 olan 595 pininden grounda akarbilir mi? Bu tip devrelerde ULN2003 yada benzeri transistör kullanmanın espirisi bu mudur?

Logan

@halukece,
Öncelikle aramıza hoşgeldin.Seninde bildiğin gibi 74595 entegresini 74164'ten ayıran en büyük özellik içinde buffer olması.Bu buffer sayesinde çıkış kuvvetleniyor.Normal olarak piyasada bulabileceğin 74595'ler kesinlikle 7 adet ledi rahat rahat kaldırır(Tabi ledler dediğin gibi 10 mA ise).Ben de 30 adet ledi sürmek için 74595 kullanıyorum.Fakat benim kullandığım ledler 20 mA çekiyor ve içerisinde 2 adet led barındırıyor.Buna rağmen problemsiz çalışıyor.8 adet çıkışın hepsini aktif ettiğim zaman 8x20=160 mA akıma dayanıyor.Hatta öyleki araya 100 ohm direnç koymasam ledler patlayacak.Sana tavsiyem ufak bir deneme programı yaz ve 74595 çıkışlarına ledlerin hepsini yakacak şekilde bilgi gönder ve öylece sabit tut.Yani tarama yapmadan direkt yanmasını sağla.O zaman kesin sonuca ulaşırsın.Eğer problem kesinlikle 74595'in akıma dayanamaması ile alakalı ise çıkışlara transistör koymanı tavsiye ederim.Bi aralar ultra mavi 30 mm 7 segment display kullanmıştık ve sönük yanmıştı, araya transistör atarak çözmüştük.ULN 2003'e gelince sitede aratma yaparsan devre şemasını bulabilirsin.Umarım problemi çözersin.Kolay gelsin.
İmza.

vatandas30

arkadaşım.
piyasada bulunan matrisler kalite kalite değişiyor. geçenlerde aldığım sözde çok kaliteli ultrabright marka matrisler (100mm) daha önceden aldığım 50mm matrislerden çok daha zayıf. ne yaparsan yap parlaklık eğer matrisler kaliteli değilse artmıyor. bunun için matrisleri alırken denemen lazım. veya mur50,100 yani Mur serisi matrislerin parlaklığı katalog bilgilerine göre 6000 mcd. civarı. buna göre bayağı parlak demektir. onlardan alırsan işini görür sanırım.

halukece

Alıntı yapılan: "vatandas30"arkadaşım.
piyasada bulunan matrisler kalite kalite değişiyor.

Doğrudur. Bende şuan 2 tane var PARALIGHT marka.Katalog bilgilerinde 10mA de 8000ucd yazıyor.(2V-20mA Bright led) Ne kadar doğrudur bilemem. Ama denemek için direk sürdüm normalde rengi kırmızıdan sarıya geçti. :D Sonra da siyahlaştı tabi. :roll: şaka bir yana gıcık oldum. Beslemesini 595 den değil de direk beslemeden vermeyi düşünüyorum artık.

Fikir beyanlarınızı almak mutluluk verici. :D  Devam lütfen...

buiba

meslektasim anladigim kadariyla satirlari surdugun 595 in logic 1 oldugunda sutunlara verdigin groundla ledleri aktif ediyorsun ( yada 1 byte lik veriyle istedigin ledleri), 595 i daha once kullanmadim ancak data sheet`ni inceledim sonucta logic 1 seviyesinde cikis akiminin cok dusuk oldugunu farketttim.(Ls serisi icin) shematic diagraminda darlington bagli npn iki transistor olmasina ragmen,uln 2003 gelince bu integre herhangi bir girisi 0 oldugunda cikis yuksek empedanstadir.1 bir oldugunda ise cikis sadece 0 dir.ve tipine gore 250-300 ma kadar akim alabilirsin.ancak senin kurdugun devrede bu integreyi ( satirlari surmek icin kullanamazsin cunku sadece 0 cikisi yapar.tabii sorunu daha iyi anlamak icin once displayini manuel olarak(ledlerden birini yak ve test et
)ve daha sonra bahsettigim olaylari degerlendir derim.saygilar

halukece

Alıntı yapılan: "buiba"meslektasim anladigim kadariyla satirlari surdugun 595 in logic 1 oldugunda sutunlara verdigin groundla ledleri aktif ediyorsun ( yada 1 byte lik veriyle istedigin ledleri)...

Aynen öyle arkadaşım. Devre öyle çalışıyor. Bu arada şunu açıklığa kavuşturayım.Ledlerim yanıyor. Ama parlaklıkları tatmin edici değil.Koyu kırmızılık hissettiriyor kendini. :D

Son olarak sütunları uln ile sürüp, satırları ise transistörle sürmeye karar verdim. Parlaklığın tarama hızı ile de alakası var sanırım.

Resimdeki gibi bir devre işimi görücek sanırım. :(

Resim-Devre