pwm sinyalleri arasında faz farkı oluşturma..

Başlatan 54_fatih_54, 16 Mart 2013, 19:23:17

54_fatih_54

arkadaşlar merhaba..
smps devresi için pwm sinyaline ihtiyacım var 60-65 khz değerlerinde sinyali ayarladım faklat
2 sinyal arasında faz farkı olması gerekiyor onu çözemedim bu konuda yardımcı olursanız sevinirim

#include <16F876a.h>
#device adc=10
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)

void main()
{
   int16 pot_deger,pot_deger2,e;
   
   /*adc setup*/
   
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(AN0);
   set_adc_channel(0);
   
   /*ccp1 setup : pwm*/
   setup_timer_2(T2_DIV_BY_1,80,10); 
   setup_ccp1(CCP_PWM);
  
    setup_ccp2(CCP_PWM);  // CCP2 birimi PWM çıkışı için ayarlandı
   set_pwm1_duty(500);
  
   set_pwm2_duty(500);

   
   
   
   while(1){
  pot_deger = read_adc();

   set_pwm1_duty(pot_deger/3);
   
   set_pwm2_duty(pot_deger/3);

   
   }
}


Dalından Kopan Yaprağın Akibetini Rüzgar Belirler..

barışyk

arkadaşım sigorta değerlerinde XT yerine HS kullan. 4 MHz kristal değerinden yüksek olduğunda bu değer kullanılıyor. ayrıca faz farkı derken kaç derece bi fark olacak?

M.Salim GÜLLÜCE

#2
C konusuna hakim değilim ancak donanımla ilgili bir mevzu olduğunu düşünüyorum.
Bir şekilde programını donanın-ma bağlaman gerek sanırım.

Öyleki PWM1 PWM 2 yi tetiklemek zorunda birbirinden bağımsız pwm olduğunda faz fakının oluşabilmesini senkronize olması gerektiğini düşünüyorum.
Pic 32 de denemiştik. Tek timer kullanıyordu ancak 3 pwm birbirinden ayırmak istesekte ayıramamıştık. Sonunda anladıkki PWM lere gecikme verebiliyoruz registrlarla oynayarak fakat tam bağımsız pwm oluşturamıyoruz. O halde bizim işimize yaramayan şey tam senin aradığın şey.
Kullandığın çipin Datasheetine gözattığında gerekli ipuçlarınıda bulacağınızı zannediyorum. Tabiiki MCU bahsettiğim donanımsal yapıya sahipse. :)

Birde haddime değil ama genede önermek istiyorum. SMPS yapmak istiyorsan SMPS devreleri entegreleri var hazır. onları kullanıp Kontrolünü picle yapsan daha mantıklı olmazmı? Yapman istediğini tam bilemediğimden alhgıladığım kadarıyla öneriyorum. :)

since1990

Basitce pwm1 i baslattiktan belli bir sure sonra pwm2 baslatsan olmazmi?
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

54_fatih_54

önerilerinizi deniyeceğim...
since1990
dediğini denemiştim bir sonuç alamadım...
faz farkı var örnekler ama pic basic dilinde..bende onu bilmiyorum

bunu bir abi istedi benden..smsp devresinde klullanmak için potans ile ayar yapan picli bir devre istedi..

smsp entegerelerinde istenen değerleri ayarlamak için kondansatörler dirençler vesayre gerekli oluyor birinde problem oldumu entegreyede zarar veriyor.o yüzden pic li olmasını istiyor sanırım.
Dalından Kopan Yaprağın Akibetini Rüzgar Belirler..

M.Salim GÜLLÜCE

Alıntı yapılan: since1990 - 16 Mart 2013, 21:54:32
Basitce pwm1 i baslattiktan belli bir sure sonra pwm2 baslatsan olmazmi?
Zaten anlattığım o ama rastgele değil registrlarla hiç şaşmadan yapabilmek hemde % oranı kadar basit.

Extreme


sadogan


M.Salim GÜLLÜCE

Alıntı yapılan: 54_fatih_54 - 16 Mart 2013, 22:19:48
önerilerinizi deniyeceğim...
since1990
dediğini denemiştim bir sonuç alamadım...
faz farkı var örnekler ama pic basic dilinde..bende onu bilmiyorum

bunu bir abi istedi benden..smsp devresinde klullanmak için potans ile ayar yapan picli bir devre istedi..

smsp entegerelerinde istenen değerleri ayarlamak için kondansatörler dirençler vesayre gerekli oluyor birinde problem oldumu entegreyede zarar veriyor.o yüzden pic li olmasını istiyor sanırım.
Aslında çevre şartları zorlamadıkça PWM devre entegreleri zarar görmez. Örnek: PC power devreleri.
Ayrıca MCU kontrollü PWM kontrol çipleride olması gerektiğini düşünüyorum. Sonuçta aynı işi yapıyor Zaten Kondansatör vs. sadece zamanlama frekans durumunda gerekiyor. dışarıdanda enjekte edlebilir. Geri besleme ve akım gerilim sınırlaması hata kontrolü amaçlı dirençler ve diyotlar dışında elemana rastlayamazsınız. PWM geri dönüş gerektiren bir uygulamadır. Aksi takdirde tasarladığınız Power devresi ya aşırı akım çekildiğinde yanar yada aşırı gerilim çıkardığından beslediği devreyi yakar. Mutlaka ve mutlaka geri besleme kontrolü gerekir. MCU devresiyle en fazla kontrol edebileceğiniz PWM frekansı ve akım gerilim limitlerini dijital olarak belirlemek olsa gerek. Kaldıki PWM frekansıyla oynamak sağlıklı değil. Zira Her devrenin bilhassa trafoların verimli çalıştığı bir frekans alanı vardır. dışına çıkarsanız istediğinizi elde edmezsiniz.

Tavsiyem siparişi veren arkadaşla birazcık sohbet edin. işin iç yüzünü hem siz anlatın hemde ondan esas maksadını öğrenin.

54_fatih_54

evet arkadaşlar sanırım isteğimi yaptım...
pwm1 ve pwm2 nin sinyalleri üst üste geliyordu.sinyalleri ayıramıyordum...farkı oluşturmayı başardım hafta içi arkadaşımla görüşüp tam isteği şekle getiririm..

Mehmet Salim GÜLLÜCE bilgileriniz için teşekkürler..arkadaşıma yazılarınızı okuturum hangisini uygulamak isterse onu seçer...



kodun son şekli

#include <16F876a.h>
#device adc=10
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                      
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)

void main()
{
   int16 pot_deger;
   
   /*adc setup*/
   
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(AN0);
   set_adc_channel(0);
   
   /*ccp1 setup : pwm*/
   setup_timer_2(T2_DIV_BY_1,80,10); 
   setup_ccp1(CCP_PWM);
  setup_ccp2(CCP_PWM);  // CCP2 birimi PWM çıkışı için ayarlandı
   
   set_pwm1_duty(78);
   set_pwm2_duty(80);

   
   
   
   while(1){
  pot_deger = read_adc();

   set_pwm1_duty(pot_deger/3);
for(;;)
{

   set_pwm2_duty(pot_deger/3);

}
   }
}
Dalından Kopan Yaprağın Akibetini Rüzgar Belirler..