Gunun on plana cikan hikayelerini, analizlerini ve rehber iceriklerini takip edin.

Elektroniğe dair ne varsa!

PWM Nedir? STM32 ile Duty Cycle ve Frekans Mantığı

PWM nedir sorusunu duty cycle, frekans, timer mantığı ve STM32 üzerinde PWM üretimi üzerinden sade ve net şekilde açıklıyoruz.

PWM Nedir? STM32 ile Duty Cycle ve Frekans Mantığı

PWM yani Darbe Genlik Modülasyonu, mikroişlemciler laboratuvarında motor hız kontrolünün temelidir. Deney föyünde önce PWM sinyalinin yapısını anlamak, ardından STM32 ile motor hızını bu mantık üzerinden kontrol etmek istenir.

Bu yazıda PWM’in ne olduğunu, duty cycle ile frekans arasındaki farkı, timer mantığını ve STM32 tarafında nasıl üretildiğini sade bir dille anlatıyoruz.

PWM nedir?

PWM, sabit genlikli fakat açık kalma süresi değiştirilen darbelerden oluşan bir sinyaldir. Sinyalin yüksek olduğu süre arttıkça yükün gördüğü ortalama enerji artar. Bu yüzden LED parlaklığı, motor hızı ve ısıtıcı gücü gibi birçok uygulama PWM ile ayarlanabilir.

Duty cycle nedir?

Duty cycle, bir periyot içindeki açık kalma oranıdır. Örneğin periyot 1 ms ise ve sinyal bunun 0.25 ms’inde yüksek seviyedeyse duty cycle %25’tir. Aynı mantıkla 0.5 ms için %50, 0.75 ms için %75 elde edilir.

Duty cycleOrtalama etkiPratik yorum
%0YokYük kapalı
%25DüşükMotor yavaş / LED sönük
%50OrtaOrta seviye enerji
%100MaksimumYük tam açık

PWM frekansı nedir?

PWM frekansı, saniyedeki periyot sayısını gösterir. Aynı duty cycle farklı frekansta bambaşka pratik sonuçlar doğurabilir. Örneğin motor sürmede çok düşük frekans seçilirse titreşim ve ses artabilir. Çok yüksek frekansta ise sürücü ve işlemci ayarları dikkatli yapılmalıdır.

STM32’de PWM nasıl üretilir?

STM32’de PWM üretimi genellikle timer modülü ile yapılır. Timer’ın periyodu ve karşılaştırma (compare) değeri ayarlanır. Periyot toplam çevrimi, compare değeri ise yüksek seviyede kalınan süreyi belirler.

f_pwm = timer_clk / ((PSC + 1) * (ARR + 1))

duty(%) = 100 * (CCR / (ARR + 1))

Burada PSC önbölücü, ARR otomatik yeniden yükleme değeri, CCR ise compare değeridir. Duty cycle değiştirmek için çoğu zaman sadece CCR değiştirilir.

HAL ile duty cycle ayarlama örneği

HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);

void set_pwm_percent(uint8_t duty)
{
    uint32_t arr = __HAL_TIM_GET_AUTORELOAD(&htim3);
    uint32_t ccr = ((arr + 1) * duty) / 100;
    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, ccr);
}

Bu yaklaşım sayesinde örneğin her butona basışta duty cycle’ı %10 artırmak veya azaltmak çok kolay hale gelir. Deney föyünde tam olarak bu mantık istenir.

PWM neden motor hızını değiştirir?

DC motor, besleme geriliminin ortalama etkisine bağlı olarak hız değiştirir. PWM’de gerilim sürekli azaltılıp artırılmaz; bunun yerine gerilim tam seviyede çok hızlı açılıp kapatılır. Motorun elektromekanik yapısı bu darbelerin ortalamasını hisseder. Sonuçta duty cycle arttıkça motor daha hızlı dönmeye başlar.

Laboratuvarda dikkat edilmesi gereken noktalar

  • PWM pininin gerçekten timer destekli çıkış olduğundan emin ol.
  • Duty cycle sınırlarını 0 ile 100 arasında tut.
  • Motoru doğrudan STM32 pininden değil, mutlaka uygun bir sürücü üzerinden kontrol et.
  • Frekans ve duty cycle kavramlarını birbirine karıştırma.

Rapor için kısa sonuç

PWM, sabit genlikli darbelerin açık kalma oranını değiştirerek yükün gördüğü ortalama gücü kontrol eden bir yöntemdir. STM32’de PWM üretimi timer modülü ile yapılır. Duty cycle motor hızını, LED parlaklığını ve benzeri çıkışları ayarlamak için kullanılır.

PWM’in motor sürücü ile birlikte kullanıldığı asıl uygulamayı görmek için L293D ile DC motor hız ve yön kontrolü yazısına geçebilirsin.

Yazar notu

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir