Teknomerkez
TR EN ES
Konular

Programlanabilir 0-9999 İleri LCD Göstergeli Alarmlı Sayıcı

Yazar: Mehmet Yılmaz
Tarih: 11.11.2007
Türkçe

Bu devre, daha önce hazırladığım “Jal ile Programlı Pic 16F628'li LCD Göstergeli 0-999999 İleri Sayıcı” başlıklı yazının geliştirilmiş halidir. Devre 0000-9999 ileri sayıcı olarak düzenlenmiş ve programlama yapılabilir hale getirilerek sayıcı değerleri ile program değerleri aynı olduğu anda alarm çıkışı verebilecek şekilde dizayn edilmiştir.

Programlama:

Devre 2 buton ile ayarlanacak. PIC16F84'ün 17 nolu ucuna bağlı olan “HANE” isimli buton ile ayarlanacak olan hane seçilmektedir. Seçilen hanenin önünde “>” işareti bulunmaktadır. Bu “>” işareti ayar yapılacak olan haneyi işaret etmektedir. PIC16F84'ün 18 nolu ucuna bağlı olan “HANE SAY” isimli ikinci buton ile de seçilen hane 0-9 arası sayım yapılmaktadır. Ayarlanacak olan hane seçilmek istendiğinde hane seçim butonuna basıldığında hane büyük haneye (sola) doğru kaymaktadır. Ayarlanacak alarm değeri göstergede dört hane olarak gösterilmektedir. Bu gösterilen değer içinde ayarlanacak olan hanenin başında ok şeklinde köşeli parantez “>” ile okun bulunduğu hane ayar butonuna basıldıkça birer birer artmaktadır. Programlama yapmak için butonlara basılı tutarak ayarlamak gerekiyor. Yarım saniyede bir sayıyı arttırır veya haneyi değiştirir.

Program “0000” (sıfır) ise alarm yapılmamış sayılacak ve göstergenin sonunda “+” işareti olacak, program yapıldığında bu “+” işareti kalkacaktır.

Sayma İşlemi:

Gösterge olarak 2 satırlık 16 karakterlik LCD ekran kullanılmıştır. Birinci satırda “SAYICI: 0000” şeklinde sayım bölümü gösterilmektedir. Bu haliyle “0000-9999” ileri sayım yapılabilmektedir.

Devrede sayım işlemini yapmak için PIC16F84'ün 3 nolu TIMER-0 ucu kullanılmaktadır. Bu uca dışarıdan saymak amaçlı lojik sinyal girilebileceği gibi devrenin şemasında gösterildiği gibi butonda kullanılabilir. Buton ile devre yapıladığında, “SAY” butonuna bastıkça değeri 1 artarak büyümektedir. Devreye sayma amaçlı lojik sinyal girilirse buton (SW4) ve bağlı direnç (R2 22K) birlikte kullanılabilir.

Sayıcıları (sayılan değeri) sıfırlamak için de buton kullanılmaktadır. “SIFIRLA” adını taşıyan ve PIC16F84'ün 1 nolu ucunda bağlı olan bu butona basınca sayıcılar sıfırlanmakta ve alarm iptal edilmektedir.

Bütün butonlar giriş ve +5 volta bağlanacak, girişten şaseye direnç atılacaktır. Bu direnç 22K değerinde olabilir. Ayrıca bu girişlere ark önleme amaçlı kondansatör bağlanmasında fayda vardır. Alarm çıkısı, 16F84'ün RB7, 13 nolu ucundan yapılmaktadır. Alarm çıkışına sürücü devre yapılarak röle veya diğer alarm devreleri bağlanabilir.

Devrenin Yapısı:

Devredenin PIC16F84 mikro kontrolör yazılımında sayıcı olarak TIMER-0 zamanlayıcı/sayıcı'sı kullanılmıştır. Bu zamanlayıcı/sayıcı özelliklerine kısaca bakacak olursak;

  • 8 bitlik bir zamanlayıcı/sayıcıdır. 0-255 arası sayabilir.
  • TMR0 özel amaçlı saklayıcısı ile bu zamanlayıcının değeri okunabilir veya bu saklayıcıya veri yazılabilir.
  • 8 bitlik ön bölücü kullanılarak zamanlama süresi/sayma miktarı ayarlanabilir.
  • Dahili komut çevrimi veya harici saat işareti ile çalışabilir.
  • TMR0 saklayıcısının değeri 255'ten 0'a geçtiğinde kesme üretir.
  • Harici saat işareti için kenar seçimi yapılabilir.

TMR0'ın bu özelliklerini kontrol ederek düzenlemek için OPTION saklayıcısı kullanılır. Gerekli bilgiler için PIC16F84 katalog bilgilerinden faydalanılabilir. Programda kullanılan OPTION değeri programın çalışmasını düzenlemek amacıyla 10101000 olarak seçilmiştir. Bit7'den itibaren bit1'e doğru tanımlayacak olursak,

1 = Port B'deki pull-up dirençleri iptal.
0 = kesme inen kenarda oluşsun.
1 = RA4/T0CKI ucundan girilen saat işareti.
0 = RA4/T0CKI işaretin yükselen kenarından sayma değeri arttırılır.
1 = Ön bölücü WDT için çalışır.
000 = TMR0 oranı 1:2

özelliklerini seçmiş olduk. Burada kullanımda faydalı olacağını düşündüğümüz bir noktayı da izah etmekte yarar var. Bu devremizde, giren palsın yükselen kenarından sayma işlemi yapılmaktadır. Yani butonun basma anında sayım yapılmaktadır. Sayma işlemini düşen kenardan yapmak gerektiğinde OPTION değerindeki bit4'ün 0 olarak atanan değerini 1 olarak atamak gerekmektedir. Bu durumda OPTION değeri 10111000 olacaktır. Böylece butonun bırakıldığı anında sayma işlemi gerçekleşir.

Devre 5 voltluk besleme ile çalışmaktadır.

Devrede kullanılan yazılım JAL ile hazırlanmıştır. JAL için gerekli kaynaklar jal.sourceforge.net web sitesinde geliştirilmektedir. Türkçe olarak www.projearsivim.com adresinden faydalanılabilir.

Devrenin Şeması:

Programlanabilir 0-9999 İleri LCD Göstergeli Alarmlı Sayıcı

Şema: Programlı İleri Sayıcı Devre Şeması (13.11.2007 tarihinde güncellendi)

Devrenin Çalışma Görüntüleri:

Devrenin ilk çalışma ve programlanmamış görüntüsü:

Devrenin programlanmış görüntüsü:

Devrenin alarm çalışmış görüntüsü:

Malzeme Listesi:

U1: PIC16F84
LCD1: 2X16 LCD Ekran
X1: 4MHz kristal
D1: LED
SW1-SW4: Buton
C1,C2: 22pF
C3: 220nF
R1: 1K
R2-R5: 22K
R6: 470
RV1: 10K trimpot
Ayrıca, şemada gösterilmemesine rağmen, devrenin besleme hattına 100nF değerinde filtre amaçlı kondansatör ilave edilmelidir. Yine devrede bulunan R2-R5 22K dirençlerine paralel olarak 100nF kutupsuz kondansatör butonlarda oluşabilecek arkları önlemeye yönelik olarak ilave edilebilir.

Ekler:

Windows kullanıcıları için, devrenin JAL ile hazırlanmış programını sıkıştırılmış zipli dosya olarak indirmek için tıklayınız.

Windows kullanıcıları için, devrenin HEX dosyasını sıkıştırılmış zipli dosya olarak indirmek için tıklayınız.

Linux kullanıcıları için, devrenin JAL ile hazırlanmış programını sıkıştırılmış tar.gz dosya olarak indirmek için tıklayınız.

Linux kullanıcıları için, devrenin HEX dosyasını sıkıştırılmış tar.gz dosya olarak indirmek için tıklayınız.

Notlar:

  • Devrenin baskıdevresi hazırlanmamıştır. Resimlerde de görüldüğü şekliyle çalıştırılmıştır.

Yorumlarınız

mustafa - 30.11.2007
öncelikle değerli bilgilerinizden bizi bilgilendirdiğiniz için çok teşekkür ediyorum. bu program çok güzel. ben fabrikada çalışıyorum ve üretim adetlerini sayacak bir sayaç yapmak istiyorum istenilen adet miktarına geldiğinde uyarmasını istiyorum işte bu program gerçekten istediğim gibi olmuş fakat sayma sınırını 0-9999999(on milyon) kadar yapmanız uygunmudur. çünkü üretim bazen günde 1 milyona yaklaşabiliyor. bu konuda yardımınızı talep ediyorum. iyi çalışmalarim dilerim.
karabulut - 09.05.2008
program hatalımı devre çalışmıyor baglantılar dogru oldugu halde pıc sayıcıya basınca ısınıyor teşekkürler
Mehmet Yılmaz - 09.05.2008
Sayın karabulut, Ben bahsettiğiniz sorunla karşılaşmadım. Devreyi uzun süre çalıştırdım. Devreyi tekrar kontrol ediniz. Sayıcı girişine farklı bir kaynaktan giriş yapıyorsanız bu girişin seviyesini kontrol ediniz.
KOKSAL - 15.09.2008
merhaba mehmet bey. öncelikle bizleri bılgılendırdıgınız ıcın cok teşekkurler.benım sorunum bu pıc programını bılmıyor olmam bu devre ve buna benzer sayısal devrelere cok ıhtıyacım var bu konuda bana genış bır bılgı sunarsanız cok sevınırım şımdıden cok teşekkur eder nıce boyle başarılarınızın devamını dılerım
idris - 12.03.2009
hocam peki pc den 16f84 e programı ns atıyoruz herhangi bi donanım gerekiyomu. isimde yazabilirmiyiz devrede netür değişiklik söz konusu olur. hocam lütfen benim ödevim yardımcı olursanız sevinirim
utku - 12.03.2009
bu program iyi ama tuşlara bastığımızda bazen iki hane atıyor ben switch yerine zımbızla denedim kondansatör ekledim ama aynı birde acaba ondalık olarak daha arttırabilirmiyiz
EVREN AKYOL - 25.05.2009
Merhaba bende lcd li devre yaptım ama ekrande yazı çıkmıyor nedendir acaba yardım olabilir misiniz?
Mehmet Yılmaz - 26.05.2009
Sayın Evren Akyol, montaj sırasında yaptığınız bir hata olabilir. Bir bağlantı hatası yapmış olabilirsiniz. Ben bu devreyi resimde görüldüğü şekliyle çalıştırdım.
murat - 28.05.2014
tşk hocam. devre çalışıyor emegine saglık.

Bir yorum ekleyin

İsim:
E-posta:
Yorumunuz:
Güvenlik Kodu:
 
Tüm alanları doldurmak zorunludur. Yorumunuz kontrol edilince yayınlanacaktır. E-posta adresi yayınlanmaz.
İzin verilen html etiketler (tag): <p><div><b><strong><i><u><del><hr><sup><sub><br>