Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

lm35 sorun

Başlatan cidik, 10 Ocak 2008, 02:21:50

cidik

selam arkadaşlar. kendimce birşeyler yapmaya çalışıyorum elimdeki kitaptan yararlanarak. yapamadım yardımınıza ihtiyacım var. bu programda yanlışlık varmı? sensörü taktığımda sürekli 6.8gösteriyor   teşekkürler

#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#define use_portb_lcd TRUE
#include <lcd.c>

unsigned long int ham;
float voltaj,sicaklik;


void main()
{
  setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
  setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
  setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
  setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
  setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
  setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı
  setup_adc(adc_clock_div_32);   // ADC clock frekansı internal RC
  setup_adc_ports(AN0);   // Tüm AN girişleri analog
 
  lcd_init();
 
  set_adc_channel(0);

  delay_us(20);

  printf(lcd_putc,"\fSicaklik=");

  while(1)
  {  
  delay_ms(50);
  output_b(0x00);
  ham=read_adc();  
  delay_ms(200);
  output_b(0x00);
  voltaj=(0.0048828125*ham)*1000;
  sicaklik=(voltaj/10)+2;
  lcd_gotoxy(10,1);
  printf(lcd_putc,"%5.1f'C",sicaklik);
  delay_ms(200);
  output_high(pin_b0);
  }
}

arslan74

Ben forumda LM35 ile ilgili kod yayınlamdım. Forumda aratma yaparsanız göreceksiniz.

Selamlar

ferdem

Benim ilk eksik gördüğüm satır adc nini kaç bitlik olduğunu ifade eden satır, önem derecesini bilmiyorum ama siz yine de koyun.
#device adc=10   e benzer bir satırı atlamış olmayasınız?

Hep 6.8 gösteriyorsa demek ki ham hep 10, ilginçlik burda başlıyor. Sıcaklıktan önce lcd ye ham ın değerini bastırın ve de sensör yerine bir pot bağlayıp adc okumanızın sağlık olup olmadığını bir test edin. Ondan emin olduktan sonra sıcaklığı gösterirsiniz.

Epey uzun rakamlar yazılmış, sensörünüzün döndürdüğü gerilim değeriyle sıcaklık arasında basit bir bağlantı olması lazım, bunlar üzerine biraz düşünerek kodunuzu güncellemeniz daha iyi olabilir.

#device adc=10 bildiriminden sonra
voltaj=(ham*5)/1024; satırı size doğru voltaj değerini verecektir.

Şurda örnek bir ADC uygulaması var. İyi çalışmalar, kolay gelsin.

cidik

Alıntı yapılan: "ferdem"Benim ilk eksik gördüğüm satır adc nini kaç bitlik olduğunu ifade eden satır, önem derecesini bilmiyorum ama siz yine de koyun.
#device adc=10   e benzer bir satırı atlamış olmayasınız?

Hep 6.8 gösteriyorsa demek ki ham hep 10, ilginçlik burda başlıyor. Sıcaklıktan önce lcd ye ham ın değerini bastırın ve de sensör yerine bir pot bağlayıp adc okumanızın sağlık olup olmadığını bir test edin. Ondan emin olduktan sonra sıcaklığı gösterirsiniz.

Epey uzun rakamlar yazılmış, sensörünüzün döndürdüğü gerilim değeriyle sıcaklık arasında basit bir bağlantı olması lazım, bunlar üzerine biraz düşünerek kodunuzu güncellemeniz daha iyi olabilir.

#device adc=10 bildiriminden sonra
voltaj=(ham*5)/1024; satırı size doğru voltaj değerini verecektir.

Şurda örnek bir ADC uygulaması var. İyi çalışmalar, kolay gelsin.
teşekkürler hocam çok yardımcı oldunuz. arslan kardeş sanada çok tşeekkürler. senin koda rast geldim arama yaparak ama istediğimi bulamadım yada benim gözümden kaçtı. teşekkürler.