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

17 Temmuz 2013 Çarşamba

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.


video

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

Hiç yorum yok:

Etiketler

İzleyiciler