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.

rs485 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
rs485 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Ekim 2010 Cuma

ATmega8 ve DS1307 çipi ile RS485 iletişimli LCD Saat


Giriş

"ATMega8 ve DS1307 çipi ile RS485 saat kaynağı" projesi ile RS485 üzerinden 7 parçalı LED ekran üzerinde saat ve dakika gösterimi sağlandı. Ama görüldüğü üzere elde edilebilir bilgi çok sınırlı idi. DS1307 çipini inceleyen kişiler elbette çok daha fazla bilgi barındırdığını görecektir. Bunu 7 parçalı LED ekranlar üzerinde göstermek biraz yetersiz kalabilir. Bu noktada kullanılabilecek bilgi gösterme araçlarından biri olan LCD modül kullanımı olanağı ile yine RS485 üzerinden saniye, dakika ve saat gibi zaman bilgileri ve haftanın günü (pazartesi, salı...), gün, ay ve yıl gibi tarihsel bilgileri (4x20 mavi arkadan aydınlatmalı) LCD modül arayüzü üzerinde sunacağız.
DS1307

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ı (pil ve 32.768Khz kristal) 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 sayılabildiği gibi ek olarak bazı parametrelerin saklanabileceği 56 baytlık pil desteği tarafından korunan ram bölgeside yer almaktadır.

Şekil-1 :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ğı (referans saat çıkışı), 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 var.

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ğlanı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 bu projede kullanımadığından girilmeyecektir.Bu bölüm ancak referans saat sinyali olarak DS1307 kullanılmak istendiğinde DS1037'nin out çıkışının ayarlanması için gereken paremetrelerin ayarlanması için kullanılacağı zaman ayarlanır. (örneğin işlemcinin sürekli DS1307 okuması yerine program olarak oluşturulacak saat programında zamana göre saat ile DS1307'nin eşleşmesinde kullanılmak üzere gerekir).

DS1307 üzerine ayarlar yazılırken (CH) biti "0" ve (12/24) "0" olacak şekilde yazılmasına dikkat etmek gerekir. Devre ilk kez çalıştırıldığında DS1307 saymaya başlamayacaktır. DS1307 veri kağıtlarında (CH) biti "1" konumda olduğu belirtilmektedir. Bu problemi çözmek için yapılması gereken sadece "AYAR GİR" ve "AYAR TAMAM" işlemini yap. Yani AYAR butonuna iki kez bas bırak. Zaten saat ve tarih ayarını yapmak gerekecek!!
Devre

Proje normalde 2 modülden oluşuyor. Birinci modül LCD ekran bölümüdür ki "RS485 (Seri) LCD Çevirici" projesi ile gerçekleştirildi. Ama baskı devrede bazı değişiklikler yapıldığı halde program aynen kullanıldı. (isp konnektörü 2x3 şeklinde).

Anlaşılacağı üzere de ikinci modül "ATMega8 ve DS1307 çipi ile RS485 saat kaynağı" projesidir ve aynı isim altında gerçekleştirilmiştir.

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


Şekil-3 :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.


Şekil-4 :LCD sürücü kartı.


Şekil-5 :RS485-seri(uart) dönüştürücü (alma modu ayarlı-kart üzerindeki köprü).


Şekil-6 :4x20 LCD ekran, bağlantı kablosu ile birlikte.

Şema

--Saat Modülü:(şekil-8'e bak)
Saat modülü kabini IC1 atmega8 işlemcisi oluşturuyor. Bu işlemci için gereken saat kaynağı için XTL1 (3,6864MHZ) kristal, C6 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.

--LCD Modülü:(şekil-9'a bak)
LCD modül kalbini ATtiny2313 oluşturuyor. İşlemci XTL1 (3,6864MHz) kristal ile birlikte C3 ve C4 (27pF) kondansatörler saat kaynağı olarak kullanır. P1 LCD için (14P) bağlantı konnektörüdür. R1 LCD parlaklık ayarı içindir. C1 (10µF) kondansatör LCD Vo ( parlaklı ayarı) ucu için filtre görevini görür.D1 (LED) ve R2 (1K) LCD kartı için monitörolarak kullanılır.

P3 besleme giriş konnektörüdür. D2 köprü diyot besleme gerilimi için kutuplama sorununu ortadan kaldırır ve IC2(7805) LCD modül için 5V besleme gerilimini üretir.

P2 ve P2_2 konnektörleri ATtiny2313 ve ST485 arasındaki seri bağlantıyı (UART) sağlar. R4 (1K) ve D3 (LED) RS485 kartına besleme geldiğini gösterir. IC3 (ST485) seri-RS485 dönüştürücü arabirimidir. P4 RS485 için giriş konnektörüdür(6p2c veya 6p4c) ve buna bağlı olan R3 (120R) empedans uygunlaştırıcıdır. R5 ve P5 RS485 için çalışma modu seçicidir.(köprü yardımı ile )

Geri kalan kondansatörler besleme hatları üzerinde filtre görevini yerine getirirler

Şekil-7 :Devrenin blok şeması


Şekil-8 :Saat Modülü Devrenin şeması


Şekil-9 :LCD Modülü Devrenin şeması (LCD arkaplan aydınlatması gösterilmemiştir). Kullanılmakta olan LCD üzerinde arkaplan aydınlatması için sadece 2 tane beyaz LED var.

Devre Yapımı

"RS485 (Seri) LCD Çevirici" ve "ATMega8 ve DS1307 çipi ile RS485 saat kaynağı" projeleri bu proje için kaynaktır.

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.

LCD kablosu için ekran konnektör bağlantıları küçük bir kart üzerinden gerçekleştirldi. Ama bu kart o kadar gerekli değildir. Serit kablo doğrudan LCD ekran bağlantı noktalarına lehimlenebilir

Şekil-10:Saat Modül-baskı devresi şekli(üstten görünüm)


Şekil-11:Saat Modül-yerleşim planı


Şekil-12:Saat Modül-eleman ve yollarla birlikte yerleşim planı.


Şekil-13:LCD Modül-baskı devresi şekli(üstten görünüm)


Şekil-14:LCD Modül-yerleşim planı


Şekil-15:LCD Modül-eleman ve yollarla birlikte yerleşim planı.

Devre Elemanları

--Saat Modülü Malzeme Listesi:
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-


--LCD Modülü Malzeme Listesi:
120RR3
1KR2,R4
10KR5
10K yatık TrimpotR1
10µF/25VC1,C5,C7,C10
27pFC3,C4
100nFC2,C6,C8,C9
2W10M veya benzeri köprü diyotD2
ST485IC3
7805IC2
ATtiny2313IC1
3,6864Mhz kristalXTL1
3mm LEDD1,D3
6p6c veya 6p2c RJ12 konnektör P4
tip 0 klemensP3
14P konnektör (erkek)P1
10P konnektör(erkek)P2,P2_2
2x3 sıra pin(erkek)P5,isp
4x20 LCD modül (kablosu ile)-
P5 için köprü-
P2 ve P2_2 için kablosu(konnektör ile)-


Malzeme listesi. Burada işlemci için soket ve 9V adaptörler verilmemiştir. Entegre soketi listede verilmemiş kullanımı kişinin tercihine kalmış bir durum. 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.
Sistemin Çalışması


Şekil-16:Projedeki elemanlar bir arada.

Sistemin çalışması konusunda;

İşlemci saniyede 2 kez DS1307 üzerinden saniye, dakika, saat ,tarih verilerini alıyor. Saniye değiştiği zaman saat bilgisini ekrana gönderiyor.

Verileri her virgül arası bayt biçiminde olarak;

Saat bilgisi:Satır kodu,saat 10 hanesi, saat 1 hanesi, ayıraç,dakika 10 hanesi, dakika 1 hanesi, ayıraç,saniye 10 hanesi, saniye 1 hanesi, gerektiği kadar boşluk, satır sonu kodu (gönder kodu).

Tarih bilgisi:Satır kodu, gün 10 hanesi, ayıraç, gün 1 hanesi, ay (isim olarak),ayıraç, yıl(sadece 20xx için),satır sonu kodu (gönder kodu).

Haftanın günü bilgisi: Satır kodu, haftanın günü (isim olarak),satır sonu kodu (gönder kodu)

Bu bilgiler her saniye ve ayar yapılırken tuşun her bırakılışında yenilenmektedir.
Ayarlar


Şekil-17:Tuş atamaları

Ayar Gir/TamamBasıldığında Ayar moduna girer (ekran yenilemeyi durdurur) ve tekrar basıldığında ayar modundan çıkıp zaman gösterim moduna girer (ayarlar DS1307'e kaydedilir ve saat çalışmaya başlar)
Ayar SeçEkran üzerinde ayarlanaca öğeyi seçer (saat, dakika, saniye...)
Ayar YapEkran üzerinde seçili öğeyi ayarlar.

Minimum buton ile işlemin yapılması sağlandığından "Ayar Yap" işleminde sayma işlemi sadece ileri doğru yapılmaktadır.

Şekil-18:Ekranda "ayar seç" sıralaması


Şekil-19:"Ayar Gir" butonuna basıldığında ekran.

Saat ve tarih ayarı için;
"Ayar Gir" butonuna bas. Ekranda saat hanesinin olduğu bölge Büyük ve küçük karakteri ile şekil-19'da görüldüğü gibi işaretlenir. Ayarlamak istenilen birim ne ise (saat,dakika,saniye, gün, ay, yıl ve haftanın günü) o birime gelmek için "Ayar seç" butonu kullan. Bu birimlerin sıralaması şekil 18'de gösterilmiştir. Şekil-19,Şekil-20 ve şekil-22 "Ayar gir" butonu kullanılarak seçilmiş ayar görüntüleridir.

Şekil-20:"Ayar Seç" butonu ile seçilmiş ay.


Şekil-21:"Ayar Gir" butonu ile seçilmiş haftanın günü.

Not:Ayar işlemi esnasında saat gösteriminin durduğunu ve ekran üzerindeki ayar ne ise o noktadan itibaren saatin sayacağını unutmayın.

"Ayar Yap" butonuna:
Bu butona basıldığında hangi birim ayarlanıyorsa ("Ayar Seç" butonu ile seçilmiş) o birim 1 artırarak sayar. Ama diğer birimler bundan etkilenmez. Yani dakika ayarlanırsa sadece dakika üzerinde işlem yapılır.

Saat: Butona her bas/bırakta 1 artırarak sayar. Eğer saat "23" olursa sayma "00"'dan devam eder.

Dakika:Butona her bas/bırakta 1 artırarak sayar. Dakika "59" ulaştığı zaman, sayma "00"'dan devam eder.

Saniye:Butona her bas/bırakta 1 artırarak sayar. Dakika "59" ulaştığı zaman, sayma "00"'dan devam eder.

Gün:Butona her bas/bırakta 1 artırarak sayar. Burası biraz değişik. Aslında yıl ve aya göre değişmesi gerekiyor. Ama günün ayarı aydan önce olduğu için ne yazık ki bu ay ayarını siz yapmanız gerekebilir. Takvimi doğruluğu açısından bulunduğunuz günü doğru girmeniz gerekiyor. Örneğin 31 kasım girmemeye çalışın. Burada gün "31" olduğu zaman "01" tarihine devam eder.

Ay:Ay isimleri kullanıldığından, butona her bas/bırakta sonraki ay ismi ile ekran yenilenir. Ocak, şubat, mart, nisan, mayıs, haziran, temmuz, ağustos, eylül, ekim, kasım, aralık ay isimleri birbirini izler. "Aralık" ayından sonra ayar "Ocak" ayından deva eder.

Yıl: Yıl olarak sadece son iki rakamı göz önüne alınmıştır. Bu nedenle sadece son iki rakam ayarlanıyor. Butona her bas/bırakta 1 artırarak sayar. Yıl olarak "2099" tarihine ulaştığında "2000" tarihinden devam eder.

Haftanın günü:Haftanın günleri isim olarak kullanıldığından birbirini takip eden bir düzünde olarak pazar, pazartesi, salı, çarşamba, perşembe, cuma ve cumartesi şeklindedir. Bu nedenle ayarıda bu şekilde bir tekerleğin etrafına yazılmış gibi gün isimleri birbirini takip eder.

Gerekli ayarlamalardan sonra ayarları kaydedip saati çalıştırmak sadece "Ayar Gir" butonuna bas(bırak). Saat çalışmaya başlayacaktır.


Video filmi

Ekler:

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

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

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

"ATMega8 ve DS1307 çipi ile RS485 iletişimli LCD Saat" için dosyalar-birleşik

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

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...

8 Mart 2010 Pazartesi

Atmega8 ve RS485 ile 3 Renkli LED Modül Sürülmesi


Giriş

"Atmega8 ve RS232 ile 3 Renkli LED Modül Sürülmesi" ve "Atmega8 ve FT232BL(USB) ile 3 Renkli LED Modül Sürülmesi" projeleri ile 3 renkli LED kontrolu ile ışık rengi kontrolu gerçekleştirildi. Ama bu projeler bilgisayara yakın olmak zorundaydı. Bilgisayardan uzakta 3 renkli LED kontrolu ile ışık rengi gerçekleştirilmesini sağlamak için bir RS485 iletişimi ile projeyi gerçekleştireceğiz.

LED

Türkçe Işık Yayan Diyot olarak açabileceğimiz bu eleman düşük güçle ışık üretebilen uzun ömürlü elektronik elemanlardır.

Şekil-1:3 Rengin birleşiminden oluşan renk karışımları

Normalde ışık kaynaklarından üretilen 3 renkli (kırmızı, yeşil, mavi)ışıktan geri kalan diğer renklerin üretilmesi mümkündür. Şekil-1 bu işlemin temelini gösterir. Renkli ışıkların şiddetinin ayarlanması diğer renklerin üretilmesini sağlayacaktır.

Şekil-2:Tarayıcının optik algılayıcı modülü( LED çubuk bu modül ile birlikte harektetli bir kafa üzerine monte edilmiştir-LED çubuk bağlantıları sol tarafta görülebilir)

Bu projede kullanılan LED çubuk tarayıcıda (veya yazıcı ile birleşik tarayıcıda) kullanılan bir ışık kaynağıdır. Bu eleman tarafından üretilen ışık doğrudan taranacak nesne (kağıt) üzerine düşürülür ve kağıt üzerinden geri dönen ışık elbetteki aydınlatıldığı bölgenin renk bilgisini içerecektir. Kağıttan geri dönen ışık bir dizi optik algılayıcı üzerine düşer. Optik algılayıcı gelen ışık miktarına bağlı olarak bir elektrik sinyali üretir. Artık yapılması gereken bu elektrik sinyalini sayısal değere dönüştürmek ve işlemek. Bu noktadan sonra artık tarayıcı ve bilgisayarın görevidir

Şekil-3:LED çubuğun optik klavuzunun çıplak haldeki görünümü ve ışığı yansıtan küçük çentikleri

LED çubuk aslında adındaki gibi bir LED dizisi değil. Sadece 3 tane LED var, onlarda 3 renk için. Bu LED'lerden üretilen ışık bir ışık kanalında yayılır. Işık kanalı üzerinde ince çentikler var. Bu çentikler ışığın düzenli aralıklarla ışık kanalının önüne yansıttığı için sanki bir LED dizisi gibi görünmesini sağlar. Böylece tarayıcı için gereken ışık basit bir yöntemle elde edilmesi sağlanır.

Şekil-4:LED çubuk ve optik klavuzunun görünümü(görünen küçük çentiklere dikkat)

Not:Bazı tarayıcı tiplerinde 3 LED aynı anda yakılmaz. Teker teker yakılarak her bir renk için ayrı ayrı ölçüm yapılır. Bu sayede ışık algılayıcıların renk filtresi gereksinimi ortadan kaldırılır.
Devre

RS485 modülü ile işlemci modülü arasındaki bağlantı IDC10 konnektörler üzerinden 10 yollu kablo üzerinden veri ve beslemme bağlantısını oluşturur. LED kartı ile işlemci arasındaki bağlantı 4 kablo bağlantısı ile sağlanıyor. (Renkler o LED'e göre kablo rengi takılmıştır. Mor renkli kablo hariç. O Vcc bağlantısı için kullanıldı.

Sistem bir adaptör üzerinden alınan besleme gerilimi 7805 üzerinden 5V besleme gerilimi üretiliyor.

Şekil-5:LED kartının kablo bağlantı uçları.

Kartların ve kabloların bağlantıları hakkında başlık altındaki resmi ve şekil-7 bir fikir verecektir.

Şekil-6:RS485 kartında bağlantı için köprü konumu.


Şekil-7:Sistem çalışırken.(RS232/RS485 modülü resimde yoktur)

Projede RS485 yönü için ayrı bir yöntem uygulanmayıp sürekli olarak işlemci tarafınan giriş olarak kullanılması öngörüldü. Zaten devrede onu gerektiriyor. Yani işlemci sadece bilgi alır ve göndermez. (Şekil-6'a bak). Dolayısı ile bilgisayar tarafındaki bağlantıda sürekli gönderme konumunda. Bu seçim doğrudan RS232 portu tarafından bilgisayar programı yerine getiriyor.
Şema

Atmel 8 işlemcimiz olan üzere IC1 ile temsil ediliyor. İşlemciye bağlı kristal, C5 ve C6 kondansatörleri saat frekansı üreteci olarak çalışıyor. D2(LED) ve R1 sistem izleme göstergesi olarak çalışıyor.(ama gelen veri o kadar az ki yanıp söndüğü görülmüyor).ISP konnektörü artık bilineceği üzere IC1 programlama için. R2,R3 ve R4 renkli ledleri sürmede akım sınırlama elemanı olarak çalışıyor. CLED olarak belirtilen LED'ler çubuk LED olarak tanımlanan eleman içinde yer alır. C8 ve C9 LED modül beslemesinde oluşabilecek dalgalanları süzmek için eklendi.

D1, C1,C2 ve IC2 sistem için gereken 5V besleme devresini oluşturuyor.

IC3 RS485 bağlantısı için gereken bölümü oluşturuyor. Aslında neredeyse tek başına bu bağlatı dönüşümünü sağlıyor. 6p2c veya 6p4c P4 konnektörü RS485 bağlantısını sağlıyor. Buradaki R6,D3(LED) besleme gerilim geldiği gösterir.R7 direnci RS485 hattı için uyuşturma direncidir. (hat uygunlaştırma) R5 direnci ise IC3 çıkış için Vcc bağlanma durumunda akım sınırlama elemanı olarak çalışır.P5 aslında b RS485 modülü için yön seçme amacıyla kullanılır. (giriş, çıkış ve işlemci tarafından seçme)

Geri kalan kondansatörler filtre içindir. Şemada işlemci kartı ile RS485 modülü arasındaki bağlantıda kullanılan konnektörler gösterilmemiştir.

Şekil-8:Blok şeması


Şekil-9:Devrenin şeması(kırmızı çizgi ile işaretli bölge RS232 iletişim modülüdür)

Devrenin Çalışması

Devre ilk açıldığında LED modül üzerindeki LED'ler söndürülür. Bilgisayar programında yer alan kaydırma çubukları ile belirtilen renkteki led bilgisi RS485 üzerinden işlemci kartına gönderilir. Gelen bilgi Darbe genişlik modülasyonu için darbe süresi olarak kullanılarak LED yanma süresini belirler. Gelen bilgiye göre yakıp söndürülen LEDler bir renk karışımı oluşturur.

Şekil-10:LED Modül.


Şekil-11:İşlemci Modülü.


Şekil-12:RS485 Modülü.


Şekil-13:RS485/RS232 Modülü.(bilgisayar bağlantısı için gereklidir.)

Devre Yapımı

Devre yapımında kritik bir eleman yok. Baskı devre kartı üzerinde geçekleştirildiğinde standart eleman yerleşimi göz önüne alınarak devre kurulabilir. Bu noktada diğer devre montaj teknikleri kullanıldığında bacakların doğru bağlanması önemlidir. Tabii ki kristal topraklanmalıdır.

Tüm dirençler çeyrek vattır.

Besleme konusunda bir sorun oluşturmayacağınızı düşünüyorsanız girişteki köprüyü devre dışı bırakabilir veya tek bir diyotla değiştiribilirsiniz. (Kendi besleme kaynağınız varsa ve devreyi kendiniz kullanacaksanız). Bacak bağlantıları uyan başka bir LED kullanılabilir. Entegreler için soket kullanılması sonradan oluşabilecek sorunların çözümünde size yardımcı olabilecektir.

LED modülü işlemci modülüne Tunik 4'lü konnektörü kullanılarak bağlantısı sağlandı. LED modül üzerindeki çubuk LED ayakları lehimlendikten sonra kart ile LED çubuk arasında biraz sıcak silikon sıkılması mekanik dayanıklılık sağlayacaktır.

Şekil-14:Devrenin baskı planı


Şekil-15:Devrenin eleman yerleşimi


Şekil-16:Devrenin baskı devre ve elemanları birlikte


Not:Baskı devrede* ile işaretli elemanlar kullanılmamaktadır.

Devre Elemanları

120RR7
470RR2,R3,R4
1KR1,R6
10KR5
27pFC5,C6
100nFC2,*C4,C7,C8,C10,C11,C13
10µF*C1,C3,C9,C12
B125C1500 veya benzeriD1
LEDD2,D3
Çubuk LEDRGB LED
ATMEGA8IC1
7805IC2
ST485IC3
3,6864Mhz kristalXT1
6p6c veya benzeriP4
6 Header(ISP6)(erkek)ISP
4'lü TunikP1
2'li KlemensP2
10 Header(erkek)P3-P3_2
6 Header(erkek)P5
Köprüköprü(jumper)
10'lu kablo-

Malzeme listesi. Burada işlemci için soket ve 9V adaptör verilmemiştir. Kaliteli 8 ve 28 bacaklı soketler oluşabilecek problemlerin önüne geçecektir. 2'li klemens (P2)ve P3 ile P3-2 şemada gösterilmemiştir ve "*" ile işaretli elemanlar kullanılmamıştır.RS232/RS485 modülü için gereken malzeme listesi verilmemiştir ve "RS232/RS485 dönüştürücü arabirim" projesinin yapıldığı varsayılmaktadır. RS485 bağlantısı her iki ucunda RJ12 konnektörü takılı telefon kablosu unutulmamalıdır.

Şekil-17:Devre çalışırken çubuk LED üzerinde elde edilmiş renkli ışık görüntüleri


Şekil-18:RS485 modülü ile İşlemci modülü arasındaki bağlantıyı sağlayan 10 yollu kablo ve konnektörleri

Bilgisayar Programı

Bilgisayar üzerinde kullanılan program Delphi 7 ile yazıldı. "LED_Renkli485.exe" programı 2 ana pencereden oluşuyor. Birinci pencere ayarların yapıldığı penceredir. Seri port seçimi yapılır. İkincisi gösterilecek rengin değerlerinin belirlendiği penceredir.

Programı çalıştırın ayarlar penceresinden RS232/RS485 modülünü bağladığınız RS232 portunu seçin ve Tamam butonuna tıklayarak onaylayın. Ana pencere üzerinde kaydırma çubuklarını fare ile hareket ettirerek istediğiniz rengin LED çubuğunda gösterilmesini sağlayın. Alet açık kaldığı sürece ayarlanan renk kalacaktır.

Ana Pencere

Şekil-18:Ana Penceresinin görünümü

Bu pencere üzerindeki öğeleri değinecek olursak;.
  1. Kırmızı Rengin belirlendiği kaydırma çubuğu.
  2. Kırmızı rengin belirlendiği kaydırma çubuğunun değeri
  3. Mavi Rengin belirlendiği kaydırma çubuğu.
  4. Mavi rengin belirlendiği kaydırma çubuğunun değeri
  5. Yeşil Rengin belirlendiği kaydırma çubuğu.
  6. Yeşil rengin belirlendiği kaydırma çubuğunun değeri
  7. Belirlenen renk değerlerine göre bilgisayarda rengin gösterilmesi (LED çubuğunda farklı olabilir)
  8. Renk kaydırma çubuklarını sıfır değerine çeker
  9. Seçenekler penceresini açar


Seçenekler

Şekil-19:Seçenekler penceresi

Seçenekler penceresi üzerindeki öğeleri değinecek olursak;.
  1. Bilgisayara üzerinde bulunan seri portları listeler ve bunlar arasından bağlantısı yapılan port seçilir.Seçilen port numarası ini dosyasına kaydedilir.(tamam butonu tıklandıktan sonra ayar onaylanır)
  2. Bu pencerede yapılan ayarları onaylar ve Girdi pencerisini açar



Ekler:

ATMEGA8 hakkında bilgi

Atmega8 ve RS485 ile 3 Renkli LED Modül Sürülmesi için dosyalar- birleşik

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

Translate

Sayfalar

Etiketler

74C922 (1) 74HC125 (2) 74HC138 (1) 74HC20 (1) 74HC590 (1) 93C46 (5) adc (2) adım motor (1) Android (1) Arduino (5) Arduino UNO (5) at90S2313 (7) atmega128 (1) Atmega128 (1) atmega16 (5) atmega32 (4) Atmega328p (5) Atmega8 (44) attiny (1) attiny2313 (18) avr (71) barometre (1) bilgisayar ses (1) Biplor step motor (1) Bluetooth (2) bootloader (1) cep telefonu (1) CGRAM (1) CGROM (1) DHT11 (1) DS1302 (1) DS1307 (5) ds1820 (3) EDMCPR6YOY (1) ENC28J60 (3) ethernet (3) F2631XH-44 (1) fiber optik (2) floresan ekran (4) frekans (1) FT232BL (9) FT232RL (1) FTDI232 (3) GLCD (2) grafik LCD (8) HC06 (2) HH10D (2) HITCHACHI (1) higrometre (2) HP03S (1) HR911105A (1) i2c (1) isp (2) kapasitemetre (2) karakter LCD (5) kızılaltı (2) klavye (2) kondansatör (1) L2432 (1) L298 (1) LAN (1) LCD (22) LCD ekran (2) led (8) led ekran (14) led matris ekran (4) LM044L (1) LM1117-3V3 (2) LM35 (8) lm358 (1) LM75 (2) max3232 (1) MCP3550 (1) nea02017 (2) panasonic (1) PCF8574AT (2) PCM1602 (3) programlayıcı (1) RCM2048R (1) rs232 (16) rs485 (14) saat (14) sayıcı (1) Seri (3) Sharp (1) Step motor (1) şifreli kilit (2) T6963C (3) TC1602.TC2004 (1) termometre (13) tester (1) transistör (1) tuş takımı (2) tx179 (2) uf-150 (1) USB (14) voltmetre (1) wifi (1) YMC162 (2) zamanlayıcı (2)

İzleyiciler