Soru-Cevap Forumu

www.ercankoclar.com soru cevap forumu

-SATIŞ DESTEK BAGLANTISI-

ÖNEMLİ: Satış Destek bağlantısı sadece satın alma ve ticari çalışmalar-projeler , ile ilgili iletişim kurmak için kullanılmalıdır. Bunlar dışında ki hiç bir soruya cevap verilmeyecektir.

Forum Navigasyonu
Please or Kayıt ol to create posts and topics.

DHT11 kullanarak pic18f45k50 ile 2x16 lcd ekrana verileri yazma

PreviousPage 3 of 4Next
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 18:15

denedim yine olmadı malesef

O zaman proteusa çok güvenmemek lazım çünkü benim kullandığım PIC ile yazılımın çalışmama ihtimali yok yada bir ayarı gözden kaçırıyorsunuz.

Denemeleri fiziki devre üzerinden yaparsanız bence çok daha sağlıklı olur.

İnsan olmak adına yapıyorum , dahasını da yapabilirim.

elimde pic18f45k50 var ve fiziki olarak devreyi kurdum ama yine de çalışmadı simülasyondaki gibi oldu

Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 19:06

elimde pic18f45k50 var ve fiziki olarak devreyi kurdum ama yine de çalışmadı simülasyondaki gibi oldu

En başta yazdığım komparatör kapatma kodlarını da ekleyerek deneyebilir misiniz? 

Sorun bence portun dijitale geçmemesi analog olarak kalması ama bu PIC i hiç kullanmadım o yüzden direkt olarak şudur diyemiyorum ancak denemeler yaparak bir sonuca varabiliriz. 

Fiziki devrede ki bağlantıları da kontrol edebilirsiniz veya başka sensör var mı elinizde her ihtimali değerlendirmek gerekiyor bu gibi durumlarda.

İnsan olmak adına yapıyorum , dahasını da yapabilirim.

Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için.  do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.

#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;

Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/

deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);

wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);

}

}

Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:24

Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için.  do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.

#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;

Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/

deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);

wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);

}

}

devre görüntüsü bu

Yüklenmiş Dosyalar:
  • Dosyalara ulaşmak için giriş yapmanız gerekmektedir.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:25
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:24

Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için.  do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.

#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;

Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/

deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);

wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);

}

}

devre görüntüsü bu

Merhaba 

Port kısımlarını LAT değilde normal port tanımlaması şekline çevirebilir misin?

Yani  PORT C7 ise RC7 gibi.

 

 

 

İnsan olmak adına yapıyorum , dahasını da yapabilirim.

denedim zaten sensörü rb0 şeklinde tanımlamıştım,lcd bağlantıları lat şeklindeydi onları da normal rd şeklinde düzenledim yine lcdde aynı şeyler görünüyor.

Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:10

denedim zaten sensörü rb0 şeklinde tanımlamıştım,lcd bağlantıları lat şeklindeydi onları da normal rd şeklinde düzenledim yine lcdde aynı şeyler görünüyor.

Sensörden cevap gelmemesi ilginç. Zaten normal de hiçbir şey gözükmemesi do-while da takıldığını gösteriyor. Bir sebeple iletişim sağlıklı sağlanamıyor sensör ile.

Satın aldığınız DHT11.c dosyasının en altında //verilerin kontrol edilmesi bölümü var orada ki koşulu iptal edip dener misiniz. Normal main de de do while yi tekrar aktif edin.

DHT11.c nin altına da return=1; yazmanız lazım aksi halde yine sonsuz döngüye girecektir. Bu şekilde sensörden gelen bir veri varsa hepsi ekranda yazdırılacaktır.

Bunlarda olmazsa delay_ms(15000); gibi yüksek bir değer yaparak dener misiniz. Ben projede 40 mhz göre ayarlamıştım hız ile ilgili sorun olabilir.

İnsan olmak adına yapıyorum , dahasını da yapabilirim.

dediklerinizi yaptım ve ekranda değerler yazmaya başladı değerlerinde aşağı yukarı doğru olduğunu düşünüyorum çok teşekkürler,ama tekrardan bi şey soracaktım virgülden sonraki kısımları da yazdırabilir miyim acaba onu nasıl yapabilirim?

Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:36

dediklerinizi yaptım ve ekranda değerler yazmaya başladı değerlerinde aşağı yukarı doğru olduğunu düşünüyorum çok teşekkürler,ama tekrardan bi şey soracaktım virgülden sonraki kısımları da yazdırabilir miyim acaba onu nasıl yapabilirim?

Öncelikle başka sorunu yaşayan arkadaşlar olabileceği için tam olarak neyi değiştirince sorun düzeldi size zahmet biraz açıklayabilir misiniz? 

Maalesef bu sensör ondalıklı ölçüm yapmıyor yani ne yapsanız da böyle birş ey DHT11 ile mümkün değil eğer daha detaylı veri gerekiyorsa emin olmamak ile beraber sanırım DHT22 vardı o ölçüm yapabiliyordu. Bu sensörün ölçüm yeteneği bunun ile sınırlıdır.

İyi Çalışmalar 

İnsan olmak adına yapıyorum , dahasını da yapabilirim.
PreviousPage 3 of 4Next