Pulse Width
Modulation (PWM)
SISTEM
MIKROKONTROLER
I Gde Eka Dirgayussa
Pendahuluan
• Salah satu kelebihan AVR ATmega8535 dibandingkan dengan generasi 8051 (misal:
AT89C51/52 atau AT89S51) adalah Timer/Counternya dapat difungsikan sebagai
pembangkit gelombang (wave generator) seperti PWM.
• Karena pulsa dibangkitkan oleh mikrokontroler, maka diperlukan PIN khusus sebagai
output dari pulsa tersebut
• Aplikasi PWM sangat beragam, misalnya: mengatur kecepatan motor DC, mengatur
sudut putar motor servo, mengatur terang-redup lampu, dll.
AT89S5
1 AT89C51 ATmega85
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 35 2
PIN PWM pada mikrokontroler
No. PIN Keterangan
1 OC0 (PIN4/PB.3) PWM dari Timer/Counter0
2 OC1A(PIN19/PD.5) PWM dari Timer/Counter1
3 OC1B(PIN18/PD.4) PWM dari Timer/Counter1
4 OC2 (PIN21/PB.7) PWM dari Timer/Counter2
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 3
Prinsip Kerja PWM
Up Counting
TCNT0
Down Counting
255
OCR0
t
• Misalnya kita gunakan PWM0
• Register TCNT0 mulai mencacah mulai dari 0,1,2 sampai 255 (up-counting),
kemudian mencacah turun dari 255, 254, 253 sampai 0 (down-counting), kemudian
up-counting lagi demikian seterusnya.
• Nilai Register OCR0 akan dibandingkan dengan nilai TCNT0 (dalam hal ini akan ada
kondisi OCR0=TCNT0, maka kondisi ini disebut “match” yang dapat terjadi saat
up-counting) ataupun down-counting.
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 4
Prinsip Kerja PWM (lanjutan)
Up Counting
TCNT0
Down Counting
255
OCR0
t
• Pada saat match inilah nilai logika pin OCR0 akan diubah. Jika semula ‘1’ (high) akan
menjadi ‘0’ (low) demikian juga sebaliknya sehingga terjadi gelombang kotak.
• Dengan mengatur nilai OCR0, maka lebar pulsa (pulse width) dapat kita atur juga.
• Pengaturan PWM dengan CVAVR, kita perlu mengakses register Timer/Counter.
• Misalnya: PWM0 (PWM dari Timer0) melibatkan 2 register yaitu:
1. TCCR0 untuk setting Timer
2. OCR0 untuk nilai PWM
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 5
Konfigurasi PWM
Konfigurasi TCCR0
Ref. Datasheet ATmega8535 hal 82
• Bit ke-7 (FOC0): selalu diisi angka ‘0’ Ketika PWM diaktifkan
• Bit ke-6 (WGM00) dan Bit ke-3 (WGM01) dipakai untuk membentuk gelombang
PWM dengan konfigurasi sbb:
WGM01 WGM00 Mode Operasi
0 0 Normal
0 1 PWM, Phase Correct
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 6
Konfigurasi PWM
Konfigurasi TCCR0 (lanjutan)
Ref. Datasheet ATmega8535 hal 82
• Bit ke-5 (COM01) dan bit ke-4 (COM00): digunakan untuk mengatur bentuk PWM
(inverting atau non-inverting), dengan konfigurasi sbb:
COM01 COM00 Keterangan
0 0 OC0 OFF
0 1 OC0 di-toggling ketika match
1 0 OC0di-clear (0) ketika match
1 1 OC0 di-set (1) ketika match
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 7
Konfigurasi PWM
Konfigurasi TCCR0 (lanjutan)
Ref. Datasheet ATmega8535 hal 82
• Bit ke-2 s/d bit ke-0 untuk menentukan nilai Timer.
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 8
Implementasi
//Tutorial 8: Membuat PWM dari Timer0
#include <mega8535.h>
void main(void)
{
DDRB.3=1;
TCCR0=0b01110001;
OCR0=128;
while(1);
}
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 9
Referensi
1. Agung Setiabudi.2020. Kuliah Sistem Mikrokontroler, Universitas Brawijaya
2. Barret, Steven F, “Atmel AVR Microcontroller Primer: Programming and Interfacing”
Morgan and Claypool, 2008.
3. Gadre, Dhananjay V, “Programming & Customizing The AVR Microcontroller”, Mc-
Graw Hill, 2001
4. Master Micro V.2. 2019. Gampang Belajar Sendiri Mikrokontroler AVR. ARDUTECH
5. Ricardo Guiterrez-Osuna. Wright State University
6. [Link] [Diakses 8 Februari 2021]
09/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 10