avatar_sonmoikan

5X7 Dotmatrix Saat Projesi

Başlatan sonmoikan, 10 Kasım 2015, 11:23:04

serkan_48

Değerli arkadaşlar merhabalar.

Devrenin malzemelerini aldım. Picli saat entegresi sıcaklık sensörü v.s. elemanları bir board üzerine kurdum. Devre kısmını hazırladım.

ikinci olarak bir projeboard uzerine 1 adet 8x8 led matrix ile 74HC595 i yerleştirdim. Gerekli bağlantıları yapıp en azından çalıştırabilecekmiyim diye denemek istedim. Çünkü led matrix ekranı yapmak beni baya uğraştıracak. Öncelikle görüntü almayı becereyim sonra boardı yaparım diye düşündüm. İlk denememde çalıştırdım.

Ancak ,

Ekranda görüntü almayı başarabilsemde şöyle bir sorun var. Aşağıyada ekleyeceğim videoda şu şekilde titremeler oluyor.

Özellikle hareketli görüntü mesela ekranda saat görünür iken titremeler oluyor. Videoda dikkat ederseniz dot matrixin üst pinlerine bağlı kabloya düşen ışık şiddetini izlerseniz belli şekilde titreme görünüyor.

Şimdi burada benmi bir hata yapıyorum da bu titreme oluşuyor yoksa bu devrede bu şekilde titreme normal mi?

Devreyi kurup çalıştıran yada devre hakkında bilgisi olan varsa yardımcı olursa sevinirim.

Şimdiden teşekkürler.

https://youtu.be/qe5g4aOcTNA


serkan_48

Arkadaşlar ,

Devreyi büyük bir oranda kurdum. 8x8 lerden bir ekran yaptım. Görüntü almayı başardım. Devre çalıştı. Sıcaklık saat tarih ve haftanın günlerini görebiliyorum. Ayar fonksiyonları çok güzel çalışıyor. Ancak saat ekranındaki titremeyi nasıl çözebilirim?

Bu titremenin çözülmesi için yazılımın mı değişmesi gerekiyor?

Devre ile ilgili videolar aşağıdadır. Sonuna kadar geldim ama şu titreme olayını bir türlü çözemedim. Titreme sadece saat görünürken oluyor. Diğer bilgiler görüntülenirken titreme olmuyor.

Devrede emeği geçen herkese teşekkürler.

https://www.youtube.com/watch?v=1cE_JIwVhpY&feature=youtu.be

https://www.youtube.com/watch?v=4EU_9xtVtlo&feature=youtu.be

ete

Titremenin sebebi yazılımda olabilir donanımda. Donanım tarafına bakacak olursak, matrix ledlerinin birer ucunu akım sınırlama direnci üzerinden sürmek gerekir. Yani 74hc595 lerin çıkışlarını direnç üzerinden matrixe bağlaman gerekir bu varmı?

Program tarafında ise matrixlerin tarama hızı bu işi tetikler. Ledlerin sürüldüğü anda parlaklığı artıyor bekleme anında parlaklık düşüyor gibi gözüküyor. İki kesme arasındaki işlemlerin gidişatına bakmak gerek.

Ete

sonmoikan

#33
Titreme sorunu için HIZ değişken değeri ve BEKLE alt programındaki değerleri düşürerek halledebilirsiniz.
Tarama hızlandıkça pwm özelliği gösterdiği için ledlerdeki parlaklık oranı da azalıyor.
Ben de 2 ayrı tasarımı var biri 24 sütun diğeri 48 sütun, kodları ve donanımları aynı olduğu halde 48 sütun olanında titreme oldu.
Tarama alt programında 1. sinde 0-23 arası döngü, diğerinde 0-47 arasında döngü olduğu için yaklaşık 2 katı biraz zaman farkı oluşuyor.
48 sütun olanında HIZ değişkenini 1 yaptım, BEKLE alt programındaki döngüyü de 0-50 arası yapınca parlaklık biraz azaldı ama titreme sorunu çözüldü.
Ekranın önüne kırmızı film koyunca da gayet güzel oldu.

Bir diğer ayrıntı ise sadece saat gösteriminde titreme oluyor ise sürekli RTC yi okutma. 1 sn = 1000ms olduğu için saat gösterimine bir sayaç koy ve sayaç yaklaşık 750ms olduğunda RTC yi okut.

örneğin (saat gösterim rutini içerisine):
sayac=sayac+1
if sayac=75 then
     sayac=0
     Gosub zaman_oku
endif

ABDULLAH

serkan_48

Değerli yanıtlarınız için çok teşekkür ederim.

Sayın ete,

74HC595 lerin çıkışında akım sınırlama direnci yok kullanmadım.

sayın sonmoikan

İlk olarak devreyi paylaştığınız için teşekkür etmek istedim. Sorunun hızdan kaynaklı olduğunu sanmıyorum. Mesela tüm ekranı dolduran çarşamba perşembe yazıları ekranda iken yada tarihi yazarken titreme olmuyor. Sizinde belirttiğiniz gibi saat okumada sorun oluyor. Bu saat gösterimi rutini içine koyacağımız sayaç ve 750 ms de RTC yi okuma işlemi saatin ekranda gösteriminde aksamaya neden olacak mı? Ayrıca şu an ne kadar sürede okumak istiyor 100 ms demi? Sayaç koymadan bu normal rutinde kaç ms de okumak istiyor ise o değeri değiştirmek mantıklımı?

Açık olarak yazılımdan çok anlamıyorum ama çözmeye çalışıyorum. PBP kurulumu yapıp söylediğiniz düzenlemeleri yapmayı deneyeceğim. Doğru yapabilirsem hex kodunu üretip denerim. Şimdi yazılım şu şekilde düzenlesem doğru olacak mı? ( bilmediğim için affınıza sığınarak danışmak istiyorum )

Aşağıdaki kod orjinal kod ;


GOTO BASLA
;*******************************************************************************
;                           ANA DONGU SONU
;*******************************************************************************


;-----------------SAAT VE ISIYI GOSTER------------------------------------------
SAAT_AL_G:

    LED=1
    GOSUB ZAMAN_OKU    ;RTC YI OKU
    pause 100
    LED=0

    GOSUB SAAT_AL
  ;  gosub  GEL
   
    FOR Y=0 TO 100     ;EKRANDA BELLÝ BIR SURE GOSTER
        IF SET=0 THEN AYAR ;SET TUSUNA BASILMIS ISE AYAR A GIT
        GOSUB ZAMAN_OKU
        GOSUB SAAT_AL
        GOSUB EKRAN
    NEXT Y
   
    GOSUB GIT
   
    LED=1
    GOSUB SENSOR_OKU        'ISI sensorunu oku
    LED=0
   
RETURN

;-----------------ISIYI GOSTER--------------------------------------------------
ISI_AL_G:

    GOSUB ISI_AL  ;gösterilecek yazýyý al
   
    GOSUB GEL
   
    FOR Y=0 TO 10     ;EKRANDA BELLÝ BIR SURE GOSTER
        IF SET=0 THEN AYAR ;SET TUSUNA BASILMIS ISE AYAR A GIT
        GOSUB EKRAN     
    NEXT Y
   
    GOSUB GIT
   
RETURN
       
;----------------TARIH GOSTER---------------------------------------------------



Yukarıdaki orjinal yazılımı aşağıdaki şekilde sayaç ekleyip 750 ms de okutmak için bu yapacağım değişiklik yeterli ve doğru yerdemi?

GOTO BASLA
;*******************************************************************************
;                           ANA DONGU SONU
;*******************************************************************************


;-----------------SAAT VE ISIYI GOSTER------------------------------------------
SAAT_AL_G:

    LED=1
    GOSUB ZAMAN_OKU    ;RTC YI OKU
    pause 100
    LED=0

    sayac=sayac+1
    if sayac=75 then
         sayac=0
         Gosub zaman_oku
    endif

    GOSUB SAAT_AL
  ;  gosub  GEL
   
    FOR Y=0 TO 100     ;EKRANDA BELLÝ BIR SURE GOSTER
        IF SET=0 THEN AYAR ;SET TUSUNA BASILMIS ISE AYAR A GIT
        GOSUB ZAMAN_OKU
        GOSUB SAAT_AL
        GOSUB EKRAN
    NEXT Y
   
    GOSUB GIT
   
    LED=1
    GOSUB SENSOR_OKU        'ISI sensorunu oku
    LED=0
   
RETURN

;-----------------ISIYI GOSTER--------------------------------------------------
ISI_AL_G:

    GOSUB ISI_AL  ;gösterilecek yazýyý al
   
    GOSUB GEL
   
    FOR Y=0 TO 10     ;EKRANDA BELLÝ BIR SURE GOSTER
        IF SET=0 THEN AYAR ;SET TUSUNA BASILMIS ISE AYAR A GIT
        GOSUB EKRAN     
    NEXT Y
   
    GOSUB GIT
   
RETURN
       
;----------------TARIH GOSTER---------------------------------------------------

Elzemefe

Serkan hocam eline sağlık videoyu  izledim ..
çok güzel  görünüyor.

sonmoikan

#36
Yanlış yere eklemişsin, üstteki koşulu sil ve aşağıdaki döngünün içine ekle.
şu şekilde olması gerekir :


;-----------------SAAT VE ISIYI GOSTER------------------------------------------
SAAT_AL_G:

    LED=1
    GOSUB ZAMAN_OKU    ;RTC YI OKU
    pause 100
    LED=0

    GOSUB SAAT_AL
  ;  gosub  GEL
   
    FOR Y=0 TO 100     ;EKRANDA BELLÝ BIR SURE GOSTER
        IF SET=0 THEN AYAR ;SET TUSUNA BASILMIS ISE AYAR A GIT
        ;GOSUB ZAMAN_OKU ;bu satır iptal
        sayac=sayac+1
        if sayac=75 then
            sayac=0
            Gosub ZAMAN_OKU
            GOSUB SAAT_AL
        endif
        GOSUB EKRAN
    NEXT Y
   
    GOSUB GIT
   
    LED=1
    GOSUB SENSOR_OKU        'saat gösterimi bitince ISI sensorunu oku
    LED=0
   
RETURN



Ayrıca sayaç değişkeni değerini ben örnek olsun diye 75 demiştim. Şayet Saat saniye değişimi 1 sn üzerinde olur ise fazla olmuş demektir, biraz düşürürsün. Titreme devam ediyor ise de artırışın.
ABDULLAH

serkan_48

#37
@Elzemefe

Devre için ilk basta sayın sonmoikan ve ete hocamıza teşekkür etmemiz gerekiyor. Dizayn ve bilgi onlara ait olduğu için.

@sonmoikan

Kodu yonlendirdiğiniz şekilde duzenleyip tekrar compile edeceğim. Hex kodu urettikten sonra tekrar deneyeceğim. Ancak iş bilgisayarına program kuramadığım için uygun bir zamanda evde denemem lazım. Biraz zamanımı alacak.

Ancak test ettikten sonra son durumu buradan paylaşacağım. İlginiz için teşekkürler. Kolay gelsin.

rhoca68

Hocam emeğiniz için teşekkür ederim.
Bu saati yaptım 3 adet ds18b20 değiştirdim hepsinde eksi sıfır gösteriyor neden acaba.

ete

Hangi programı kullanıyor isen bakalım. Ya program linkini ver yada programı buraya koy.
Ayrıca sensör bacaklarına dikkat et. Sensör üzerinde DALLAS 18B20 yazısı var. Bu yazı sana doğru bakıyor iken bacaklarda aşağı doğru duruyor iken , En soldaki bacak GND , Ortadaki bacak Data bacağı ve en sağdaki bacak ise +5V bacağı olacaktır.
Data bacağı ile +5V bacağı arasında 4K7 direnç bağlı olmalıdır.
Önce bu bacak bağlantısını kontrol et hata var ise düzeltip yeniden dene. Yok ise program linkini ver ona bakalım bazen simulasyon için sabit değer koyuyorum ve bu satır kapatılacak diye yanına ikaz da koyuyorum ama gözden kaçmış olabilir.
Ete

rhoca68

ete hocam buradaki untıtled hexi atıyorum eksi sıfır gösteriyor sensör dallas 18b20 4k7 direnç bağlı hatta sensörü daha önceki saatimden kablolarıyla söküp denedim yine aynı. sensörü diğer saate takınca normal.

ete

Sorun senin devrende olmalı mutlaka. Rar dosyası içinde DSN uzantılı şema var aç ve özellikle sensör bağlantılarını kontrol et.
Sensörün doğru pic pinine bağlandığından emin ol. Devre isis de doğru çalışıyor sende de çalışmalı. Muhtemelen sensör yanlış pic pinine bağlı senin devrende.

Ete

rhoca68

Hocam cevap verdiğiniz için teşşekkür ederim ısıste devre çalışıtor elimdeki ds18b20 diğer saatte çalışıyor bu devrede picin 24 nolu pinine sensörün 2 nolu ucu bağlı 1 nolu uç GND 3 nolu uç +5v ama yinede eksi sıfır gösteriyor saat ve tarih göstergesinde sıkıntı yok ama ısı göstermiyor

ete

Bana kalırsa sorun sensörde değil sensör data bacağı ile 24 nolu pin arasında bir kopukluk olma ihtimali var.
Şayet kopukluk yok ise o zaman işlemcinin 24 nolu pin bir şekilde bozulmuş diyebiliriz.
Elinde başka işlemci var ise onunla deneme yap. Programda hata yok. O halde hata ara bağlantıda yada işlemcidedir.

Ete

rhoca68

Hocam değerli vaktinizi ayırıp cevap verdiğiniz için teşekkür ederim. Hakkınızı helal edin.Dün cevap veremedim.Malum iftar vakti yaklaşmıştı sönrada teravih sahur.Hocam en son çare işlemciyi değiştirmek.
bende bugün sipariş verdim hem işlemci hemde sensör .İnşaalah bayramdan önce elime geçerse size nereden ve nasıl kaynaklandığını ve düzelip düzelmediğini yazarım. Bu arada sizin ve bütün sitede aktif çalışan kardeşşlerimin, ve bizim gibi dışarıdan bu siteye üye olan kardeşlerimin ramazan bayramlarını tebrik ederim.Nice bayramlara huzur içinde erişmeyi ALLAH'tan niyaz ederim.

Powered by EzPortal