Bu projede "ATmega8 ve DS1302 ile LED ekranlı Saat" uygulaması gerçekleştirilecektir.
Not: Şu anda kutulanmadığı için sadece Masa Saati bölümü biraz eksik kalıyor
Saat
Saat konusu herkes tarafından bilinen bir konudur. Günlük olarak zaman 24 saate ayrılmıştır, her saat 60 dakikaya eşitken, her dakika da 60 saniyeye eşittir.Buna göre devre açısından ele alırsak 1 saniye üretilmiş olarak gelen bir sinyal olduğunda, bunu 60 kez sayarsak 1 dakika elde edilir. 60 tane dakika sayıldığında da 1 saat elde edilir. Saatlerde 24 kez sayıldığında 1 güne ulaşılmış olur. En bundan sonraki saymalar diğer birime geçer ki bu takvim olarak tanımlanır.
Saat devresi açısından anlatıldığı şekilde bir devre oluşturmaktır.
DS1302
Şekil-1 :DS1302 çipi.
Entegre 1 saniye üretmek için harici bir saat uygulanabildiği gibi üzerine takılan 32Khz kristal (tam olarak 32.768kHz ) ile gerekli saat sinyalini üretebilir.
Entegre besleme için iki bacak bulundurmaktadır. Birisi asıl besleme bacağıdır (8.nolu bacak) ki doğrudan 5V ile beslenir. Diğer (1 nolu bacak) bacak ise destek beslemesidir. Yani devrenin asıl beslemesi kesilirse entegre saati saymaya devam edebilmesi ve registerlerdeki ayarların tutulabilmesi için kullanılır.
Şekil-2 :DS1302 Şarj bölümünün registeri ile kontrolunu gösteren blok şema.
TCS Bit 7 | TCS Bit 6 | TCS Bit 5 | TCS Bit 4 | DS Bit 3 | DS Bit 2 | RS Bit 1 | RS Bit 0 | İşlevi |
X | X | X | X | X | X | 0 | 0 | iptal |
X | X | X | X | 0 | 0 | X | X | iptal |
X | X | X | X | 1 | 1 | X | X | iptal |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | Diyot 1 ve 2K |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | Diyot 1 ve 4K |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | Diyot 1 ve 8K |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | Diyot 2 ve 2K |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | Diyot 2 ve 4K |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | Diyot 2 ve 8K |
0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | Başlangıç durumu |
Tablo-1 :DS1302 Şarj bölümünün registerinin değerleri ve kontrolu.
Şekil-3 :İki farklı süper kondansatör. Soldaki 0.22F, sağdaki 1F. Bu projede sağdaki (1F) kullanıldı.
Dolayısı ile şarj akımı;
I= (5Volt-diyot gerilim düşümü)/direnç değeri
ile hesaplanabilir.
DS1302 ilk besleme verildiğinde şarj registeri 01011100 şeklinde bir veri içerir. Yani şarj ünitesi kapalı.
Her ne kadar entegreyi ilk gördüğümde haberleşmesini i2c zannetsemde aslında 3 telli bağlantı biçimindedir. Aslında biraz SPI haberleşmesine benzeyen bir yapı. Tek farkla veri giriş ve çıkış tek bacak üzerinden yürütülmesi gerekiyor.
DS1302 hem saat ve takvim için registerler içerirken aynı zamanda destek pili tarafından beslenebilen RAM bölgesi bulunmaktadır. Bu işlemci devresi ile kullanılan sistemlerde bazı verilerin eeprom gibi saklanabilmesine izin verir. (0xC0 0xFD aralığındaki tek sayılar okuma, çift sayılar yazma için kullanılır. Ne de olsa bit o oku/yaz bitidir.). Tabii DS1302'de saklanan verinin ömrü destek beslemesinin kapasitesi ile sınırlıdır.
Normal durumda DS1302 destek beslemesine göre 0,2µA ile 1µA civarındadır.
DS1302 ilk devreye sokulduğunda yapılması gereken 2 önemli konu vardır. Birincisi 0x8F okuma ve 0x8E yazma adresindeki "WP" yazma koruması (7. bit) lojik 0 yapılarak sıfırlanmasıdır. Bu bit lojik 1 konumunda kaldığında DS1302'ye herhangi bir verinin yazılması mümkün değildir.
İkinci konu ise 0x81 okuma ve 0x80 yazma adresindeki saniye registerinin 7. bitinin lojik-0 yapılmasıdır. Bu bit lojik-0 yapılmazsa DS1302 saymaya başlamayacaktır.
Şekil-4 :DS1302 komutun bit yapısı.
Şekil-5 :DS1302 haberleşmede kullanılan sinyal şekli.
Oku | Yaz | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Aralık |
0x81 | 0x80 | CH | saniye 10 | saniye 1 | 00-59 | |||||
0x83 | 0x82 | dakika 10 | dakika 1 | 00-59 | ||||||
0x85 | 0x84 | 12/24 | 0 | saat 10 (*) | saat 1 | 00-23 | ||||
0x87 | 0x86 | 0 | 0 | gün 10 | 1-31 | |||||
0x89 | 0x88 | 0 | 0 | 0 | ay 10 | ay 1 | 1-12 | |||
0x8B | 0x8A | 0 | 0 | 0 | 0 | 0 | hafta günü | 1-7 | ||
0x8D | 0x8C | yıl 10 | yıl 1 | 00-99 | ||||||
0x8F | 0x8E | WP | 0 | 1 | 0 | 1 | 0 | 0 | 1 | - |
0x91 | 0x90 | TCS | TCS | TCS | TCS | DS | DS | RS | RS |
Tablo2 :DS1302 Saat ve Takvim Registerleri.(*) işaretli yerde saat 12 saat modunda olduğu bit 5 AM/PM gösterimi için kullanılır. Saat aralığında 1-12 olur. (Ram bölümü ele alınmamıştır)
İlk okuma veya yazma bit 0'dan başlar ve sonraki bitler bu biti takip eder.
Devre
Şekil-6 :Yapılmış halde devre.
Kritik saat sinyali gerekmediği için işlemcinin üzerinde kristal kullanılmadan iç saat kaynağı kullanım yoluna gidildi.
Şekil-7 :LED ekranın bulunduğu kart. (Ön panel). Ledler yanıyormuş gibi görünsede sadece flaş ışığının yansıması
Şekil-8 :Devrenin değişik bir görünümü.
Şekil-9 :Ana kartın alttan görünümü. Bazı hatlar tasarım hatasından dolayı kablo ile taşınması gerekti.
Şema
Devrenin işi götüren IC1 (Atmega8) ve onun bu devredeki yardımcısı konumundaki IC2 (DS1302) dir. Clk, I/O ve CE bağlantıları ile gerekli iletişim için gereken hatları oluşturur.D1..D4 (3mm kırmızı LED) ikişerli grup halinde R1 ve R2 (680R ) direnç üzerinden sürülür. DIS1..DIS6 (JZ-5161) ortak LED ekranların parçaları R3...R9 (220R) dirençler üzerinden IC1(Atmega8) bağlanmakta, DIS1..DIS6 (JZ-5161) ortak uçları Q1...Q6 ( BC327) PNP transistörlerin konnektörlerine bağlanmaktadır. Q1...Q6 ( BC327) emetör uçları +5V hattına bağlıdır. Q1...Q6 (BC327) transistörlerin baz uçları R12...R17 (1k) dirençler üzerinden IC1 (Atmega8) bağlanmaktadır. Dolayısı ile bu bölüm LED ekranları sürmek ve saat, dakika, saniye verisinin gösterimi için kullanılır
.
IC2 (DS1302) 2. ve 3. bacaklarına XTL1 ( 32.768KHz) bir kristal bağlanarak saat entegresi için gereken saat sinyalini üretir. IC2 (DS1302) 8. bacak ile GND arasına C4 (1F) süper kondansatör bağlanmıştır. Bu eleman destek beslemesini depolamak ve gerektiğinde DS1302 beslemek için kullanılmaktadır.
D5 (2W10M) köprüsü IC3 (7805) , C7(100nF) ve C8 (10µF) kondansatörleri üzerinden devre için gereken +5V gerilimi sağlarlar.
IC1 (Atmega8) bağlı ISP konnektörü işlemcinin programlanması için kullanılır.
IC1'e (Atmega8) bağlı R10 ve R11 (10k) pullup dirençleri olarak işlemciye bağlanmış olup işlemciye bağlı S1 ve S2 butonlar saat ve dakika ayarı için kullanılmaktadır.
Geri kalan kondansatörler filtre amaçlı elemanlardır.
Şekil-10:Blok şeması
Şekil-11:Devre şeması
Devre Yapımı
Şekil-12:PCB şeması, yollar
Şekil-13:Kartların eleman yerleşimi.
Şekil-14:Kartların yolları birlikte üstteki eleman yerleşimi
Şekil-15:Kart çalışırken bir görünümü. Monte edilmiş ve saat ayarı yapılmış. Sadece butonlar takılı değil
Devre Elemanları
220R | R3,R4,R5,R6,R7,R8,R9 |
680RR | R1,R2 |
1K | R12,R13,R14,R15,R16,R17 |
10K | R10,R11 |
100nF | C1,C2,C3,C7,C8 |
10µF/16V | C5,C6 |
1F/5.5V | C4 |
2W10M veya benzeri | D5 |
3mm kırmızı LED | D1,D2,D3,D4 |
JZ-5161 | DIS1,DIS2,DIS3,DIS4,DIS5,DIS6 |
7805 | IC3 |
Atmega16 | IC1 |
DS1302 | IC2 |
BC327 | Q1,Q2,Q3,Q4,Q5,Q6 |
32.768KHz Kristal | XTL1 |
6 Header (ISP6) | ISP |
28 bacak entegre soketi | - |
8 bacak entegre soketi | - |
Bas bırak buton | S1,S2 |
Devrenin Çalıştırılması
DS1302 üzerinde WP kaldırılması, registerlerin sıfırlanması ve CH bitinin sıfırlanması için devreye enerji vermeden saat ve dakika ayar butonları basılı halde iken devreye besleme verilir. Sonra butonlar bırakılır. Bu şekilde ilk başlatma işlemi yerine getirilmiş olur. Eğer bu noktada işlem başarılı ise saatin saniye göstergesi saymaya başlar.
Şekil-16:Deneme için akü kullanılabilir. Ama uzun süre kullanmaya gelmez.
Ekler:
Atmega8 hakkında bilgi için
"Atmega8 ve DS1302 ile LED ekranlı Masa Saati" projesi için gereken dosyalar
Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....
Hiç yorum yok:
Yorum Gönder