pcbway

CSC C ile ilgili bir yerde zorlanıyorum yardım

Başlatan Furkan KELEŞOĞLU, 06 Aralık 2015, 18:00:45

Furkan KELEŞOĞLU

PIC16F877A Mikro denetleyici ve lm35 ısı sensörüyle bir devre kurdum pıc icine yazdığım programı attım fakat lcd ekranda 1010.0' gibi bir değer görüyorum ve habire bu  5 basamaklı sayı değişiyor hızlı hızlı sabit durmuyor ve bir derece olarak göstermiyor acaba nerde hata yapıyorum ?


#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)

#use fast_io(a)

#define use_portb_lcd TRUE
#include <lcd.c>


unsigned long int bilgi;
float voltaj, sicaklik;

void main()
{
set_tris_a(0x01);
set_tris_b(0x00);
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
lcd_init();

set_adc_channel(0);
delay_us(20);
printf(lcd_putc,"\fSicaklik");

while(1)
{
   bilgi=read_adc();
   voltaj=(0.0048828125*bilgi)*1000;
   sicaklik=(voltaj/10)+2;
   lcd_gotoxy(10,2);
   printf(lcd_putc,"%5.1f'C",sicaklik);
   delay_ms(100);
}
}

Buda PIC ' e yüklediğim kodlar
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Furkan KELEŞOĞLU

programın en başında  #include  <main.h>  kopyalarken almamışım kusura bakmayın yardım edebilirmisiniz ?
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

toyer

lcd ye sensorden değil de direk komutla bir sayı yazdırın önce yazıyor mu ondan emin olalım

Yusuf usta

Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

fatih343

Alıntı yapılan: toyer - 06 Aralık 2015, 22:42:11lcd ye sensorden değil de direk komutla bir sayı yazdırın önce yazıyor mu ondan emin olalım

Yazdırmada sorun yok burada
Ne kadar ekmek o kadar köfte

fatih343

Alıntı yapılan: Yusuf usta - 07 Aralık 2015, 00:42:34lm35 data ayağına pull up yaptınız mı?

Pek anlıyamadım ben konuyu açarmısınız?
Ne kadar ekmek o kadar köfte

Furkan KELEŞOĞLU

pull up tan kastınız ? 10K OHMLUK bir dirençmi atayım LM35 in cıkış bacağına ?
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Furkan KELEŞOĞLU

#include <16f877a.h>


#device  ADC=10
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)

#use fast_io(a)

#define use_portb_lcd TRUE
#include <lcd.c>


unsigned long int bilgi;
float voltaj, sicaklik;

void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);

set_tris_a(0x01);
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
lcd_init();

set_adc_channel(0);
delay_us(20);
printf(lcd_putc,"\fSicaklik");

while(1)
{
   bilgi=read_adc();
   voltaj=(0.0048828125*bilgi)*1000;
   sicaklik=(voltaj/10)+2;
   lcd_gotoxy(10,2);
   printf(lcd_putc,"%5.1f'C",sicaklik);
   delay_ms(1000);
}
}

KODLARI BÖYLE DEĞİŞTİRDİM BU SEFERDE SICAKLIK ATIYORUM 16 .5 DERECEYSE BİRDEN 19 DERECE OLUYOR SONRA BİRAZ BEKLİYOR DERECE 16 YA DÜŞÜYOR 15 E SICAKLIĞA GÖRE DEĞİŞİYOR AMA BİR ORTASINI BULAMIYOR BEKLEMESİNİN SEBEBİ BEN 1 SANİYE BEKLEDİYORUM ONDAN ZATEN ANLARSINIZ KODLARDAN
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

toyer

yazdiginiz programi s'mule ettiniz mi
sorun besleme devrelerinde olabilir

kifvet

1010 olması sanki adcnin okunduktan sonra 10luk tabana çevrilmemesinden kaynaklanıyor:)

Furkan KELEŞOĞLU

LM7805 voltaj regülatörüyle besliyorum devreyi ve regülatör neredeyse hiç ısınmıyor devrenin cektiği akımda 0.20 gibi bir Amper akım cekiyor yazdığım program şuan pıc in icinde olan program arkadaşım FATİH343  ile yapıyoruz bu projeyi Galiba biz bu değerlerin ortalamasını almamız lazım ama yapamıyoruz cok şey denedik fakat olmuyor yada biz bir yerde hatamı yapıyoruz yada bir yerimi atlıyoruz anlamıyorum işin doğrusu bu CSC C kitabının icindeki bir uygulama ama gelin görünki değer ler tam anlamıyla gercek değil
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

kifvet

Devre şemasını koyabilir misin?LM35in out bacağı ile toprak arasına bir adet kutuplu kondansatör ekle bakalım 10uF ve sonrada 1uF.

Yusuf usta

07 Aralık 2015, 23:42:02 #12 Son düzenlenme: 07 Aralık 2015, 23:43:08 Yusuf usta
Alıntı yapılan: Furkan41 - 07 Aralık 2015, 17:08:40pull up tan kastınız ? 10K OHMLUK bir dirençmi atayım LM35 in cıkış bacağına ?

değerli kardeşim,
iki ayrı şemada iki ayrı şekil gördüm. bu direnç ve filtrelerle deneyin derim.  resim ekte. ikinci şemada değerler görünmüyor, 1k direnç üzerinden mikro denetleyiciye verilmiş ve 100nf ile şaseye filtre konmuş.
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Furkan KELEŞOĞLU

denemediğim şey kalmadı  galiba kodlarda sıkıntı var cünkü 23 dereceden birden 15 dereceye düşmesi, olmadığını gösteriyorki benim devreyi calıştırdığım yer calışma odam soba yok bişey yok en fazla 5 derece felandır oda buz gibi oda 14 derece bile yoktur peki başka bir sensör yokmu bukadar iş gerektirmeyecek direk taktığımızda derece elde edeceğimiz bir sensör ? bu sensör bana biraz dandik geldi
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

toyer

analog veri giriş ucları nasıl çalışıyor.  yani gelen voltajı pic neye göre scale edip digite ceviriyor? 

sıfır ve 5 volt arasını mı ceviriyor?   picin adc sini kaç bit kullanıyorsunuz?  10 bit mi ?

sıfır volt için 0 değeri 5 volt için 1024 değerimi oluşturuyor pic ?

toyer

08 Aralık 2015, 21:45:55 #15 Son düzenlenme: 08 Aralık 2015, 21:47:15 toyer
yani pic adc den 1.5 volt okudugunda sıcaklık 150 derece olması gerekiyor. (istediğiniz bu) ama bunu pic içerisinde scale etmelisiniz. çünkü pic 1.5 voltu bir sayıya ceviriyor. 0-5 volt arası çalışıyor iseniz mesela pic bunu 307 sayısına cevirir.  siz bu 307 sayısını öyle bir hesap yapacaksınız ki lcd de 150 derece olarak göstereceksiniz. 

3 kat kazanc veren opam cıkısını pice girerseniz bu sefer sensor 150 derece oldugunda 1.5 volt verir ama 3 kat kazancla pice 4.5 volt girersiniz.  böylece sensor cıkısında ki voltaj oynamalarını sisteminizi daha az etkiler hale getirebilirsiniz. picin adc si daha iyi çalışır. anlattıgım sey picin adcsinin 10 bit olarak çalıştıgı durum için. yani sıfır volt ile 5 volt arasını 1024 e bölüyor iken.

toyer

RA0 analog giriş var iken RA2 VE RA3 reference voltajı var mı? nasıl yapılandırdınız picin adcsini. 

Furkan KELEŞOĞLU

elimde 16F877A PIC , LM35 ISI SENSÖRÜ VE LCD EKRAN VAR ben bir türlü yapamadım bunu calışan veya daha önceden yapmış olanınız varsa kodlarıyla birlikte bana şemasını atarsa sevinirim arkadaşlar.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Yusuf usta

Alıntı yapılan: Furkan41 - 15 Aralık 2015, 00:08:10elimde 16F877A PIC , LM35 ISI SENSÖRÜ VE LCD EKRAN VAR ben bir türlü yapamadım bunu calışan veya daha önceden yapmış olanınız varsa kodlarıyla birlikte bana şemasını atarsa sevinirim arkadaşlar.
biltek tubitak sitesindeki termometre bu elemanlarla yapılmış. ve o devreyi ben yaptım çalışıyor.

http://www.biltek.tubitak.gov.tr/gelisim/elektronik/13.htm
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Furkan KELEŞOĞLU

Yusuf usta cok teşekkür ederim  saolasın
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.