Timer ile PWM sinyali nasıl üretilir? Frekans ve duty cycle nasıl hesaplanır?

Cevap

Bir donanım timer'ı, giriş saatini prescaler ile böler ve bir sayacı auto-reload (ARR / period) değerine kadar sayar. PWM modunda çıkış pini, sayaç compare (CCR) değerinin altındayken HIGH, üstündeyken LOW olur.

Formüller

f_timer = f_clk / (PSC + 1)
f_pwm   = f_clk / ((PSC + 1) * (ARR + 1))
duty    = CCR / (ARR + 1)

Örnek

72 MHz saat, 20 kHz PWM (motor sürücü için duyulabilir aralığın üstü):

  • PSC = 0 → timer 72 MHz sayar
  • ARR = 72 000 000 / 20 000 − 1 = 3599
  • %25 duty: CCR = 3600 * 0.25 = 900
  • Çözünürlük: 3600 adım, yaklaşık 11.8 bit

Burada frekans ile çözünürlük arasındaki dengeye dikkat: PWM frekansı arttıkça ARR küçülür, duty adımları kabalaşır.

/* STM32 register seviyesi, TIM2 CH1 */
TIM2->PSC   = 0;
TIM2->ARR   = 3599;
TIM2->CCR1  = 900;
TIM2->CCMR1 = (6U << TIM_CCMR1_OC1M_Pos) | TIM_CCMR1_OC1PE;  /* PWM mode 1 + preload */
TIM2->CCER |= TIM_CCER_CC1E;
TIM2->CR1  |= TIM_CR1_ARPE | TIM_CR1_CEN;

Preload açıkken yeni CCR değeri periyot sonunda geçerli olur; böylece duty değişiminde glitch oluşmaz.

Timer'ın diğer kullanımları

  • Periyodik interrupt: Kontrol döngüsü, RTOS tick.
  • Input capture: Harici sinyalin frekans/darbe genişliğini ölçme (enkoder, ultrasonik sensör).
  • Output compare: Belirli zamanda pin değiştirme.
  • Center-aligned PWM ve dead-time insertion: H-köprü ve üç fazlı motor sürücülerde üst ve alt transistörün aynı anda iletime geçmesini (shoot-through) önler.
  • ADC tetikleme: Örneklemeyi PWM ile senkronlamak.
  1. Kesme (interrupt) nedir? ISR yazarken nelere dikkat edilir?OrtaMikrodenetleyicilerEmbedded
  2. Watchdog timer nedir, ne işe yarar?KolayMikrodenetleyicilerEmbedded
  3. Bir bootloader nasıl çalışır? Uygulamaya atlama ve güvenli firmware güncellemesi nasıl tasarlanır?ZorMikrodenetleyicilerEmbedded
  4. Mekanik bir butonun debounce işlemi neden gereklidir ve yazılımda nasıl yapılır?KolayMikrodenetleyicilerEmbedded
  5. DMA nedir, ne zaman kullanılır? DMA kullanırken cache coherency ve double buffering gibi konularda nelere dikkat edilmelidir?ZorMikrodenetleyicilerEmbedded
  6. ADC çözünürlüğü, referans voltajı ve örnekleme hızı nedir? ADC okumasında doğruluğu etkileyen faktörler nelerdir?OrtaMikrodenetleyicilerEmbedded

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle