Anda di halaman 1dari 10

PWM

Pulse Widht Moodulation

Pengertia PWM
PWM ( Pulse Width Modulation) adalah
bentuk gelombang digital/pulsa yang bisa kita atur
duty cycle-nya (Waktu High : Waktu Total
Gelombang). Untk PWM sendiri bisa dihasilkan
melalui Timerx. Sedangkan untuk chanel (saluran)
PWM tersebut melalui pin Ocx.
Duty cycle = (tH/tTot) x
100%

PWM TIMER/COUNTER1
Timer/Counter1 adalah sebuah timer/counter
yang mempunyai kapasitas cacahan 16-bit
(65535).
Chanel (saluran) PWM Timer/Counter1 adalah
pin OC1x (A,B,C).
Beberapa mode PWM Timer/Counter1, yaitu:
1. Fast PWM Mode
2. Phase Correct PWM Mode
3. Phase and Frequency Correct PWM Mode

1. Fast PWM Mode


Dalam mode ini sifat cacahan TCNT1 mencacah
naik (counting-up) dari bottom (0x0000) hingga
mencapai TOP atau Resolusi Max. yang telah
ditentukan (8bit, 9bit, 10bit, ICR1, OCR1A)
kemudian mulai dari bottom lagi dan begitu
seterusnya.
Frekuensi Fast PWM dapat dihitung dengan
menggunakan persamaan berikut:
Fpwm = Fclk / ( N. (1+TOP) )
Fpwm : Frekuensi PWM yang diinginkan
Fclk : Frekuensi clock/Xtal (Hz)
N : Prescaler (1,8,64,256,1024)
TOP : Resolusi Max.

2. Phase Correct PWM Mode


Dalam mode ini sifat cacahan TCNT1 mencacah
naik (counting-up) dari bottom (0x0000) hingga
mencapai TOP atau Resolusi Max. yang telah
ditentukan (8bit, 9bit, 10bit, ICR1, OCR1A)
kemudian counting-down hingga bottom dan
begitu seterusya.
Frekuensi Phase Correct PWM dapat dihitung
dengan menggunakan persamaan berikut:
Fpwm = Fclk / ( 2N. (1+TOP) )
Fpwm : Frekuensi PWM yang diinginkan
Fclk : Frekuensi clock/Xtal (Hz)
N : Prescaler (1,8,64,256,1024)
TOP : Resolusi Max.

2. Phase and Frequency Correct


PWM Mode
Mode ini sama dengan mode phase correct
pwm, hanya berbeda pada waktu peng-update-tan
register OCR1x, dimana mode phase and frequency
correct PWM register OCR1x dibuffer terlebih
dahulu sehingga berakibat ada pulsa awal pengupdate-tan menjadi simetrik.

Control Motor Servo dengan Phase


and Frequency Correct PWM Mode
Yang perlu diperhatikan adalah waktu total
pulsa untuk servo (dalam hal ini adalah 20000us =
20ms = 0.002s).
Langkah berikutnya hitung Nilai TOP berdasarkan
waktu total pulsa.
Fpwm=1/0.02=50 Hz
Misal : Fclk=11059200 dan N=8
Fpwm = Fclk / ( 2N. (1+TOP) )
50=11059200/(2x8x(1+TOP))
TOP=(11059200-800)/800
= 13823 => 0x35FF

Anda mungkin juga menyukai