Sine Wave Inverter yazılımı

Başlatan Cemre., 20 Mart 2016, 13:59:52

Cemre.

Herkese iyi tatiller, tatil günü çalışmak zorunda olanlara da iyi çalışmalar diliyorum.

PIC kullanarak Look Up Table mantığı ile PWM dalgası kullanarak Sinus eğrisi elde etmeye çalışıyorum ancak kafama takılan birşey var.

Misal LUT 256 değerden oluşuyor. PWM Frekansım 5kHz diyelim.

Analog karşılaştırıcıya Sinus ve Üçgen dalga girerek oluşturulacak çıkış yönteminde anahtarlama frekansı 5kHz olursa, LUT ile aynı sonucu mu verir?

Yoksa ben LUT eleman sayısını 5k yapmadığım sürece PWM frekansı pek bir şey etkilemez mi? Soruyu bayağı karıştırdım ancak başka da nasıl anlatılır bilemiyorum.

Yapmak istediğim şey anahtarlama frekansını artırıp azaldıkça oluşacak sinüs formunun gerçeğe yakınlığını görebilmek. Bu işi her döngüde Sin değerini hesaplatıp yapmak mı daha mantıklı yoksa LUT ile mi? Ya da farklı bir yöntem var mı? Analog devreler ile uğraşıp PCB ile vakit kaybetmek istemiyorum. Ne kadar az eleman o kadar hızlı ödev teslimi :D

Teşekkürler, iyi günler.

Peşin edit; konuyu güç elektroniği bölümüne açmamdan anlayabilirsiniz kafamın ne kadar çok karıştığını :(

t2

Tabloda tek periyod için gerekli örnekler saklansın. 100 örnek var diyelim. Örnekleri okuduktan sonra diğer örneği okumak için bekleme süresi dalga frekansini belirleyecektir. Yani asıl dalga periyodu, örnekler arasındaki sürenin 100 katı kadar olur. (Esasen 100 degil 99 katı)

Yani tablodaki örnek sayisi sabit, fakat okuma gecikmesi ayarlanarak dalga frekansi değiştirilir.

Cemre.

#2
@t2 hocam. Gecikme süresini bir Potansiyometre ile ayarlamak istesem, ADC dönüşümü işin içine girecek, misal 10 tam sinüste bir ADC okusam bu şekilde 0-50Hz aralığında değişen bir çıkış elde edebilir miyim teorik olarak?

Bu işi 16F819 ile yapabilir miyim?


Bu arada mikroC ile yazdığım kod
const char sine[32] = {128,152,176,198,218,234,245,253,
255,253,245,234,218,198,176,152,
128,103,79,57,37,21,10,2,
0,2,10,21,37,57,79,103};

// arada PWM 10khz'e set ediliyor

while(1) //ana döngü
{
 for(i=0;i<31;i++)
 {
  PWM1_Set_Duty(sine[i]);
  Delay_us(20);
 }
}



Bu durumda 10,60mS periyotlu bir Sinus Dalgası elde ediyorum