Haberler:

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

Ana Menü

PWM Yardım

Başlatan Chan86, 05 Mart 2009, 00:40:00

Chan86

İyi akşamlar arkadaşlar.PWM yi C ile kullanacağım.Ama nasıl bir kütüphane kullanmalıyım.Komutları nedir?Hatta mümkünse ufak bir örnek program bloüu verebilirmisiniz açıklamalı olarak.

fractal

kütüp hane kullanman gerekmiyor.öncelikle clcok frekansımı elde etmek istiyorsun(high süresi sabit frekans değişir) yoksa (frekans sabit pwm duty cycle yani high süresimi değişecek...


ayarları şöyle

           setup_ccp2(CCP_PWM);
           set_pwm2_duty(xxx);
           
          setup_timer_2(T2_DIV_BY_16,PR2,1);

burda pwm2 çıkışı kullanılmıştır.
Tpwm=(1/fosc)*16*(pr2+1)

pr2 enfazla 255 en az 1 olur.0 kapalıdır.
xxx en fazla 255 olur.255 olursa high süren %100 dür 125 olursa%50 high %50 low olur.pwm yapman için frekans sabitken bu xxx değerini değiştirebilirsin.

clock için ise bu xxx sabit pr2 değerini değiştiirirsin.bölme oranı 1 -4-ve16 dır...
Restantum cogniscutur Quantum deligutur

Chan86

Ben frekansı sabit tutarak duty cylcle değiştirmek istiyorum.Bunun için frekansı nerden gireceğim komut olarak mesela frekansı 4Hz ,görev oranı %80 olan bir sinyal elde etmek istiyorum.Hangi değişkenlere ne gireceğim komutta.Kafam karışıyor bu konuda.Sizide yoruyorum...

fractal

Fosc kaç onu bilmek lazım.kristal frekansın

Tpwm=(1/4M)*4.16.(255+1)
burdan Tpwm=4096.10m^-6=4ms T.f=1 den F=250 hz olur.en az 250hz elde edersin.

en fazla ise 16 yerine 1 pr2 de 1 yaparak oluşur.tabi daha düşük frekans lar için osc frekansını düşürmen lazım.

%80 duty cycle için ise %100  255 ise %80 kaçtır=204 yazman lazım...


setup_ccp2(CCP_PWM);
set_pwm2_duty(204);

setup_timer_2(T2_DIV_BY_16,PR2,1;


yazdığında %80 doluluk oranında 250 hz elde edersin.
Restantum cogniscutur Quantum deligutur

Chan86

Teşekkür ederim 16f877 ile bunu gerçekleiştirebilirim sanırım dimi?

fractal

evet cok rahatlıkla.
Restantum cogniscutur Quantum deligutur

Chan86

setup_ccp2(CCP_PWM);
set_pwm2_duty(204);

setup_timer_2(T2_DIV_BY_16,PR2,1);


Burda aynı bu şekilde yazdığımda derlemede hata veriyor.Aynen bu şekildemi yazacağım acaba?

Erol YILMAZ

yazdığınız kodlar Hi-tech PICC ile derlenmez.

Chan86 size daha önce ADC ile ilgili bir yöntem anlattım.
Şimdi de datasheette PWM ile ilgili olan bölümü açın,
Ve ilgili registerin anlamını bit bit okuyarak
kendi kodunuzu yazın.

Yarın COMPARATOR için kod sorunca cevap yine aynı olacak. :)

Chan86

Teşekkür ederim.Herşey datasheetten çıkıyor bundan sonra en iyi soru sormadan önce data sheeti güzelce incelemek lazım.Tekrar teşekkür ederim.

arslan74

aşağıdaki site PIC ile PWM olayını güzelce anlatiyor. Ama dili Almanca.

http://www.sprut.de/electronic/pic/grund/pwm.htm

Selamlar