Ana içeriğe atla

Keil ile Arm Programlama - 4 ( Pwm )

Keil ile Arm Programlama

Timer Modülü ile Pwm Sinyali

Elde Etme 

     Merhaba. Arm programlama yazılarımıza kaldığımız yerden devam ediyoruz. Bugün yine önemli bir konuyu öğrenmeye çalışacağız. Konumuz pwm sinyaller yani türkçe karşılığı ile " Darbe Genişlik Modülasyonu " . 

      Peki nedir Pwm ? Pwm, iki durumlu dijital sinyalleri kullanarak analog bir değer oluşturmaya yarayan tekniktir. Pwm tekniği ile üretilen bir kare dalgada ON - OFF süreleri ayarlanarak sisteme verilen güç ayarlanır. Pwm sinyalleri anahtarlama ile elde edilir ve iki ana kavramı duty cycle ( doluluk / boşluk ) ve frekans'dır. 

      Bu tanımlama cümleleri fazla açıklayıcı olmamış olabilir, bende ilk defa okuyor olsam anlamazdım.. Alttaki grafiği inceleyelim öncelikle.



      Yukarıda sırasıyla %50, %75, %25 duty cycle oranına sahip sinyaller gösterilmiştir. Burada asıl amaç kısaca analog bir çıkış elde etmektir diyebiliriz. Daha önce ADC ( analog digital converter ) yazısında analog değerleri nasıl dijital sinyallere dönüştürdüğümüzü göstermiştik. Şimdi ise pwm sinyalleri ile dijital çıkışların on/off sürelerini ayarlayarak sanki bir analog çıkış elde ediyor gibi yapıyoruz. :) Bu periyotların zaman aralıkları o kadar kısadır ki esasen bir 5V bir 0V çıkış veriyor olsak bile insan duyuları bunu algılayamaz. 

      Stm32f4'de bazı timerlar APB1, bazı timerlar ise APB2 clock bus hattına bağlıdır. Bizim kullanacağımız TIM3 modülü APB1 clock bus hattına bağlıdır ve bu bus hattının timer frekansı 42 Mhz'dir. Aşağıdaki diyagramda bu clock bus'lar ve frekansları gösterilmiştir.




       Stm32f4'de bütün timerlar 16 bit prescaler değerine sahiptir.

       Prescaler : Mikroişlemcilerde counter clock frekansını ölçekleme olayına verilen isim.

       Hatırlayın timer interrupt yazısında hangi zaman aralıklarında interrupt oluşmasını istiyorsak bu zaman aralığını şu formüle göre belirliyorduk ;

   Timer Frekansı = Timer Clock Time / (Prescaler -1).(Period)

      Timer konfigürasyonlarımızı yaparken bu prescaler ve period değerlerini kullanıcı olarak bizler girdiğimiz için interrupt zamanlamalarını ayarlayabiliyorduk. 

      Pwm sinyalleri üretirken de sinyalimizin kaç hz frekansa sahip olmasını istiyorsak buna benzer bir formül kullanıyoruz. 

    Pwm Frekansı = Timer Frekansı / ( Period + 1 )

      Bu formülü bir örnekle açıklamak gerekirse ; ne demiştik, bizim kullanacağımız TIM3 modülü APB1 clock bus hattına bağlıdır ve bu hattın frekansı 42 MHz'dir. Eğer 10 kHz'lik bir pwm sinyali istersek ;

   10. (10^3 ) = 42.(10^6) / ( Period + 1 )

      Formülüne göre period değerimiz 4199 çıkar. 

     Pwm frekansını bildiğimize göre T = 1 / f formülünden pwm sinyalinin periyodunu da bilebiliriz. 

     Yukarıda ne demiştik. Pwm sinyallerinin 2 önemli kavramı vardı biri frekans diğeri ise doluluk/boşluk oranı. Pwm frekansımızı ayarladığımıza göre sırada doluluk/boşluk ( duty/cycle ) oranını ayarlamak var. Onun da formülü şu şekildedir ;

Pulse Length = [ (Period+1).(Duty Cycle)] / (100 - 1)

      Bu formülü de bir örnekle açıklayalım. Diyelim ki biz pwm sinyalimizin %25 doluluk oranına sahip olmasını istiyoruz.  O halde pulse length değerimiz yani tükçe karşılığı " darbe uzunluğumuz " şu formülle bulunur ;

Pulse Length = [ ( 4199+1).( 25 ) ] / 99 = 1060

      Şimdi kodlarımıza geçmeden önce ise timer modüllerinin özelliklerine kısaca değinmek istiyorum. 

  • Timer6 ve Timer7 basit timer'lardır. Pwm sinyalleri üretemezler.
  • Timer2 ve Timer5 32 bitlik timer'lardır. 
  • Timer9 ve Timer12 iki kanal pwm üretebilirler.
  • Timer10, Timer11, Timer13 ve Timer14 tek kanal pwm sinyalleri üretebilirler.      
      İstediğimiz timer modülünü kullanmak için hangi pinleri kullanacağımız ise datasheet'teki tabloda yazar. 



      Tabloda görüldüğü gibi bizim kullanacağımız TIM3 modülü 1. kanalda sinyal üretmek için A6, B4 yada C6 pinlerini kullanabilir. Buraya kadar herşey tamamsa artık kodlarımıza geçebiliriz. 

      




     Açıklayıcı olması için her kod satırının yanına o kodun ne işe yaradığını yazmaya çalıştım. Umarım faydalı olmuştur. 

Yorumlar

En çok okunanlar ;

PLC Zamanlayıcı ( Timer ) Komutu Uygulamaları ve Simülasyonu

SIEMENS S7 - 200  PLC TİMER KOMUTU UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugünkü yazıda PLC'de timer komutunun kullanımını öğreneceğiz ve bu komutun simülasyon üzerinde uygulamalarını gerçekleştireceğiz. Timerler PLC'de oldukça öneme sahip komutlardır. S7 - 200 PLC'de 3 çeşit zamanlayacı bulunmaktadır ;      1 ) Çekmede Gecikmeli Zaman Rölesi ( TON ) : Bu zamanlayıcı '' enable '' girişine ait komutlar doğru ise zamanlayıcı zaman süresini saymaya başlar. Bu anda zamanlayıcının zaman biti 0'dır. Zamanlayıcı'nın saydığı zaman değeri '' Present Value '' değerine eşit olduğu zaman, zamanlayıcı biti 1 olur. Enable girişi 0 olduğunda ise zaman rölesi sıfırlanır.         T32 - T96                                            >>> 1 ms        T33 - .... - T36 ve T97 - ... - T100      >>> 10 ms        T37 - .... - T63 ve T101 - .... - T255   >>> 100ms         Present Time ( PT ) değeri ola

PLC Mühürleme, Set - Reset Komutları ve Elektronik Kilitleme

SIEMENS S7 - 200 PLC  STEP 7 MICROWIN 4.0 PROGRAMI İLE MÜHÜRLEME,SET-RESET,ELEKTRONİK KİLİTLEME UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugün daha önce anlattığımız konulardan daha temel ve kolay olan mühürleme, set - reset , elektronik kilitleme gibi konulara kısaca değineceğiz. Öğrenilmesi her ne kadar daha basit olsa da içerdiği önem oldukça fazladır. Bu yüzden bu konuları öğrenmeden PLC eğitimi gerçekleştirilmiş olamaz.       İlk olarak mühürleme işleminin ne olduğu ile başlayalım. Örnek verecek olursak siz start butonuna basıldığı zaman herhangi bir devre elemanının ( lamba, motor, kompresör vb. ) çalışmasını istiyorsunuz. Start butonu olarak ise normalde açık ( NO ) buton kullanmanız gerekir. Bu yüzden sizin sürekli çıkışı aktif hale getirebilmek için butona sürekli basmanız gerekir. Bu ise pek mümkün olabilecek bir şey değil. İşte bu noktada mühürleme işlemine gerek duyarız. Gelin önce mühürlemenin ladder diyagramını çizelim ve diyagram üzerinde konuyu kav

3 Fazlı ASM'lere Yıldız / Üçgen Yol Verme Kumanda Devresi ve Simülasyonu

3 FAZLI ASENKRON MOTORLARA YILDIZ / ÜÇGEN YOL VERME KUMANDA DEVRESİ SİEMENS S7 -200 LADDER DİYAGRAMI VE SİMÜLASYONU      Merhaba, bu yazıda sanayide en çok kullanılan elektrikli motor olan 3 fazlı asenkron motorlara yıldız/üçgen yol verme yöntemi ile yol verilmesini STEP 7 MicroWİN programında gerçekleştirmeyi öğreneceğiz. PLC komutlarına geçmeden önce neden yol verme yöntemlerine ihtiyaç duyuyoruz, yıldız/üçgen yol vermek ne demektir, bize ne faydası olur gibi soruları cevaplamak gerektiğini düşünüyorum. Bu yüzden ilk olarak bu soruları cevaplamaya çalışacağız.         3 fazlı asenkron motorlar kalkış anında normal çalışma durumuna göre 5 ila 7 kat arasında daha fazla akım çeker. Bu durum ise pano elemanlarının ( kondaktör, termik röle, sigorta vb. ) daha çabuk yıpranmasına sebep olur. Bu yıpranmayı önlemek için ilk kalkış anında bazı yol verme yöntemleri geliştirilmiştir. Bunlardan en çok kullanılanı ise yıldız / üçgen yol verme yöntemidir.      Yıldız/Üçgen yol verm