Pic ile 4 Farklı Frekans Çıkartılabilir mi ?

Başlatan rayman, 03 Ocak 2020, 20:44:03

rayman

27khz pwm Sinyali %50 Duty Cycle Ters ve Düz Smps için .Kare Dalga
40khz PWM Sinyali %50 Duty Cycle Kara dalga düz .
10 khz pwm Sinyali %50 Duty Cycle Kare Dalga düz. Bir kaç anlayan bilir kişiye sordum ama yapılamaz dedi pic ile. Pic ile yapılacak sinyallerden biri hesaplandığında diğer sinyaller doğru frekansları veremezmiş ? Böyle birşey yapmak istiyorum ama olabilir mi ?
Burada bir uygulamada yapılmış ama.


RaMu

Pic ile veya herhangibir mcu ile yapılabilir.
Kısaca yazılımsal PWM ile yapılabilir.
Bu frekansların en küçük ortak katını üretebiliyorsan kolay.
Sadece 40kHz ve 10kHz üreteceksin diyelim,
40kHz için timer kesmesi ile
minimum 1/80k periyodlu bir kesme kurdun,
her kesmede bir pini toggle edersen 40kHz sinyal üretmiş olacaksın.
Şimdi aynı kesme içinde her 4 kesme geldiğinde
başka bir pini toggle edersen
o pindende 10kHz üretmiş olursun.
Bu veya benzeri mantıkla yapabilirsin.

Donanımsal PWM modülü ile çalıştığında
bazı piclerde Complementary Output var
yani ürettiği sinyalin tam tersini başka bir pinden veriyor.
27kHz yi donanımsal PWM ile
diğerlerinide yukarıdaki gibi bir yöntemle üretirsin olur biter.

Ek:
CCP1, CCP2 gibi birden çok PWM modülü olan Picler ile yapmakda mümkünmüş ve
çok daha kolay.
https://www.ccsinfo.com/forum/viewtopic.php?p=90366
   setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM
   setup_ccp2(CCP_PWM |CCP_USE_TIMER3 ); // sets up CCP2 to use alternate Timer


  // setup your timers 2 and 4
  setup_timer_2(T2_DIV_BY_1, 150, 1);
  setup_timer_4( T4_DIV_BY_1, 50, 1);

  while(1)
  {
    set_pwm1_duty(value);
    set_pwm2_duty(value);
  }
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

RaMu

Denedim, örnek olarak bulunsun:
CcsC proje, isis simulasyon dosyaları:
http://www.mediafire.com/file/x86m930efmmquku/RaMu_20200103_16F1827_MultiplePwmFreqs.7z/file



#include <main_MPF.h>

void main()
{
   setup_timer_2(T2_DIV_BY_4,199,1);      //100 us overflow, 100 us interrupt

   setup_timer_4(T4_DIV_BY_4,49,1);      //

   setup_ccp1(CCP_PWM|CCP_PWM_HALF_BRIDGE|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);
   //orjsetup_ccp4(CCP_PWM);
      setup_ccp4(CCP_PWM |CCP_TIMER4 ); // sets up CCP2 to use alternate Timer4 !!!!!!!!!!
   set_pwm1_duty((int16)398);//398);
   set_pwm4_duty((int16)398);

   while(TRUE)
   {


      //TODO: User Code
   }

}
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

rayman

Elünize sağlık simule edip deneyeceğim . Ancak 3 tane dalga görüyorum.  Tam istediğim detayları bu Pic ile yapabilirmiyiz ? Yada yazabilirmisiniz ?

JOKERAS

Doğru demişler.Kullandığımız işlemciler seri işlem yapan
makinalar.
Bura da en önemli sinyal Smps için olanı

Smps için Complement Sinyal Almakla iş bitmiyor.
Dead Band,Blanking, hiç olmadığı kadar önemli hale geliyor.
Ayrıca Smps'in Feedabck'i ne olacak?Onları neyle hesaplayacaksın?
Yazılımlamı?:)
Onu hesaplamaya kalktığında iş çığrından çıkacak.
Sürekli değişen Feedback Doneleri sürekli değişeceğinden hesplama zamanıda
hep değişiklik gösterecek.

Smps'i ayrı yaparsan diğerleri kolay.
DsPic ler var sırf bu işler için tasarlanmış.Göz at.

rayman

Bu feedbacksiz çalışma. Yani geri bildirimi deneyleyecek birşey yok. Sadece osilatör bir yeri tetikleyecek okadr. Yani sistemde sadece bu frekansların çıkması yeterli.

rayman

Alıntı yapılan: JOKERAS - 04 Ocak 2020, 13:03:02Doğru demişler.Kullandığımız işlemciler seri işlem yapan
makinalar.
Bura da en önemli sinyal Smps için olanı

Smps için Complement Sinyal Almakla iş bitmiyor.
Dead Band,Blanking, hiç olmadığı kadar önemli hale geliyor.
Ayrıca Smps'in Feedabck'i ne olacak?Onları neyle hesaplayacaksın?
Yazılımlamı?:)
Onu hesaplamaya kalktığında iş çığrından çıkacak.
Sürekli değişen Feedback Doneleri sürekli değişeceğinden hesplama zamanıda
hep değişiklik gösterecek.

Smps'i ayrı yaparsan diğerleri kolay.
DsPic ler var sırf bu işler için tasarlanmış.Göz at.
Bana sadece 100khz %50 duyt ve cycle , 27khz  %50 duty ve cycle ters ve düz sinyal , birde 100 %50 duty ve Cycle gerekiyor. Bu olsa işimi göreecek

JOKERAS

O zaman Ramu'nun önerdiği Donanımsal CWG,COG barındıran işlemciler var onlardan
kullan.




rayman

PIC10F320, PIC10F322, PIC12F1501, PIC16F1503, PIC16F1507, PIC16F1508, PIC16F1509

Bunları buldum evet ama. Ben kod yazmayı bilmiyorum . Complementary Waveform Generator olarak bu Pic lerden birisi olurmu ? Yoksa yukarıdaki Ramu arkadaşın verdiği Hex i simule ettim ama frekansı ölçemedim.Yani zor iş mi gerçekten şu kodu yazmak  ?

JOKERAS

Rayman dostum,kod yazmayı bilmiyorsan zaten zor.
Bilen için kolay.
Olmaz diyen bilirkişiler senin sorduğun soruyu anlamamışlardır,benim anlamadığım gibi.

Yukarıdaki işlemcilerin çoğuyla olur,incelemek lazım.
Ama sen kod yazmayı bilmiyorum diyorsun.Asıl mesele o.
Bence o bilirkişilere durumu tekrar izah et.Bu sefer olur diyeceklerinden eminim.

rayman

Zaten onun için sordum yapabilen olurmu ? Çokmu uğraştırır ? Benim anladığım bir iş değiş kod yazmak. Yani bilmiyorum açıkcası. Sadece bu istediğim şey lazım okadar

power20

Bunu yapacak kadar programlamayı öğrenmek biraz vakit alır. Günde 6 saat anlatan biri olsun 2 gün yeterli. Zaten direk bunu anlatsın. Bu kişinin yanında bellek olur içinde gerekli programlar ve ilaçları mevcut olur. Ne gerekiyorsa onu anlatır. ASM den başlamaya gerek yok.
Sürekli programlama lazım olmayacaksa sorunu çözecek birine müracaat en iyisi. Test edip hex i teslim alabilirsiniz.

M.Salim GÜLLÜCE

Kod yazmaya başlamak için FLOWCODE ile başlamanı öneririm.
Buş zamanlarında takıl.
Çok fazla eğitimede gerek yok.
Ancak çok kanallı PWM istiyorsan donanımsal olarak çok kanal PWM aygıtı olan bir işlemci ile yapabilirsin.
Soft PWM fazlaca karışık olabilir.
https://www.youtube.com/results?search_query=flowcode+dersleri
Herşey görsel..

tyildizak

#13
Alıntı yapılan: rayman - 04 Ocak 2020, 13:45:55Bana sadece 100khz %50 duyt ve cycle , 27khz  %50 duty ve cycle ters ve düz sinyal , birde 100 %50 duty ve Cycle gerekiyor. Bu olsa işimi göreecek

Alıntı yapılan: rayman - 04 Ocak 2020, 14:15:54Zaten onun için sordum yapabilen olurmu ? Çokmu uğraştırır ? Benim anladığım bir iş değiş kod yazmak. Yani bilmiyorum açıkcası. Sadece bu istediğim şey lazım okadar


Tolerans kurtarırsa sadece bir tane ne558 veya birkaç tane 555, dirençler, kondansatörler vs ile halledebilirsiniz. Daha kararlı olsun isterseniz mesela komparatör ic ve kristal ile tetikleme de uydurulabilir, böyle bir iş için mcu, kod vesaire şart değil.

rayman

Alıntı yapılan: tyildizak - 04 Ocak 2020, 17:04:48Tolerans kurtarırsa sadece bir tane ne558 veya birkaç tane 555, dirençler, kondansatörler vs ile halledebilirsiniz. Daha kararlı olsun isterseniz mesela komparatör ic ve kristal ile tetikleme de uydurulabilir, böyle bir iş için mcu, kod vesaire şart değil.
Zaten bu dediğinizi  icm7556 cmos ike yapabilirim. Mesele Mcu ile yapmak