pic18f2431 pwm cofig ayarları

Başlatan apsis, 24 Nisan 2014, 17:26:17

apsis

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ş?
"Makineye Beyin" MEKATRONİK

skara1214

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.
Herkes ölür ama herkes gerçekten yaşamaz

apsis

#2
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.)


"Makineye Beyin" MEKATRONİK

skara1214

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.
Herkes ölür ama herkes gerçekten yaşamaz

apsis

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.
"Makineye Beyin" MEKATRONİK

skara1214

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.
Herkes ölür ama herkes gerçekten yaşamaz

apsis

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?
"Makineye Beyin" MEKATRONİK

skara1214

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
Herkes ölür ama herkes gerçekten yaşamaz

apsis

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?
"Makineye Beyin" MEKATRONİK

skara1214

-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)
Herkes ölür ama herkes gerçekten yaşamaz

apsis

daha iyi anladım. sizin bu işlemci ile çalışmanız varmı? varsa örnek bir uygulama gösterebilirmisiniz pwm ile ilgli?
"Makineye Beyin" MEKATRONİK

skara1214

#11
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.
Herkes ölür ama herkes gerçekten yaşamaz

apsis

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?
"Makineye Beyin" MEKATRONİK

skara1214

sen bir uygulamanın şematiğini buraya koy ona göre yorum yapalım
Herkes ölür ama herkes gerçekten yaşamaz

apsis

bunun gibi birşey
benzer şekilde diğer 4 motoruda kontrol etmeyi düşünüyorum

"Makineye Beyin" MEKATRONİK