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.

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

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


17 Temmuz 2013 Çarşamba

Atmega8 ve LM75 ile LED Ekranlı Termometre

Elektronik termometreler elektroniği bilenler için sıradan hatta neredeyse ilk başladıklarında yaptıkları ilk devreler arasındadır. Çeşitli haberleşme yöntemlerini kullanan sıcaklık algılayıcılar amaca uygun olarak rahatlıkla seçilip kullanılabilmektedir. Ölçülen sıcaklığın insanların anlayabileceği bir biçimde görüntülenebilmesi için de bir çok ara yüz birimi vardır.

Bu projede "Atmega8 ve LM75 ile LED Ekranlı Termometre" üzerinde duracağız

LM75

Şekil-1 :Küçük bir kart üzerindeki LM75. i2c pull-up dirençleri görülmektedir. Üstteki kondansatörler 100nF ve 10µF'dır

Sıcaklığı ölçen sayısal sistem üzerinde 9 bitlik sıcaklık bilgisini işlemci tarafından okunabilmesi için i2c bağlantısını kullanılır. Her ne kadar., LM75'in sıcaklık alarmı gibi başka işlevleri var ise de, bu projede üzerinde durulmayacaktır. LM75 sıcaklık algılayıcı -55 ile +125 derece arasında ölçüm yapabilmektedir.

LM75 için alet adresi 1001,A2,A1,A0 ve oku/yaz biti ile oluşturulur. Bu projede A2,A1 ve A0 bacakları toprağa bağlandığından 0 olur ve dolayısı ile alet slave adresi 1001000+oku/yaz şeklinde düzenlenir. Buna göre LM75 yaz tanım kodu 10010000(0x90) ve oku tanım kodu 10010001 (0x91) şeklinde olmaktadır.

Şekil-2 :i2c üzerinden işlemci ve LM75 arasındaki iletişim..

Bir sıcaklık verisinin okunmasında;
  • LM75'e başlama durumu gönder 
  • LM75'e tanıma kodunu (çip kodu+adres+ yaz biti) gönder ---LM75'den kabul durumu bekle 
  • LM75'e okunacak bayt adresini (0x00) gönder --- LM75'den kabul durumu bekle 
  • LM75'e başlama durumu gönder --- LM75'den kabul durumu bekle 
  • LM75'e tanıma kodunu (çip kodu+adres+ oku biti) gönder ---LM75'den kabul durumu bekle 
  • LM75'den sıcaklık yüksek anlamlı baytı oku --- LM75'e kabul durumunu gönder 
  • LM75'den sıcaklık düşük anlamlı baytı oku --- LM75'e kabul değil durumunu gönder 
  • LM75'e durdur durumu gönder...


kabul durumu :Lojik-0
kabul değil durumu: Lojik-1


Artık bu noktadan sonra okunan verinin değerlendirilerek sıcaklık değeri ile eşleştirilmesine kalmıştır.

Düşük anlamlı baytı sadece bit7 değerlendirilmektedir. bit.7'de sıcaklık değerinin ondalık hanesine denk düşmektedir ki sadece 0 ve 5 değerini almaktadır.
Şekil-3 :LM75'den alınan sıcaklık verisi.

Yüksek anlamlı baytın bit-7 ise sıcaklığın negatif veya pozitif değerini ayırmak için kullanılmaktadır.

Yüksek anlamı bayt değeri onluk sistemde doğrudan sıcaklık değerine denk düşmektedir ki bu bir çevirme işlemine gerek olmayacağı anlamını taşır. Sadece sıcaklık değeri sıfırın altında ise o zaman elde edilen değerinden 255'nın çıkarılması gerekmektedir.(ikinin tümleyeni ve yüksek anlamlı baytın bit-7 dahil).Bu noktada göz önüne alınması gereken LSB değerininde hesaba katılması gerekliliğidir.

LED ekran

Şekil-4 :Devrede kullanılan LED ekranları birisinin üzerindeki 2 rakamı.

LED elektroniğin en bilinen elemanıdır. Burada kullanıcı arayüzünde rakamsal değer olarak verebilmek için 7 parçalı ortak anotlu LED ekranlar kullanılmaktadır.

Sadece işlemcinin bacak sayısı her LED ekranı tek tek sürmeye yeterli gelmediğinden dolayı çoğullama adı verilen bir teknik kullanılmaktadır. Yeni her LED ekran aynı anda sürülmemektedir. Sadece zamanın küçük bir kesrinde kendisine ait değeri göstermektedir. İnsan gözü saniyenin 1/20'deki değişimleri algılayamadığı için bütün değerleri bir anda gösteriliyormuş gibi algılıyoruz.

Bu işlemcinin bacak sayısında tasarruf sağlıyor ama işlemci programını biraz karıştırıyor..

Devre

Şekil-5 :Tam sistem. Tek yapılması gereken besleme bağlantısı

Devre işlemci kartından oluşmaktadır. Her ne kadar LM75 ayrı bir kart üzerinde ise de hepsini bir kart üzerine toplamak baskı devre çizebilenler için sorun olmayacaktır. İşlemci devresi ;işlemci, besleme LED ekran ve LED ekran sürücüleri tek bir alanda toplanarak küçük bir devre oluşturulmasını sağlamıştır.
Şekil-6 :İşlemci kartı. Bu kart daha önceki projelerde kullanılan bir devre olduğu için bazı eleman fazlalıkları vardır.(voltmetre ve termometre )
Şekil-7 :İşlemci kartı arkadan görünüm. Görünmeyen elemanlar kartın arkasında. Kart tasarlanırken harici kristal kullanılabileceği de öngörülmüştü. Bu nedenle PCB üzerinde kristal ile ilgili bacak bağlantıları da yer almaktadır.

Not: LM75'i başka devrelerde de kullanabilmek için küçük bir kart üzerinde kablo ile bağlama yolu seçilmiştir. (özellikle buzdolabının sıcaklığını gözlemlemek için).
Şekil-8 :LM75'in bulunduğu kart

Şema

İşlemci ile işlem yaptığımıza sistemin kalbini IC1 Atmega8 oluşturuyor. D2, D3, D4, D5 ortak anotlu gösterge LED'leri oluşturuyor. Gösterge ile işlemci arasındaki seri bağlı R5, R6, R7, R8, R9, R10, R11 ve R12 (220Ohm) LED göstergelerin akım sınırlama dirençleridir. LED ekranların ortak uçlarını süren Q1, Q2, Q3, Q3 (BC327) transistörleri, bazılarına bağlı R1, R2, R3 ve R4 (1K)dirençleri üzerinden işlemciye bağlanır. Böylelikle gösterge bölümü bitirilmiş olur.

IC3 (LM75) ayrı küçük bir kart üzerinden kablo ile taşınmıştır. IC3 için i2c bağlantısı desteği olan R13 ve R14 (10K) pull-up dirençleri eklenmiştir.

D1 (2W10M) köprü diyodu üzerinden bağlı olan IC2 (7805) gerilim regülatörü devre beslemesi için 5V gerilimini üretir.

ISP konnektörü işlemcinin programlanması için gereken bağlantı elemanını oluşturur.


Geriye kalan kondansatörler filtre amaçlı elemanları oluşturur.
Şekil-9:Blok şeması

Şekil-10:Devre şeması (P1,P4 ve P6 konnektörü gösterilmemiştir)

Devre Yapımı

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

Şekil-11:Kartların yollar

Şekil-12:Kartların üstteki eleman yerleşimi Kart üzerindeki C5,C6,XTL1 elemanları kart üzerine takılması gerekli değildir, takılsa bile çalışmayacaktır.

Şekil-13:Kartların alttaki eleman yerleşimi

Şekil-14:Kartların yolları birlikte üstteki eleman yerleşimi

Şekil-15:Kartların yolları birlikte alttaki eleman yerleşimi

Şekil-16:Kartların bağlantıları. .

Şekil-17:Tüm sistemin bağlantı yapılmış hali. Parmak ucu sıcaklığı ölçerken

Devre Elemanları

220R R5,R6,R7,R8,R9,R10,R11,R12
1K R1,R2,R3,R4
10K (1206 smd) R13,R14
100nF C2,C3,C4
100nF (1206 smd) C7,C9
10µF C1
10µF (1206 SMD) C8
B125C1500 veya benzeri D1
LM75( SOIC8) IC3
FYS-3611BS (LED ekran) D2,D3,D4,D5
7805 IC2
Atmega8 IC1
LM75 IC3
6 Header (ISP6) ISP
2'li Klemens P1
Besleme için 9V'luk adaptör unutulmamalıdır.

Sonuç

Sonuç olarak devre küçük bir yapıda. (daha da küçültülmemesi için elbette bir sebep yok) İsteyen LM75'i de işlemci kartına dahil ederek bir ortam termometresi oluşturabilir. Sadece dikkat etmesi gereken kutu içine konulduğu zaman devrenin hava alması için yeterli sayıda delik açılması gerekliliğidir. Bu şekilde LM75 doğru bir şekilde ölçüm yapması sağlanır.
Şekil-18:Ortam sıcaklığı


Şekil-19:Buzdolabı. Suyun en yoğun olduğu sıcaklıkta

Şekil-20:Buzdolabı buzluk. Yazın bu sıcaklığı görebileceğiniz nadir yerlerden biri

Şekil-21:Buzdolabı buzluk. Biraz daha beklersek daha da soğuyacaktır.


 Not: Filmin sonuna doğru parmak ile LM75'e dokunulmuş ve sıcaklık artırılmıştır.

Ekler:
Atmega8 hakkında bilgi için

"Atmega8 ve LM75 ile LED Ekranlı Termometre" projesi için gereken dosyalar

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


Atmega8 ve LM75 çipi ile USB iletişimli termometre

Değişik haberleşme tiplerini kullanan sıcaklık ölçüm entegreleri vardır.DS1820 bir telli (hatlı) haberleşme tipini kullanan çıkış verirken, LM35'de çıkışını analog olarak vermektedir. Yaygın olarak kullanılan i2c haberleşmesi üzerinden öçülen sıcaklık bilgisini ileten entegreler vardır. Bunlardan biri de LM75'dir.

Bu projede Atmega8 ve LM75 çipi ile USB iletişimli termometre oluşturulacaktır.

i2c

Şekil-1 :Tipik bir i2c bağlantısı

Fiziksel olarak i2c bağlantısı 2 pull up direnç ile seri saat ve veri hatları Vcc konumuna çekilir. Dolayısı ile master veya slave bağlantı uçları kendileri aktif olarak lojik-1 konuma doğrudan etkilemez. Sadece Lojik-0 konumuna etkileri vardır. Master veya slave veri hattını lojik-0 çekmediği sürece pull up dirençleri sayesinde daima lojik-1 konumunda kalır. (lojik-1 kaynağı pull up dirençleridir. Bu dirençler bağlanmazsa, hat lojik 1 seviyesine ulaşmaz) Bu sistem özellikle birden fazla slave olduğu durumlarda aynı anda birden çok slave aktif olması durumnda birbirlerini yüklememesi için kullanılan bir yöntemdir.

Bu bağlanı türünde 2 tane bağlantı için kullanılan bacak var. Birisi saat sinyali. Bu master tarafından üretilen bir darbe dizisidir. Tüm haberleşme bu saat darbesi dizisine göre yapılır.

Diğer bacak veri bacağıdir ki, bu haberleşmenin yönüne göre master veya slave üzerinden yönlendirilebilir tek olayı her kim veri gönderiyorsa 8 bitlik veri sonunda alıcı tarafından bir kabul (ack) sinyalinin oluşturulmasıdır.(Bu durum başlangıç ve son veri istisnadır. Başlangıçta 8 bit yoktur ki son veriden sonra ack sinyali yoktur)

Bu haberleşmeyi basitçe ele alırsak; haberleşme bir başlangıç durumu ile başlar. Yani master alet slave alete i2c haberleşmesinin yapılacağını haber verdiği bir durumdur.
Şekil-2 :Başla/Durdur durumları

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.

Tabii ki haberlleşme sonunda veya herhangi bir noktada bir hata alındığında bu haberleşmeyi sonlandırmak gerekir.

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

Haberleşme de BAŞLA durumundan sonra master alet tarafından slave aletin tanıtım kodunu gönderir burada bazı slave aletlerde donanımsal olarak eklenen bazı adresleme bacakları olabilir. Bu adresleme bacaklarının bağlantısı bu tanıtım koduna eklenir ki 0. bit ise slave alete oku/yaz işleminin yapılacağını belirtir. Bu tanıtım kodu slave tarafından kabul edilirse bir kabul biti (ack) 9. saat sinyalinde yayılanır (veri hattı lojik-0'a çekilir)

Artık bu noktadan sonra gereken veri iletişimlerine geçilir.

Aynı i2c hattı üzerine eklenen aletlerin tanımları (dolayısı adresleri) değiştirilerek 127 taneye kadar alet bağlanması mümkündür. Bu tür haberleşmeyi kullanan en yaygın çipler eepromlardır.

LM75

Şekil-3 :Küçük bir kart üzerindeki LM75. i2c pull-up dirençleri görülmektedir. Üstteki kondansatörler 100nF ve 10µF'dır

8 bacaklı entere biçimindeki alet,besleme hatları i2c bağlantı, adres seçme hatları ve sıcaklık sınır değer aşımı alarmı çıkış (bu bölüm inceleme dışı tutulmuştur)verebilen yapıdadır. Alet 9 bitlik delta sigma analog dijital çevirici içermekter. Bu da alet çıkışının 9 bit veri uzunluğuna sahip olduğunu gösterir. -55 ile +125 derece arasında ölçüm yapabilen alet, 3 ve 5.5V aralığında çalışabilmektedir. (gerilime uygun model ile)

Entegre üzerinde analog dijital çevirici olduğundan üzerinden ADC bulunmayan işlemciler ile kullanılabileceği anlamını taşır.LM75 0.5V'luk bir çözünürlük ile sıcaklığı okuyabilmektedir. i2c okumasından 9. bit işaret bitidir. Yani 9. bit 0 ise pozitif sıcaklıklar ve 1 ise negatif sıcaklıkları gösterir. Aynı zamanda 0. bit 'de ondalık sayıyı göstermektedir. 0 ise 0 gösterirken, 1 olması .5 değerini göstermektedir. Böylece işlem yapılması gereken 7 bit kaldığını gösterir.

LM75 için alet adresi 1001,A2,A1,A0 ve oku/yaz biti ile oluşturulur. Bu projede A2,A1 ve A0 bacakları toprağa bağlandığından 0 olur ve dolayısı ile alet slave adresi 1001000+oku/yaz şeklinde düzenlenir. Buna göre LM75 yaz tanım kodu 10010000(0x90) ve oku tanım kodu 10010001 (0x91) şeklinde olmaktadır.
Şekil-4 :i2c üzerinden işlemci ve LM75 arasındaki iletişim..

Bir sıcaklık verisinin okunmasında;

  • LM75'e başlama durumu gönder 
  • LM75'e tanıma kodunu (çip kodu+adres+ yaz biti) gönder ---LM75'den kabul durumu bekle 
  • LM75'e okunacak bayt adresini (0x00) gönder --- LM75'den kabul durumu bekle 
  • LM75'e başlama durumu gönder --- LM75'den kabul durumu bekle 
  • LM75'e tanıma kodunu (çip kodu+adres+ oku biti) gönder ---LM75'den kabul durumu bekle 
  • LM75'den sıcaklık yüksek anlamlı baytı oku --- LM75'e kabul durumunu gönder 
  • LM75'den sıcaklık düşük anlamlı baytı oku --- LM75'e kabul değil durumunu gönder 
  • LM75'e durdur durumu gönder...

kabul durumu:Lojik-0 
kabul değil durumu: Lojik-1



Artık bu noktadan sonra okunan verinin değerlendirilerek sıcaklık değeri ile eşleştirilmesine kalmıştır.

Düşük anlamlı baytı sadece bit7 değerlendirelmektedir. bit.7'de sıcaklık değerinin ondalık hanesine denk düşmektedir ki sadece 0 ve 5 değerini almaktadır.
Şekil-5 :LM75'den alınan sıcaklık verisi.

Yüksek anlamlı baytın bit-7 ise sıcaklığın negatif veya pozitif değerini ayırmak için kullanılmaktadır.

Yüksek anlamı bayt değeri onluk sistemde doğrudan sıcaklık değerine denk düşmektedir ki bu bir çevirme işlemine gerek olmayacağı anlamını taşır. Sadece sıcaklık değeri sıfırın altında ise o zaman elde edilen değerinden 256'nın çıkarılması gerekmektedir. (yüksek anlamlı baytın bit-7 dahil)

Değerlendirme açısından basitçe gözden geçirirsek,
pozitif sıcaklık için;
yüksek anlamlı bayt (onluk sistem). düşük anlamlı baytın bit 7 ( bit7=0 ise değer 0, bit7=1 ise değer 5)

negatif sıcaklık için;
(yüksek anlamlı bayt (onluk sistem). düşük anlamlı baytın bit 7 ( bit7=0 ise değer 0, bit7=1 ise değer 5))-256

ile istenen değerler hesaplanabilir...

Bu proje açısından aslında bu işlem bilgisayar üzerinde gerçekleştirilecektir. Yani LM75 üzerinden okunan sıcaklık değerleri USB üzerinden bilgisayara aktarılacak ve bundan sonraki hesaplamalar ve değerlerin değerlendirilmesi konusu bilgisayar üzerindeki program tarafından gerçekleştirilecektir. USB iletişim için Atmega8 ile birlikte FTDI firmasının ürettiği FT232BL çipi ile çalışan bir USB modül kullanılmaktadır


Not : i2c ile bu şekilde veri alınmasına rağmen bilgisayar önce LSB (düşük anlamlı bayt) sonra MSB (yüksek anlamlı bayt) gönderilir ve bu şekilde işlem yapılır.

Devre

Projedeki devre iki ana bölüme ayrılabilir.
Şekil-6 :İşlemci kartı. Sol taraftaki küçük kartta LM75 takılıdır. Sağ taraftaki kart işlemlerin kontrol edildiği Atmega8'i barındırır.

LM75'inde dahil olduğu işlemci devresi; besleme, Atmega8 işlemcinin bulunduğu LM75 ile i2c bağlantısıno kurup gerekli sıcaklık bilgilerinin alıp bunları UART bağlantısı (USB ile arabirim bağlantısı) üzerinden USB modüle iletir.
Şekil-7 :USB-UART kartı. FTD232BL çipi SMD yapıda olduğu için kartın altındadır.

USB modül ise üzerinde USB portu bulunmayan Atmega8 gibi işlemcilerin UART bağlantısını kullarak bilgisayarın USB bağlantısı arasında köprü olarak kullanılan devredir.
Şekil-8 :işlemci ile USB-UART kartı arasındaki bağlantıyı sağlayan uçlarına IDC10 konnektör takılı 10 yolllu yassı kablo.

Sonuçta bilgisayardan gelen sıcaklık bilgisini ölç komutunu alan işlemci devresi i2c bağlantısı üzerinden LM75'den sıcaklık bilgisini alır ve yine USB bağlantısı üzerinden bu sıcaklık bilgisini bilgisayara gönderir. Bilgisayar üzerindeki programda gelen bu bilgiyi yorumlar ve kullanılır hale getirir.
Şekil-9 :Proje başlığı olarak USB ile bağlantı belirtildi ise de sadece bilgisayar arayüz bağlantıları değiştirilerek diğer iletişim yolları ile bilgisayar ve işlemci kartı arasında bağlantı kurulması mümkündür. Soldan sağa doğru, FTD232BL USB, FT232RL USB, Bluetooth, RS232 bağlantı kartları ve burada belirtilmeyen diğerleri ile kullanılabilir.

Şema

USB seri dönüştürcü Devresinin kalbi zaten görüldüğü üzere FT232BL IC1. Tüm iletişim sistemini bu eleman kontrol ediyor. Bu tüm devreye bağlı olan R9 ve R10 (27R) seri USB akım sınırlama dirençleri. Burada R9 (27R) ucuna bağlı olan R8 (1K5) direnci USB’nin tipini (USB2.0) belirleyen dirençtir. Buradaki R6 (4k7) ve R7 (10K)devre harici besleme durumunda bilgisayarın kapatılması durumunda USB cihazın sıfırlanması ile ilgili bir görevi var. R1 ve R2 (1K)dirençleri LED1 ve LED2 LED’lerinin akım sınırlama dirençleridir. LED1 ve LED2 LED’leri seri port iletişim monitörü olarak çalışır. R3(10K) ve R4 (2K2) IC2 (93C46) EEPROM’un veri aktarma uçlarının FT232BL entegresine bağlantısında kullanılır. Bu bağlantı şekli konusunda ayrıntılı bilgi için FT232BL veri kağıtlarını incelenmesi yerinde olabilir. C1, C2 (27pF) ve XT1 (6MHz)ise IC1 için saat frekans üretim sistemini oluşturuyor. USB-A USB bağlantı konnektörü. (isteyen doğrudan USB kablosunu doğrudan lehimleyebilir.) P1 seri bağlantı için bağlantı portudur. P2 ve P3 ise besleme bağlantısı için seçim konektörleridir. Her ikisine takılacak köprü y ardımıyla kullanılabilir.

İşlemci kartının elbetteki asil iş gören parçası IC3 (Atmega8)'dir. İşlemcinin zamanlama ihtiyacını karşılamak için XT2(3.6864MHz) kristal ile C6 ve C7 (27pF) kondansatörler ile birlikte işlemci için gereken zamanlama frekansını üretirler. R11 ( 1K) ve LED3 (LED) ile devrenin çalışmasını izlemek üzere kullanılmaktadır.

Sıcaklık algılayıcısı IC5 (LM75) olarak çalışır. Bu enterenin i2c bacaklarındaki dirençler R12 ve R13(10K) Pull-up dirençleri olarak iş görür.


D1 (W10M), IC4 (7805), C10,C11 (100nF), C8 (10µF/25V) besleme devresini oluşturmaktalar. Geriye kalan bütün kondansatörler devre oluşabilecek gürültüleri süzme görevini yerine getirir.
Şekil-10:Blok şeması
Şekil-11:Devre şeması (P1,P4 ve P6 konnektörü gösterilmemiştir)

Devre Yapımı

Devre 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.
Şekil-12:Kartların yollar

Şekil-13:Kartların üstteki eleman yerleşimi

Şekil-14:Kartların alttaki eleman yerleşimi

Şekil-15:Kartların yolları birlikte üstteki eleman yerleşimi

Şekil-16:Kartların yolları birlikte alttaki eleman yerleşimi

Şekil-17:Kartların bağlantıları. .

Şekil-18:USB kartındaki köprülerin konumları

Şekil-19:Tüm sistemin bağlantı yapılmış hali.

Devre Elemanları

27R R9,R10
470R R5
1K R1,R2,R11
1K5 R8
2K2 R4
10K R3,R7
10K (1206 smd) R12,R13
4K7 R6
10µH L1
27pF C1,C2,C6,C7
100nF C3, C4, C5, C9, C10, C11, C12, C13
100nF (1206 smd) C15,C17
10µF (1206 smd) C16
10µF/25V C8
LED LED1,LED2,LED3
FT232BL IC1
93C46 IC2
Atmega8 (DIL) IC3
7805 IC4
LM75 IC5
W10M veya benzeri D1
6 Mhz kristal XT2
3,6864 Mhz kristal XT2
2x3 Header (ISP6) isp
2'li klemens P1
28 bacaklı entegre soketi (DIL) -
8 bacaklı entegre soketi (DIL) -
10 yollu şerit kablo (10cm) -
IDC10 kablo dişi konnektör 2 adet -
IDC10 kart tipi erkek konnektör P1,P4
1x3 sıra pin erkek p2,p3
USB-A konnektör USB-A
p2 ve p3 için köprü dişi -
Besleme için 9V'luk adaptör unutulmamalıdır.

Bilgisayar Programı

Şekil-20:Bu proje için C# üzerinde yazılmış bilgisayar programı simgesi.

"M8_USB_LM75_termometre.exe" C# ile yazılmıştır. Bu nedenle çalıştırabilmek için Frameworks.net runtime sürüm 4'ün bilgisayarınızda yüklü olması gerekiyor. Program Win xp üzerinde geliştirilmiş ve denenmiştir.

"M8_USB_LM75_termometre.exe" simgesi üzerine iki kez tıklayıp çalıştırıyoruz.

Ana pencere
Şekil-21:Ana pencere.

Program ilk açıldığında gösterildiği penceredir. Bu pencere üzerindeki öğelerin açıklaması aşağıda verilmiştir.
  1. Ana pencere-Ayarlar penceresi arasında geçişi sağlayan etiketler;
  2. Ölçülen değerlerin görüntülendiği alan.
  3. Ölçülen son değerin görüntülendiği alan.
  4. Sürekli okuma veya sürekli okumayı sonladırmak için buton.

Ayarlar penceresi
Şekil-22:Ayarlar penceresi.
  1. Ana pencere-Ayarlar penceresi arasında geçişi sağlayan etiketler.
  2. Seri port seçimi için seçenekler.
  3. Baud seçimi için seçenekler.
  4. Rapor dosyasının kaydedildiği yer(ölçüm sonuçlarının kaydedildiği).
  5. Ölçüm sonuçlarını kaydetme seçeneği.
  6. Ölçüm aralıkları ayarı için seçenekler.
Program üzerinde sınırlıda olsa bir hata kontrolu vardır. Yani çalışırken USB bağlantısı koparsa ekranda bir uyarı verecek ve cihazlarınızı kontrol etmenizi isteyecektir.

Son olarak bilgisayar tarafının programını yazmak isteyenler için veri şu şekilde iletilmektedir
Bilgisayar devreye "0x17" değerini gönderir.

Sıcaklık bilgisi olarak iki bayt veri gelir. Sırası ile: Düşük anlamlı baytı sadece bit7 değerlendirelmektedir. bit.7'de sıcaklık değerinin ondalık hanesine denk düşmektedir ki sadece 0 ve 5 değerini almaktadır.Yüksek anlamlı baytın sıcaklık işareti dahil olmak üzeri onluk sayı sisteminede sıcaklık bilgisi gelir.



Ekler:
Atmega8 hakkında bilgi için

"Atmega8 ve LM75 çipi ile USB iletişimli termometre" projesi için gereken dosyalar

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