avatar_ete

SAYAC (0-9999), 7SEGMENT

Başlatan ete, 23 Şubat 2016, 10:23:11

Evren Kılıç

#15
merhaba erol abi,
devreyi braedbord üzerinde denedim çalışıyor ama  display lerde  titreme var bunun sebebi ne olabilir?
video da pek belli değil ama göz ile baya belirgin şekilde algılanıyor.
https://www.youtube.com/watch?v=JTIJ8AtseE4

ete

Vido da pek titreme görülmüyor.
Oluyorsa ekan yenileme hızını biraz artırarak düzeltilebilir.
Benim programım ise programın kesme kısmında yer alan
TMR0=99  (bu yaklaşık 5 ms lik bir yenileme hızı veriyor)
yerine
TMR0=193 yaz ve yeniden derleyip dene istersen. (buda yaklaşık 2 ms lik yenileme hızı veriyor)

Ete

Evren Kılıç

#17
erol abi,
derleme hatası verip hex dosyasını üretmiyor
düzeltiyorum,
hex'i veriyor ama verdiği hex ile çalışmıyor ekran gelmiyor.

ete

Sigorta ayarı hatası bu. Programın en başında açıklama var. Ona uygun olarak yapmaya çalışmalısın.
Verilen ayarlar 64 bit makinalarda MPASM kullanılarak yapılacak derleme içindir.
32 bit makinalarda bu satırları kapatıp enbaşta kaplı olan satırları açman gerek.

Ete

Evren Kılıç

dediğiniz gibi sigorta ayarlarını değiştirerek TMR0=193  olarak derledim ama sonu değişmedi titreme net bir şekilde devam ediyor

ete

Tarama hızını daha da düşürerek dene istersn.
Sonr verdiğimiz değer 2ms hız için idi. Bunu 1 ms ye ye düşür (TMR0=224) oda kar etmez ise 700us ye düşür diyeceğim ama bu değer için OPTION_REG=OPTION_REG=%00000010 ve TMR0=169 değerlerini kullanman gerekir.

Yinede kesilmiyor ise devrende bir sorun vardır. Yüzlerce kez kullandığım bir mantık ve şekil bu titreme olabilir ancak tarama hızı değiştirilerek ortadan kaldırılması gerekir.
Ete

Evren Kılıç

#21
OPTION_REG=OPTION_REG=%00000010 ve TMR0=169 değerlerini kullanınca titreme olayı çözüldü.
şimdi bu devre ile 150 mm ortak katot display sürmeye çalışıyorum, elimde uln2003 ve uln2004  vardı bununla denedim ama sonuç alamadım, videoda görüldüğü gibiyanmaması gereken bit hafif parlaklığı azalarak  yanıyor, transistör de aynı sonucu verdi.
https://www.youtube.com/watch?v=fwZf4p6Ey-Y

ete

Ortak katod display ULN ile nasıl sürüyorsun. ?
Büyük displaylerin hem ortak katodları hemde anot çalışan segmentlerinin bir sürücü ile sürülmeleri gerekir.
Segmen başına kaç led var acaba?
Ortak katodlar ULN serisi veya uygun akımlı NPN transistör ile segmentler ise UDN serisi entegre ile veya NPN-PNP transistör gurubu ile sürülmeleri gerekir.

Şöyle düşün  Ortak Katodlar GND ister bunu çıkaracak olan ise ULN entegresidir. Her bir çıkış 500 ma akık verir ki buda sana yeterli olcaktır.
Segmentler ise + besleme ister. Bu ULN den çıkarılamaz. UDN entegresi ise HIGH ile yine HIGH verecek şekilde üretilmiştir. Orada bunu kullanman gerekir.

Ete

Evren Kılıç

Katodu PNP transistör ile segment leri ise uln2003 ile sürmüştüm

ete


Evren Kılıç

#25
Sanırım bir yanlış bilgi verdim

ete

Bağlantı bu durumda doğru ama devre ortak anot için düzenlenmemiş ortak katod için düzenlenmiş durumda.
Her şeyi ters çevirmen gerekecek bu durumda.

Ete

Evren Kılıç

Bunu nasıl yapabilirim, yazılım değişikliği mı gerekecek? Bu konuda yardımcı olabilir misiniz?

ete

Biraz kafayı çalıştırmak gerekiyor. İp uçlarını vereyim.
Tarama kısmında ortak uçlar açılıp kapatılıyor. Ortak uç Katod olunca ve bunu bir NPN transistör ile sürecek isek Port pininden HIGH çıkarıp NPN transistörü sürmek ve onunda LOW çıkartıp ortak katodu sürmesini sağlarız.
Aynı işi Ortak Anot için düşününce bu sefer Ortak anot PNP transistörle sürülmesi gerekir. PNP transistör LOW ile sürülür. O halde Port pininden LOW çıkartmak gerekir. Demekki tarama kısmındaki HIGH çıkışlar LOW low çıkışlar HIGH yapılması gerekir.

Benzer şekilde Ortak katod display de segment ledleri HIGH ile sürülür. Bu işi bir PNP transistör ile yapıyor olsak ve segmentleri PNP transistör Collector ucuna bağlamış olsak Port pininden LOW çıkarmak gerekir. Ancak programın orjinali segmentleri direk sürecek şekilde düzenlendiği için port pininden HIGH çıkacak şekilde düzenlenmiş durumdadır.

Olaya Ortak Anot segmenleri açısından bakarsak ki sana bu lazım, segmenlerin PNP transistör ile sürülerek Segment ledlerine LOW verilmesi gerekir. Bunun için Port Pininden HIGH çıkartılması gerekir ki programda zaten HIGH çıkartılmaktadır.
O halde yapılması gereken tek şey Tarama kısmını yeniden düzenlenmesidir.
DISABLE
KESME:
       SIRA=SIRA+1:IF SIRA>4 then SIRA=0
       IF SIRA=0 then
         Disp3=1
         PORTB=BIRLER
         DISP0=0                     
       ENDIF                         
       
       IF SIRA=1 THEN
          DISP0=1
          PORTB=ONLAR
          DISP1=0
       ENDIF
       
       IF SIRA=2 THEN
          DISP1=1         
          PORTB=YUZLER
          DISP2=0
       ENDIF
     
       IF SIRA=3 THEN
          DISP2=1
          PORTB=Binler
          DISP3=0
       ENDIF
                 
       TMR0=99
       INTCON.2=0        'TMR0 Kesme bayrağı sıfırlanıyor
       RESUME
       ENABLE
         
END

şeklinde yeniden düzenlenerek sistemin çalıştırılması gerekir.

Ete

Evren Kılıç

Tamamdır teşekkürler, ama bu kodları ancak bir kaç gün sonra deneyebilirim, evden ayrıldım dönüşte ilk işim bu kodları denemek olacak.

Powered by EzPortal