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.

12 Temmuz 2014 Cumartesi

Atmega128 ve LM35 ile T6963C kontroller bulunan 240x128 GLCD termometre

Giriş
Bu projede termometre veya LM35 kullanımından ziyade T6963C kontroller barındıran 240x128 grafik LCD'nin ATMEGA128 ile sürülmesini sağlamaktı. KS108 kontroller barındıran GLCD'lerden farklı bir yapıya sahip olduğu için sürülmesi biraz farklı bir yaklaşık gerektiren 240x128 GLCD daha önceki blog sayfalarında anlatıldı.

Bu projede "Atmega128 ve LM35 ile T6963C kontroller bulunan 240x128 GLCD termometre" konusu işlenecektir.
LM35
Şekil-1 :Sıcaklık algılayıcı olarak kullanılan LM35. Besleme bacakları arasına eklenen 100nF kondansatör ile birlikte. (Şema ve PCB üzerinde bu kondansatör gösterilmemiştir.)

İnternet üzerinde bir çok örnek ve uygulama bulunabilen LM35 bilindiği gibi analog olarak çıkış bacağından sıcaklığa bağlı olarak bir gerilim veren bir entegredir. 4V ile 20V aralığında beslede çalışabilen entegre 10mV/C ölçek çarpanına sahiptir. Normalde çıkış ucu ile GND ucu arasına (Besleme verilmek şartı ile) bağlanan bir voltmetre ile de değer okunabilir.
Şekil-2 :LM35 test devresi. Besleme 9V (kırmızı ve siyah krokodil) Ölçü aleti; sarı (çıkış) siyah (GND) krokodil. Ekranda ortam sıcaklığı ölçümü. Multimetre 2V kademesinde olduğu için hali ile noktanın yeri önemsenmeyecek. Sağdaki ilk hane bizim ondalık hane olarak ele alınacak. (Ortam sıcaklığı 27.6 C)

T6963C Grafik işlemcisi
Toshiba tarafından üretilen T6963C Grafik işlemcisi kendine özgü bazı özellikler taşımaktadır. T6963C grafik işlemcisi piyasada yaygın olarak kullanılan S6B0108 veya eşdeğer grafik işlemcilerinden biraz farklı özellikler içermekte. En azından bu projede kullanılan 240x128 grafik LCD için tek sayfa olarak düzenlenmiş. Yani ekrana yazılan her bilgi sayfa seçmeden doğrudan ekrana gönderilebiliyor.

Şekil-3 :240x128 Grafik LCD'nin ekran veri yerleşimi

240x128 nokta matris gösterge alanı, 8 bit paralel arayüzü, 128 karakter iç CG-ROM, metni ve grafikleri birleştirebilme yeteneği, ayrı adresleme alanları olan metin, grafik ve Karakter üreteci RAM (CGRAM) gibi özellikleri sayılabilir.

Grafik açısından satırlar bir bitlik bir yapıdadır. Ama sütunlar 8 bit veri içerecek şekilde gönderilmekte. Dolayısı ile ekrana gönderilecek veri bir satıra 30 bayt ve 128 tane de satırı olduğu sonucu çıkarılır. Ekrana grafik verinin tümünü gönderdiğimizi düşünürsek bu 3840 bayt edecektir. Atmega128 seçilmesinin neden oluyor ki, Atmega128'in ram kapasitesi 4kbayttır.

Grafik verisi için ayrılan RAM başlangıç adresi 0x0200 olmaktadır.

Projede düşünülen nokta ekranın her değişikliğinde tüm ekranın güncellenmesi idi. Şu şekilde ekran ile fazla iletişik kurmadan sadece gerektiği noktada yani görüntünün ekrana gönderilmesi noktasında iletişim kurulması idi.

Bu iş için ekran görüntüsü için gereken 3840 bayt'lık bir RAM alanına ihtiyaç var. Tabi çözüm olarak Atmega 16 veya Atmega32 kullanıp yanına harici RAM eklemek olabilir. Bu hem işlem miktarını artıracak, hemde kendine göre sorunlar ortaya koyacaktır. Devrenin basit tutulması adına en iyi çözüm 4Kbayt dahili RAM'ı olan Atmega128 kullanmaktır. Her güzel de olduğu gibi kusur sayılırsa, tek kusuru SMD yapısında olması.(DIP sürümünün bulunmamasıdır)

Bacak NoSembolüAçıklaması
1FGModül Çerçeve Şasesi
2Vss0V
3Vdd+5V
4VoKontrast Ayarı
5WRVeri Yaz
6RDVeri Oku
7CEÇip İzni
8CDKomut/Veri Seçme
9RSTReset Sinyali
10DB0Veri Biti 0
11DB1Veri Biti 1
12DB2Veri Biti 2
13DB3Veri Biti 3
14DB4Veri Biti 4
15DB5Veri Biti 5
16DB6Veri Biti 6
17DB7Veri Biti 7
18FSFont Seç
19LED+LED'in Anot uçu (+5V)
20VEE-16.5V çıkış
Yukarıda projede kullanılan 240x128 GLCD bacak bağlantıları verilmiştir.

Devrenin çalışması
Şekil-4 :Ekran arkaplan resmi. Diğer öğeler bu resim üzerine eklenir.

İşlemci çalışmaya başladığı zaman önce arkaplan görüntüsü RAM için ayrılmış alana aktarılır. İşlemcinin RAM başlangıç adresi 0x0100'dür. Her ne kadar nokta ve Derece işaretleri de arka plan görüntüsü üzerine gömülebilirse de, işi fazla dallandırıp budaklandırmamak için ayrı bir veri olarak işlemci üzerindeki RAM alanına ayrı bir veri olarak eklenmekte ve ilk açılıştı ADC ölçümü henüz yapılmadığı için hali ile 000.0 şeklinde bir veri de ekrana yazılır. Tek farkla soldaki iki sıfır gizlenir.Tüm bu veriler RAM'e aktarıldıktan sonra RAM'deki veri GLCD ekrana aktarılır.
ekil-5 :Ekran üzerinde sıcaklığı göstermekte kullanılan rakamlar (Tahoma 60pt).

Başlangıçta ayarlanmış olan Timer1 belirli bir zaman sonra bir kesme üretip bir bayrağı tetiklediğinde, ADC grubunun ADC7 bacağına bağlı olan (PF7) LM35 çıkışı ADC tarafından okunur. Bilindiği üzeri ADC 10 bitliktir. Referans gerilimi olarak iç refrans gerilim 2.56V olarak ayarlanmıştır. (LM25 çıkışı 2.56V üzerine çıkamayacağı için)Alınan veri sıcaklık verisi olarak hanelerine ayrıştırılır ve her hane belirlenmiş RAM bölgelerine hangi rakama karşılık geliyorsa o şekilde yazılır. Son olarak RAM'de oluşturulan görüntü GLCD'ye aktarılır. Bu işlem timer1'den kesme geldikçe tekrarlanır. Ekrana veri aktarımı ve görüntünün RAM üzerinde hazırlanması zaman aldığı için çok hızlı değildir.
Şekil-6 :Verilerin ekran üzerine (işlem RAM) üzerine yerleşim sıralaması). 1,2 ve 3 (arkaplan, nokta ve derece santgrad işaretleri) sistem ilk açıldığında RAM üzerine aktarılır, sonraki aşamalarda, sadece 4,5,6 ve 7 (rakamlar) sürekli olarak güncellenir.

RAM üzerinde sadece rakamların hazırlandığı bölüm ekrana aktarılırsa görüntü güncelleme hızı artırılabilir. Bu program karmaşıklığını artıracağı kesindir.

T6963C grafik ekran kontroller sistemindeki yapı işlemciden gelen verilerin ekrana yatay yerleşmesidir. Bu nedenle ekrana gönderiler rakamların yerleşiminde 8 piksellik bloklar halinde yerleşme zorunluluğu vardır. Bu nedenle karakterlerin boyutları ve yerleşimi konusunda dikkatli olmak gerekir.

Şekil-7 :Sistem ilk çalıştığında ekranda gösterilen değer.

Başka bir proje olarak okunan sıcaklık değerinin ekran üzerinde grafik olarak gösterimi olabilir.

Devre
Devre üzerinde fazla bir şey yok. GLCD, GLCD kontrast ayarı için bir trimpot,işlemci atmega128 , kristal,besleme için7805 ve DF10M köprü diyotu var .İşlemcinin istenilen kapasitede RAM'a ve çevre birimlere sahip olması devreyi basitleştirmeye olanak sağladı.
                                     Şekil-8 :İşlemci kartının ön ve arkadan görünümü

                        Şekil-9 :Projede kullanılan T6963C grafik kontroller barındıran 240x128 GLCD


Şekil-10 :İşlemci kartı ile GLCD arasında bağlantıyı sağlayan kablo

Sadece LM35 kart üzerinde değilde bir kablo ile uzatılmıştır.
Şekil-11 :Tüm bağlantıları tamamlanmış proje

Şema
Devre IC1 (Atmega128) üzerine kuruludur. İşlemcinin osilatör için harici kristal XT1 (8MHz) ve C5 ve C6 (27pF) kondansatörler ile saat sinyali üretimini yerine getirmektedir.

P4 (besleme girisi), D1 (DF10M) köprü (kendisi aslında SMD değildir, bacakları biraz bükülerek SMD haline getirilmiştir), ve IC2 (7805) devre için gereken 5V besleme gerilimini sağlar.

R1 (10k) trimpot GLCD için kontrast ayarıdır ve GLCD ile kart arasındaki bağlantı P2 konnaktörü üzerinden sağlanmaktadır. R7 (120 Ohm) GLCD arkaplan aydınlatması için akım sınırlama elemanı olarak kullanılmaktadır.

Geri kalan kondansatörleri filtre amaçlıdır.

PCB üzerinde gösterilen P1,R2,R3,R4,R5,R6 bu projede kullanılmamıştır.

Şekil-12:Blok şeması
Şekil-13:Devre şeması (projede kullanılmayan elemanlar gösterilmemiştir)

İşlemci bacağıProgramlayıcıAçıklaması
PE0MOSISeri veri girişi
PE1MISOSeri veri çıkışı
PB1SCKSeri saat
Atmega128 ISP programlama bacakları SPI iletişim bacaklarından farklı bacaklar üzerine atanmıştır.(SCK hariç) Bu nedenle PCB kendi çizeceklerin bu konuya dikkate almaları gerekmektedir

Devre Yapımı
Devre montajı açısından kritik eleman Atmega128'in kendisidir.. Görüldüğü gibi devre son derece sadedir. Sadece kabloları karta lehimlerken kısa devre olmamaları için dikkatli olmak yerinde olacaktır.
Şekil-14:Grafik LCD sürücü kartı yollar

Şekil-15:Grafik LCD sürücü kartı yerleşimi

Şekil-16:Grafik LCD sürücü kartı bakır yolların olduğu taraftaki elemanların yerleşimi

Şekil-17:Grafik LCD sürücü kartı yolları birlikte eleman yerleşimi

Şekil-18:Grafik LCD sürücü kartı yolları ve yoların olduğun taraftaki yollarla birlikte eleman yerleşimi

Şekil-19 :Montajı yapılmış işlemci kartı
Şekil-20:İşlemci kartına LM35'in bağlantısı

Şekil-21:Karta lehimlenmiş Atmega128

Devre Elemanları
120R (1206)R7
0R (1206)J1,J2,J3
10K yatık trimpotR1
27pF (1206)C5,C6
100nF(1206)C2,C3,C4, C7,C8,C9,C10,C11
10µF/25V (1206)C1
ATMEGA128 (TQFP)IC1
7805 (D2PAK)IC3
DF10MD1
LM35IC2
8 Mhz kristalXT1
2x3 Header (ISP6)isp
2'li klemensP4
240x128 GLCDM1
20'li sıra pin (2adet)- (P2)
40 yollu şerit kablo-
40 bacaklı şerit kablo için konnektör (2adet)-
Besleme için 9V'luk adaptör, LM35 ile kart arasında kablo belirtilmemiştir, isteğe göre kablo kullanılabilir..

Ekran Görünümleri
Şekil-22:Devre çalışırken ölçülen ortam sıcaklığı.

Şekil-23:Biraz sıcak hava üfleyince çeşitli zamanlarda çekilmiş ekran görüntüleri. 100 derece üzerine çıkıldı ise de hem sıca hava üflecini tutmak, hem fotograf çekmek pek kolay olmuyor. Görüntü bulanık çıkmış..

Şekil24:Atmega128 için sigorta ayarları. Elimde sadece AVR Studio ile ilgili ayarlar olduğu için bunu verebiliyorum. Butonların hemen üzerindeki alanda yer alan hex sayıları kullanarak kendinize göre uyarlayabilirsiniz.


Ekler:
Atmega128 hakkında bilgi için

"Atmega128 ve LM35 ile T6963C kontroller bulunan 240x128 GLCD termometre" 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