Linux ile sıcaklık izleme

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

Hardware

AuthorImage:[Here we need a little image from you]

Stefan Blechschmidt

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in de Stefan Blechschmidt

de to en Jürgen Pohl

en to tr Tuncay Mağden

AboutTheAuthor:[A small biography about the author]

Eğitimli bir elektrik teknisyeni olarak 1990 yılında kendimi bir bilgisayar destekli tasarım ve derleyici programın karşısında bir switch ve bir kontrol merkezi geliştirirken buldum. Açıkçası, o zamanlar bilinmeyen bir virüs tarafından etkilenmiştim ve bunda bir sorun yoktu.

Abstract:[Here you write a little summary]

Özet: Linux sunucuları görevlerini güvenilir bir şekilde yerine getiriyor ve özel ilgiye gereksinim duymadan çalışıyor, çalışıyor ve çalışıyorlar. Peki ya küçük penguen çok ısınırsa? Geçen yaz bize gösterdi ki küçük arkadaşımızın bir sıcaklık gösterme sistemine gereksinimi var. Bu makale böyle bir sistemin küçük bir çaba ile 10 Euro'ya nasıl oluşturulacağını anlatacaktır.

ArticleIllustration:[One image that will end up at the top of the article]

title image

ArticleBody:[The main part of the article]

Bileşenler

Brian C.Lane, bir DALLAS Semiconductor ürünü olan DS1820 sıcaklık algılayıcısı için bir program yazmıştı. Bu iki bileşen ve diğer bir takım parçaların yardımıyla bir sıcaklık gösterme sistemi oluşturmak zor değildir.

Not:
Brian C.Lane, kendi internet sayfasını yeniden düzenlemiş ve benim kullanmış olduğum programdan vazgeçmiştir. Bu yüzden programı bu bağlantıdan indirebilirsiniz: digitemp-1.3.tar.gz

Brian C. Lane' in şu anda kullandığı sürüm digitemp-3.2.0.tar.gz `i kullanmak isteyenler programı bu bağlantıdan indirebilirler. http://www.digitemp.com/software.shtml .

Algılayıcı

Sensor pinout Sensor picture
Algılayıcı aslen Maxim/Dallas Semiconductor ile birlemiş olan DALLAS Semiconductor tarafından üretilmiştir. Veri özellikleri bakımından algılayıcı -55°C 'den 125°C' ye kadar ölçüm yapabilir. Ölçüm verisi 9 bit genişliğinde bir sayısal sinyal olarak üretilir. Bunun yanında her algılayıcı belirli sayıda algılayıcı arabirimlemeye (bus) izin veren 64 bitlik bir ID numarasına sahiptir. 300m uzunluğunda bir bus ile üzerinde bulunan 100 algılayıcıdan yararlanmak mümkündür.
Burada gösterilen devre 60m'lik bir bus üzerindeki 10 algılayıcı ile çalışacaktır. Ben şu anda 12m'lik bir bus üzerindeki 4 algılayıcıyı kullanıyorum.

Algılayıcı ile ilgili ayrıntılı bilgiyi burada bulabilirsiniz. Spec Sheet.

Eklemek istediğim diğer bir şey ise burada gösterilen devre sadece 75°C' ye kadar ölçüm yapabilir ki bu da bizim uygulamamız için yeterlidir.

Diğer Bileşenler

Algılayıcıyı seri arabirime bağlayabilmek için bir takım ek bileşenlere gerek vardır. Bu ek bileşenler elektronik parçalar satan perakendecilerde, internette yada -hatta daha iyisi - köşedeki elektronikçi dükkanlarında bulunabilir.

Adet Parça Tip İkame Tip
1 Resistor 1,5 k Ohm --------
2 Schottky Diode 1N5818 BAT 43
1 Zener Diode 1N5228 ZPY 3,9V
1 Zener Diode 1N5234 ZPY 6,2V
1 Sensor DS18S20 --------
1 Socket, Serial RS232C/9 --------
1 Connector Shell SUB-D/9 --------
1 Breadboard Laminated Paper --------

Arabirimin Tasarımı

Arabirim devresi çok basit olduğu için birleştirme işlemini breadboard üzerinde yapmaya karar verdim. Lehim işçiliğim için üzgünüm :-).


circuit diagram


board front side board back
side

Biraz beceri ile parçalar seri arabirimin prizine bağlanabilir.

Not:
LinuxNetMag sayfasında digitemp ile ilgili bir makale ve 75°C üstü sıcaklıkları ölçmek için yapılabilecek bir devreyi anlatan bir forum da bulabiliriz. Bahsi geçen devreyi henüz deneyemedim.

Seri Arabirime Ait Devre

Arabirim devremiz için algılayıcımızın iki kontağı yeterlidir. VDD bağlantısı kaldırılabilir. Bense makasla kesip attım :-).

pin not used

Arabirim kart devresi, algılayıcı ve seri arabirim tablosu.

Açıklama DB-25 DB-9 Algılayıcı
DTR 20 4 Data (PIN 2)
RXD 3 2 GND (PIN 1)
TXD 2 3
GND 1 and 7 5

Yazılımın Yüklenmesi

Yazılıma tar arşivi olarak ulaşılabilir ve şu komutla

 tar -xvzf digitemp-1.3.tar.gz
bulunulan dizine yüklenebilir.

Yeni yüklenen digitemp1-3 dizininde kaynak kodu, bilgi belgesi, bazı Perl betikleri ve oldukları gibi kullanılabilen digitemp ikilitaban dosyaları bulunur.

Eğer digitemp parametresiz çağırılırsa karşımıza parametrelerin anlatıldığı genel bir bakış çıkar.

DigiTemp v1.3 Copyright 1997-99 by Nexus Computing

Usage: digitemp -s<device> [-i -d -l -r -v -t -p -a]
                -i                            .digitemprc dosyasını başlangıç durumuna getirir
                -s/dev/ttyS0                  Seri portu belirler
                -l/var/log/temperature        Çıktıyı logfile'a gönderir
                -f5                           Fail delay in S***burayı çeviremedim:(
                -r500                         Geçikmeyi mS cinsinden okur
                -v                            Gereksiz sözlerle dolu çıktı
                -t0                           # numaralı algılayıcıyı okur
                -a                            Bütün algılayıcıları okur
                -d5                           Örneklemeler arasındaki gecikme (sn.)
                -n50                          Tekrar sayısı
                -o2                           Logfile için çıktı biçimi
                -o"çıktı biçim stringi"       Aşağıdaki açıklamaya bakınız

Logfile biçimleri:  1 = Her algılayıcı için bir satır, zaman, C, F (hazır bulunan)
                    2 = Her örnek için bir satır, geçen zaman, C cinsinde sıcaklık
                    3 = 2.'nin aynısı sadece sıcaklık F cinsinden
        #2 ve #3'ten alınan veriler bir spreadsheet'te yada başka bir grafikleme 
		 yazılımında işlenebilecek şekilde tablarla ayrılmıştır.

        Biçim stringi strftime işareti ile birlikte digitemp için 3 özel işaret 
		 daha kullanır - %s algılayıcı numarası, %C santigrad için, %F fahrenheit 
		 için. İşaretin durumu önemlidir! Hazır bulunan biçim stringi şu 
		 şekildedir: "%b %d %H:%M:%S Algılayıcı %s C: %.2C F: %.2F" ve şu çıktıyı 
		 verir: Mayıs 24 21:25:43 Algılayıcı 0 C: 23.66 F: 74.59


'Yardım' dosyasında söylendiği gibi bağlantısı yapılan algılayıcıların başlangıç durumuna getirilmesi gerekmektedir. Bunun için devremizin bağlı olduğu arabirimi ve başlangıç durum parametresini belirlemeliyiz.

Aşağıda gözüken komut

digitemp -i -s/dev/ttyS0
elimizdeki durumda arabirim devresinin birinci seri arabirime olan bağlantısının başarıyla sonuçlandığını göstermektedir.

Yazılım algılayıcıyı tanıdığını şu şekilde bir mesajla belirtir:

DigiTemp v1.3 Copyright 1997-99 by Nexus Computing

ROM #0 : 1032724700080086
ROM #1 : 1092214400080089
İki algılayıcının bulunmasının yanında algılayıcı, arabirim ve çıktı biçimi verilerini içeren .digitemprc dosyası da içinde bulunduğumuz dizinde oluşturulmuştur.

Artık ./digitemp -a komutu ile algılayıcıdan alınan çıktı verilerini okuyabiliriz. ./ karakterine lütfen dikkat edin, halen arama yoluna dahil olmayan bir dizin içerisindeyiz.

Ölçüm Çıktıları

DigiTemp v1.3 Copyright 1997-99 by Nexus Computing

Sep 24 21:53:35 Sensor 0 C: 37.94 F: 100.29
Sep 24 21:53:38 Sensor 1 C: 10.62 F: 51.129

Sisteme Uyarlama

Programımızı sisteme dahil etmek için birkaç ayarlama yapmak zorundayız.

Öncelikle digitemp gibi binaryleri, programı yol belirtmeden çalıştırabilmek için bir dizine kopyalamalıyız. Ben bu işlem için /usr/local/bin/ dizinini seçtim. Bu hususta emin olamayanlar için komut yolları echo $PATH şeklinde bulunabilir. Bunun yanında, başlangıç durumuna getirme verisi ve .digitemprc dosyası ölçüm işlemini yapacak olan kullanıcının ana dizinine kopyalanmalıdır. Çıktı verisinin konsola değil de bir dosyaya kaydedilmesi için -l[PATH/FILE NAME] switchi eklenmelidir.

Otomatik Ölçüm

Şimdi ölçümlerimizi otomatik bir şekilde yaptırmamız gerekmekte, crontab -u [USER] -e komutu ile bunu her kullanıcı için geçerli duruma getirebiliriz.

0-59/15 * * * * /usr/local/bin/digitemp -a -l/var/log/digitemp.log
girdisi digitemp'i her 15 dakikada bir ölçüm yaptırarak çıktıların /var/log/digitemp.log dosyasına yazılmasını sağlar.

tail /var/log/digitemp.log komutu ile kaydı alınmış ölçümlerin son satırlarını okuyabiliriz. Eğer /var/log/digitemp.log dosyası oluşturulmamışsa, lütfen dosya erişim haklarına bir göz atın.

Kapanış Yorumu

Arşiv dosyası grafiksel yorum için birkaç Perl betik dosyası içermektedir. Burada bahsi geçen bu dosyalar üzerinde açıklama yapmayacağım. Şu sıralar algılayıcı verilerinin mySQL veri bankasında toplanması ve bir ağ arayüzü ile yorumlanması üzerine yazacak olduğum başka bir makale hakkında düşünceler geliştirmekteyim.

Bu daha çok Perl ile mySQL, CGI ve grafik komutlarını kullanarak gerçekleştirilecektir.

Download

Bağlantılar / Referanslar