ds18b20 ile tek hat üzrinden 7 farklı ısı ölçme

Başlatan Recep METE, 04 Kasım 2013, 07:23:18

Recep METE

Arkadaşlar  aşağıdaki kodlarını buluğum 7 tane ds18b20 ile ısı ölçümünde program 1. ölçümde kalıyor.Diğerlerine geçmiyor.Acaba sıkıntı nerededir.Bir el atsanızda çalıştırsak bizahmet.


include <16F877A.h>
#device *=16
#device adc=8

#FUSES NOWDT, XT, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)

#include <1wire.c>
#include <lcd.c>
#include <ds18b20_1.c>
#include <ds18b20_2.c>
#include <ds18b20_3.c>
#include <ds18b20_4.c>
#include <ds18b20_5.c>
#include <ds18b20_6.c>
#include <ds18b20_7.c>

void isi1()
{ float tempe1;
  tempe1 = ds1820_read1();

  lcd_putc("\f");
  lcd_gotoxy(1,1);
  printf(lcd_putc,"  KIRMIZI SIVI  ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%3.1f", tempe1);
  lcd_putc(223);
  lcd_putc("C    ");
  delay_ms(10);
}
void isi2()
{ float tempe2;
  tempe2 = ds1820_read2();

  lcd_putc("\f");
  lcd_gotoxy(1,1);
  printf(lcd_putc,"   SIYAH SIVI   ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%3.1f", tempe2);
  lcd_putc(223);
  lcd_putc("C    ");
  delay_ms(10);
}
void isi3()
{ float tempe3;
  tempe3 = ds1820_read3();

  lcd_putc("\f");
  lcd_gotoxy(1,1);
  printf(lcd_putc,"     PSU  1     ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%3.1f", tempe3);
  lcd_putc(223);
  lcd_putc("C    ");
  delay_ms(10);
}
void isi4()
{ float tempe4;
  tempe4 = ds1820_read4();

  lcd_putc("\f");
  lcd_gotoxy(1,1);
  printf(lcd_putc,"     PSU  2     ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%3.1f", tempe4);
  lcd_putc(223);
  lcd_putc("C    ");
  delay_ms(10);
}
void isi5()
{ float tempe5;
  tempe5 = ds1820_read5();

  lcd_putc("\f");
  lcd_gotoxy(1,1);
  printf(lcd_putc,"   CPU  GIRIS   ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%3.1f", tempe5);
  lcd_putc(223);
  lcd_putc("C    ");
  delay_ms(10);
}
void isi6()
{ float tempe6;
  tempe6 = ds1820_read6();

  lcd_putc("\f");
  lcd_gotoxy(1,1);
  printf(lcd_putc,"   CPU  CIKIS   ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%3.1f", tempe6);
  lcd_putc(223);
  lcd_putc("C    ");
  delay_ms(10);
}
void isi7()
{ float tempe7;
  tempe7 = ds1820_read7();

  lcd_putc("\f");
  lcd_gotoxy(1,1);
  printf(lcd_putc,"      KASA      ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%3.1f", tempe7);
  lcd_putc(223);
  lcd_putc("C    ");
  delay_ms(10);
}



void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(VREF_LOW|-2);

lcd_init();
lcd_putc("\f");

  lcd_gotoxy(1,1);
  printf(lcd_putc,"Yukleniyor...");
  lcd_gotoxy(1,2);
  printf(lcd_putc," DH  necoinside ");
  delay_ms(300);
  lcd_putc("\f");



while (1)
{
isi1();
delay_ms(2000);
isi2();
delay_ms(2000);
isi3();
delay_ms(2000);
isi4();
delay_ms(2000);
isi5();
delay_ms(2000);
isi6();
delay_ms(2000);
isi7();
delay_ms(2000);

  lcd_gotoxy(1,1);
  printf(lcd_putc,"MUHALELEFETAA   ");
  lcd_gotoxy(1,2);
  printf(lcd_putc,"RAMAZANTC       ");
  delay_ms(5000);

}

}
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

MrDarK

Projeyi yanlış biliyorsun bence yazılımından anladığım kadarı ile bu proje tek hat üzerinden 7 ısı ölçmüyor ayrı ayrı 7 tane hat üzerinden ısı alıyor her bir tek pini ayrı ayrı kütüphanelendirmiş. Bende benzer şekilde 4 adet ısı ölçmüştüm 4 pin ile oradan anladım. Kütüphanelerinin içine gir ısı sensörlerinin oradaki pinlere uygun bağla 7 tane sensörüde aynı pinden almıyor ayrı ayrı 7 tane pin var.

Bu şekilde çalıştırabilirsin. Tabi kodların sonsuz döngüde takılı kalması hatalı oraları aşmakta kütüphaneyi editleyerek olur ;) Orasıda ellerinden öper hiç yapamazsan yardımcı olurum.

Saygılarımla
Picproje Eğitim Gönüllüleri ~ MrDarK

Recep METE

Alıntı yapılan: MrDarK - 04 Kasım 2013, 07:49:09
Projeyi yanlış biliyorsun bence yazılımından anladığım kadarı ile bu proje tek hat üzerinden 7 ısı ölçmüyor ayrı ayrı 7 tane hat üzerinden ısı alıyor her bir tek pini ayrı ayrı kütüphanelendirmiş. Bende benzer şekilde 4 adet ısı ölçmüştüm 4 pin ile oradan anladım. Kütüphanelerinin içine gir ısı sensörlerinin oradaki pinlere uygun bağla 7 tane sensörüde aynı pinden almıyor ayrı ayrı 7 tane pin var.

Bu şekilde çalıştırabilirsin. Tabi kodların sonsuz döngüde takılı kalması hatalı oraları aşmakta kütüphaneyi editleyerek olur ;) Orasıda ellerinden öper hiç yapamazsan yardımcı olurum.

Saygılarımla



Hocam 7 tane ds18b20 kütüphanesinin içine girip pinleri b0 yaptım.Olmadı.Program 1. ds18b20'de takılı kalıyor.Birde sıcaklığı 19 derece göstermesi lazımken 85 derece gösteriyor İsisi aç-kapa yapıca bazen düzeliyor.Bana bunu düzeltmede yardımcı olur musunuz?Böyle bir program bana çok lazım.Değerli yardımınıza açığım.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

MrDarK

Proje klasörünü atarsan bana yardımcı olurum içinde kod ve simulasyon olan bir rar dosyası paylaş ben simulatörü değişitirip olması gerektiği hale dönüştürürüm.

Görüşmek üzere.
Picproje Eğitim Gönüllüleri ~ MrDarK

Recep METE

Alıntı yapılan: MrDarK - 04 Kasım 2013, 14:09:43
Proje klasörünü atarsan bana yardımcı olurum içinde kod ve simulasyon olan bir rar dosyası paylaş ben simulatörü değişitirip olması gerektiği hale dönüştürürüm.

Görüşmek üzere.


Hocam tüm dosyaları gönderiyorum.Yardımınız olursa minnettar kalacağım.Şimdiden teşekkürler.

http://s3.dosya.tc/server12/sP1PFX/18b20tekhatilebirdn_okds18b20.rar.html
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

xoom


MrDarK

1 wire kütüphanesini adam ds içine gömmüş sıkıntı yok boş olmasının bende öyle ypamıştım ama şemada hata var ;

Daha önceki mesajımdada belirttiğim gibi 7 tane ayrı pin kullanılmış ;

Resimdeki şemadaki gibi bağlantıyı gerçekleştirirseniz donmadan görebilirsiniz.

Kodların çok açıkları var onlarla uğraşmakta artık bu çalışmayı kopyalayan kişi ile alakalı bu konuda destek vermeyeceğim :)

http://s3.dosya.tc/server12/v3KWqk/Ads_z.jpg.html

En azından çalıştırdım ama :) Kolay gelsin genç
Picproje Eğitim Gönüllüleri ~ MrDarK

Recep METE

Alıntı yapılan: MrDarK - 04 Kasım 2013, 19:24:58
1 wire kütüphanesini adam ds içine gömmüş sıkıntı yok boş olmasının bende öyle ypamıştım ama şemada hata var ;

Daha önceki mesajımdada belirttiğim gibi 7 tane ayrı pin kullanılmış ;

Resimdeki şemadaki gibi bağlantıyı gerçekleştirirseniz donmadan görebilirsiniz.

Kodların çok açıkları var onlarla uğraşmakta artık bu çalışmayı kopyalayan kişi ile alakalı bu konuda destek vermeyeceğim :)

http://s3.dosya.tc/server12/v3KWqk/Ads_z.jpg.html

En azından çalıştırdım ama :) Kolay gelsin genç




Hocam iginden ötürü çok teşekkür ederim.Allah Razı olsun senden.Birde sormak istediğim şu,"kodların çok açığı var" demekle neyi kastetmek istediniz.Bu açığı kapatmak için ne yapmalıyım.Bu işlerde çok yeniyimde.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

MrDarK

Yeni olduğunu fark ettiğim için biraz kendin uğraş istedim ;
Örnek 85 yazıyor bazen demişsin bu bir açık ,
Eğer sensor bozulursa veya pin koparsa yazılımın kitlenir
Bu ve bunun gibi şeyler sen bunu bir çalıştırda ondan sonra düşünürsün bunları :)
Picproje Eğitim Gönüllüleri ~ MrDarK

XX_CİHAN_XX

Öncelikle ufak bir düzeltme yapayım ölçtüğümüz şey ısı değil, sıcaklıktır. Çook zaman önce bende ısı ısı deyip duruyordum :)
Isı bir enerjidir..

Neyse birde 85 mevzusu hakkında bir şey deyip çekiliyorum. Bu sensörden power on reset durumunda okuma yaptığınız da size sıcaklık değeri olarak +85 derece bilgisini verir. Yeni bir ölçüm yapıp güncel sıcaklık değeri oluşana kadar (sadece power on reset anında) bu 85 değerini okumanız normal. Yapacağınız şey bu 85 i görmezden gelmek (ekrana yansıtmamak).
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

MrDarK

#10
Alıntı yapılan: XX_CİHAN_XX - 04 Kasım 2013, 21:12:55
Öncelikle ufak bir düzeltme yapayım ölçtüğümüz şey ısı değil, sıcaklıktır. Çook zaman önce bende ısı ısı deyip duruyordum :)
Isı bir enerjidir..

Neyse birde 85 mevzusu hakkında bir şey deyip çekiliyorum. Bu sensörden power on reset durumunda okuma yaptığınız da size sıcaklık değeri olarak +85 derece bilgisini verir. Yeni bir ölçüm yapıp güncel sıcaklık değeri oluşana kadar (sadece power on reset anında) bu 85 değerini okumanız normal. Yapacağınız şey bu 85 i görmezden gelmek (ekrana yansıtmamak).

Saygı ve sevgilerimle üstadım. Bilgi için teşekkürler
Picproje Eğitim Gönüllüleri ~ MrDarK