Sensörler ve Mikroişlemciler – 6
Sıcaklık ölçümlerine DS1820 ile devam ediyoruz Yazımızın içinde PIC Basic Pro ile yazılmış kaynak kodları bulacaksınız. PIC16F877 ve PIC Basic Pro ile projeler devam ediyor
Sevgili okurlar size geçtiğimiz ay sıcaklık algılama sensörlerinden dijital çıkışli DS1820 sensörünü tanıtmıştim.
DS1820 MAXIM Semiconductor firmasının bir ürünü.Bu sensör piyasada kolaylıkla bulunabilecek en hassas ve ucuz dijital çıkışlı sensörlerden biri.
DS1820’nin özelliklerini içeren datasheet’I DS1820.pdf linkinden indirebilirsiniz.
DS1820 MAXIM ‘in ONE WIRE – tek bacak bağlantı protokolunu kullanan bir sensör.Tek bacak bağlantı adından da anlaşılacağı gibi sadece bir port üzerinden çift yönlü dijital haberleşme yapma olanağı tanıyan bir potokol.Bunun en büyük avantajı mikroişlemci girişlerinden yalnızca bir port işgal ederek sensör bilgilerini iletebilmesi.
DS1820 LM35’e göre çok daha hassas ve geniş ölçüm aralıklı bir sensor. Bu ay DS1820 sensörünü kullanarak LM35 örneğinde olduğu gibi bir oda termometresi uygulaması gerçekleştireceğiz.
Uygulamamızın şemasından göruleceği gibi şimdiye kadar kullandığımız genel sensor+pic+lcd yapısının tamamen aynısı.Dolayısıyla eğer bu düzeneği daha evvel kurduysanız bu sensörü denemek için aynı şekilde kullanabilirsiniz. Tek yapacağınız DS1820 sensörünü şemadaki şekilde bağlamak devreye.
DS1820 için picbasic pro uygulaması aşagıda yer almakta:
'——————————————————————–
' DS1820 SICAKLIK SENSORU ILE TERMOMETRE
' ANTRAK
' BARBAROS ASUROGLU (TA2CBA)
' 05/08/2010
' PIC16F877-20 Mhz
' Mikroislemciler ve Sensorler – 5
'——————————————————————–
'———————-[ DEFINE'lar and Degiskenler ]—————-
' LCD Baglantilari
Define LCD_DREG PORTB
Define LCD_DBIT 0
Define LCD_RSREG PORTB
Define LCD_RSBIT 4 'pin 4
Define LCD_EREG PORTB
Define LCD_EBIT 5 'pin 6
Define LCD_DATAUS 100
Define LCD_COMMANDUS 4000
Define OSC 20
'———————–[ Degisken Tanimlamalari ]——————-
SICAKLIK Var Word ' Sicaklik Degsikeni
Kalan Var Byte ' Kalan Degiskeni
Derece_say Var Byte ' Her Santigrad icin derece sayimi Degiskeni
DS Var PORTE.2 ' One-wire Giris bacagi
INCLUDE "modedefs.bas"
'——————[ Degiskenleri sifirla ]————–
ADCON1 = 7 'Butun Analog Portlari Dijital yap
TRISA = 0
PORTA = 0
TRISB = 0
PORTB = 0
TRISC = 0
PORTC = 0
TRISD = 0
PORTD = 0
TRISE = 0
PORTE = 0
Clear
Pause 100
'——————————————————————–
Main:
Lcdout $fe, 1, " ANTRAK TA2CBA "
Lcdout $fe, $C0,"DS1820 TERMOMTRE"
Pause 2000
Loop: OWOut DS, 1, [$CC, $44] ' Siacklik Olcum Dongusunu baslat
waitloop: OWIn DS, 4, [Kalan] ' Hala dousum devam ediyor mu kontrol et
If Kalan = 0 Then waitloop
OWOut DS, 1, [$CC, $BE] ' Siackligi oku
OWIn DS, 0, [SICAKLIK.LOWBYTE, SICAKLIK.HIGHBYTE, Skip 4, Kalan, Derece_say]
'2 haneye kadar hassasiyetle Sicaklik degerini hesapla
Lcdout $fe, 1, "DS1820 SICAKLIK "
SICAKLIK = (((SICAKLIK >> 1) * 100) – 25) + (((Derece_say – Kalan) * 100) / Derece_say) 'DS1820 icin Sicaklik hesaplama formulu.DS1820 datasheetine bkz.
Lcdout $fe, $C0, DEC (SICAKLIK / 100), ".", DEC2 SICAKLIK, " C DERECE"
Pause 250 ' Her 250 milisaniyede bir goster
Goto Loop ' Olcumu tekrarla
Pbppro uygulamasından göreceğiniz gibi DS1820 sensörünü okumak için pbppro içinde yer alan “one wire” komutunu kullanıyoruz.Böylece DS1820 datasheetinde anlatılan sürme ve zamanlama hesaplarının tamamından arınmıs olarak datayı okuyabiliyoruz.
Programda önce değiskenlerimizi ve portlarımızı tanımlıyoruz.Daha sonra değiskenleri sıfırlıyoruz. Önce LCD üzerinde bir “splash screen” yani sabit bir açılış mesajı görüntülüyoruz. Bunun en büyük faydası devreye voltaj verdiğimizde LCD ve pic’in çalışıp çalışmadığını hemen görmek.
Daha sonra ısı ölçümü dönüşümünü başlatıp döngünün bitip bitmediğini kontrol ediyoruz.
Eğer döngü sona ermişse sıcaklık değerini iki byte olarak sıcaklık 16 bitlik değişkenine atıyoruz.Bu arada kalan ve derece sayım değişken değerlerinide atiyoruz.Bunları DS1820 için Maxim tarafından datasheet’te verilen iki hane hassasiyet ile derece hesaplama formülünde kullanacağız.
Derece hesaplama formülü ile sıcaklık değerini hesaplayıp LCD göstergede gorüntülüyoruz.
Gördüğünüz gibi DS1820 sensörü analog sensörlere göre hem daha hassas hem de analog port kullanmayı gerektirmeden aynı işi rahatlıkla yapabiliyor.
Program dosyaları
Devre Şeması (PDF)
Gelecek ay baska bir sensörde buluşmak üzere.
Başarılar,
Barbaros