Elimde 1 adet 18f2431 var bunun pwm çıkışlarını kullanmak istiyorum. sigorta ayrlarında hpol ve lpol (high-low polarity) ayarları var bunlar high konumunda ya da low konumunda iken çıkışlar dear time özelliğini kullanıyor mu? ben 8 çıkışı da ayrı ayrı pwm olarak kullanmak istiyorum. Yoksa üretici sadece dead time optimizasyonlumu üretmiş?
hpo lpol başlangıçta çıkışların ne olacağını belirliyor. 2431 in hpwm modulünün 3 çift pwm si var siz frekansı aynı ama duty cycle farklı 3 adet çıkış alabilirsiniz. 6 çıkış 2 şerli 3 grup halinde yani. guruplar kendi içinde ya aynı fazda yada complemetry(birisi birken diğeri 0) şeklinde çıkış alabilirsiniz. diğer 2 pwm normal pwm hpwm değil.Toplamda 5 adet pwm niz var.
picde toplamında 8 adet güç kontrolü için pwm çıkışı var. nasıl elimde 5 pwm çıkışı kalıyor. PWMCON0 CONTROL REGISTER'de PMOD bitinde pwmlerin biribirini tamamlayıcı yada bağımısız çalışabilceği belirtilebiliyor!! Ben mi yanlış anladım? ben bunun şimdilik 4 çıkışını kullanmayı düşünüyorum.
Bir de bu modülde pwm hesabıyla ilgli birşey göremedim. kullandığı timer PTMR diğer piclerden farklı gibi.
Son sorum şu bu pwm çıkışlerını kullandığım zaman program arkasında hpwm gibi mi çalışacak? ( kullandığım dil c hpwm diye bir fonksiyon yok.)
sorularının anladığım kadarına cevap vereyim; bağımsız çalışma senin düşündüğün gibi birşey değil yani sen pwm0 ile pwm1 i bağımsız çalıştırırken aynı duty değerini giriyorsun zaten her çift çıkışında duty registeri 1 adet . Bir düzeltme daha 2431 de 6 adet bu şekilde pwm var(hpwm) geri kalan 2 adet normal pwm. Pwm hesabı için registerlara bakacaksın orada ayrıntılı mevcut. programın arkasında hpwm gibimi çalışcak derken ne dediğini anlamadım o kısmı biraz daha açarsan yardımcı olabilirim.
Yani pwm çıkışlarını çift olarak mı kullanabilirim? Öyleyse sayfa 183 figür 17-3 deki anlatım nedir? gözümden kaçmış pwm hesabı ancak duty başlığı altında hesabıyla ilgili birşey göremedim bunda da yardımcı olursanız sevinirim.
183 figure 17-3 te zaten benim anlattığımı söylüyor her bir çift için sadece 1 adet duty cycle registeri var. Override olayı başka . duty cycle registerindeki değer period registerindeki değerin 4 katı oalcak.yani period registeri x ise duty cycle da %50 istiyorsan duty cycle registeri 2*(x+1) olacak.
17.2de deadtime gösteriyor 17.3de göstermiyor! biraz karıştırdım işi. Şunu öğrenmek istiyorum pwm çiftleri ürekli birbiriyle bağımlımı çalışır? Ben pwm0 ile bir köprüyü pwm1 ile başka bir köprüyü süremezmiyim?
Alıntı yapılan: apsis - 30 Nisan 2014, 14:32:42
Şunu öğrenmek istiyorum pwm çiftleri ürekli birbiriyle bağımlımı çalışır? Ben pwm0 ile bir köprüyü pwm1 ile başka bir köprüyü süremezmiyim?
pwm0 ve pwm1 bağımsız çalışmaz.Bir çift ile 1 adet köprü sürersin. Onun içinde Override ı bir incele
override den anladığım pin giriş çıkış işlemleri yapılıyor( çat pat ingilizceyle).. evet daha dikkatli baktığımda ayrı çalışamıyorlar. peki datasheet deki bağımlı ve bağımsız mod ne anlama geliyor?
-giriş çıkş değil çıkısı 1 yada 0 yapmayla alakalı.
-Bağımsız dediği ikiside aynı değeri alması bağımlı dediği biri birken diğerinin 0 olması(complementry)
daha iyi anladım. sizin bu işlemci ile çalışmanız varmı? varsa örnek bir uygulama gösterebilirmisiniz pwm ile ilgli?
bu pici kullanırım sık sık .Encoderlı motor kontrol uygulamaları için bire birdir. QEI interface i sayesinde mcu yu mesgul etmeden-kaçırmadan direk encoder bilgisini alabilirsin. Bu sayede ister sabit hız ister pozisyonlama görevlerini yaptırabilirsin.
#include <18f2431.h>
#fuses H4,NOWDT,NOMCLR //Frequency = Fosc / (4 * (period+1) *prescale)
#use delay(clock=40000000)
#define POWER_PWM_PERIOD 255
void main(void)
{
setup_power_pwm_pins (PWM_COMPLEMENTARY, PWM_COMPLEMENTARY, PWM_COMPLEMENTARY, PWM_COMPLEMENTARY);
setup_power_pwm(PWM_FREE_RUN | PWM_CLOCK_DIV_128| PWM_DEAD_CLOCK_DIV_16, 1, 0, POWER_PWM_PERIOD, 0, 1,0);
set_power_pwm0_duty((int16)(510));
set_power_pwm2_duty((int16)(255));
set_power_pwm4_duty((int16)(1020));
while(1) {};
}
örnekte zaten herşey açık pwm_clock_div_128 prescaları veriyor . Pwm frekansı hesabınıda yazdım zaten bu satırları kullanarak istediğini yapabilirsin.
bu kodlarla alıştırma yaptıktan sonra datasheetten kendin registerleri anlayıp kütüphane yazıp kullanabilirsin.
ben bununla 4 motor sürmeyi planlıyorum. pwm çıkışları direk fet sürmeye uygun. peki bunda bootstrap kondansatörü gibi şeyler eklememe gerek varmıdır?
sen bir uygulamanın şematiğini buraya koy ona göre yorum yapalım
bunun gibi birşey
benzer şekilde diğer 4 motoruda kontrol etmeyi düşünüyorum
(http://s7.postimg.cc/52zg4eh9j/Ekran_Al_nt_s_2.jpg) (http://postimg.cc/image/52zg4eh9j/)
and yada or gate e falan ihtiyacın yok çapraz mosfetlere pwm çiftlerini bağlayacaksın bağımsız olacaklar.
high side ve low side olarak süreceğim mosfetleri ve 4 motor süreceğim ileri geri yön kontrolü de olacağı için böyle birşey yapmayı düşünüyorum
yaparsın override kontrolü bir incele o şekilde sürebilirsin.
mosfetleri bu şekilde sürdüğüm zaman bootstrap olayına girmem gerekiyormu?
o kısımları zaten bildiğini varsayıyorum(entegre kullanacaksın IR2108 mesela)