5 farklı frekansta Kare Dalga PWM

Başlatan oongit, 20 Kasım 2010, 22:14:43

oongit

PIC16F628A kullanılarak 5 farklı frekansta, Duty Cycle oranları ayarlanılabilen PWM oluşturmak istiyorum. Mümkün müdür?

Sistem ilk açıldığında 100Hz, 1. butona tıkladığımda 150 Hz, tekrar tıkladığımda 200 Hz...250 Hz...300 Hz ve en son tekrar tıkladığımda 100 Hz olacak.

2. butona tıkladığımda Duty (+)
3. butona tıkladığımda Duty (-) ayarlanabilmeli...

Bu durum 16F628A için donanımsal ya da yazılımsal olarak mümkün müdür?

justice_for_all

evet mumkun arkadasim

setup_timer_2(T2_DIV_BY_16,250,1); bu kod pwmin frekansini ayarlamaya yariyor...

ayarlar ayni kalsin degistirmeniz gereken sadece 250 yazan yer burasi.asagidaki formuldende bu degeri belirleyebilirsiniz...

PWM period = [(PR2) + 1] ⋅ 4 ⋅ Tosc ⋅ TMR2 prescale value

-PWM period =1/ PWM frequency

-TOSC =1 / FOSC
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

OG

Donanımsal PWM ile 4MHz koştursan 145Hz e iner, frekansı daha düşürmen gerekir.

Xtal frequency Lowest useable Pwm frequency
4MHz 145Hz
8MHz 489Hz
10MHz 611Hz
12MHz 733Hz
16MHz 977Hz
20MHz 1221Hz
24MHz 1465Hz
33MHz 2015Hz
40MHz 2442Hz


Yazılımsal olarak mümkündür.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

oongit

Butona her basışta frekansın değişmesi için "if" komutunu mu kullanmalıyım peki? Sonuçta sistem ilk açıldığında 100 Hz ile çalışacak, butona her bastığımda 50'şer Hz artacak ve en sonunda 300 Hz'den sonra 100 Hz'e geri dönecek.

justice_for_all

pic baska islem yapacakmi peki yoksa sadece duty ve frekans ayarlama icin mi kullanilacak??
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

#5
Alıntı yapılan: justice_for_all - 20 Kasım 2010, 22:33:06
pic baska islem yapacakmi peki yoksa sadece duty ve frekans ayarlama icin mi kullanilacak??

Yalnız ve yalnız 5 değişik frekans üretip bunların duty oranlarını ayarlayacak o kadar...

100-150-200-250 ve 300 Hz...

justice_for_all

#6
o zaman if le yapmanizda bi sakinca yok arkadasim...

algoritma ise soyle olabilir die dusunuyorum..

while(true)
{
         if(frekans_butonu_basildiysa)
            {
                 if(i==0)
                   setup_timer_2(T2_DIV_BY_16,250,1);  ///burayi istediginiz frekans degerlerine gore duzenleyiniz.....(100 Hz)
                 else if(i==1)
                   setup_timer_2(T2_DIV_BY_16,250,1); ///burayi istediginiz frekans degerlerine gore duzenleyiniz.....(150 Hz)
                 else if(i==2)
                    setup_timer_2(T2_DIV_BY_16,250,1);///burayi istediginiz frekans degerlerine gore duzenleyiniz.....(200 Hz)
                 else if(i==3)
                    setup_timer_2(T2_DIV_BY_16,250,1);///burayi istediginiz frekans degerlerine gore duzenleyiniz.....(300 Hz)
                 else if(i==4)
                    setup_timer_2(T2_DIV_BY_16,250,1);///burayi istediginiz frekans degerlerine gore duzenleyiniz.....(400 Hz)
                 if(++i==5)
                       i=0;
            }
}

frekans ayarlama islemi bu sekilde olur...

Not: Ama ilk once yukarida OG hocamin dedigini dikkate alman gerekli...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

#7
4MHz kristal kullandığımızda bunu donanımsal olarak yapamıyoruz ama...

Yazılımsal olarak nasıl yapacağız? Bildiğim kadarıyla 16F628'in dahili RC osilatörü olması lâzım. Bunu nasıl dikkate almalıyız?

justice_for_all

peki ilk frekansin 100 hz yerine 150 hz olsa olmazmi??
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit


justice_for_all

yani bazi uygulamalar icin hassas frekanslar gerekli ama senin uygulamanda okadar onemli degilse kristalin degeri icin kullanabilecegin minimum pwm frekansinda basla bence...


Kolay gelsin...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

Gerçekten önemli ne yazık ki... Şimdiye kadar yaptığım araştırmalar; düşük frekansların yapmak istediğim iş için çok daha etkili olduğunu, yüksek frekansların ise yapmak istediğim işte tepki süresinin çok daha iyi olduğunu gösteriyor. İşin garip tarafı, şu an için; düşük frekanslar benim işimi çok daha iyi görüyor... Etki tepkiden daha önemli yani  ???

oongit

Aklıma şöyle bir şey geldi:

Min. PWM frekansı kullanılan kristalin frekansına bağlı ve bu en düşük kristal frekansı 4Mhz olarak gösterilir... 1MHz'lik ya da ne bileyim 32.768kHz'lik kristal bağlanamıyor mu bu MCU'lara?

justice_for_all

baglanir tabiki 1 Mhzlik alabilirsin arkadasim...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

O zaman yazdığım frekansları alabilirim sanırım değil mi?  ;D