Gelişen mikrokontrol teknolojileri ve artan bilgi birikimi sayesinde geliştirici düzeyinde daha yaygın kullanımına olanak tanımıştır. Burada elimden geldiği kadar bazı örnekler sunmaya çalışacağım... Görüleceği gibi ilk örneklerimizde çoğunlukla ASM üzerinde iken daha sonraları C üzerinde örnekler yer almaktadır. Hatta ilerleyen zamanlarda Arduino örneklerinin yer alması kaçınılmaz olacaktır.

21 Ekim 2010 Perşembe

ATMega8 ve DS1307 çipi ile RS485 saat kaynağı


Giriş

Gerçekleştirdiğimiz projeler arasında yer alan "Atmega 8 ile RS485 iletişimli LED Saat" bir saat olarak kullanılabilmesine rağmen bir kusuru vardı. Saat kaynağı olarak bir bilgisayara bağımlı idi. Bu ise projenin gerçekleştirilmesinde bazı sorunlara yol açabilecek bir kusurdu. Bu proje ile saat kaynağı alarak bir bilgisayar yerine geçebilecek bir devre gerçekleştireceğiz.

Not: Bu proje doğrudan ATMega8 ile gerçekleştirilebilecek olsa bile, sistem oluşturulurken elektrik kesilmesi durumunda saat ayarının tekrar yapılmaması gerekliliği üzerinde durulmuş ve saat kaynağının bağımsız bir enerji kaynağı ile desteklenmesine karar verilmiştir.
I2C veri yolu


Şekil-1 :i2c bağlantısının temel şekli.

Bu veri yolu Philips firması tarafından ortaya atılmasından sonra birçok çip üreticisi tarafından kullanılmaya başlanmıştır. Sonuçta sadece (besleme hariç) iki veri hattı sayesinde çipler arasında iletişime olanak sağlamıştır.

İki veri yolu biri saat kaynağı özellikle ana kontrol çipi tarafından üretilir (master çip) ve kontrol edilir, veri hattı ise verinin akışı yönüne göre değişiklik gösterebilen veri iletim hattıdır(veri kaynağı master veya uydu sistemi-slave olabilir). Bu aletler açık kollektörlüdür. Yani i2c hattı üzerine pull-up direnci ile hatların lojik-1 sevilesine çekilmesi gerekiyor.

Normal şartlar altında saat hattı değişirken veri hattı kararlı kalmalıdır. Aksi durumda bu i2c hattında bulunan çipler tarafından farklı yorumlanır.

Şekil-2 :i2c bağlantısınıda başla ve durdur durumlarının dalga biçimi.

Her i2c iletişi bir BAŞLA durumu ile başlar. Saat hattı "1" konumunda iken veri hattı "1-0" geçişi ile oluşturulur.

Her i2c iletişi DURDUR durumu ile sonlandırılır. Saat hattı "1" konumunda iken veri hattı "0-1" geçişi ile oluşturulur.

Bu noktada işler biraz daha karmaşık hal alıyor. Bir i2c hattı üzerine bir master konabilmesine rağmen (ki hatta birden fazla master konabiliyor) bir veya birden çok slave alet bağlanabiliyor.

Bir master BAŞLA durumu yayınladığında birden fazla slave olduğunda hangi slave aletin hedeflendiğinin bilinmesi gerekir. Bunun için her slave aletin kendi özel adresi vardır. Aslında en yüksek anlamlı 4 bit aletin kullanıldığı alana göre tanımlanmış bir kod isede,bu bitleri izleyen 3-bit adres bitleridir. Bazı aletler için 3 bit için seçme bacakları vardır veya değiştirilebilir bazı seçenekler olsada bu projede kullanılan DS1307 çipi için bu 3 bit "000" durumundadır. Kalan en düşük anlamlı bit ise oku/yaz seçeneğinin belirtildiği bittir.

İlk zorunlu bayt bu şekilde tanımlandıktan sonra ikinci bayta geçmeden 1 saat çevrimi süresinde yapılan iletişimin kabul edildiğini belirten bir bitlik bir iletişim yapılır. Yani bu ilk baytı kabul eden slave aleti veri hattını lojik-0 konumuna çekerek yayınlanan adresin kabul edildiğini belirtir. Bu kabul aşaması her bayt arasında yapılır. Son alınan bayta kadar. Son bayt alındıktan sonra veri hattı lojik 1 konumunda kalarak kabul değil bilgisi iletilir. Kabul bilgisini hangi alet veri alıyorsa (master veya slave) veriyi alan alet tarafından yayınlanır.

Şekil-3 :DS1307 çipi i2c yazma biçimi.

Bundan sonraki bayt genellikle slave aletin adresi veya veri olabilir. (okumaya veya yazma işlemine göre).

Buraya kadar ki i2c genel di. Atmega8 çipi üzerinde TWI başlığı altında anlatılan bir i2c bağlantısı yer alır. Atmega8 çipi bu portu kullanarak gerek master gerekse slave olarak kullanılabilir. Bu projede master olarak kullanılacaktır.


Şekil-4 :DS1307 çipi i2c okuma biçimi.

Atmega8 işlemcisi (diğer işlemciler üzerinde de bulunmaktadır) TWI arayüzü ve işlemci içindeki registerlerin kontrolu yardımı ile i2c işlemini gerçekleştirir. Atmega8 her iletişim adımını TWI durum registeri üzerinden geri bildirimi yapar. Böylece işlem adımları takip edilmesini kolaylaştırır.
DS1307


Şekil-5 :DS1307 çipinin resmi(DIL bacak yapısında).

Birçok benzerleri gibi gerçek zaman saati olarak geliştirilmiş Dallas Semiconductor veya Maxim firması tarafından geliştirilmiş olan çip sadece birkaç eleman yardımı ile artık yıl hesabı dahil saniye, dakika, saat (12 veya 24), haftanın günü, ayın günü, ay, yıl gibi değişkenlerin sayabildiği gibi ek olarak bazı parametrelerin saklanabileceği 56 baytlık pil desteği tarafından korunan ram bölgeside yer almaktadır.

Şekil-6 :DS1307 çipi zaman registerinin adres ve tanımları (Not:RAM bölgesi gösterilmemiştir. Sadece 24 saat modu ile ilgili bölümlere yer verilmiştir.).

Zaman ve tarih bilgileri 0x00 ile 0x06 ve kontrol registeri olarak kullanılan 0x07 adreslerinde saklanmaktadır.

Saat ve tarih bilgileri BCD biçiminde saklanmaktadır. (onluk -ikilik sistem)

DS1307 çipi üzerinde i2c bağlantıları yanında, bir çıkışı programlanabilir saat çıkış bacağı, 32.768Khz için saat kristal bacakları, yedekleme pili için besleme bacağı yanında tabii ki normal besleme için +5V ve GND bacaklarıda vardır.

DS1307 çipi içinde otomatik besleme takip sistemi yer alıyor. +5V bacağındaki besleme gerilimi 1.25x Vpil (yaklaşık olarak 3.75V) gerilimine ulaştığında besleme işlemini otomatik olarak pil beslemesine aktarmaktadır. Vcc (+5V) gerilimi 1.25x Vpil gerilimi üzerine ulaştığı zaman i2c hatları DS1307 tarafından aktif hale getirilmektedir.

Sadece burada belirtilmesi gereken nokta DS1307 çipi ilk defa çalıştırıldığında zamanlama sayıcıları çalışmaya başlamaz. Bunun için saniye registerinin (0x00 adresi) 7.biti üzerinde bulunan ( CH) çip tutma bitinin "0" yapılarak sayıcıların aktif hale getirilmesi gerekiyor. Yani yapılması gereken tek şey ayar gir ve ayardan çık. Bu işlem sonunda saniye kendiliğinden okunup ve okuma esnasında CH biti sıfırlandığından sadece tekrar yazılarak bu CH biti (0x00 adresindeki 7. bit) sıfırlanmış olur. (okuma esnasında 0x00 adresinde 7. bit sıfırlanarak maskelenmektedir).

İkinci olarak seçilmesi gereken 12/24 saat modudur. Bunun için 0x02 adresindeki saat baytında yer alan 6.bit "0" yapılarak 24 saat modunda çalıştırılması sağlanlanır. Bu işlemde aynen ayar giriş çıkışı ile yerine getirilir. (okuma enasında 0x02 adresindeki 6. ve 7. bitler sıfırlanarak maskelenmektedir.

Kontrol registeri için bu projede kullanımadığından girilmeyecektir.
Devre

Proje normalde 2 modülden oluşuyor. Birinci modül LED ekran bölümüdür ki "Atmega 8 ile RS485 iletişimli LED Saat" projesi ile gerçekleştirildi. Bu proje ile birlikte "Atmega 8 ile RS485 iletişimli LED Saat" programında küçük bir güncelleme gerekmektedir.

Anlaşılacağı üzere de ikinci modül "ATMega8 ve DS1307 çipi ile RS485 saat kaynağı" projesidir ki burada anlatılmaktadır.

İstendiği takdirde RS485 hattı üzerine birden fazla Atmega 8 ile RS485 iletişimli LED Saat eklenerek birbiriyle senkron çalışan ve gösteren bir saat dizisi elde etmek mümkündür. (RS485 hattının yapısı göz önünde bulundurularak)

Şekil-7 :Kartın üstten görünümü. DS1307 destek pili takılı halde.


Şekil-8 :Tamam saati en azından ayarlamak için gereken tuş takımı. İşlemci kartı ile bağlantı için gereken P3 konnektörü ile birlikte.

Şema

Sistemin kabini IC1 atmega8 işlemcisi oluşturuyor. Bu işlemci için gereken saat kaynağı için XTL1 (3,6864MHZ) kristal, C7 ve C7 (27pF) kondansatör birlikte kullanılmakta. Devrenin çalışmasını göstermek üzere D2 ve R2 (1k) direnci kullanılır.

IC1 üzerine bağlı S1 butonu (ayar butonu)üzerindeki R5 (10K) direnci butonun pull-up direnci görevini görürken, C11 (100nF) kondansatörü tuş için giriş parazitlerini bastırır. Aynı şekilde S2 (saat) ve S3 (dakika) saat ayarlama butonlarını oluşturur ve butonlara bağlı C12 ve C13 parazitik etkileri bastırmak için işlev görürler.

İşlemcinin seri haberleşme (UART) üzerinden IC2 ST485 arayüz çipine bağlanmakta. Bu çipin girişine bağlı bulunan R1 (120OHm) ile hat empadansının uygunlaştırılması sağlamakta. İşlemci programı ile bu çip sadece sinyal gönderece biçimde şekillendirilmiştir.

IC1 işlemcinin TWI bacaklarına bağlanmış olan IC3 (DS1307) (projenin asıl konusudur) i2c bağlantısı üzerinden iletişimi sağlar. i2c bağlantısı üzerindeki R3 ve R4 (10k) dirençleri i2c hattının pull up ihtiyacını karşılar.IC3 üzerine bağlı XTL2 (32,768KHz) kristal bu çip için gereken saat referans sinyallerin üretir. Ayrıca IC3'ün Vbat bacağına bağlı PIL1 (3V) pili ile IC3'ün ihtiyacı olan destek gerilimini sağlar.

D1 girişdeki besleme kutbu sorunun ortadan kaldırarak doğrultma sağlar. IC4 ve buna bağlı olan C2,C3,C4 ve C8 devre için gereken 5V besleme gerilimini üretir.

IC1'e bağlı olan ISP konnektörüde artık bilindiği gibi işlemcinin programlanmasında kullanılır.

Şekil-9 :Devrenin blok şeması


Şekil-10 :Devrenin şeması

Devre Yapımı

Devre yapılırken buton kartı en kolay yapılan olacaktır. Butonlar karta lehimlendikten sonra, buton bacaklarına C11,C12 ve C13 kondansatörlerini lehimlemek yeterli olacaktır. Ve karta şerit kablo ile küçük bir konnektörü takmak yeterlidir.

Devre yapımı için fazla bir şey söylemeye gerek yok. Çipler için soket kullanılması yerinde olacaktır. Kristallerin topraklanması çalışma esnasında oluşabilecek sorunları ortadan kaldıracaktır.

Not: Burada sadece saat kaynağı verilmiştir. Yayınlanan sinyalin ne olduğunu görmek için "Atmega 8 ile RS485 iletişimli LED Saat" projesini gerçekletirdiğinizi varsayıyoruz. Sadece 4MHz olarak belirtiler kristalin 3,6864MHz ile değiştirmeniz gerekiyor. Ayrıcı bu proje ile birlikte verilen programı "Atmega 8 ile RS485 iletişimli LED Saat" işlemcisine yüklemeniz gerekiyor.

Şekil-11:Devrenin baskı devresi şekli(üstten görünüm)


Şekil-12:Devrenin yerleşim planı


Şekil-13:Kartın eleman ve yollarla birlikte yerleşim planı.

Devre Elemanları

120RR1
1KR2
10K %1R3,R4,R5
10µF/25VC2,C3
100nFC1,C4,C5,C7,C9,C10,C11,C12,C13
27pFC6,C7
Atmega8IC1
ST485IC2
DS1307IC3
7805IC4
2W10M köprüD1
3mm kırmızı LEDD2
3,6864MHz kristalXTL1
32,768Khz kristalXTL2
6'li headerisp
4'lü sıra pinP3
Bas-bırak butonS1,S2,S3
tip 0 klemensP2
RJ12 konnektör 6p2c veya 6p4c gibiP1
3V Lityum düğme pilPIL1
düğme pil soketi-

Malzeme listesi. Burada işlemci için soket ve 9V adaptör verilmemiştir. 20 bacaklı 1adet ve 8 bacaklı 2adet entegre soketi kullanımı yerinde olacaktır. Ayrıca buton kartı ile işlemci kartı arasındaki bağlantı ve RS485 için gereken bağlantı kişinin kendi tercihine bırakılmıştır. Tüm dirençler %5 toleransıdadır

Şekil-14:Devrenin butonlarının atanma şekli.

Devre için butonların atanma şekli şekil 14 üzerinde gösterilmiştir. Bu atama şekli kişinin isteğine göre düzenlenmesi gayek normal olacaktır.

Şekil-15:Bu projede kullanılan RJ12 konnektörünün görünümü. Telefon bağlantılarında kullanılmaktadır.


Şekil-16:Kart tasarlanırken bazı eksikler olduğu görülüyor. R3,R4,R5 kartın altında.


Şekil-17:Buton kartının alttan görünümü. C11,C12 ve C13 görülmektedir..

Devrenin Çalışması

Sistemin çalışması konusunda:

İşlemci saniyede 2 kez DS1307 üzerinden saniye, dakika, saat veri alıyor.

Alınan bilgilerden dakika ve saat bilgisi kullanılıyor. Saniye sadece saat ve dakika arasındaki ayıraçların yanıp sönmesinde kullanılıyor.

Saat bilgisi:0 (1 bit)+ayıraç bilgisi (1 bit)+saat onlar hanesi (2 bit)+saat birler hanesi (4 bit).
Buna göre denebilir ki, saat bilgisi saniyede 2 kez gönderiliyor. (ayıraç yanıp sönmesi için)

Dakika bilgisi:1 (1 bit)+ dakika onlar hanesi (3 bit) + dakika birler hanesi (4 bit).
Saniyede 1 kez gönderilir.


Devrenin video filmi
Ekler:

ATmega8 hakkında ayrıntılı bilgi için

DS1307 hakkında ayrıntılı bilgi için

"ATMega8 ve DS1307 çipi ile RS485 saat kaynağı" için dosyalar-birleşik

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A...

Hiç yorum yok:

Translate

Sayfalar

Etiketler

İzleyiciler