Haberler:

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

Ana Menü

PWM sinyali sorunu

Başlatan mcn, 23 Şubat 2009, 16:00:06

mcn

kullandığım PIC16F877.CCP1 i kullanarak PWM sinyali elde etmeye çalıştım.
Kullandığım kristal 4 Mhz.
pwm kodunu bu şekilde ayarladım.

setup_timer_2(T2_DIV_BY_16,124,1);//124 ile 500 hz frekans ayarlandı.
  set_pwm1_duty(100);


Proteus da elde ettiğim PWM sinyali bu şekilde istediğim gibi çıktı.




sinyali pratikte de elde etmeye çalıştım.Daha önce uygulamada sinyallerle uğraşmamıştım.Osiloskopla pic in CCP1 çıkışını ölçtüğümde ekranda aşağıdaki sinyali gördüm.




Sinyalimin bu şekilde çıkmasında sebep nedir?
pic i besleme voltajıımın bunda etkisi olur mu?Tam 5v mu olması gerek?
Daha önce bu tür uygulamalarda filtreleme yapıldığını duymuştum?Sinyalin bu şekilde çıkmasında neden filtrelememidir?Eğer oysa nasıl bi filtreleme yapmam gerekli?
Bu uygulamalarda yeni biri olarak yardımlarınıza ihtiyacım var.Şimdiden teşekkürler.
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

Erol YILMAZ

Bence işlemci de PWM modülün çalışıyor ama WDT açık old. için,
reset atıyor :)

mcn

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.


WDT kapalı sanırım?
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

Salih

setup_ccp1(CCP_PWM);

Bunu programda yazdınızmı?

mcn

set_tris_c(0x00);
setup_ccp1(CCP_PWM);


Evet o da yazılı.Donanımsal bir sorun olabilir mi?
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

vebsel

bu tip bir sinyal çıkması çok garip
osiloskop probunda  birşey olmasın sanki şase ucu değmiyor gibi

Salih

Ana döngü içerisinde bir çıkışı 500 ms aralıklarla 1 ve 0 yapın. Sistem genel olarak düzgün çalışıyormu anlamak için.

ahmet2004

#include <16F877.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //High speed Osc (> 4mhz)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES LVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=4000000)

void main() 
{ 
 int8 d1,d2; 
   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_DIV_BY_16, 124, 1); 
   setup_ccp1(CCP_PWM); 
   //setup_ccp2(CCP_PWM); 

   set_pwm1_duty(100); 
   //delay_ms(500); 
   //set_pwm2_duty(100); 

 while (1) 
 {
 
   for (d1=1;d1<=100;d1++) 
   { 
   set_pwm1_duty(d1); 
   delay_ms(100); 
   } 
    
   for (d1=100;d1>=1;d1--) 
   { 
   set_pwm1_duty(d1); 
   delay_ms(100); 
   } 
    
 }

}


2milisaniyelik PWM sinyali kodu.

Osilaskop bozuk olabilir veya osilaskop ayarlanamamıştır.

ferdem

mclr ucu ne durumda? mclr unutulmadıysa:

Öncelikle PIC e yanıp-sönen led uygulaması yazıp, PIC çalışıyor mu bakabilirsiniz.
Fonksiyon üretecinden osiloskopa bilinen bir sinyal uygulayıp osliloskop ve prob için basit bir doğrulama yapabilirsiniz.
Kolay gelsin.

ahmet2004


fractal

osiloskopun topraklaması iyimi.devreyle aynı yerdenmi?
Restantum cogniscutur Quantum deligutur

aliveli

fuses kısmında LVP yi NOLVP yaparak dene