16f877a el yaklaşınca düzgün çalışması

Başlatan Atima, 26 Ekim 2021, 14:56:50

Atima

Merhabalar, bir çok yerde çözüm aradım ama bulamadım..
16f877a kullanıyorum 4mhz ve 22pf. mclr direnci 10k ve devre beslemesi 7805 ile 5v. (picin besleme ayaklarına 100nf kapasitör takılı)
Kodum aşağıdaki gibidir, devreye elimi hafif yaklaştırdığımda sorunsuz çalışıyor diğer türlü takılıyor, çalışmıyor. neden olabilir?
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#define mavi input(pin_c4)
#define yesil input(pin_c5)
#define kirmizi input(pin_c3)
#define tanimsiz input(pin_c2)
#include <lcd.c>
void main()
{
   lcd_init();
   while(TRUE)
   {
      if(mavi==1 && yesil==0 && kirmizi==0 && tanimsiz==0)
      {
         output_high(pin_b0);
         output_low(pin_b1);
         output_low(pin_b2);
         printf(lcd_putc,"\fmavi renk !!"); delay_ms(100);
      }
      else if(yesil==1 && mavi==0  &&kirmizi==0 && tanimsiz==0)
      {
         output_high(pin_b1);
         output_low(pin_b0);
         output_low(pin_b2);
         printf(lcd_putc,"\fyesil renk !!"); delay_ms(100);
      }
      else if(kirmizi==1 && yesil==0 && mavi==0 && tanimsiz==0)
      {
         output_high(pin_b2);
         output_low(pin_b1);
         output_low(pin_b0);
         printf(lcd_putc,"\fkirmizi renk !!"); delay_ms(100);
      }
      else if(kirmizi==0 && yesil==0 && mavi==0 && tanimsiz==1)
      {
         output_high(pin_b3);
         output_low(pin_b1);
         output_low(pin_b2);
         output_low(pin_b0);
         printf(lcd_putc,"\ftanimsiz renk !!"); delay_ms(100);
      }


      
   }

}

ete

Daha öncede cevap vermiştim. Bu arızaya bir çok kere şahit oldum. Sorun hep besleme kaynaklı çıkmış idi. Keşke imkanın olsada bir pil yada akü kullanarak bu devreyi çalıştırabilsen daha iyi anlaşılacak sorun.
Besleme kaynaklı sorun ne demektir ona biraz değinelim. Bazı swtching regülatörler 12V çıkış sağlar. Ölçerseniz orada 10-12V aralığınd bir voltaj görürsünüz. Bunu 7805 ile regüle edip 5V da elde edebilirsiniz. Bu beslemenizin temiz olduğunun bir göstergesi değil maalesef. Switching regülatörlerde çıkışta skop ile bakılırsa belirgin bir kare dalga olduğunu görebilirsiniz.
Diğer bir sorun da normal trafo çıkışından diyot ile doğrultulup 12V elde edilmesi de bazen sorunlu olabiliyor. Bu gibi durumlarda tam dalga doğrultma ancak köprü diyot kullanılarak ve çıkışa en azından 2200uF kondansatör bağlayarak yapılabiliyor. Bu şekilde elde edilen voltaj temizdir sorun çıkarmaz. ELinizdeki ana kaynak nasıl bir şey bunu bilmiyoruz. Sizde açıklamamışsınız. Bana kalırsa o beslemenin 12V tarafına büyükçe bir kondansatör bağlayın. Sonra tekrar deneyin devrenizi. 5V tarafında da en azından 470 uF bir kondansatör koysanız iyi olacak.
Bu arada aklıma geldi. Bazen kristal kondansatörlerinin değerleride yanlış olabiliyor. 22pF yerine farklı bir değer takılmış ise buda sorun yaratabilir.
Bir diğer konu bu işlemcide A portunda komparatörler vardır ve default olarak aktiftir. A portundan bir pin kullanıyorsanız komparatörleri kapatmanız gerekir.

Ete

Atima

Alıntı yapılan: ete - 26 Ekim 2021, 15:38:26Daha öncede cevap vermiştim. Bu arızaya bir çok kere şahit oldum. Sorun hep besleme kaynaklı çıkmış idi. Keşke imkanın olsada bir pil yada akü kullanarak bu devreyi çalıştırabilsen daha iyi anlaşılacak sorun.
Besleme kaynaklı sorun ne demektir ona biraz değinelim. Bazı swtching regülatörler 12V çıkış sağlar. Ölçerseniz orada 10-12V aralığınd bir voltaj görürsünüz. Bunu 7805 ile regüle edip 5V da elde edebilirsiniz. Bu beslemenizin temiz olduğunun bir göstergesi değil maalesef. Switching regülatörlerde çıkışta skop ile bakılırsa belirgin bir kare dalga olduğunu görebilirsiniz.
Diğer bir sorun da normal trafo çıkışından diyot ile doğrultulup 12V elde edilmesi de bazen sorunlu olabiliyor. Bu gibi durumlarda tam dalga doğrultma ancak köprü diyot kullanılarak ve çıkışa en azından 2200uF kondansatör bağlayarak yapılabiliyor. Bu şekilde elde edilen voltaj temizdir sorun çıkarmaz. ELinizdeki ana kaynak nasıl bir şey bunu bilmiyoruz. Sizde açıklamamışsınız. Bana kalırsa o beslemenin 12V tarafına büyükçe bir kondansatör bağlayın. Sonra tekrar deneyin devrenizi. 5V tarafında da en azından 470 uF bir kondansatör koysanız iyi olacak.
Bu arada aklıma geldi. Bazen kristal kondansatörlerinin değerleride yanlış olabiliyor. 22pF yerine farklı bir değer takılmış ise buda sorun yaratabilir.
Bir diğer konu bu işlemcide A portunda komparatörler vardır ve default olarak aktiftir. A portundan bir pin kullanıyorsanız komparatörleri kapatmanız gerekir.

Ete


yanıt için teşekkür ederim. Kullandığım besleme 12v adaptörden ve 7805 ayarlanabilir voltaj regulatörü ile 5v a düşürüp pic girişlerine 100nf lik kapasitör kullanıyorum. Sizce yetersizmidir bu ?

ete

12V adaptörün içini bilmiyoruz. Nasıl bir voltaj geliyor parazitlimi değilmi ?
AC yada dalgalı akımı doğru akıma (DC) diyotlar çevirir ama yeterlikapasitede kondansatör kullanılmaz ise AC nin bir kısmı çıkışa yani 12V tarafına akar yad geçer. Siz 7805 kullanınca bu voltaj düzelmez ancak 5V ta düşürülmüş olur ama hala parazit taşıyor olabilir.
Bütün bu olumsuzlukları gidermenin yolu senin adaptör çıkışına en az 1000 mf dahada iyisi 2200 mf/25V kondansatör bağlamak gerekir. Voltajı ölçtünmü bilmiyorum. 12v adaptör derler ölçersin orada 16V görürsün genellikle. Bu şekilde 12V tarafını düzeltmiş olursun. Sonra 7805 çıkışındada en az 100uF + 100nf bağlarsın işin görülür. Bu şekilde büyük ihtimalle sorunun çözülmüş olacaktır.
Yaptın ve hala sorun devam ediyor ise kristal yerine rezonatör satın almanı öneririm. Böylece olumsuz kondansatör ihtimalini elemiş olursun. rezonatörlerde üzerinde yazılı frekans değerleri ile satılır 4 mhz-10mhz gibi.
Rezonatör için ayrıca kondansatör kullanılması gerekmiyor. Devredeki kondansatörleri sökersin şayet rezonatör kullanırsan.

Ete

Atima

Alıntı yapılan: ete - 26 Ekim 2021, 16:27:5112V adaptörün içini bilmiyoruz. Nasıl bir voltaj geliyor parazitlimi değilmi ?
AC yada dalgalı akımı doğru akıma (DC) diyotlar çevirir ama yeterlikapasitede kondansatör kullanılmaz ise AC nin bir kısmı çıkışa yani 12V tarafına akar yad geçer. Siz 7805 kullanınca bu voltaj düzelmez ancak 5V ta düşürülmüş olur ama hala parazit taşıyor olabilir.
Bütün bu olumsuzlukları gidermenin yolu senin adaptör çıkışına en az 1000 mf dahada iyisi 2200 mf/25V kondansatör bağlamak gerekir. Voltajı ölçtünmü bilmiyorum. 12v adaptör derler ölçersin orada 16V görürsün genellikle. Bu şekilde 12V tarafını düzeltmiş olursun. Sonra 7805 çıkışındada en az 100uF + 100nf bağlarsın işin görülür. Bu şekilde büyük ihtimalle sorunun çözülmüş olacaktır.
Yaptın ve hala sorun devam ediyor ise kristal yerine rezonatör satın almanı öneririm. Böylece olumsuz kondansatör ihtimalini elemiş olursun. rezonatörlerde üzerinde yazılı frekans değerleri ile satılır 4 mhz-10mhz gibi.
Rezonatör için ayrıca kondansatör kullanılması gerekmiyor. Devredeki kondansatörleri sökersin şayet rezonatör kullanırsan.

Ete
Cok tesekkur ederim bilgileriniz icin

Atima

Alıntı yapılan: ete - 26 Ekim 2021, 16:27:5112V adaptörün içini bilmiyoruz. Nasıl bir voltaj geliyor parazitlimi değilmi ?
AC yada dalgalı akımı doğru akıma (DC) diyotlar çevirir ama yeterlikapasitede kondansatör kullanılmaz ise AC nin bir kısmı çıkışa yani 12V tarafına akar yad geçer. Siz 7805 kullanınca bu voltaj düzelmez ancak 5V ta düşürülmüş olur ama hala parazit taşıyor olabilir.
Bütün bu olumsuzlukları gidermenin yolu senin adaptör çıkışına en az 1000 mf dahada iyisi 2200 mf/25V kondansatör bağlamak gerekir. Voltajı ölçtünmü bilmiyorum. 12v adaptör derler ölçersin orada 16V görürsün genellikle. Bu şekilde 12V tarafını düzeltmiş olursun. Sonra 7805 çıkışındada en az 100uF + 100nf bağlarsın işin görülür. Bu şekilde büyük ihtimalle sorunun çözülmüş olacaktır.
Yaptın ve hala sorun devam ediyor ise kristal yerine rezonatör satın almanı öneririm. Böylece olumsuz kondansatör ihtimalini elemiş olursun. rezonatörlerde üzerinde yazılı frekans değerleri ile satılır 4 mhz-10mhz gibi.
Rezonatör için ayrıca kondansatör kullanılması gerekmiyor. Devredeki kondansatörleri sökersin şayet rezonatör kullanırsan.

Ete
AYrı bir şey soracağım, bu istediğim şey dışında yani inputtan gelen veriye göre lcd ye yazdırma çalışmıyor sadece, diğer komutlar çalışıyor neden olabilir ?

Atima

şuan bir şey keşfettim, ben renk verilerini arduniodan alıyorum yani atıyorum kırmızı renk ise ardunionun 8nolu pini high oluyor, 8nolu pin direkt 16f877a ya bağlıyorum, ordan input alıp kırmızı renk diye yazdırıyorum. fakat 16f877a da değilde ardunioya yaklaştırınca düzgün çalıştığını farkettim. yani sorun ardunioda sanırım. neden olabilir ?

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

alisumer

evet bu bana tanıdık geliyor sebebini ben kendi devremde boşta kalan uçları çıkış yaparak çözmüştüm çünkü pullup yapılmayan girişler kapasitif etki ile rahatça tetiklenebiliyor.bu bir tek pic için değil arduino dada aynıdır sanırım
Hep meraktan

Powered by EzPortal