DS1302 İle Sayısal Saat ve Takvim
Yazarımız Tolga Taştan bu ayki yazısında DS1302 RTC (Real Time Clock) (Gerçek Zaman Saat) entegresi ile PIC 16F877’yi güzel bir projede birleştirmiş. Yapımı oldukça kolay olan devremiz yazının içinde anlatılıyor. Projeyi gerçekleştirmek isteyenler, yazının devamı için tıklayınız.
Bir akvaryumum hobim var ve onu gece yatmadan önce izlemek müthiş hoşuma gider. Ancak gece yatmadan önce onların lambalarının sabaha kadar açık kalması yada tam uykuya dalmak üzereyken kalkıp ışığını kapatmak beni yıllardır rahatsız ediyor. Düşündüm, basit bir saat devresi ve kontrol edilecek bir röle ve hemen işe koyuldum. Basit ama işlevli olan ve Antrak’ın bana bağımlılık yarattığı Microchip’in Pic mikrodenetleyicileri bu iş için ideal’di. Ancak onun o Timer modülleri beni çıldırttı. Yaptığım saat her gün ya 5dk ileri gidiyor, ya 5dk geri kalıyordu. Bu noktada bir osilatör yardımıyla çözümünü buldum ancak bu beni tatmin etmedi. Ben tarihle de oynamak istiyordum. Düşünsenize, 05.02.2006 tarihinde akvaryumun lambasını saat sabaha karşı 4’te kapat. İşte kontrol ve emredebilmenin verdiği o müthiş haz. Bir 16F877 ve bir DS1302’ile bu iş olur dedim ve gerçekleştirdim. Ama sizlere bu yazıda Pic 16F628’le gerçekleştirilmiş bir uygulamayı yazıyorum. Daha sonra 16F877’ile yapılan diğer uygulamayı da yayınlayacağım.
Bana çok basit görünen ama bir o kadar da karmaşık olan bir projeyi gerçekleştireceğiz. İlk olarak malzemeleri açıklayalım.
Kullanılan mikro denetleyici Pic16F628. Bu işlemcinin kullanılmasının nedeni osilatöre ihtiyaç duymaması ve osilatör için kullanılan bacaklarında g/ç olarak kullanılabilmesindendir. Ayrıca 16F84’le aynı fiyat seviyelerinde olan bu işlemci osilatör kullanmadığı için kart üzerinde daha az yer kaplamaktadır.
Kullanılan gerçek zamanlı saat entegresi ise DS1302. Bu entegreye bağlanan 32.768KHz’lik bir osilatör ve 5V DC voltaj ile saatinizi ve takviminizi çalıştırmaya başlayabilirsiniz. Basit bir seri ara yüze sahip olup kullanımı oldukça basittir. Gerçi kütüphane fonksiyonunu yazana kadar oldukça zorlanmıştım ama yazdıktan sonra kullanmam oldukça kolaylaşmıştı. Az tanındığını tahmin ettiğim entegreden biraz daha bahsetmek istiyorum.
Entegreye ait Datasheet’i http://pdfserv.maxim-ic.com/en/ds/DS1302.pdf adresinden elde edebilirsiniz. Bu gerçek zamanlı saat, yazımın diğer bölümlerinde RTC (Real Time Clock) olarak geçecektir.
RTC Saniye, Dakika, Saat, Haftanın Günü, Ayın günü, Ay ve Yıl bilgilerini saymakta ve saklamaktadır. Ay’ların kaç gün olduğu otomatik olarak ayarlanmıştır. Yani 29 veya 31 olan toplam ay uzunlukları otomatik olarak sayılmakta ve herhangi bir değişikliğe ihtiyaç duyulmamaktadır. Saat 24 veya 12 biçimlerinde çalıştırılabilir. Bu projede 24 biçiminde çalıştırılmıştır. 2-5.5V DC Voltaj aralığında çok düşük güç tüketimiyle rahatlıkla çalışmaktadır. 8 Pin’lik bu entegre 3 bacağından seri olarak haberleşmektedir. İki ayrı güç girişine sahip olan bu entegreye elektrik kesintilerinde oluşabilecek kayıpları önlemek için ayrıca yedek pil bağlantısı yapılabilmektedir. İçerisinde programlanabilen şarj devresi olduğu için şarj edilebilir yada edilemez herhangi bir pil burada kullanılabilir.
DS 1302’nin kullanım biçimi aşağıdaki gibi olabilir. Diğer bağlantı seçenekleri için de detaylardaki uygulama notlarını kullanabilirsiniz.
Resim.1. DS 1302 Bağlantısı
Biraz saatimizin özelliklerinden bahsedelim.
Saat, Takvim ve Haftanın gününün ayarlanması;
Saatimiz ilk çalıştırıldığında Saat: 00:00:00, Tarih:01.01.2000 Pzt olarak başlayacaktır.
LCD Ekran;
Kullanılan LCD display 2×16 HD44780 dot matrix LCD’dir. Üst satırda saat, alt satırdaysa tarih görüntülenecektir. Bağlanan pot sayesinde LCD ekranınızın kontrastını ayarlayabilirsiniz.
Back-Up Pili
Kullanılan Back-Up pil sayesinde elektrik kesintilerinden etkinlenmez ve ayarlarınızı tekrar yapmak zorunda kalmazsınız.
Değiştirilebilir Pil Seçenekleri;
Saatimize bağlayacağımız yedek pil şarj edilebilir kalem pil yada saat pili olabilir. Pil seçeneğinizde ayarlanabilmektedir. Çünkü şarj edilemeyen bir pil kullanıldığında, cihaz pili şarj etmeye çalışacağından pilin akmasına sebep olacaktır. Bu nedenle pil tipi belirlenecek ve cihaz o ayarlara göre tekrar başlatılacaktır.
LCD İçin Arka Işık Kullanımı;
LCD’nin arka planda çalışan ışığının açık yada kapalı olmasını sağlayabilirsiniz. Saat normal çalışma modundayken “Azaltma” düğmesine basılırsa, saatinizin LCD lambası kapalıysa açılacak, açıksa kapanacaktır.
EEPROM’da Kayıt Tutulması
Tüm değişikiller EEPROM’a yazılır. Bu nedenle elektrik kesintisinde yaptığınız değişiklikler kaydedilir.
Resim.2.Dijital Takvim devre şeması
Bat1: 3.6.V’luk pil.
X1=32.768Khz XT Osc.
VDD=5V DC
VSS= Gnd
R1, R2, R3, R4=10K.
LCD1=2×16 HD44780
U1=Pic16F628
U2=DS1302
Pot=2K Pot.
Out1=Arka Lamba
Out2=Kullanılmamaktadır
Resim.3. Arka Lamba için bağlantı devresi
Dijital Takvimin Kullanılması
Başlangıçta ayarlarınızı, saati ve takvim değerlerini kaydedip cihazı tekrar başlatmalısınız.
Cihaz üzerinde 4 ayrı düğme vardır. Bunlar menu, aşağı, yukarı ve Reset düğmeleridir. Menu düğmesiyle menu seçeneklerini başlatırsınız. Daha sonra yukarı ve aşağı düğmeleriyle menu içerisinde gezebilirsiniz. Menu içinde herhangi bir seçeneği seçmek için Menu düğmesi kullanılır. Örneğin Takvim Ayarlarına girmek için, Normal çalışma halindeyken, Menu düğmesine basılır, ekranda Menu Seçenekleri uyarısını 2 saniye boyunca göreceksiniz. Ardından menu açılır. Açılan menude yukarı aşağı düğmeleriyle Takvim Ayarları üzerine gelinir ve bu ayar üzerindeyken menu tuşuna basılır. Daha sonra istediğiniz değişikliği yapabilirsiniz. Menuden çıkmak için Menu Seçeneklerinin sonundaki Çıkış seçeneğini kullanabilirsiniz.
Menu Seçenekleri
Normal çalışma anında Menu düğmesine basınız. Ekranda Menu seçenekleri uyarısını göreceksiniz.
Menu seçenekleri, Saat Ayarı, Takvim Ayarı, Haftanın Günü, Program Ayarı, Ayarlar ve Çıkış seçeneklerinden oluşmaktadır.
1. Saat Ayarı: Saatinizi ayarlamaya yarar. Ana Menude Saat Ayarı seçilir ve size sırayla sorulan değerler kaydedilir (Dakika ve Saat). Sizden iki basamaklı bir saat veya dakika değeri girmeniz istenir. İlk girilen değer birlik kısmıdır. Değeri yukarı ve aşağı tuşlarıyla değiştirebilirsiniz. Daha sonra Menu düğmesine basılır ve ondalık kısım girilir. Ondalık kısım değeri yine yuk
arı ve aşağı tuşlarıyla değiştirilebilir. Son kez menu tuşuna basılır ve herhangi bir problem yoksa ekranda Başarılı uyarısı görüntülenir. Tekrar Giriniz mesajı görüntülenirse girdiğiniz değerler sınırların dışındadır. Örneğin, Saat değerini girmeniz istenildiğinde 26 değerini girmeye çalışırsanız Tekrar Giriniz uyarı mesajını alırsınız.
2. Takvim Ayarı: Tarihi ayarlamaya yarar. Ana Menude Takvim Ayarı seçilir ve size sırayla sorulan değerler kaydedilir (Gün, Ay, Yıl). Kaydetme işlemi saat ayarının aynısıdır.
3. Haftanın Günü: Haftanın gününü ayarlamaya yarar. Seçenekleriniz, Pzt, Sal, Car, Per, Cum, Cts ve Paz’dır.
4. Ayarlar: Pil tipini seçmenizi beliler. Pil seçenekleri ReChargable, Alkaline, Super Cap ve Yok’dur. ReChargable ve Super Cap şarj bölümünü çalıştıracak, diğer seçenekler şarj bölümünü çalıştırmayacaktır.
5. Çıkış: Normal çalışmaya dönmenizi sağlar.
Normal Çalışma sırasında Aşağı düğmesine basarak Arka Lambayı açıp kapatabilirsiniz.
Aşağı Düğmesi
Aşağı düğmesine normal çalışma modunda basıldığında ekran lambasını açma kapama görevi yapmaktadır.
Programlama
Pic16F628’in içine programlanacak olan HEX dosyası 628.hex
Gerekli Malzemeler
Malzeme | Adet |
Microchip Pic 16F628 | 1 |
DS 1302 Real Time Clock | 1 |
32.768KHz XT Osilatör | 1 |
10Kohm Direnç | 4 |
Düğme | 4 |
10Kohm Trimpot | 1 |
HD44780 Uyumlu LCD Display | 1 |
1.2V Şarj ReChargable Pil | 3 |
3’lü Pil Kutusu | 1 |
Tolga TAŞTAN
tolga@aadf.net