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.

8 Haziran 2012 Cuma

Atmega32 ve Grafik LCD üzerinde Mekanik Saat


Giriş
Zamanı ölçme çabalarının sonucunda ortaya çıkan mekanik saatler, birçoğumuz için nostalji gibi gelse de mekanik saatlerin kendine göre bir havası olduğu inkar edilemez. Mekanik saatlerin bakım ve kullanım açısından bazı zorluklar taşısa da elektronik devreler ile taklit edilemez de değildir. Bu projede Atmega32 ve Grafik LCD üzerinde mekanik saat (Tik tak saat 2012) oluşturmaya çalışacağız.


Mekanik Saat


Şekil-1 :Mekanik saatin temel prensibi (dişli yönleri dikkate alınmamıştır) ve bir saatin dişli grubu (sağ).
Mekanik saatlerin gelişim sürecinde zaman ölçüm kesinliği zorunlu hale geldikçe saat hassasiyeti de artmıştır. Sonuçta mekanik saatlerde dişli sistemler ve mekanizmaları oluşturan öğelerin daha hassas üretilebilmeleri günümüze kadar uzanan bir süreci getirmiştir. Yüksek hassasiyet için saati oluşturan öğelerin daha kontrollu şartlar altında kullanımını zorunlu hale getirse de evimiz veya iş yerimiz gibi ortamlarda zaman şaşmaları kabul edilebilir boyutlarda olduğu durumlarda da kullanılabilir. Saat mekanizmasını basitçe özetleyecek olursa, elimizde saniyede 1 diş dönen bir çarkımız var. Bu saniye çarkını döndürmek için kullanılır. Saniye çarkını dakika çarkını döndürme şartı ise 1:60 oranında bir dişli sistemi gereksinimidir. Yani 1 dakika=60 saniye.Yani saniyenin 1 tam turu dakika (yelkovan) için bir çarklı dişine denk gelir. Dakikanın (yelkovan) saate (akrep) göre dişli oranı ise 1:60 'dir ki 1 saat=60 dakika. Yani yelkovan dişlisinin 1 tam turu akrep dişlisi çarkının 1 dişine dek gelir. Mekanik saatler günü 12 saat modunda kullanır. Yani 1 tam gün için saat kadranında akrep 2 tur atar. Mekanik saatler karşıt ağırlık, yaylı gibi kurma yöntemlerle çalışırken elektriğin icadından sonra saatlerin çalışmasında elektrik kullanılır olmuştur. Özellikle elektroniğin gelişmesinden sonra mekanik saatlerin kullanımı giderek azalmıştır..
Atmega32 Ve Grafik LCD gerçekleştirilmesi

Grafik LCD üzerinde böyle bir uygulamanın gerçekleştirilmesinde sabit bir r uzunluğundaki bir doğrunun değişik açılardaki koordinat sistemine göre hesaplaması gerekiyor. Bu işlem işlemci üzerinde yapılabilir. Sınırlı kaynaklarla biraz uğraştırabilir.


Şekil-2 :Rir açının r uzunluğundaki doğru parçasının koordinat üzerindeki hesabı.



Şekil-3 :Rir açının r uzunluğundaki doğru parçasının Grafik LCD üzerindeki durumu.

Öncelikle saniye ve (yelkovan) dakika için 360/60=6 derecelik açı aralıkları ile bölünmüş dilimlere karşılık gelir. Ayrıca (akrep) saat için ise 360/12=30 derecelik açılarla bölünmeyi gerektirir. Ama burada göz ardı edilmemesi gereken konu bu işlemin 64x64 matris alanında gerçekleştirilmesi gereğidir ki, rakamlar için 8 noktalık bir kısım ayrıldığında bize kalan alan 48x48'lik matris alanı kalır. İşte saniye, yelkovan, akrep kollarının hareket alanı bu kadardır. Not:GLCD sürülmesi ile ilgili olarak ekran iki bölüme ayrıldığından saat kadranı ortalanmamıştır.


Şekil-4 :Saatin genel çalışma şeması.
Dolayısı ile saatin akrep, yelkovan, saniye kollarının ve kadranın bir bölümünün görüntüsünün oluşturulduğu ram alanı olarak(0x100 başlangıç adresi olmak üzere) 6x48 =288 baytlık bir alan ayrılmıştır. Böylece sistemde timer1 1 saniyelik referans sinyalini oluşturur. Her saniyede gerekli saat değeri hesaplanmakta, hesaplanan değere göre 0x100 başlangıç ram adresinde ekrandaki görüntü oluşturulur ve ramdeki değer Grafik LCD ekrana gönderilir. Dolayısı ile ekrandaki 48x48 matris alanı bilgisi 1 saniyede bir yenilenir.


Şekil-5 :LCD ekran üzerindeki öğelerin piksel cinsinden boyutları.
Saat kadranı devre ilk çalıştığın zaman ekrana yüklenir ve saatin elektriği kesilene kadar kalır. (Saatin yanındaki yazılar da bu alana dahildir) Sadece saat kadranının belirli bir bölümü yani saniye kolu, akrep ve yelkovan kollarının saat kadranı üzerinde 48x48 matris içinde kalan saat kadranı yenilenir.
    Saat'in değerinin ekrana yazdırılması:
  1. kadran üzerindeki 48x48 peksellik matris alan bilgisi belirlenen RAM üzerine kopyalanır. Bu zemindir.
  2. Saniye değerine göre kolun verisi kadran üzerindeki konumuna karşılık gelen ram üzerine yerleştirilir.
  3. Dakika değerine göre yelkovan şekli kadrandaki şekline uygun RAM üzerine yerleştirilir.
  4. Saat değerine göre akrep şekli kadrandaki konumuna uygun RAM üzerine yerleştirilir.
  5. Şimdi yapılması gereken tek şey bu RAM'e kopyalanmış olan kadran, saniye, yelkovan ve akrep şeklinin grafik LCD üzerine aktarılmasıdır.
Bu noktadan 1. maddeye geri döner. Buradaki 2., 3., 4. maddadeki bilgiler saat, dakika, saniye sayaçlarının aldığı değerlere göre şekillenir. br>


Şekil-6 :Saatin ekran görüntüsünün oluşturulması.
Devre
Proje donanım olarak butonlar hariç "Atmega32 ile Grafik LCD'nin Sürülmesi" projesinin aynısıdır. Yazılım olarak bu proje için assembler dilinde geliştirilen yazılım derlenerek yüklenmiştir.



Şekil-7 :Saatin çalışırken görünmü Butonlardan mavi renkli olanları ayar için kullanılmaktadır.

Devre butonlar, işlemci kartı ve grafik LCD olarak bölümlere ayrılabilir. Butonlar işlemci üzerindeki herhangi bir porta bağlanabilir, yeterki butonların bağlandığı bacağın port tanımaları uygun şekilde değiştirilsin. Butanlardan biri saat ayarı için, diğeri dakika ayarı için kullanılmaktadır.


Şekil-8 :Butonlar.üstten, yandan, ve alttan görünümü

İşlemci kartı üzerinde besleme devresi yer almaktadır, yani girişi 9-12V aralığında herhangi besleme ile devrenin çalışabileceği anlamını taşır. Grafik LCD 'de beslemesini işlemci devresinden almaktadır.


Şekil-9 :Saat çalışırken ekranın resmi.
Şema
Sistemin kalbini IC1 ile ATMEGA32 oluşturuyor. Aslında kristale gerek olmasada kesin zamanlama ihtiyacını karşılamak için XT1(3.6864MHz) kristal ile C6 ve C7 (27pF) kondansatörler ile birlikte işlemci için gereken zamanlama frekansını üretirler. R1 (1K) ve LED1 (LED) ile devrenin çalışmasını izlemek üzere kullanılsada bu bölümde ihtiyaç olmadığından devre dışı bırakılmıştır. Grafik LCD ekran şemada gösterilmese de P3 konnektör bağlatısı üzerinden kablo ile bağlanmaktadır. R3 (10K) trimpot grafik LCD'nin kontrast ayarı için kullanılmaktadır. Devrenin beslemesi P1 konnnektörü üzerinden D1 (2W10M) köprü diyodu üzerinden IC2 (7805)regüle edilerek devrelinin ihtiyacı olan beslemeyi oluşturur. Burada BUT1,BUT2 ve BUT3 olarak belirtilen bas bırak butonlardan aslında sadece BUT1 butonu kullanılmakta ve bir kablo üzerinden ISP konnektörüne bağlanmaktadır. ISP içinse işlemcinin programlama işlemi için kullanılmakla birlikte şu hali ile butonlar için bağlantı noktası işlevini yerine getirmektedir. Belirtilmeyen geri kalan kondansatörler filtre amaçlıdır.


Şekil-10 :Devrenin blok şeması




Şekil-11 :Devrenin şeması
Devre Yapımı
LCDDevre montajı açısından kritik bir durum yoktur. Görüldüğü gibi devre son derece sadedir. Sadece kabloları karta lehimlerken kısa devre olmamaları için dikkatli olmak yerinde olacaktır. Not: C9 ve C10 100nF kondansatörleri buton kartı altına lehimlenmiştir.


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




Şekil-13:Yerleşim planı




Şekil-14: Eleman ve yollarla birlikte yerleşim planı.




Şekil-15:İşlemci kartı ile buton kartının kablo bağlantıları.
Devre Elemanları
1KR1
27RR2
10K yatık trimpotR3
27pFC6,C7
100nFC1,C2,C4,C5,C8,C9,C10
10µF/25VC3
3mm yeşil LEDLED1
ATMEGA32 (DIL)IC1
7805IC2
2W10M veya benzeriD1
3,6864 Mhz kristalXT1
2x3Header (ISP6)isp
2'li klemensP1
Bas bırak butonbut1, but2, but3
40 bacaklı entegre soketi (DIL)-
PGM12864-


Saat Hakkında


Şekil-16:Butonlar ve işlevleri.

Devre tasarım aşamasında saat olarak kullanılacağı öngörülmediğinden butonların harici kesme girişleri (int0 ve int1 LCD üzerinde veri portunda kullanılmaktadır) başka amaç için kullanıldı. Bu nedenle buton girişleri normal bacaklar kullanıldı. Bu yüzden butonların çalışması biraz yavaş ve nazlıdır.Dolayısı ile saat ve dakika ayarları biraz yavaştır. Ama saatin çalışması açısından bir sıkıntı yoktur. Saat ekranında kullanılan öğelerin verileri ve programlama kodlarının üretiminde visual basic'den yararlanıldı. Özellikele saat kadranı oluşturulması ve oluşturulan görüntünün veri kodlarını üretilmesinde oldukça yardımcı oldu. Saniye,akrep ve yelkovan kollarının her bir konumu için visual basic'ten yararlanıldı. Yoksa her bir konum için tek tek veri üretilip bunlardan kodların oluşturulması oldukça zaman alıcı bir olaydı. Visual Basic sayesinde kodların oluşturuması hızlı ve kolay bir şekilde sağlandı. Bu işlem için oluşturulan visual basic programı dosyalar ile verilmemiştir.



Şekil-17:Kodların oluşturulmasında kullanılan program arayüzü.
 

Ekler:
ATmega32 hakkında ayrıntılı bilgi için

"Atmega32 ve Grafik LCD üzerinde Mekanik Saat" projesi için gereken dosyalar

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

Hiç yorum yok:

Translate

Sayfalar

Etiketler

İzleyiciler