original in de Stefan Blechschmidt
de to en Jürgen Pohl
en to tr Tuncay Mağden
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.
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ı 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.
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 | -------- |
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 :-).
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.
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 :-).
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ıma tar arşivi olarak ulaşılabilir ve şu komutla
tar -xvzf digitemp-1.3.tar.gzbulunulan 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/ttyS0elimizdeki 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
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.
Ş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.loggirdisi 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.
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.