D

ds1621 i2c sıcaklık sensörü

Başlatan dogus, 10 Temmuz 2012, 12:33:09

dogus

Merhaba, ds1621 sensörü kullanarak bir termometre yapacağım, datasheetinden çok birşey anlamadım, örneklere baktım, i2cwrite ve i2cread kullanırken kontrol kısmına $90 yazmışlar, datasheette heksadesimal 90'a hiç değinilmemiş, bunu kontrol kısmına koymalarının nedeni nedir acaba?

ete

I2C ile haberlesen bütün cihazların bir cihaz numarası yada kimlik numarası vardır. Bu aletinkide demekki $90 imis. Bu numarayi komutlarda kullanmak zorundasın.
Ete

dogus

Peki nereden öğreneceğim o numarayı, datasheette 90h'a dair hiçbirşey yok, bu arada o kısmı geçtim şöyle birşey yaptım ama çalışmıyor


TRISB=0
UST VAR BYTE
ALT VAR BYTE
SICAKLIK VAR WORD
TRISD=255
SDA VAR PORTD.0
SCL VAR PORTD.1

OKU:
I2CWRITE SDA,SCL,$90,$AC,[0]
PAUSE 1
I2CWRITE SDA,SCL,$90, [$EE]
PAUSE 1
I2CREAD SDA,SCL,$90,$AA,[SICAKLIK]
UST=SICAKLIK.HIGHBYTE
ALT=SICAKLIK.LOWBYTE
LCDOUT $FE,1
LCDOUT HEX UST
LCDOUT $FE,$C0
LCDOUT HEX ALT
PAUSE 10
GOTO OKU



Bu programı yazdım diğer örnekleri baz alarak, üst byte'ı ve alt byte'ı lcd ekranda göstermek istiyorum, lcd ile ilgili gereken tanımlamar ve sigorta tanımlamaları yapıldı, include şeklinde dahil ettiğim için yazmadım, ds1621in de bağlantılarını 5 6 kere kontrol ettim hepsi doğru, A0 A1 A2 GND pinleri toprağa, VCC 5 volta, SDA portd.0'a SCL portd.1'e bağlı. ekranda 2 satırda da sadece 0 değerlerini alıyorum

dogus

#3
Şimdi de sadece iletişim olup olmadığını kontrol etmek için 16 bitlik $A1 adresli TH registerına %0000111100001111 değerini gönderdim ve aynı register'ı okuyup lcd'de koddaki formatta göster dedim, hala sadece 0 çıkıyor, bu mantıklımı bilmiyorum ama çıkışları gözlemek için d portunu elimdeki 8li led modülüne bağladım, en ufak bir hareket yok..

ete

Data sheet 8-9 sayfalarda slave adress seklinde bahsediliyor cihaz numarası %1001abcx seklinde verilmis.
Abc normalde donanimsal entegre secme bitleridir . Semada tek sensor var ise bu bacaklar gnd ye baglanmalı ve cihaz numarasi verilirken bu bitler 000 seklinde kullanilmalidir.
Ete

dogus

Hocam o kısmını sonradan farkettim, ama programım neden çalışmıyor herşeyi denedim, çözemiyorum, ekranda tek gördüğüm 2 satırda da 0

dogus

SDA bacağı sürekli low kalıyor, sensörüm bozukmuş..

ete

I2C haberlesmede data wve clk bacaklari pullup direncle calisir.
Bu sensorde bir sicaklik okumasi yapabilmek icin sirasi ile sunlarin yapilmasi gerekir,
- start convert. $EE komutu verilecek
- sicaklik oku $AA komutu verilecek ve 2 byte okunacak
- sayac oku komutu verilecek $A8
- slope oku komutu verilecek $A9
Sonra data sheet d verilen formule gore sicaklik hesap edilecektir.

Ete

Powered by EzPortal