SHT30 nem sensörü kullanımı ?

Başlatan mustafa_cmbz, 11 Eylül 2020, 22:33:09

OG

adres pinini direk gnd yapsan daha güvenilir olur.
sensor pic arası kablolar uzun falan değildir umarım

Şunu I2Cout / I2CIn komutlarına çevirip bir denesen (donanımsal I2C ayarları kapatmayı unutmamalı).
yavaşlatmak için de üste
Declare Slow_Bus On

SCL SDA pinlerini de tris ile input yaparak
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ete

Programın tamamı burada değil herhalde.
HBStart diye bir komut yada etiket kullanman gerekmiyor.
NEM okuma kısmı yanlızca aşağıdaki şekilde olmalı.
NEM_OKU:
  
  GoSub MELODI
  HBusout %10001000,$2C,$0D
  HBusIn  %10001001,[ ISI_HAM.HighByte ,ISI_HAM.LowByte ,CRC1 , NEM_HAM.HighByte,NEM_HAM.LowByte , CRC2]
RETURN
Daha öncede belirttiğim gibi Start ve stop komutlarını derleyici ayarlıyor zaten senin bir şey yapman gerekmiyor. Daha önce hiç I2C eprom okumadınmı yada yazmadınmı. Yaptın ise o kodlara bak aynısıdır prensip.
Birde böyle dene bakalım ne olacak.
 
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

mustafa_cmbz

Alıntı yapılan: ete - 14 Eylül 2020, 15:27:54Programın tamamı burada değil herhalde.
HBStart diye bir komut yada etiket kullanman gerekmiyor.
NEM okuma kısmı yanlızca aşağıdaki şekilde olmalı.
NEM_OKU:
  
  GoSub MELODI
  HBusout %10001000,$2C,$0D
  HBusIn  %10001001,[ ISI_HAM.HighByte ,ISI_HAM.LowByte ,CRC1 , NEM_HAM.HighByte,NEM_HAM.LowByte , CRC2]
RETURN
Daha öncede belirttiğim gibi Start ve stop komutlarını derleyici ayarlıyor zaten senin bir şey yapman gerekmiyor. Daha önce hiç I2C eprom okumadınmı yada yazmadınmı. Yaptın ise o kodlara bak aynısıdır prensip.
Birde böyle dene bakalım ne olacak.
 

 
HBStart
  HBusOut %10001000 ,[$2C,$0D]
  DelayMS 50
  HBusIn  %10001001 ,[ISI_HAM.HighByte,ISI_HAM.LowByte,CRC1,NEM_HAM.HighByte,NEM_HAM.LowByte,CRC2]
  HBStop

hocam şuanki hali ile sanırım sensörden ham veriyi alıyorum.

fakat datasheetteki dönüşüm formülünü kabaca uyguladığımda ekranda hep 65535 değerini görüyorum.



RH  = 100 * NEM_HAM/65535-1

RH  = (NEM_HAM/65535-1) * 100

RH  = 100 * (NEM_HAM/65535)-1

şöyle bir kaç şekilde denedim ama değişen bir şey olmadı.

tam olarak bu formülün yazım şekli nasıl olmalı?

mustafa_cmbz

c kodlarından kopya çekerek şöyle bir şey denedim şuan gayet güzel çalışıyor :

RH = 100 * (NEM_HAM.HighByte * 256 + NEM_HAM.LowByte) / 65535.0

OG

Alıntı yapılan: mustafa_cmbz - 15 Eylül 2020, 02:09:26c kodlarından kopya çekerek şöyle bir şey denedim şuan gayet güzel çalışıyor :

RH = 100 * (NEM_HAM.HighByte * 256 + NEM_HAM.LowByte) / 65535.0
Formuldeki de bu zaten, aynısı
NEM_HAM (2 byte) değeri 100 ile çarpınca taşma yapmış olabilir, RH değişkeni Dword yapı ile denenebilir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ete

sonunda programı toparlayıp son halini buraya koyarsan sevinirim.

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

mustafa_cmbz

Alıntı yapılan: ete - 15 Eylül 2020, 11:12:34sonunda programı toparlayıp son halini buraya koyarsan sevinirim.

Ete




Son çalışan hali bu akşam çekmiştim şuan pc kapalı. Pc açınca kopyala yapıştır yaparım hocam.


mustafa_cmbz

  
   Device = 18F25K22
   Declare Xtal = 20
   
   Declare LCD_Type 0
   Declare LCD_DTPin PORTB.0
   Declare LCD_ENPin PORTB.5 
   Declare LCD_RSPin PORTB.4 
   Declare LCD_Interface 4
   Declare LCD_Lines 2
   
   Declare HSDA_Pin PORTC.4
   Declare HSCL_Pin PORTC.3
   'Declare Hbus_Bitrate  400
   Declare Slow_Bus On
   All_Digital = True
  
  
   Symbol BUZZER = PORTB.7
   Output BUZZER 
  
  
   Dim NEM_HAM      As Word 
   Dim ISI_HAM      As Word 
   Dim CRC1         As Byte
   Dim CRC2         As Byte
   Dim CRC_CALC     As Byte
   Dim ISI          As Float 
   
   Dim A As Byte 
   A       = 0
   Dim DERECE        As Word
   DERECE  = $DF
   
   NEM_HAM = 0
   ISI_HAM = 0 
   ISI     = 0
 
   
   
   Dim RH           As Float 
   RH=0
'----------------------------  
   
   Cls : DelayMS 3000

  

  

   ANA:
   Print At 1,1,"Nem: ",Dec2 RH ," %RH"
   Print At 2,1,"ISI: ",Dec2 ISI," ",DERECE,"C"  
   
   DelayMS 2000
   GoSub NEM_OKU
   GoSub NEM_HESAPLA
  
   GoTo ANA 
   
  
  NEM_OKU:
  
  GoSub MELODI


  HBStart
  HBusOut %10001000 ,[$2C,$0D]
  DelayMS 50
  HBusIn  %10001001 ,[ISI_HAM.HighByte,ISI_HAM.LowByte,CRC1,NEM_HAM.HighByte,NEM_HAM.LowByte,CRC2]
  HBStop
  
  Return 


  NEM_HESAPLA:
  RH = 100 * (NEM_HAM.HighByte * 256 + NEM_HAM.LowByte) / 65535.0
  
  ISI = ISI_HAM.HighByte * 256 + ISI_HAM.LowByte
  ISI = -45 + (175 * ISI / 65535.0)
  Return  
  
  
 
  
   MELODI:
   High BUZZER : DelayMS 70 : Low BUZZER : DelayMS 35
   High BUZZER : DelayMS 54 : Low BUZZER : DelayMS 70
   Return

kodun tamamı budur..

yardımlarınız için çok teşekkürler...

dnacikaya

Alıntı yapılan: mustafa_cmbz - 16 Eylül 2020, 13:06:06
  
   Device = 18F25K22
   Declare Xtal = 20
   
   Declare LCD_Type 0
   Declare LCD_DTPin PORTB.0
   Declare LCD_ENPin PORTB.5 
   Declare LCD_RSPin PORTB.4 
   Declare LCD_Interface 4
   Declare LCD_Lines 2
   
   Declare HSDA_Pin PORTC.4
   Declare HSCL_Pin PORTC.3
   'Declare Hbus_Bitrate  400
   Declare Slow_Bus On
   All_Digital = True
  
  
   Symbol BUZZER = PORTB.7
   Output BUZZER 
  
  
   Dim NEM_HAM      As Word 
   Dim ISI_HAM      As Word 
   Dim CRC1         As Byte
   Dim CRC2         As Byte
   Dim CRC_CALC     As Byte
   Dim ISI          As Float 
   
   Dim A As Byte 
   A       = 0
   Dim DERECE        As Word
   DERECE  = $DF
   
   NEM_HAM = 0
   ISI_HAM = 0 
   ISI     = 0
 
   
   
   Dim RH           As Float 
   RH=0
'----------------------------  
   
   Cls : DelayMS 3000

  

  

   ANA:
   Print At 1,1,"Nem: ",Dec2 RH ," %RH"
   Print At 2,1,"ISI: ",Dec2 ISI," ",DERECE,"C"  
   
   DelayMS 2000
   GoSub NEM_OKU
   GoSub NEM_HESAPLA
  
   GoTo ANA 
   
  
  NEM_OKU:
  
  GoSub MELODI


  HBStart
  HBusOut %10001000 ,[$2C,$0D]
  DelayMS 50
  HBusIn  %10001001 ,[ISI_HAM.HighByte,ISI_HAM.LowByte,CRC1,NEM_HAM.HighByte,NEM_HAM.LowByte,CRC2]
  HBStop
  
  Return 


  NEM_HESAPLA:
  RH = 100 * (NEM_HAM.HighByte * 256 + NEM_HAM.LowByte) / 65535.0
  
  ISI = ISI_HAM.HighByte * 256 + ISI_HAM.LowByte
  ISI = -45 + (175 * ISI / 65535.0)
  Return  
  
  
 
  
   MELODI:
   High BUZZER : DelayMS 70 : Low BUZZER : DelayMS 35
   High BUZZER : DelayMS 54 : Low BUZZER : DelayMS 70
   Return

kodun tamamı budur..

yardımlarınız için çok teşekkürler...

Proton'un hangi sürüm kullanıyorsunuz. Proton'a fuse generator eklemenizde fayda olabilir. İşlemciye göre otomatik sigorta ayarı oluşturur.

http://www.protonbasic.co.uk/content.php/2607-PIC-FuseConfigurator-Mk2

OG

Alıntı yapılan: mustafa_cmbz - 16 Eylül 2020, 13:06:06kodun tamamı budur..

yardımlarınız için çok teşekkürler...
CRC yi kullanmayı alışkanlık edinmeli,
şöyle diyelim, mesela,
Kuluçka yumurtaların ısısını kontrol ediyoruz
Temp okuduk, data gelirken bir şekilde parazit binmiş, yanlış data geldi,
öldü civcivcikler  ;)

örneği abartalım,
yangın alarmı oto su püskürtmeyi kontrol ediyoruz
göl oldu ofisler  ;)

gibi..
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz

Alıntı yapılan: OG - 16 Eylül 2020, 15:37:27CRC yi kullanmayı alışkanlık edinmeli,
şöyle diyelim, mesela,
Kuluçka yumurtaların ısısını kontrol ediyoruz
Temp okuduk, data gelirken bir şekilde parazit binmiş, yanlış data geldi,
öldü civcivcikler  ;)

örneği abartalım,
yangın alarmı oto su püskürtmeyi kontrol ediyoruz
göl oldu ofisler  ;)

gibi..

haklısın hocam.diğer kullandığım sensörde mevcut onu uygulayacağım

mustafa_cmbz

Alıntı yapılan: OG - 16 Eylül 2020, 15:37:27CRC yi kullanmayı alışkanlık edinmeli,
şöyle diyelim, mesela,
Kuluçka yumurtaların ısısını kontrol ediyoruz
Temp okuduk, data gelirken bir şekilde parazit binmiş, yanlış data geldi,
öldü civcivcikler  ;)

örneği abartalım,
yangın alarmı oto su püskürtmeyi kontrol ediyoruz
göl oldu ofisler  ;)

gibi..

hocam civcivler pert evde kızanlar aç bu crc olayı nasıl olacak ?  :P



datasheetteki tablo 20 de birşeylerden bahsediyor ama bu hesap kitap tan bir şey anlamadım.

http://muratyildirimoglu.com/makaleler/SikSorulanSorular1.htm

Bu sayfada verilen ile uzaktan yakından alakasıda yok burada bahsettiğinin sanırım.

Bu tablo 20 yi bana aptala anlatır gibi anlatırmısınız şu crc işinide bir öğreneyim iyice...