Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

SHT-11 Sensör Muadili

Başlatan POWER, 01 Eylül 2017, 14:26:56

POWER

Öncelikle Herkeze İyi Bayramlar,
Aşağıdaki linkten sht-11 yerine kullanılabilir diye üzerinde AM2320 yazan bir sensör aldım ama çalıştıramadım.proğram isis de sht-11 sensörü kullanılarak sorunsuz çalışıyor fakat gerçek devrede elimdeki AM2320 ile çalışmıyor muhtemelen hiç okuma yapmıyor ısı ve nem bilgileri hep sıfır görünüyor.Daha önce bu AM2320 sensörünü kullanan oldumu acaba? yada çözüm bazında öönerisi olan varmıdır acaba?
https://www.aliexpress.com/item/1pcs-AM2320-digital-temperature-and-humidity-sensor-AM2320B-replace-SHT10-SHT11-series/32319589688.html?spm=a2g0s.9042311.0.0.WjgAod
@ DEVICE pic16F877A                      'işlemci 16F877A                                
@ DEVICE pic16F877A, WDT_On              'Watch Dog timer açık
@ DEVICE pic16F877A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F877A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F877A, XT_OSC

TRISA=%00000011
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0
CMCON=7          'komparatörler iptal
ADCON1=7         'a portu sayısal giriş/çıkış(adc pin'i olanlar için)
OPTION_REG.7=1   'pull-up dirençleri iptal

'-------------------------------------------------------------------------
define OSC 4
Include "MODEDEFS.BAS"
'-------------------------------------------------------------------------
DEFINE LCD_DREG		PORTB	'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT		4		'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG		PORTB	'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT		3		'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG	PORTB	'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT	2		'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS		4		'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES	2		'LCD Kaç sıra yazabiliyor
DEFINE LCD_COMMANDUS 2000   'Command delay time in us 
DEFINE LCD_DATAUS   50      'Data delay time in us 
'-------------------------------------------------------------------------------
SYMBOL NC=PORTD.2
SYMBOL IC=PORTD.3

CLK     VAR    PORTA.1
DTA     VAR    PORTA.0  

SS          VAR WORD 
GS          VAR WORD 
NS          VAR WORD 
GN          VAR WORD           
SAYAC       VAR BYTE 
SN          VAR BYTE 
DAK         VAR BYTE 
SAAT        VAR BYTE 
AYGUN       VAR BYTE
AY          VAR BYTE
YIL         VAR BYTE
SISI1       VAR BYTE 
SISI2       VAR BYTE 
MEM         var byte 
HAFGUN      var byte 
ONLAR       VAR BYTE
BIRLER      VAR BYTE
SAYI        VAR BYTE
POZ         var BIT
; ISI-NEM Tanımlamaları  -------------------------------------------------------
    ILK     VAR     BIT
    KONTROL VAR     BYTE	     
    ISI1    VAR     BYTE       
    ISI2    VAR     BYTE      
    U1      VAR     BYTE         
    U2      VAR     BYTE
    Z       VAR     BYTE
'    ALRM    VAR     BYTE
'    SECN    VAR     BYTE
    H0      VAR     HAM.BYTE0
    H1      VAR     HAM.BYTE1
    HAM		VAR	  WORD
    RAW_ALT var     word
    RAW_UST VAR     WORD
    RAI	   var     word
    ISI     VAR     WORD 
    NEM_ALT VAR     WORD
    NEM_UST VAR     WORD
    ISI_ALT VAR     WORD
    ISI_UST VAR     WORD
    P1      VAR     WORD
    P2      VAR     WORD
    P3      VAR     WORD             
    W       VAR     WORD
    ISARET  VAR     BIT   'sensor değeri 0 ise artı, 1 ise eksi
SIGN_ALT    VAR     BIT   'alarm ısı isareti 0 ise artı 1 ise eksi
SIGN_UST    VAR     BIT
    HATA    var     BIT 
    I       VAR     BYTE


PAUSE 500
'----------------------------------------------------------------------------
'DATA @10,255,255

BASLA:              
        KONTROL=%00000011
        HAM=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        RAI=HAM
          Gosub ISIHESAP
          GOSUB EKRAN_0       
        PAUSE 50    '50
       KONTROL=%00000101
       HAM=0 'RUTUBET ÖLÇME
       GOSUB OLCUMAL
       GOSUB RUTHESAP
       gosub CIKIS
       GOSUB EKRAN_0
     
GOtO BASLA

            
 EKRAN_0:
           LCDOut $FE,$85, DEC2 ISI1 , "," , DEC1 ISI2," C"
           LCDOut $FE,$c5, DEC2 U1 , "," , DEC1 U2," % "  
        return	

T_START:
        OUTPUT DTA
        OUTPUT CLK
        HIGH DTA
        LOW CLK
        PAUSE 1
        HIGH CLK
        LOW DTA
        PAUSE 1
        LOW CLK
        PAUSE 1
        HIGH CLK
        PAUSE 1
        HIGH DTA
        LOW CLK
        RETURN
OLCUMAL: 
        GOSUB T_Start
        SHIFTOUT DTA,CLK,1,[KONTROL]
        INPUT DTA
        PULSOUT CLK,10
        HATA=0
        FOR W=0 to 65500
           IF DTA=0 then EXIT
        NEXT W
        HATA=1
EXIT: 
'     IF HATA=1 then 
'         gosub SENSORYOK
'     endif
       SHIFTIN DTA,CLK,0,[H1]
       OUTPUT DTA
       LOW DTA
       PULSOUT CLK,10
       INPUT DTA
       SHIFTIN DTA,CLK,0,[H0]
       PULSOUT CLK,10
       RETURN
       
ISIHESAP:  
           if ham<4000 then 
              ISARET=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAM)/100
              ISI2=((4000-ham)//100)/10   
              goto ISISON
            endif
           ISI1=(HAM-4000)/100
           ISI2=((HAM-4000)//100)/10
ISISON:    if HAM>16384 then
             ISI1=0
             ISI2=0
           endif
           GS=ISI1*10+ISI2  
    RETURN 

RUTHESAP:  
           ISI=ISI1*10+ISI2
           p1=(26542-(54722**ham+ham))**ham-40     
           P2=655+(HAM*5)+(HAM**15917)	      
           P3=(P2**(ISI+2480))-(P2**2730)+P1   ' kompanse edilmiş değer
           U1=p3/10
           U2=p3//10
           IF ham>3710 THEN
              u1=0
              U2=0
'              GOTO SENSORYOK
           ENDIF  
           GN=(U1*10)+U2
           return 
           
GERIHESAP: 
           IF SIGN_ALT=1 THEN
               RAW_ALT=4000-(ISI_ALT*10)
            else
               RAW_ALT=4000+(ISI_ALT*10)  
           ENDIF
           
           IF SIGN_UST=1 THEN
               RAW_UST=4000-(ISI_UST*10)
            else
               RAW_UST=4000+(ISI_UST*10)  
           ENDIF
             
             RETURN    
           
'SENSORYOK: LCDOUT $FE,$02,"   SENSOR YOK   "
'           LCDOUT $FE,$C0," LUTFEN TAKINIZ "  
'           PAUSE 1000               
'           RETURN

CIKIS:
      IF GS<SS THEN
         HIGH IC
         ELSE
         LOW IC
      ENDIF
      IF GN<NS THEN
         HIGH NC
         ELSE
         LOW NC
      ENDIF
      RETURN
END



TB6BKG

mehmet

Muhtemelen adres farklıdır...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

POWER

Hocam biraz daha açabilirmiyiz?
TB6BKG

MC_Skywalker

#3
Her I2C birimini adresi vardır. Bu sensörü hiç kullanamadım.
yanlış hatırlamıyorsam SHT-11 000 adresinde AM2320 0xB8 de.
https://akizukidenshi.com/download/ds/aosong/AM2320.pdf

veri yoluna önce 0xB8 sonra konmutlar şeklinde devam edeceksin. verdiğin kodda SHT-11 de adres 000 olduğu için doğrudan komut göndremiş. ayrıca zamanlamaları kontrol etmek gerek.

ben sht-11 yerine hdc1080 deneyeceğim.  kargo hala gelmedi. http://www.ti.com/lit/ds/symlink/hdc1080.pdf

POWER

çok uğraştım ama çalıştıramadım malesef.elinde bu sensör için kodu olan yada mevcut kodu düzenleyebilecek arkadaşlardan yardım bekliyorum.
TB6BKG

dnacikaya

@POWER ben de ilk defa duydum bu sensörü. Şu linkte konuyu tartışmışlar belki faydası olur. Datasheetini inceledinizmi.


http://www.picbasic.co.uk/forum/showthread.php?t=17867

ete

SHT-11 standart I2C haberleşme protokolü kullanmaz. Standart protokolden biraz farklı bir mantığı vardır.
Görünüşe göre AM2320 ise standart I2C protokolü kullanıyor.
Bu durumda aşağıdaki kodları deneyebilirsin.
I2CWRITE DTA,CLK,$B8,$00,[$04]
I2CREAD  DTA,CLK,$B8,[Rut.BYTE1,Rut.BYTE0,ISI.BYTE1,ISI.BYTE0]

Rut burada rutubet değerini taşıyacak ISI ise sıcaklık değerini taşıyacaktır.
Okunan ve hesaplanan değer olması gerekeninin 10 katı değerde olduğundan ekranda gösterimi;
TamRut=RUT/10:OndaRut=RUT//10
TamISI=ISI/10 :OndaISI=ISI//10
Şeklinde olmalıdır.
Unutmadan belirteyim. Sensör Data ve CLK hatları 10K direnç ile pullup yapılmalıdır.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Zoroaster

Buyukce bir inkjet plotterdan asagida fotosu gorulen kiti sokmustum.

Bu SHT-11 sensormudur?


Seytan deliginden kacti.

omereliusuk

Dht11 ds18b20 ikilisini deneyin. Bir de işlemci hızınız nedir. Gelen verileri yetiştiremeyebilir.

POWER

Alıntı yapılan: omereliusuk - 02 Eylül 2017, 10:25:23
Dht11 ds18b20 ikilisini deneyin. Bir de işlemci hızınız nedir. Gelen verileri yetiştiremeyebilir.
o sensör elimde yok şu anda malesef,işlemci hızı 4mhz
TB6BKG

omereliusuk

Hsu 07 analog olarak çıkış veren bir sensor. Eğer çok kritik değerlerde kullanamayacaksanız datasheetten fonksiyonunu üreterek sensoru okuyabilirsiniz.

POWER

Malesef işin içinden çıkamadım.Bu sensörün kullanımı ile ilgili  örnek kod paylaşacak arkadaşımız varmıdır acaba?
TB6BKG

Maxim

aynı sensör olmasada burada benzer bir sensöre ait çalışma var inceleyin
http://www.picbasic.co.uk/forum/showthread.php?t=17867

dnacikaya

#13
@POWER kod örneği olsa birisinde zaten paylaşılırdı. Ben bu sensör elinde olan var mı ondan bile emin değilim. Bu yolda yalnızsın. Bir çok kişi yardımcı olmak için önerilerde bulunmuş, bence onları dikkate al. Özetlersek öncelikle datasheet sayfa 4 incelemelisin. I2C iletişimi yaptığını Ete hocada yazdı zaten. Ete'nin I2C dersini inceleyin.

Datasheet:

https://akizukidenshi.com/download/ds/aosong/AM2320.pdf

Buda incelemeniz gereken forum linki:

http://www.picbasic.co.uk/forum/showthread.php?t=17867

Bir de elinizde sht11 var ise onunla devrenizi deneyin. Sht11 için örnek çok. Sht11 ile çalışırsa bu sensörde çalıştırılabilir. Devrenizden eminseniz bu sensör üzerinde çalışın. Umarım başarırsınız. Kolay gelsin.

Edit:
Aslında pbp örneği yok ama ccsc ve microc örnekleri var:

https://www.ccsinfo.com/forum/viewtopic.php?t=53924

https://libstock.mikroe.com/projects/view/1331/am2320-relative-humidity-and-temperature-sensor-demo

Adres bilgileri ve I2C kulanımı bu örneklerde var.

POWER

#14
@dnacikaya
hocam ilgine teşekkürler.yaptığım incelemeler sonucunda aşağıdaki linkte üzerinde çalışılan sensör AM2302.Datasheed incelediğimde gördümki benim uğraştığım AM2320 den farklı bir sensör.dolayısıyla o formdan bir şey çıkartamadım.Deneme yaptığım devre deneme devrem(bordum)o yüzden devrede sıkıntı yok.elimde şu anda sht11 yok malesef. zaten kod sht-11 için yazılmış ve isis te problemsiz çalışıyor ama bendeki sensör AM2320.ete hocanın söylemesinden anladığım,sht-11  I2C haberleşme protokolünü  kullanmadığı ama  AM2320,  I2C protokolünü kullandığı yönünde.seviyem yetersiz olduğu için ete hocanın tavsiyelerinden hareketle gerekli düzenlemeyi yapamadım malesef.yoksa tüm arkadaşların önerilerini dikkate alıp o yönde denemeler yapıyorum.
http://www.picbasic.co.uk/forum/showthread.php?t=17867
son verdiğin linklerde güzel ama basic değil malesef.
TB6BKG