Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: ErtAsL - 17 Mayıs 2015, 23:40:05

Başlık: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 17 Mayıs 2015, 23:40:05
Proje ödevi için pic uygulaması aldım. Projem lm35 ile sıcaklık ölçmek, bu sıcaklık değerinin lcd'ye yazdırmak, belli sıcaklık değerlerinde ledleri yakmak ve sıcaklık aralıklarında 2 fanı sırasıyla çalıştırmak. Proteus simu.da vereceğim kodları yazıp simule edince kod gayet güzel çalıştı fakat baskı devrede işler böyle gitmedi. Kodlarımda bir sıkıntı var mı sizce?


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

#use fast_io(a)
#use fast_io(b)
#use fast_io(d)

#define LCD_ENABLE_PIN     PIN_b0     
#define LCD_RS_PIN         PIN_b1     
#define LCD_RW_PIN         PIN_b2     

#define LCD_DATA4    PIN_b4         
#define LCD_DATA5    PIN_b5         
#define LCD_DATA6    PIN_b6       
#define LCD_DATA7    PIN_b7       
#include <lcd.c>

unsigned long int analogiris;
float volt,temp;

void sicaklik_olcumu()
{
      analogiris=read_adc();
      volt=(0.0048823*analogiris)*1000;   // 16 bit 0-1023 arası ölçüm yapar. Max 5V gerilim alındığından 5/1023=0.0048823 mV/bit
      temp=(volt/10)+2;
}

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);
   
   set_tris_d(0x00);
   set_tris_c(0x00);
   output_d(0x00);
   output_c(0x00);
   
   set_adc_channel(0);
   delay_ms(20);
   
   lcd_init ();
   delay_ms(100);
   
   lcd_gotoxy(1,1);
   
   printf(lcd_putc,"\f ERTUGRUL ASLAN");
   
   delay_ms(1000);
   
   lcd_gotoxy(1,1);
   
   printf(lcd_putc,"\n   120205019   ");
   
   delay_ms(1000);
     
   printf(lcd_putc,"\f  PIC PROJE");
   delay_ms(200);
   
    While(1)
   {     
      sicaklik_olcumu();
     
      lcd_gotoxy(1,1);
      printf(lcd_putc,"\n Sicaklik=%f",temp);
      delay_ms(100);
   
      if (temp<25)
   {
      output_toggle(pin_d4);
      output_low(pin_d5);
      delay_ms(100);
      output_low(pin_d6);
      output_low(pin_c4);
      output_low(pin_c2);
   }
      if ((temp>=25) && (temp<40))
   { 
      while ((temp>=20) && (temp<=40))
      {
      output_high(pin_c2);
      output_toggle(pin_d5);
      output_low(pin_d6);
      output_low(pin_c4);
      output_low(pin_d4);
     
      sicaklik_olcumu();
     
      lcd_gotoxy(1,1);
      printf(lcd_putc,"\n Sicaklik=%f",temp);
      delay_ms(100);
      }
   }
      if (temp>=40)
   {
      while (temp>=35)
      {
      output_high(pin_c4);
      output_high(pin_d5);
      output_high(pin_c2);
      output_toggle(pin_d6);
      output_low(pin_d4);
     
      sicaklik_olcumu();
     
      lcd_gotoxy(1,1);
      printf(lcd_putc,"\n Sicaklik=%f",temp);
      delay_ms(100);
      }
   }
   }
}

Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: vitruvius - 18 Mayıs 2015, 01:53:59
Devre şemanı paylaşır mısın
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: baran123 - 18 Mayıs 2015, 12:58:42
Bir şeyi belirtmek de fayda var.Açıklamada "// 16 bit 0-1023 arası ölçüm yapar" denmiş fakat 16f877a da adc 16 bit değil.
#device ADC=10 satırında 10 bit olarak ayarlanmış.yani 2 üzeri 10 = 1024 adımdır (0-1023) olarak hesaplanır.Bu arada kodlarda problem yok gibi.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: vitruvius - 18 Mayıs 2015, 14:02:35
Bu arada B portu için #use fast_io kullanmışsınız. Bu durumda B portunun giriş çıkış pinlerini set_tris ile belirlemeniz gerekir.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: Recep METE - 18 Mayıs 2015, 14:17:47
Baskı devre kurulurken bu tip sıkıntılar çok oluyor.Hele breadboarda kurmak bazen deveye hendek atlatmaktan daha zor.Ben kodlarda bir hata görmüyorum. Baskı devrenin fotolarını paylaşırsan hatalarını söyleyebiliriz.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: Tagli - 18 Mayıs 2015, 14:36:56
Forumda daha önce birkaç kez daha dile getirmiştim, tekrarlayayım: Ortalıkta sahte LM35'ler var. Öncelikle LM35'e normal beslemesini verip PIC'e falan bağlamadan çıkış voltajını multimetre ile kontrol etmekte fayda var.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 18 Mayıs 2015, 19:42:15
Şemayı paylaşmayı unutmuşum, buyrun:

(http://s15.postimg.cc/9ykj368fr/Ads_z.jpg) (http://postimg.cc/image/9ykj368fr/)

Kodlarda ben de hata olduğunu düşünmüyorum tabi ufak tefek noktalar gözden kaçmamışsa. Fakat projeyi parçalara ayırıp tek tek deneyeyim dedim yine olmadı. Mesela baskı devredeki 3 ledle sıralı yakma yaptım sıralama yazdığım gibi gitmedi ve bir süre sonra bir ledde takılı kaldı. LCD uygulaması yapayım dedim hiçbir display çıktısı alamadım
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 24 Mayıs 2015, 01:41:34
Hala çözebilmiş değilim sorunu. Aynı devrede sadece LED yakıyım diyorum krokodille şasenin (-) neresine deysem farklı şekilde tepki veriyor. Misal led sıralı yanmıyor hepsi yanıyor yada sıralı yanıp donuyor vs. Bir de lcd pinleriyle alakam olmadığı halde lcd'yi takmazsam led'ler çalışmıyor. Tüm pic hevesimi aldı şu proje. Yardımlarınızı bekliyorum
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: Recep METE - 24 Mayıs 2015, 10:25:39
Arkadaşım akşam breadboarda kurup deneyeceğim sonucu sana söylerim.  Ama senin baskı devrende sorun var gibi.  Breadboarda kurup denermisin.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: tekosis - 24 Mayıs 2015, 11:51:37
devrenin yüksek çözünürlüklü bir kaç fotoğrafını paylaşmanda fayda var. ayrıca tagli hocanın dediği denemeyi yaptın mı? bu işler sabır meselesi, ilk problemde hevesin kırılmasın olur böyle şeyler.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: vitruvius - 24 Mayıs 2015, 11:58:26
Bence sen devrenin pcb çizimini de bir paylaş.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 24 Mayıs 2015, 20:01:33
PCB çizimim şöyle

(http://s30.postimg.cc/ddo12bz25/757.jpg) (http://postimg.cc/image/ddo12bz25/)

Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: tekosis - 24 Mayıs 2015, 23:04:33
1- işlemcine besleme gitmiyor
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: vitruvius - 24 Mayıs 2015, 23:11:41
Evet sorun kart tasarımında. Hatalar mevcut. İşlemcine besleminin gitmediği gibi toprak da gitmiyor. Biraz daha düzenli çizmeye çalış ve bu sefer kartı basmadan önce paylaş ve bakalım.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 25 Mayıs 2015, 02:49:04
Aynı şemayı şu şekilde tekrar çizdim. Olmuş mudur?
(http://s8.postimg.cc/tkvoyzvxt/vdaas.jpg) (http://postimg.cc/image/tkvoyzvxt/)
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: mdargut - 25 Mayıs 2015, 08:52:45
(http://s1.postimg.cc/9tqkrhd6j/vdaas.jpg) (http://postimg.cc/image/9tqkrhd6j/)

Sanırım devreyi otomatik çizdiriyorsun. Çok saçma kıvrımlar var devrede. Birkaçını sarı kutukcuklarla işaretledim. Bütün yollar anlamsız şekilde kıvrım yapmış. Bunlara ek olarak şunları da uygulamanda fayda var.
- 1 numaralı gösterdiğim yere 100nF kapasite ekle.
- Kristal ve kapasiteleri gösterdiğim gibi yerleştir.
Son olarak ben olsam fanların beslemesini işlemci beslemesi ile aynı hattan almam. Fan beslemesini ayırır ve gücün girdiği ilk noktaya ayrı bir hat çizerdim. Yinede fanlar çalıştığında işlemcinin sapıtma ihtimali var. Birkere işlemci beslemesinde regülatör kullanmamışsın.
Başlık: dijital saat ve termometreli kontrol sistemi yardım edin lütfen :(
Gönderen: arzu biyomedikal - 25 Mayıs 2015, 11:32:09
merhabalar benimde projemin bi parçası termometre ve pek kod yazamıyorum :( projem dijital saat ve termometreli kontrol  sistemi[/b][/i]
dijital saat dört butonla yapılacak dakika artır azalt , saat artır azalt butonları. kullanıcı odanın sıcaklığının hangi derecede kontrol edileceğini tanımlanacak ayar butonları ile belirleyecektir. ilk oda sıcaklığı 20 derece varsayılacak ve oda sıcaklığının her 15 saniyede bir yarım derece arttığı düşünülecektir ayarlanan saat ile oda sıcaklığı 15' er saniye aralıklarla dijital ekranda sıra ile gösterilecektir. kullanıcı tarafından odanın kontrol kontrol edileceği sıcaklığın 25 ile 30 derece arası girilmesi sağlanacaktır. oda sıcaklığı kullanıcı tarafından belirlenen sıcaklığa geldiği anda soğutucu fan devreye girecektir(step motor).fanın çalışmasıyla oda sıcaklığının düşmeye başladığı varsayılacaktır ve her 15 saniyede sıcaklık bir yarım derece düşecektir. kullanıcı tarafından belirlenen sıcaklık değerinin 2 derece altına gelindiğinde fan kapanacaktır. Fan kapandıktan sonra odanın sıcaklığının tekrar artmaya başladığı varsayılacaktır. sistem çalışması bu şekilde sürekli devam edecektir. kullanıcı tarafından istenildiği zaman  odanın kontrol edileceği sıcaklık değeri değiştirilebilecek ve sistem bu yeni değere göre çalışmaya devam edecektir. :-\  :'( çok karışık değil mi ya bu ne :(
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: mdargut - 25 Mayıs 2015, 12:41:49
Alıntı yapılan: arzu biyomedikal - 25 Mayıs 2015, 11:32:09
merhabalar benimde projemin bi parçası termometre ve pek kod yazamıyorum :( projem dijital saat ve termometreli kontrol  sistemi[/b][/i]
dijital saat dört butonla yapılacak dakika artır azalt , saat artır azalt butonları. kullanıcı odanın sıcaklığının hangi derecede kontrol edileceğini tanımlanacak ayar butonları ile belirleyecektir. ilk oda sıcaklığı 20 derece varsayılacak ve oda sıcaklığının her 15 saniyede bir yarım derece arttığı düşünülecektir ayarlanan saat ile oda sıcaklığı 15' er saniye aralıklarla dijital ekranda sıra ile gösterilecektir. kullanıcı tarafından odanın kontrol kontrol edileceği sıcaklığın 25 ile 30 derece arası girilmesi sağlanacaktır. oda sıcaklığı kullanıcı tarafından belirlenen sıcaklığa geldiği anda soğutucu fan devreye girecektir(step motor).fanın çalışmasıyla oda sıcaklığının düşmeye başladığı varsayılacaktır ve her 15 saniyede sıcaklık bir yarım derece düşecektir. kullanıcı tarafından belirlenen sıcaklık değerinin 2 derece altına gelindiğinde fan kapanacaktır. Fan kapandıktan sonra odanın sıcaklığının tekrar artmaya başladığı varsayılacaktır. sistem çalışması bu şekilde sürekli devam edecektir. kullanıcı tarafından istenildiği zaman  odanın kontrol edileceği sıcaklık değeri değiştirilebilecek ve sistem bu yeni değere göre çalışmaya devam edecektir. :-\  :'( çok karışık değil mi ya bu ne :(

Aslında o kadar da zor değil. Gözünüz korkmasın. Siz hele bir başlayın devamı gelir. Tam olarak nerede takıldınız?
İsminizde biyomedikal yazdığından soruyorum. Temel elektronik, mikroişlemciler ve programlama bilginiz var mı?
Başlık: Ynt: dijital saat ve termometreli kontrol sistemi yardım edin lütfen :(
Gönderen: vitruvius - 25 Mayıs 2015, 14:21:52
Alıntı yapılan: arzu biyomedikal - 25 Mayıs 2015, 11:32:09
merhabalar benimde projemin bi parçası termometre ve pek kod yazamıyorum :( projem dijital saat ve termometreli kontrol  sistemi[/b][/i]
dijital saat dört butonla yapılacak dakika artır azalt , saat artır azalt butonları. kullanıcı odanın sıcaklığının hangi derecede kontrol edileceğini tanımlanacak ayar butonları ile belirleyecektir. ilk oda sıcaklığı 20 derece varsayılacak ve oda sıcaklığının her 15 saniyede bir yarım derece arttığı düşünülecektir ayarlanan saat ile oda sıcaklığı 15' er saniye aralıklarla dijital ekranda sıra ile gösterilecektir. kullanıcı tarafından odanın kontrol kontrol edileceği sıcaklığın 25 ile 30 derece arası girilmesi sağlanacaktır. oda sıcaklığı kullanıcı tarafından belirlenen sıcaklığa geldiği anda soğutucu fan devreye girecektir(step motor).fanın çalışmasıyla oda sıcaklığının düşmeye başladığı varsayılacaktır ve her 15 saniyede sıcaklık bir yarım derece düşecektir. kullanıcı tarafından belirlenen sıcaklık değerinin 2 derece altına gelindiğinde fan kapanacaktır. Fan kapandıktan sonra odanın sıcaklığının tekrar artmaya başladığı varsayılacaktır. sistem çalışması bu şekilde sürekli devam edecektir. kullanıcı tarafından istenildiği zaman  odanın kontrol edileceği sıcaklık değeri değiştirilebilecek ve sistem bu yeni değere göre çalışmaya devam edecektir. :-\  :'( çok karışık değil mi ya bu ne :(

Karışık gözüküyor çünkü istenilenler fazla. Ancak karışık olması zor olduğu anlamına gelmiyor. Sistemi basite indirgeyip düşünmek lazım.

Dijital saat için kullanabileceğiniz entegreler var DS1302 gibi. Öncelikle saati direkt olarak ekranda göstermeye çalışın. Ekranda gösterdikten sonra butonlarla saat ayarı yaptırmaya çalışırsınız.

Sıcaklık için de kullanabileceğiniz çeşitli sensörler mevcut, lm35 gibi. Burada da ilk olarak sıcaklığı okumaya çalışın. Sonra da sıcaklık belli bir derecenin üzerine çıktığında bir led yakın mesela. Bunu simüle etmek için ,şu an benim yaptığım gibi, saç kurutma makinesini sensörün üstüne tutabilirsiniz.

Bunları yapabildikten sonra sizin projenizde istenilenleri uygulamak birçok "if" kontrolüne bakar.

Adım adım ilerlerseniz daha kolay gider işler.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: tekosis - 25 Mayıs 2015, 15:47:06
açık şemanı da paylaşırsan bir adım daha ileri gidersin. bu arada işlemcine ait pinler çok küçük onları büyütmelisin. yoksa delik açtığında bacaklar yok olacaktır.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 25 Mayıs 2015, 20:06:56
Son şekli doğru olduğunu umuyorum.
(http://s15.postimg.cc/lqzeo48tz/vdaas.jpg) (http://postimg.cc/image/lqzeo48tz/)
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: tekosis - 25 Mayıs 2015, 21:04:20
ISIS şemanı da paylaşırmısın?
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: vitruvius - 25 Mayıs 2015, 21:18:56
100nF kapasiteyi işlemciye mümkün olduğunca yakın koy. Motorun beslemesini işlemciden hala ayırmamışsın bu soruna yol açabilir. Tekosis'in dediği gibi pin deliklerini büyütmemişsin sanırım.

Şimdi devreye harici olarak 9V ve 5V veriyorsun. 9V'u 7805'ten geçirip elde ettiğin 5V'u dışarı veriyorsun. Harici olarak verdiğin 5V ile de fanı, işlemciyi vs. besliyorsun. Doğru anlamış mıyım?

Bu arada LCD'nin arka aydınlatması için 100 ohm gibi bir direnç koymanda fayda var.
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 25 Mayıs 2015, 23:56:49
tekosis ISIS şemam:
(http://s30.postimg.cc/g6iucnnml/sadasd.jpg) (http://postimg.cc/image/g6iucnnml/)

Pin delikleri sıkıntı olmuyor çalışmayan baskı devrede tam oldu. 9V kısmı regülator, ister pille ister dc kaynakla çalıştırmak için de ayrı 5V giriş koydum. Besleme ayırmak derken ayrı bir klemensle mi besliyim yoksa paralel kol mu çıkayım?
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: arzu biyomedikal - 30 Mayıs 2015, 02:00:02
Alıntı yapılan: kim - 25 Mayıs 2015, 12:41:49
Aslında o kadar da zor değil. Gözünüz korkmasın. Siz hele bir başlayın devamı gelir. Tam olarak nerede takıldınız?
İsminizde biyomedikal yazdığından soruyorum. Temel elektronik, mikroişlemciler ve programlama bilginiz var mı?
Biyomedikal Mühendisliği öğrencisiyim evet. Temel olarak elektronik ve işlemci dersi aldım ama çok işime yaramadı o yüzden bu projede zorlandım. sınavlarım olduğu için toparlayamadım kodları. toparlayınca atsam doğru mu diye bakar mısınız ?
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: ErtAsL - 18 Haziran 2015, 13:57:28
Dediklerinizi uygulayarak devreyi tekrar bastım ve sıkıntı olmadı çalıştı. Fakat 2 fanı aynı çalıştıramıyorum yada bir fan çalışcağı zaman biraz elimle döndürmem gerekiyor. Bunun nedeni ne olabilir?
Başlık: Ynt: LM35 Uygulama kodlarım doğru mu?
Gönderen: mehmet - 19 Haziran 2015, 00:32:03
Alıntı yapılan: ErtAsL - 18 Haziran 2015, 13:57:28
Dediklerinizi uygulayarak devreyi tekrar bastım ve sıkıntı olmadı çalıştı. Fakat 2 fanı aynı çalıştıramıyorum yada bir fan çalışcağı zaman biraz elimle döndürmem gerekiyor. Bunun nedeni ne olabilir?
R7 ve R8'i 1K ile değiştirebilirsiniz.