One Wire Protokolü

Mikroişlemcilerle uğraşıp da Dallas firmasının geliştirdiği 1-Wire protokolünü bilmemek olmaz. Bu protokolün çeşitli avantajları arasında en önemlisi adının da çağrıştırdığı üzere bütün iletişimin tek bir kablo üzerinden yürütülmesidir. Bu protokolü destekleyen sensörler parazit besleme ile çalışabildiklerinden, ayrıca besleme kablosuna da ihtiyaç duymazlar, yani hem data hem de besleme gerilimi tek bir kablo üzerinden gönderilir. İstanbul'da yaşayanların kullandığı Ak-Bil güncel bir 1-Wire uygulamasıdır. Protokolün detaylarını öğrenmek isteyenler Maxim web sitesine bakabilirler.


1-Wire denilince akla hemen Dallas'ın (eski Dallas yeni Maxim) sıcaklık sensörleri akla gelir, ben de bu konuyu popüler bir sıcaklık sensörü olan Dallas 18B20 ile bir termometre yaparak işlemeye, ekran olarak da SPI konusunda incelediğimiz Nokia 3310 ekranını kullanmaya karar verdim (Resim 1). Bu sevimli ekranla ilgili biraz bilgi vermek isterim, piyasada çeşitli tipte 3310 ekranı var (Resim 2). Sıfır ve "bordlu" olarak satılanları (en soldaki) çerçevesinden çıkararak kullanamazsınız, konnektör ekrana yapışık değildir, çerçevenin içinde iken ekran üzerindeki saydam yollara temas edecek şekilde tasarlanmıştır (Resim 3). Çıkma olarak satın aldığım diğer ikisinden en kullanışlı olanı ise sağdaki (konnektör kısmında mavi bir kısım var), görüldüğü gibi bunların bakır padleri var (Resim 3) ve ince bir kabloyla lehim yapılabilir.

Biraz şık bir dizayn istiyorsanız oldukça ince bir işçilik gerektiğini söylemeliyim. Böyle bir devrenin Atmega8 ile (hem de açık kaynak olarak) yapılabileceğini göstermek için tasarım olarak, internette her köşe başında karşımıza çıkan PIC12F629 yapılmış, kaynak kodunun devlet sırrı gibi saklandığı tasarıma yakın bir şey yapmak istedim (Resim 4-5-6). Devrenin plaketini vitrin kısmında görebileciğiniz CNC hale getirdiğim Proxxon mini freze ile yaptım (Resim 7).

Dikkat! Bu proje 3V (maksimum 3.6V) ile çalıştırılmalıdır.

SPI projimizde olduğu gibi bu devrede 3V ile çalışıyor, ben projenin son halinde Xeno marka XL-050F model 3.6V Lityum pil kullandım (Resim 5).

Nokia 3310 Likit Kristal Ekran işlemciye Resim 8'deki gibi (SPI projemizde olduğu gibi) bağlanır; farklı bir bağlantı yaparsanız, N3310.h başlık dosyasında gerekli değişiklikleri yapmayı unutmayın.

Sensörün bağlı olduğu port ve pin ayarlarını 1w.h isimli başlık dosyasında yapabilirsiniz. Burada dikkat edilmesi gereken husus sensörün bağlandığı pinin numarası mask olarak kulanıldığından (OW ifadesi), pinin numarasının (1<<Pxx) olarak girilmesidir. Projemizde sensör PD2 bacağına bağlandığından OW değeri 4 olarak verilmiştir. Benzer şekilde OW tanımı PD3 için 8, PD4 için 16 v.b olarak yapılmalıdır.

#define OW 4
#define OWPIN PIND // PIN register
#define OWDDR DDRD // Data Direction Register
#define OWPORT PORTD // PORT

Bu projenin amacı bir termometre yapmak değil 1-Wire protokolünü öğretmektir, siz isterseniz "Nem ve Sıcaklık Ölçer" başlıklı projede kullandığımız SHT 11 sensörünü kullanarak sıcaklık ve nemi gösteren daha gelişmiş bir proje yapabilirsiniz.

NOT: Proje 4 Mhz dahili osilatöre göre hazırlanmıştır, daha az güç tüketimi için dahili 1Mhz (fabrika ayarı) kullanılması tavsiye edilir. Projenin çalışabilmesi için ya işlemcininiz sigorta ayarlarını, ya da projenin make dosyasındaki osilatör ayarını (F_CPU) uygun hale getirmelisiniz.

Proje Dosyaları

Proje Dosyaları