Ö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
(https://s26.postimg.cc/5x07opdf9/SHT-11.jpg) (https://postimg.cc/image/5x07opdf9/)
Muhtemelen adres farklıdır...
Hocam biraz daha açabilirmiyiz?
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
ç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.
@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 (http://www.picbasic.co.uk/forum/showthread.php?t=17867)
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
Buyukce bir inkjet plotterdan asagida fotosu gorulen kiti sokmustum.
Bu SHT-11 sensormudur?
(https://i.hizliresim.com/ZE8rBg.jpg) (https://hizliresim.com/ZE8rBg)
Dht11 ds18b20 ikilisini deneyin. Bir de işlemci hızınız nedir. Gelen verileri yetiştiremeyebilir.
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
Hsu 07 analog olarak çıkış veren bir sensor. Eğer çok kritik değerlerde kullanamayacaksanız datasheetten fonksiyonunu üreterek sensoru okuyabilirsiniz.
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?
aynı sensör olmasada burada benzer bir sensöre ait çalışma var inceleyin
http://www.picbasic.co.uk/forum/showthread.php?t=17867
@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 (https://akizukidenshi.com/download/ds/aosong/AM2320.pdf)
Buda incelemeniz gereken forum linki:
http://www.picbasic.co.uk/forum/showthread.php?t=17867 (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://www.ccsinfo.com/forum/viewtopic.php?t=53924)
https://libstock.mikroe.com/projects/view/1331/am2320-relative-humidity-and-temperature-sensor-demo (https://libstock.mikroe.com/projects/view/1331/am2320-relative-humidity-and-temperature-sensor-demo)
Adres bilgileri ve I2C kulanımı bu örneklerde var.
@dnacikayahocam 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.
@POWER Sensör elimde olsa değerleri okuyabilirim. Türkiye'de bulunan bir sensör değil sanırım. Aliexpress'ten mi aldınız. Elinizde fazla varsa gönderin bana çözebileceğimi düşünüyorum.
@dnacikaya (https://www.picproje.org/index.php?action=profile;u=14851)
evet Aliexpress'ten almıştım elimde bir adet var.bir müddet daha çalışmak istiyorum sonuç alamazsam size göndereyim.
Tamamdır.
Sıcaklık ve nem ölçümü için si7021 adlı bir i2c var, fiyatı iyi, doğruluk,hassasiyet ve stabilite bakımından dht11,22vs den çok üstün, bunların nem sensörleri kısa sürede yanlış ölçmeye başlıyor.
evet fiyatı fena değil.bu sensör için elinizde Picbasic kod varmı?
Am2320 sipariş verdim 2 adet. İncelemek istiyorum bu sensörü. Birisi kod için ikincisi içini açıp bakmak için :) Stabil çalışırsa kullanılabilir. Gelsin bakalım pbp kodu yazabilirsem buradan paylaşırım. Olmadı microc için test ederim.
@dnacikaya siparişini verdiğiniz sensör geldimi? Sensör için pbp kodu yazabildiniz mi acaba?
@POWER sensör geldi ancak yoğunluktan bakamadım.