PIC ile SPWM

Başlatan eem2015, 24 Nisan 2015, 17:35:36

eem2015

merhaba spwm yöntemi ile 1fazlı h bridge inverter tasarlamaya çalışıyorum.PIC ile spwm üretim kısmında sorunlar var yardımcı olabilecek varmı??

ete

Sorun neyse onu açıklasan daha iyi olurdu.

Ete

eem2015

normalde spwm sinüs sinyali ile testere sinyalin karşılaştırılması mantığına dayanıyor.Biz pıc te yazılım yaparken sin tablosu oluşturuyoruz peki testere içinde tablo oluşturmamız gerekiyor mu??Bu teorideki iş pıc ile yazılmak istendiğinde nası yapılıyor?

ete

Testere tipi sinyal içinde tablo oluşturmak en akıllıca yol bence. Zira tablosuz ancak sinyal çıkışına bir takım filtre vs ekleyerek yapılabilirki onunda asıl devre üzerinde olumsuz etkileri olur. Bence tablo ile yapılması daha doğru olur.

Ete

muratguenduez

#4
hocam şöyle bi program yaptım,

ordaki delay komutunu da gözüm görsün diye ekledim.

#include <16F88.h>
#device ADC=10
#use delay(internal=8000000)
#fuses nomclr, nolvp, nobrownout
#include <math.h>
int16 tab[32]={500, 598, 691, 778, 854, 916, 962, 990, 1000, 990, 962, 916, 854, 778, 691, 598, 500, 402, 309, 222, 146, 84, 38, 10, 0, 10, 38, 84, 146, 222, 309, 402};
int i;
void main() {
   
   setup_adc_ports(sAN0|sAN1|sAN2);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_timer_2(T2_DIV_BY_1,99,1);      //50,0 us overflow, 50,0 us interrupt

   setup_ccp1(CCP_PWM); //rb0
   set_pwm1_duty(0L);
   
   
   while(TRUE){
   for( i=0; i<=31; i++)
   {
   delay_ms(100);
   set_pwm1_duty( tab [ i ] );
   }
       
}}

nedense başlangıcta direk %50 duty ile bi süre bekliyor ama ben hiç cıkış verdirmiyorum. sonra bi alçalıp yükseliyor güzelce sonra yine bi süre sabitliyor. for işini bitirince bekle mi yapıyor anlamadım ??
teşekkürler

ete

Ne yazıkki C dilinden pek anlamıyorum. Anlayan cevaplasın.
Ete

Atilla

#6
c dilini picte kullanmadım lakın set_pwm1_duty(tab) komutu i değişkenine bağlanmadan çalışabiliyor mu set_pwm1_duty(tab) böyle olmasi gerekmez mi köşeli parantez içerisindeki i değeri gösterilmiyor kusura bakmayın

muratguenduez

Ilgi icin tesekkurler. Tablonun icindeki degerlerin hangisini sececegini gosteren bisey tanimlamak gerekiyor. Sadec tab degil de tab
  • yazmak gerekiyor. Zaten degisiyor sinusu tam saykil olarak aliyor bu program. Sorun sadece dongu bitince hic olmadik yere %50 duty cikariyor ki frekansi da baska. Sanki dongu bitince bi bosluga giriyor. Yok mu ccs c kullanan?

Elzemefe

#8
http://etepic.com/index.php?topic=715.5;wap2

bu linke bi bak eskiden geçmiş bir konu
Bir dönem  bende  uğraştım  baya da ilerlemiştim
oldukça detaylı bir konu yalnız  sürme şekline oldukça dikkat etmen
gerekiyor mutlaka  özel bir mosfet sürücü  kullanılmalı
ve spwm i  olusturan tablo çok sağlam seçilmeli

muratguenduez

Bu sitedeki butun konulara baktim :) senin bitane cevap vernedigin bi konu da vardi yalnis hatirlamiyorsam.

karacan451

#10
 set_pwm1_duty(tabköşelipar i köşeliparkapa);

böyle yazman gerekiyor diye düşünüyorum.

muratguenduez

zaten öyleydi de, birisi () kullan dedi değiştirmiştim kalmış öyle =) () kabul etmiyor zaten. düzelteyim de yanlış yçnlendirmeyim insanları . teşekkürederim. fakat sorun o halde de devam ediyor. for ya da while her ikisiyle de denedim. saykılı bitirip fordan çıkıp geri girmesi arasında yaklaşık 1sn betam yanık kalıyor led. aslında benim belirlediğim frekans dışında sabit bir %50 duty saykıllı bir cıkış veriyor.

muratguenduez

ilginçtir, aralara boşluk koymayınca köşelileri çıkarmıyor site =)

Powered by EzPortal