Bu projede Atmega8 ve LM75 çipi ile USB iletişimli termometre oluşturulacaktır.
i2c
Şekil-1 :Tipik bir i2c bağlantısı
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ı
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
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.
Ş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 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.
Şekil-7 :USB-UART kartı. FTD232BL çipi SMD yapıda olduğu için
kartın altındadır.
Ş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.
Ş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.
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.Şema
İş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ı
Ş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 | - |
Bilgisayar Programı
Şekil-20:Bu proje için C# üzerinde yazılmış bilgisayar programı
simgesi.
"M8_USB_LM75_termometre.exe" simgesi üzerine iki kez tıklayıp çalıştırıyoruz.
Şekil-21:Ana pencere.
- Ana pencere-Ayarlar penceresi arasında geçişi sağlayan etiketler;
- Ölçülen değerlerin görüntülendiği alan.
- Ölçülen son değerin görüntülendiği alan.
- Sürekli okuma veya sürekli okumayı sonladırmak için buton.
Ayarlar penceresi
Şekil-22:Ayarlar penceresi.
- Ana pencere-Ayarlar penceresi arasında geçişi sağlayan etiketler.
- Seri port seçimi için seçenekler.
- Baud seçimi için seçenekler.
- Rapor dosyasının kaydedildiği yer(ölçüm sonuçlarının kaydedildiği).
- Ölçüm sonuçlarını kaydetme seçeneği.
- Ölçüm aralıkları ayarı için seçenekler.
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....
Hiç yorum yok:
Yorum Gönder