DS1821

Başlatan EMKE, 07 Ağustos 2015, 00:22:06

EMKE

Arkadaşlar herkese iyi akşamlar bir problemim var bir devre yapıyorum ve 3 adet değişik tipte ısı sensörü okumam lazım , ds18b20 ile lm35 i problemsiz okuyorum ama ds1821 de bir türlü kıvıramadım olayı örnek kod istemiyorum adımları anlatsak bile kafi ,datashete vs bak demeyin  :D  sabahtan beri datashete bakıyorum ama bir türlü anlyamadım araştırmadığım bakmadığım site kalmadı yardım edin lütfen ne kıl bi sensörmüş  bu .

sonmoikan

#1
DS1820 - DS18S20 - DS1822 için örnek okuma kodu.
DS1821 için olanı bulamadım ama değerleri değiştirerek ayarlayabilirsin.

HAM         VAR  WORD
ISI         VAR  BYTE
ISI2        VAR  BYTE
MESGUL_BITI VAR  bit     ;sensor meşgul biti 
ISARET      VAR  BYTE
EKSI_BITI   var  ham.11  ;Negatif deger kontrol biti   

DS1820_OKU:

     OWOut   DQ, 1, [$CC, $44] 
     OWOUT   DQ, 1, [$CC, $48]         
                   
BEKLE:
     OWIn  DQ, 4, [MESGUL_BITI]
     IF MESGUL_BITI = 0 Then GoTo BEKLE

     OWOut DQ, 1, [$CC, $BE] 
     OWIn  DQ, 0, [HAM.LowByte, HAM.HighByte]
     
    ISARET  = "+"
    ;IF HAM.11=1 THEN  ; - DEGER ISE
    if eksi_BITI=1 then
       ISARET   = "-" 
       HAM = (($ffff-(HAM-1))*50)+25
       'HAM = ($ffff-(HAM-1))*/1600 'DS1822 ,için
       GOTO HESAP
    endif
       HAM = ((HAM+1)*50)-25 'DS1820 ve DS18S20 için
      ' HAM = HAM*/ 1600 'DS1822 ,için
HESAP:     
       ISI=HAM/100
       ISI2=HAM//10             
Return
ABDULLAH

EMKE

Teşekkürler sonmoikan ama problem DA1821 ile ilgili diğerlerini halledebiliyorum ,dediğin gibi değerleri değiştirdim datasheti inceleyerek çok şey yaptım ama olmadı bakalım bende devam ediyorum acayip bir sensör yada ben anlayamadım bir yeri kaçırıyorum.

ete

En akıllıcası Sürekl sıcaklık okuma modunda çalıştırmak olsa gerek.
Bunun için önce,
Sensöre $0C değerini iletiyoruz Bu status registere yazılacak anlamına geliyor
Sonra %01000010  değerini status registere yazıyoruz (OWOUT DQ,1,[%01000010]
Sonra,
Sensöre Sıcaklık okuyacağımızı bildiriyoruz  (OWOut   DQ, 1, [$EE] )  start conversiyon emri.
Sonra sensörden sıcaklığı okuyoruz  )OWOUT DQ,1,[$AA] bu okunacak emridir
OWIN DQ,0,[TEMP]  buda okunan sıcaklık değeridir
TEMP değeri 8 bitlik direk sıcaklık bilgisidir.

En basitinden sensör bu şekilde okunabilir.

Ete


EMKE

ETE hocam çok teşekkürler hemen deneyip sonucu yazıyorum  .

ete

Önceki kod da sıkıntı olursa bir de şunu deneyebilirsin.
OWOut   DQ, 1, [$EE]   'start conversation
Pause 30 'okumanın tamamlanması çin biraz bekleyelim
OWOut   DQ, 1, [$22]  'stop conversation
OWOut   DQ, 1, [$AA]  'read temperature
OWIN DQ,2,[TEMP]

Ete


sonmoikan

microchip ve picbasic.co.uk sitelerinde ds1820 , ds18s20 ve ds1821 in aynı kodları kullanabileceğini söylüyorlar.
ABDULLAH

EMKE

Ete hocam malesef en son deneyin dediğiniz kodlarıda denedim ama ekran 01 değeri görünüyor sadece .

ete

Bana kalırsa sen DS18B20 kullan. Sıradan bir sensör ve hassasiyet de epeyce düşük.

Ete

EMKE

Haklısınız ete hocam zaten ds18b20 -lm35 bunları sorunsuz bir şekilde ölçüyorum ama revizyon yapılcak sistemlerde ds1821 sensörler var ve bunları değiştirtmicekler bu yüzden menüden kullanıcının DS1821-DS18B20-veya LM35 seçenekleri ile sensörleri seçebilmesini istiyoruz bakalım zaten ds1821'in kıl bir sensör olduğunu biliyordum ama bakalım bir şekilde bu sorunu aşıcaz işn teşekkürler hocam.

EMKE

Sonmoikan senin dediğin gibi ds1821 e göre kodları değiştirdim ama 55 değerinden başka bir değer görünmüyor ekranda değişim felanda olmuyor sensörü ısıtınca .

ete

Her onewire haberleşmeyi gören kodları aynı diyor ama her sensör farklı haberleşiyor.
Sistemleri aynı, tek kablodan haberleşme ama protokolleri farklı.
Verdiğim örneklerden birisi ile haberleşme olmalı idi. Olmuyor ise bir yerlerde kusur olmalı.

Ete

EMKE

Hocam dediğiniz gibi tek hat haberleşme yapan 8 bit ısı bilgisi çeviren bir entegre haklsıınız ,hatta sizin örnekleri denediğimde 2 dijit ekran var 7 segm. bu displaylarde 01 görünüyor sensörü çıkardığımda 00 oluyor burdan haberleşme olduğunu anlıyorum , sonmoikanın örneklerindede displaylerde 55 görünüyor  çıkarınca sensörü 00 oluyor ama bir türlü ısı değiişiimi atış yada azalma yok bir yerleri kaçırıyoruz muhtemelen ama anlayamadım bende.

EMKE

#13
Dediğğinize katılıyorum hocam , hepsi aynı protokoller ile haberleşiyor olsa idi adamlar tek datasheet yaparlardı bu sistem hepsine uyar derlerdi sizin düşündüğünüz gibi zannetmiyorum bende  ds1820 ısı sensörünün 21 sensörü iççnde olacağına ama denemekten zarar gelmez diyerek denedim ve sonuç anlamsız oldu.

EMKE

Konuyu hortlatıcam ama bu sensör ile ilgili hala bir gelişme kaydedemedim daha önce kullanmış arkadaşlar varsa yardımınızı bekliyorum. :-\

Powered by EzPortal