pwm based mikrokontroller atmega128

28
PRAKTIKUM I BASIC PWM BASED ATMEGA128 I. TUJUAN 1. Mahasiswa mengerti cara membuat program C pada Code Vision AVR untuk membuat gelombang PWM. 2. Mahasiswa mengerti Mode operasi Timer yang digunakan untuk gelombang PWM. 3. Mahasiswa mampu mengatur duty cycle gelombang PWM pada ATMEGA128. 4. Mahasiswa mengerti perbedaan tiap Mode operasi pada Timer. II. DASAR TEORI ATMEGA128 Merupakan salah satu varian dari mikrokontroler AVR 8-bit. Beberapa fitur yang dimiliki adalah memiliki beberapa memory yang bersifat non-volatile, yaitu 128 Kbytes of In-System Self-Programmable Flash program memory (128 Kbytes memory flash untuk pemrograman), 4 Kbytes memori EEPROM, 4 Kbytes memori internal SRAM, write/erase cycles : 10.000 flash/ 100.000 EEPROM (program dalam mikrokontroler dapat diisi dan dihapus berulang kali sampai 10.000 kali untuk flash memori atau 100.000 kali untuk penyimpanan program/data di EEPROM). Selain memori, fitur yang dimiliki oleh mikrokontroler atmega128 ini adalah pada perangkat peripheral interface-nya, yaitu memiliki 2 buah 8-bit timer / counter, 2 buah expand 16-bit timer / counter, RTC (Real Time Counter) dengan oscillator yang terpisah, 2 buah 8-bit chanel PWM, 6 PWM chanel dengan resolusi pemrograman dari 2 sampai 16 bits, output compare modulator, 8-chanel 10-bit ADC, 2 buah TWI (Two Wire Interface), 2 buah serial USARTs, master / slave SPI serial interface, Programmable Watchdog Timer dengan On-chip Oscillator, On-chip analog comparator, dan memiliki 53 programmable I/O. Sedangkan untuk pengoperasiannya sendiri, Miktrokontroler ATmega128 dapat dioperasikan pada catuan 4.5 5.5 V untuk ATmega128 dengan clock speed 0 16 MHz. Gambar 1. Pinout ATMEGA128 1

Upload: bramasto-adi-nugroho

Post on 07-Dec-2015

76 views

Category:

Documents


3 download

DESCRIPTION

Laporan Resmi 1 Praktikum Mikrokontroller

TRANSCRIPT

Page 1: PWM based Mikrokontroller ATMEGA128

PRAKTIKUM I

BASIC PWM BASED ATMEGA128

I. TUJUAN

1. Mahasiswa mengerti cara membuat program C pada Code Vision AVR untuk

membuat gelombang PWM.

2. Mahasiswa mengerti Mode operasi Timer yang digunakan untuk gelombang PWM.

3. Mahasiswa mampu mengatur duty cycle gelombang PWM pada ATMEGA128.

4. Mahasiswa mengerti perbedaan tiap Mode operasi pada Timer.

II. DASAR TEORI

ATMEGA128

Merupakan salah satu varian dari mikrokontroler AVR 8-bit. Beberapa fitur

yang dimiliki adalah memiliki beberapa memory yang bersifat non-volatile, yaitu

128 Kbytes of In-System Self-Programmable Flash program memory (128 Kbytes

memory flash untuk pemrograman), 4 Kbytes memori EEPROM, 4 Kbytes memori

internal SRAM, write/erase cycles : 10.000 flash/ 100.000 EEPROM (program dalam

mikrokontroler dapat diisi dan dihapus berulang kali sampai 10.000 kali untuk flash

memori atau 100.000 kali untuk penyimpanan program/data di EEPROM).

Selain memori, fitur yang dimiliki oleh mikrokontroler atmega128 ini adalah

pada perangkat peripheral interface-nya, yaitu memiliki 2 buah 8-bit timer / counter,

2 buah expand 16-bit timer / counter, RTC (Real Time Counter) dengan oscillator

yang terpisah, 2 buah 8-bit chanel PWM, 6 PWM chanel dengan resolusi

pemrograman dari 2 sampai 16 bits, output compare modulator, 8-chanel 10-bit

ADC, 2 buah TWI (Two Wire Interface), 2 buah serial USARTs, master / slave SPI

serial interface, Programmable Watchdog Timer dengan On-chip Oscillator, On-chip

analog comparator, dan memiliki 53 programmable I/O. Sedangkan untuk

pengoperasiannya sendiri, Miktrokontroler ATmega128 dapat dioperasikan pada

catuan 4.5 – 5.5 V untuk ATmega128 dengan clock speed 0 – 16 MHz.

Gambar 1. Pinout ATMEGA128

1

Page 2: PWM based Mikrokontroller ATMEGA128

TIMER dan COUNTER

Timer dan counter merupakan fitur yang telah tertanam di micocontroller

AVR yang memiliki fungsi terhadap waktu. Fungsi pewaktu yang dimaksud disini

adalah penentuan kapan program tersebut dijalankan, tidak hanya itu saja fungsi

timer yang lainnya adalah PWM, ADC, dan Oscillator. Prinsip kerja timer dengan

cara membagi frekuensi (prescaler) pada clock yang terdapat pada mikrokontroler

sehingga timer dapat berjalan sesuai dengan frekuensi yang di kehendaki. Timer

merupakan fungsi waktu yang sumber clocknya berasal dari clock internal.

Sedangkan counter merupakan fungsi perhitungan yang sumber clocknya berasal

dari external mikrokontroler. Pada mikrokontroler ATMEGA 128 memiliki 4 buah

timer yaitu timer 0 (8bit), timer 1 (16bit), timer 2 (8bit), timer 3 (16bit).

o Timer 0 (8 bit) Timer 0 pada ATMEGA128 memiliki fitur utama sebagai berikut :

• Single Channel Counter

• Clear Timer on Compare Match (Auto Reload)

• Glitch-free, Phase Correct Pulse Width Modulator (PWM)

• Frequency Generator

• 10-bit Clock Prescaler

• Overflow and Compare Match Interrupt Sources (TOV0 and OCF0)

• Allows Clocking from External 32kHz Watch Crystal Independent of the

I/O Clock

Gambar 2. Blok Diagram Timer/Counter 8 bit

Register yang terdapat pada Timer/Counter 0 :

TCCR0

Gambar 3. Timer/Counter Control Register 0

2

Page 3: PWM based Mikrokontroller ATMEGA128

Bit 7 – FOC0 : Force Ouput Compare Bit FOC0 hanya aktif ketika bit WGM berada pada mode non-PWM.

Namun untuk memastikan kompatibilitas dengan perangkat yang akan

datang, bit ini harus di set pada nilai 0 ketika TCCR0 beroperasi pada mode

PWM. Ketika bit FOC0 diberi logika 1, akan dipaksa membandingkan unit

pembangkit gelombang. Keluaran OC0 berubah sesuai dengan setting pada

bit COM01:0. Dengan catatan bit FOC0 diimplementasikan sebagai strobe.

Oleh karena itu nilai bit COM01:0 saat ini merupakan efek dari

pembandingan secara paksa. Strobe FOC0 tidak akan menghasilkan interrupt

apapun, ataupun tidak akan menghapus timer pada mode CTC yang

menggunakan TOP OCRO. Bit FOC0 selalu dibaca nol.

Bit 6, 3 – WGM01:0: Waveform Generation Mode

Bit ini mengontrol perhitungan urutan pada counter, sumber nilai

counter maksimal, dan tipe gelombang apa yang digunakan. Mode operasi

yang didukung oleh Timer/Counter adalah : Normal Mode, Clear Timer On

Compare Match (CTC) Mode, dan dua tipe dari PWM.

Tabel 1. deskripsi bit tiap mode.

Bit 5:4 – COM01:0: Compare Match Output Mode

Bit ini mengontrol perilaku dari pin Output Compare (OC0). Ketika

OC0 terhubung dengan pin, maka fungsi dari bit COM01:0 didasarkan setting

bit pada WGM01:0. Tabel dibawah ini menunjukkan fungsi bit COM01:0

ketika bit WGM01:0 di set pada mode Normal maupun CTC (non-PWM).

Tabel 2. Compare Ouput Mode, non-PWM Mode

Tabel 3. Compare Ouput Mode, Fast PWM Mode

Tabel 4. Compare Ouput Mode, Phase Correct PWM Mode

3

Page 4: PWM based Mikrokontroller ATMEGA128

Bit 2:0 – CS02:0: Clock Select Bit ini memiliki tugas sebagai pemili (prescaler) atau mendefinisikan

pulsa atau clock yang akan masuk ke dalam Timer/Counter 0.

Tabel 5. Pemilih / Prescaler.

Timer/Counter Register (TCNT0)

Gambar 4. Timer/Counter Register 0

Register ini bertugas untuk menghitung pulsa yang masuk ke

dalam timer/counter. Kapasitas register ini sebesar 8-bit atau 256

hitungan. Setelah mencapai hitungan maksimal maka akan kembali ke nol

(0) / overflow.

Output Compare Registers (OCR0)

Gambar 5. Ouput Compare Register 0

Register ini bertugas sebagai register pembanding yang bisa

ditentukan besarnya sesuai dengan kebutuhan.

o Timer 1 dan Timer 3 (16 bit) Timer 1 dan 3 pada ATMEGA128 memiliki fitur utama sebagai berikut :

• True 16-bit Design (i.e.,Allows 16-bit PWM)

• Three Independent Output Compare Units

• Double Buffered Output Compare Registers

• One Input Capture Unit

• Input Capture Noise Canceler

• Clear Timer on Compare Match (Auto Reload)

• Glitch-free, Phase Correct Pulse width Modulator (PWM)

• Variable PWM Period

• Frequency Generator

• External Event Counter

• Ten Independent Interrupt Sources (TOV1, OCF1A, OCF1B, OCF1C,

ICF1, TOV3, OCF3A, OCF3B,OCF3C, and ICF3)

4

Page 5: PWM based Mikrokontroller ATMEGA128

Gambar 6. Blok Diagram Timer 16 Bit

Register yang terdapat pada Timer/Counter 1 dan 3 :

Timer/Counter 1 Control Register A (TCCR1A)

Timer/Counter 3 Control Register A (TCCR3A)

Tabel 6. Compare Ouput Mode, Non-PWM

5

Page 6: PWM based Mikrokontroller ATMEGA128

Tabel 7. Compare Output Mode, Fast PWM

Tabel 8. Compare Output Mode, Phase Correct and Phase and Frequency

Correct mode.

Timer/Counter 1 Control Register B (TCCR1B)

Timer/Counter 3 Control Register B (TCCR3B)

Bit 7 – ICNCn: Input Capture Noise Canceler

Memberi nilai 1 pada bit ini mengaktifkan Input Capture Noise Canceler.

Ketika “Noise Canceler” diaktifkan, masukan ICPn akan di filter.

Bit 6 – ICESn : Input Capture Edge Select

Bit ini memilih tepi mana pada Input Capture Pin (ICPn) yang digunakan

untuk menyulut pencuplikan. Ketika bit ICESn berisi 0, tepi menurun

digunakan sebagai trigger dan ketika bit ini berisi 1, tepi naik akan mentrigger

pencuplikan.

Bit 5 – Reserved Bit

Bit ini disediakan untuk penggunakan pada masa yang akan datang. Untuk

memastikan kompatibilitas dengan perangkat yang akan datang, bit ini harus

diisi 0 ketika bit TCCRnB digunakan.

Bit 4:3 – WGMn3:2: Waveform Generation Mode

6

Page 7: PWM based Mikrokontroller ATMEGA128

Melihat deskripsi dari register TCCRnA

Bit 2:0 – CSn2:0: Clock Speed

Memilih clock yang akan digunakan pada Timer/Counter

Tabel 9. Deskripsi bit untuk clock yang digunakan

Timer/Counter 1 Control Register C (TCCR1C)

Timer/Counter 3 Control Register C (TCCR3C)

Timer/Counter 1 TCNT1H – TCNT1L

Timer/Counter 3 TCNT3H – TCNT3L

Output Compare Register 1 A – OCR1AH dan OCR1AL

Output Compare Register 1 B – OCR1BH dan OCR1BL

Output Compare Register 1 C – OCR1CH dan OCR1CL

Output Compare Register 3 A – OCR3AH dan OCR3AL

7

Page 8: PWM based Mikrokontroller ATMEGA128

Output Compare Register 3 B – OCR3BH dan OCR3BL

Output Compare Register 3 C – OCR3CH dan OCR3CL

Input Capture Register 1 – ICR1H dan ICR1L

Input Capture Register 3 – ICR3H dan ICR3L

Timer/Counter Interrupt Mask Register – TIMSK

Extended Timer/Counter Interrupt Mask Register – ETIMSK

Timer/Counter 1, Interrupt Flag Register - TIFR

Extended Timer/Counter 1, Interrupt Flag Register - ETIFR

Mode Operasi Timer ATMEGA 128

Ada 3 mode operasi yang digunakan untuk menjalankan Timer/Counter dan pin

ouput compare dengan mengkombinasikan WGM (wave generation mode) dan COM

compare output mode bit. COM tidak mempengaruhi urutan counting selama WGM

bit bekerja. Ketiga mode tersebut adalah :

1. Normal Mode Modus yang paling sederhana dari operasi adalah mode normal (WGM01: 0 =

8

Page 9: PWM based Mikrokontroller ATMEGA128

0). Dalam mode ini penghitungan arah selalu up (incrementing), dan tidak ada

counter yang jelas dilakukan. Counter hanya overruns ketika melewati

maksimum nilai 8-bit (TOP = 0xFF) dan kemudian restart dari bawah (0x00).

Dalam operasi normal Timer / counter meluap bendera (TOV0) akan ditetapkan

dalam yang sama Timer jam siklus sebagai TCNT0 menjadi nol. Bendera TOV0

dalam hal ini berperilaku seperti kesembilan sebuah bit, kecuali bahwa itu hanya

diatur, tidak dibersihkan. Namun, dikombinasikan dengan overflow timer

interrupt yang secara otomatis membersihkan bendera TOV0, resolusi waktu

dapat ditingkatkan dengan software. di sana ada kasus khusus yang perlu

diperhatikan dalam mode normal, nilai baru counter dapat ditulis kapan saja.

Output membandingkan Unit dapat digunakan untuk menghasilkan interupsi

di beberapa waktu tertentu. Menggunakan output dibandingkan dengan

menghasilkan bentuk gelombang dalam mode normal tidak dianjurkan, karena

ini akan menempati terlalu banyak waktu CPU.

2. Clear Timer on Compare Match (CTC) Mode Di Clear Timer on Compare atau mode CTC (WGM01: 0 = 2), OCR0 Register

digunakan untuk memanipulasi resolusi counter. Dalam mode CTC counter

dibersihkan ke nol ketika nilai counter (TCNT0) sesuai dengan OCR0. The

OCR0 mendefinisikan nilai atas untuk counter, maka juga yang resolusi.

Mode ini memungkinkan kontrol yang lebih besar dari frekuensi output

pertandingan membandingkan. Hal ini juga menyederhanakan pengoperasian

menghitung peristiwa eksternal. Diagram waktu untuk mode CTC ditunjukkan

pada Gambar 2. Nilai counter (TCNT0) meningkatkan sampai

membandingkan pertandingan terjadi antara TCNT0 dan OCR0, dan kemudian

counter (TCNT0) dibersihkan.

Untuk menghasilkan output gelombang dalam mode CTC, output OC0 dapat diatur

menjadi logika toogle level pada setiap perbandingan dengan menetapkan mode bit

output compare dengan mode toogle (COM01: 0 = 1). Nilai OC0 tidak akan terlihat

pada port pin kecuali arah data untuk pin diatur ke output.

Dengan nilai variable N dapat direpresentasikan sebagai factor prescale

(1,8,32,64,128,256, atau 1024)

3. Fast PWM Mode Dalam mode fast PWM , counter bertambah sampai nilai counter sesuai dengan

nilai MAX. Counter kemudian dibersihkan di mengikuti siklus clock waktu.

Diagram waktu untuk cepat Modus PWM ditunjukkan pada nilai Gambar 3.

TCNT0 dalam diagram waktu ditampilkan sebagai histogram untuk

menggambarkan operasi single-slope. Diagram termasuk non-inverted dan

inverted Output PWM. tanda kecil garis horizontal di slope TCNT0 mewakili

membandingkan antara OCR0 dan TCNT0.

9

Page 10: PWM based Mikrokontroller ATMEGA128

Frekuensi PWM untuk output dapat dihitung dengan mengikuti persamaan

berikut :

Dengan variabel N mewakili factor prescale (1, 8, 32, 64, 128, 256 atau 1024)

PULSE WIDTH MODULATION (PWM) Pulse Width Modulation (PWM) secara umum adalah sebuah cara memanipulasi lebar sinyal yang dinyatakan dengan pulsa dalam suatu perioda, untuk mendapatkan tegangan rata-rata yang berbeda. Beberapa contoh aplikasi PWM adalah temodulasian data untuk telekomunikasi, pengontrolan daya atau tegangan yang masuk ke beban, regulator tegangan, audio effect dan penguatan, serta aplikasi- aplikasi lainnya. Aplikasi PWM berbasis mikrokontroler biasanya berupa pengendalian kecepatan motor DC, pengendalian motor servo, pengaturan nyala terang LED dan lain sebagainya.

Sinyal PWM pada umumnya memiliki amplitudo dan frekuensi dasar yang tetap,

namun memiliki lebar pulsa yang bervariasi. Lebar Pulsa PWM berbanding lurus

dengan amplitudo sinyal asli yang belum termodulasi. Artinya, Sinyal PWM

memiliki frekuensi gelombang yang tetap namun duty cycle bervariasi (antara 0%

hingga 100%).

10

Page 11: PWM based Mikrokontroller ATMEGA128

Pulse Width Modulation (PWM) merupakan salah satu teknik untuk mendapatkan signal analog dari sebuah piranti digital. Sebenarnya Sinyal PWM dapat dibangkitkan dengan banyak cara, dapat menggunakan metode analog dengan menggunakan rankaian op-amp atau dengan menggunakan metode digital. Dengan metode analog setiap perubahan PWM-nya sangat halus, sedangkan menggunakan metode digital setiap perubahan PWM dipengaruhi oleh resolusi dari PWM itu sendiri. Resolusi adalah jumlah variasi perubahan nilai dalam PWM tersebut. Misalkan suatu PWM memiliki resolusi 8 bit berarti PWM ini memiliki variasi perubahan nilai sebanyak 28 = 256 variasi mulai dari 0 – 255 perubahan nilai yang mewakili duty cycle 0 – 100% dari keluaran PWM tersebut.

Dengan cara mengatur lebar pulsa “on” dan “off” dalam satu perioda gelombang melalui pemberian besar sinyal referensi output dari suatu PWM akan didapat duty cycle yang diinginkan. Duty cycle 100% berarti sinyal tegangan pengatur motor dilewatkan seluruhnya. Jika tegangan catu 100V, maka motor akan mendapat tegangan 100V. pada duty cycle 50%, tegangan pada motor hanya akan diberikan 50% dari total tegangan yang ada, begitu seterusnya.

Dengan menghitung duty cycle yang diberikan, akan didapat tegangan output yang dihasilkan. Sesuai dengan rumus yang telah dijelaskan pada gambar. Average voltage merupakan tegangan output pada motor yang dikontrol oleh sinyal PWM. a adalah nilai duty cycle saat kondisi sinyal “on”. b adalah nilai duty cycle saat kondisi sinyal “off”. Vfull adalah tegangan maksimum pada motor. Dengan menggunakan rumus diatas, maka akan didapatkan tegangan output sesuai dengan sinyal kontrol PWM yang dibangkitkan.

III. ALAT dan BAHAN

PC / Laptop ( Telah terinstall CVAVR ) Downloader Osiloskop Modul ATMEGA 128 Voltmeter DC

11

Page 12: PWM based Mikrokontroller ATMEGA128

IV. RANGKAIAN PERCOBAAN

V. LANGKAH PERCOBAAN

1. Buka software Code Vision AVR. Maka akan muncul jendela dari CVAVR.

2. Untuk membuat project baru :

Klik File New Project. Maka akan muncul jendela konfirmasi. Untuk

menggunakan Wizard atau Template dari CVAVR, pilih “Yes”.

Langkah selanjutnya adalah memilih tipe chip yang akan digunakan

12

Page 13: PWM based Mikrokontroller ATMEGA128

Setelah memilih tipe dari chip yang digunakan, maka akan muncul jendela

wizard dari CVAVR. Wizard disini bertujuan untuk memudahkan user

mengaktifkan dan mengatur fitur yang akan digunakan.

Pertama-tama masuk ke tab “Chip”. Pilih varian dari chip yang digunakan.

Dalam praktikum kali ini yaitu ‘ATMEGA128’. Atur juga frekuensi dari kristal

eksternal yang digunakan oleh chip tersebut

Untuk mengaktifkan PWM, masuk ke tab “Timer”. Pilih Timer yang akan

digunakan. Misal ‘Timer 0’.

Ada beberapa hal yang perlu diatur. Yang pertama adalah “Clock Source”, yaitu

sumber clock dati Timer/Counter yang digunakan. Karena sumber clock yang

digunakan bersumber dari clock sistem, maka kita pilih ‘System Clock’

13

Page 14: PWM based Mikrokontroller ATMEGA128

Hal selanjutnya yang perlu kita atur ialah Clock Value. Clock Value sangat

berhubungan dengan prescaller yang digunakan

Clock Value = System Clock / Prescaller

Jika prescaller yang digunakan ialah 1 maka nilai Clock Value 8 MHz atau 8000

KHz.

Setelah mengatur Clock Value, Selanjutnya ialah mengatur Mode Operasi dari

Timer/Counter yang digunakan. Misal kita gunakan mode operasi “Fast PWM”.

Kemudian kita atur bagaimana output gelombang yang dikeluarkan oleh PWM.

Pada mode Fast PWM terdapat 2 pilihan yaitu membalik dan tak membalik. Kita

pilih yang tidak membalik.

Mengaktifkan interrupt dari timer

Inisialisasi nilai start dari timer

Proses pembandingan terjadi pada nilai ini

14

Page 15: PWM based Mikrokontroller ATMEGA128

3. Setelah proses konfigurasi selesai, langkah selanjutnya adalah menyimpan project

tersebut dalam beberapa ekstensi file. Klik “File””Save”. Beri nama yang sama

kepada 3 ekstensi file tersebut. (.cwp , .c , .prj ) . Hasil konfigurasi akan muncul

seperti gambar dibawah ini.

4. Untuk mengatur Duty Cycle PWM keluaran mikro, maka kita atur nilai dari OCRn.

Jika yang digunakan Timer 0, maka kita atur nilai dari OCR0. Tuliskan pada while

seperti contoh dibawah ini.

5. Agar program dapat di download ke mikrokontroller ATMEGA128, pertama-tama

atur tipe chip programmer (downloader) yang akan digunakan. Klik

“Setting””Programmer” . Pilih chip programmer sesuai dengan downloder yang

tersambung. Jika sudah klik “OK”.

6. Kemudia klik “Project””Configure”. Maka akan muncul jendela konfigurasi

dari project yang sedang kita buat.

15

Page 16: PWM based Mikrokontroller ATMEGA128

7. Pilih tab ‘After Build’. Pada ‘Action’ pilih “Program the Chip”. Hilangkan

centang pada ‘JTAGEN=0’ kemudian ‘OK’.

8. Compile program. Perbaiki program apabila terdapat error. Jika tidak ada, Build

program.

9. Amati bentuk gelombang PWM keluaran dari mikrokontroller, kemudian ukur

tegangan keluaran dengan Multimeter Digital dan catat pada tabel.

10. Variasikan nilai OCR sehingga didapat beberapa data.

11. Lakukan semua prosedur dengan Mode CTC PWM dan Fast PWM dengan

mengubah prescaller dan Timer yang digunakan sesuai tabel.

16

Page 17: PWM based Mikrokontroller ATMEGA128

VI. DATA PERCOBAAN

Mode CTC PWM

Timer Prescaler Nilai

OCR FPWM Teori

FPWM

Pengukuran Duty Cycle Tegangan PWM

(Hz) (Hz) (%) (V)

Timer 0

1

16 235.294,12 235.300,00 50,02 2,519

32 121.212,12 121.300,00 50,06 2,520

64 61.538,46 61.570,00 50,07 2,520

92 43.010,75 43.020,00 50,03 2,518

128 31.007,75 31.020,00 50,06 2,518

8

16 29.411,76 29.480,00 50,12 2,518

32 15.151,52 15.150,00 50 2,514

64 7.692,31 7.703,00 50,15 2,513

92 5.376,34 5.376,00 50 2,513

128 3.875,97 3.876,00 50 2,514

Timer 1

1

64 61.538,46 61.570,00 50,07 2,520

128 31.007,75 31.020,00 50,06 2,518

192 20.725,39 20.730,00 50,02 2,514

256 15.564,20 15.560,00 50,12 2,514

512 7.797,27 7.800,00 50,01 2,513

8

64 7.692,31 7.703,00 50,15 2,513

128 3.875,97 3.876,00 50 2,514

192 2.590,67 2.591,00 50,05 2,512

256 1.945,53 1.949,00 50,09 2,512

512 974,66 974,70 50 2,512

17

Page 18: PWM based Mikrokontroller ATMEGA128

Mode FAST PWM

Timer Prescaler Nilai OCR

FPWM Teori Duty Cycle

Nilai OCR Kalibrasi Tegangan PWM (Hz) (%)

Teori Pengukuran Teori Pengukuran

Timer 0

1

16 31.250,00 31.210,00 6,25 6,39 15 0,317

32 31.250,00 31.210,00 12,5 12,76 31 0,609

64 31.250,00 31.210,00 25 25,33 63 1,263

128 31.250,00 31.210,00 50 50,46 127 2,534

192 31.250,00 31.210,00 75 75,34 191 3,75

8

16 3.906,25 3.906,00 6,25 6,71 15 0,317

32 3.906,25 3.906,00 12,5 12,93 31 0,629

64 3.906,25 3.906,00 25 23,31 63 1,264

128 3.906,25 3.906,00 50 50,47 127 2,536

192 3.906,25 3.906,00 75 75,35 191 3,76

Timer 1

1

64 7.812,50 7.813,00 6,25 6,40 63 0,302

128 7.812,50 7.813,00 12,5 12,66 127 0,615

192 7.812,50 7.813,00 18,75 18,88 191 0,926

256 7.812,50 7.813,00 25 25,12 255 1,242

512 7.812,50 7.813,00 50 50,16 511 2,503

8

64 976,56 976,60 6,25 6,35 63 0,300

128 976,56 976,60 12,5 12,62 127 0,610

192 976,56 976,60 18,75 18,85 191 0,926

256 976,56 976,60 25 25,17 255 1,242

512 976,56 976,60 50 50,10 511 2,502

18

Page 19: PWM based Mikrokontroller ATMEGA128

VII. KODE PROGRAM

Mode Fast PWM, Prescaller = 1

#include <mega128.h>

void main(void)

{

DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2)

| (0<<DDB1) | (0<<DDB0);

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) |

(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

ASSR=0<<AS0;

TCCR0=(1<<WGM00) | (1<<COM01) | (0<<COM00) | (1<<WGM01) | (0<<CS02) |

(0<<CS01) | (1<<CS00);

TCNT0=0x00;

OCR0=0x00;

TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) |

(0<<COM1C1) | (0<<COM1C0) | (1<<WGM11) | (1<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) |

(0<<CS11) | (1<<CS10);

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

OCR1CH=0x00;

OCR1CL=0x00;

while (1)

{

OCR0 = 16;

//OCR0 = 32;

//OCR0 = 64;

//OCR0 = 128;

//OCR0 = 192;

OCR1A = 64;

//OCR1A = 128;

//OCR1A = 192;

//OCR1A = 256;

//OCR1A = 512;

}

}

19

Page 20: PWM based Mikrokontroller ATMEGA128

Mode Fast PWM, Prescaller = 8

#include <mega128.h>

void main(void)

{

DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2)

| (0<<DDB1) | (0<<DDB0);

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) |

(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

ASSR=0<<AS0;

TCCR0=(1<<WGM00) | (1<<COM01) | (0<<COM00) | (1<<WGM01) | (0<<CS02) |

(1<<CS01) | (0<<CS00);

TCNT0=0x00;

OCR0=0x00;

TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) |

(0<<COM1C1) | (0<<COM1C0) | (1<<WGM11) | (1<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) |

(1<<CS11) | (0<<CS10);

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

OCR1CH=0x00;

OCR1CL=0x00;

while (1)

{

OCR0 = 16;

//OCR0 = 32;

//OCR0 = 64;

//OCR0 = 128;

//OCR0 = 192;

OCR1A = 64;

//OCR1A = 128;

//OCR1A = 192;

//OCR1A = 256;

//OCR1A = 512;

}

}

20

Page 21: PWM based Mikrokontroller ATMEGA128

Mode CTC PWM, Prescaller = 1

#include <mega128.h>

void main(void)

{

DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) |

(0<<DDB1) | (0<<DDB0);

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) |

(0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

ASSR=0<<AS0;

TCCR0=(0<<WGM00) | (0<<COM01) | (1<<COM00) | (1<<WGM01) | (0<<CS02) |

(0<<CS01) | (1<<CS00);

TCNT0=0x00;

OCR0=0x00;

TCCR1A=(0<<COM1A1) | (1<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) |

(0<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (0<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) |

(0<<CS11) | (1<<CS10);

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

OCR1CH=0x00;

OCR1CL=0x00;

while (1)

{

OCR0 = 16;

//OCR0 = 32;

//OCR0 = 64;

//OCR0 = 128;

//OCR0 = 192;

OCR1A = 64;

//OCR1A = 128;

//OCR1A = 192;

//OCR1A = 256;

//OCR1A = 512;

}

}

21

Page 22: PWM based Mikrokontroller ATMEGA128

Mode CTC PWM, Prescaller = 8

#include <mega128.h>

void main(void)

{

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) |

(0<<DDA1) | (0<<DDA0);

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) |

(0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) |

(0<<DDB1) | (0<<DDB0);

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) |

(0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

ASSR=0<<AS0;

TCCR0=(0<<WGM00) | (0<<COM01) | (1<<COM00) | (1<<WGM01) | (0<<CS02) |

(1<<CS01) | (0<<CS00);

TCNT0=0x00;

OCR0=0x00;

TCCR1A=(0<<COM1A1) | (1<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) |

(0<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (0<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) |

(1<<CS11) | (0<<CS10);

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

OCR1CH=0x00;

OCR1CL=0x00;

while (1)

{

OCR0 = 16;

//OCR0 = 32;

//OCR0 = 64;

//OCR0 = 128;

//OCR0 = 192;

OCR1A = 64;

//OCR1A = 128;

//OCR1A = 192;

//OCR1A = 256;

//OCR1A = 512

}

}

22

Page 23: PWM based Mikrokontroller ATMEGA128

VIII. ANALISA

PWM dapat dibangkitkan oleh mikrokontroller. Salah satunya oleh Mikrokontroller

ATMEGA 128 dengan mengaktifkan Timer/Counter. Pada ATMEGA128 terdapat 4

Timer/Counter, yaitu :

Timer/Counter 0 (8 bit)

Timer/Counter 1 (16 bit)

Timer/Counter 2 (8 bit)

Timer/Counter 3 (16 bit)

Mode Operasi yang dapat digunakan pada masing-masing timer adalah :

Normal Mode

Fast PWM Mode

CTC Mode

Phase Correct PWM Mode

Masing-masing mode operasi memiliki karakteristik yang berbeda. Pada praktikum ini

yang diamati adalah Mode “Fast PWM” dan “CTC”.

Perbedaan pertama terletak pada isi atau nilai register TCCR0 apabila menggunakan

Timer/Counter 0, sedangkan ketika menggunakan Timer/Counter 1 perbedaannya

terletak pada register TCCR1A dan TCCR1B.

Pada Timer/Counter 0

Fast PWM Mode TCCR0=(1<<WGM00) | (1<<COM01) | (0<<COM00) | (1<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00);

CTC Mode TCCR0=(0<<WGM00) | (0<<COM01) | (1<<COM00) | (1<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00);

Register TCCR0

Bit Deskripsi Mode Operasi Timer

Jika menggunakan Mode Fast PWM, nilai Bit WGM01 = 1

dan WGM00 = 1.

Jika menggunakan Mode CTC, nilai Bit WGM01 = 1 dan

WGM00 = 0.

23

Page 24: PWM based Mikrokontroller ATMEGA128

Pada Timer/Counter 1

Fast PWM Mode

TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<COM1C1) | (0<<COM1C0) | (1<<WGM11) | (1<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);

CTC Mode

TCCR1A=(0<<COM1A1) | (1<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (0<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);

Pada Mode Fast PWM, Nilai Bit WGM12,

WGM11, dan WGM13 adalah “1”.

Pada Mode CTC, Nilai Bit WGM12 = 1,

WGM11 = 0, dan WGM13 adalah “0”.

24

Page 25: PWM based Mikrokontroller ATMEGA128

Perbedaan kedua,

Mode CTC PWM (sampel data hanya pada Timer 0)

Timer Prescaler Nilai

OCR FPWM Teori

FPWM

Pengukuran Duty Cycle Tegangan PWM

(Hz) (Hz) (%) (V)

Timer 0

1

16 235.294,12 235.300,00 50,02 2,519

32 121.212,12 121.300,00 50,06 2,520

64 61.538,46 61.570,00 50,07 2,520

92 43.010,75 43.020,00 50,03 2,518

128 31.007,75 31.020,00 50,06 2,518

8

16 29.411,76 29.480,00 50,12 2,518

32 15.151,52 15.150,00 50 2,514

64 7.692,31 7.703,00 50,15 2,513

92 5.376,34 5.376,00 50 2,513

128 3.875,97 3.876,00 50 2,514

Pada Mode ini, apabila nilai OCR

semakin besar, maka “Frekuensi PWM”

yang dihasilkan akan semakin kecil

Sementara itu Duty Cycle yang dihasilkan

konstan berkisar pada 50%, dan Tegangan

PWM juga konstan pada nilai 2,5 V.

Mode FAST PWM

Timer Prescaler Nilai OCR

FPWM Teori Duty Cycle Tegangan PWM (Hz) (%)

Teori Pengukuran Teori Pengukuran

Timer 0

1

16 31.250,00 31.210,00 6,25 6,39 0,317

32 31.250,00 31.210,00 12,5 12,76 0,609

64 31.250,00 31.210,00 25 25,33 1,263

128 31.250,00 31.210,00 50 50,46 2,534

192 31.250,00 31.210,00 75 75,34 3,75

8

16 3.906,25 3.906,00 6,25 6,71 0,317

32 3.906,25 3.906,00 12,5 12,93 0,629

64 3.906,25 3.906,00 25 23,31 1,264

128 3.906,25 3.906,00 50 50,47 2,536

192 3.906,25 3.906,00 75 75,35 3,76

Pada Mode ini, semakin besarnya nilai

OCR, “Frekuensi PWM” yang dihasilkan

nilainya tetap atau konstan

Sementara itu Duty Cycle dan Tegangan

PWM yang dihasilkan berbanding lurus

dengan nilai OCR

25

Page 26: PWM based Mikrokontroller ATMEGA128

Perhitungan Frekuensi PWM (beberapa sampel)

Timer/Counter 0

Mode CTC ; Prescaller = 1 ; OCR0 = 16

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

2 𝑥 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 ( 1+𝑂𝐶𝑅𝑛 )

= 8 M

2 x 1 x ( 1+16 )

= 235,294 KHz

Mode CTC ; Prescaller = 8 ; OCR0 = 16

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

2 𝑥 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 ( 1+𝑂𝐶𝑅𝑛 )

= 8 M

2 x 8 x ( 1+16 )

= 29,411 KHz

Timer/Counter 1

Mode CTC ; Prescaller = 1 ; OCR0 = 64

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

2 𝑥 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 ( 1+𝑂𝐶𝑅𝑛 )

= 8 M

2 x 1 x ( 1+64 )

= 61,538 KHz

Mode CTC ; Prescaller = 8 ; OCR0 = 64

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

2 𝑥 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 ( 1+𝑂𝐶𝑅𝑛 )

= 8 M

2 x 8 x ( 1+64 )

= 7,692 KHz

Timer/Counter 0

Mode Fast PWM ; Prescaller = 1

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 256

= 8 M

1 x 256

= 31,250 KHz

Mode Fast PWM ; Prescaller = 8;

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 256

= 8 M

8 x 256

= 3,906 KHz

Timer/Counter 1

Mode Fast PWM ; Prescaller = 1;

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 1024

= 8 M

1 x 1024

= 7,8125 KHz

Mode Fast PWM ; Prescaller = 8;

FOCn = 𝑆𝑦𝑠𝑡𝑒𝑚 𝐶𝑙𝑜𝑐𝑘

𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 𝑥 1024

= 8 M

8 x 1024

= 976,56 Hz

26

Page 27: PWM based Mikrokontroller ATMEGA128

Terdapat beberapa variabel yang dapat kita ubah nilainya agar frekuensi PWM sesuai dengan

yang kita inginkan. Variabel tersebut adalah “System Clock”, “Prescaller”, “Timer Periode”.

Pada modul ATMEGA128, akan sangat sulit jika kristal yang telah terpasang (System Clock)

harus diubah nilainya. Sehingga para Programmer biasanya mengubah nilai dari “Prescaller”

maupun “Timer Periode”. Pada praktikum kali ini nilai “Timer Periode” tidak ubah. Sedangkan

yang diubah adalah “Prescaller”.

Nilai Prescaller pada Timer adalah 1, 8, 32, 64, 128, 256, 1024.

Penggunaan masing-masing nilai tersebut akan berpengaruh pada register TCCR0 apabila

menggunakan Timer/Counter 0 dan TCCR1B apabila menggunakan Timer/Counter 1.

Pada Timer/Counter 0

Prescaller = 1 TCCR0=(1<<WGM00) | (1<<COM01) | (0<<COM00) | (1<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00);

Prescaller = 8 TCCR0=(1<<WGM00) | (1<<COM01) | (0<<COM00) | (1<<WGM01) | (0<<CS02) | (1<<CS01) | (0<<CS00);

Bit Deskripsi Pemilihan Prescaller pada Timer 0

Pada Timer/Counter 1

Prescaller = 1 TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);

Prescaller = 8 TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);

Bit Deskripsi Pemilihan Prescaller pada Timer 1

27

Page 28: PWM based Mikrokontroller ATMEGA128

IX. KESIMPULAN

Mikrokontroller ATMEGA128 dapat membangkitkan gelombang PWM dengan

frekuensi yang kita inginkan melalui TIMER. Pada ATMEGA128 terdapat 4 Timer yaitu :

Timer 0, Timer 1, Timer 2, dan Timer 3. Mode Operasi dari tersebut adalah Normal Mode,

CTC Mode, Fast PWM Mode, Phase Correct Mode. Dari keempat mode operasi tersebut,

rumus perhitungan untuk keluaran frekuensi PWM berbeda-beda.

Agar menghasilkan frekuensi PWM yang diinginkan, kita dapat mengubah nilai dari

variabel “Prescaller” maupun “Timer Periode”. Nilai Prescaller sendiri telah disediakan

yaitu 1, 8, 32, 64, 128, 256, 1024. Perubahan nilai Prescaller akan berpengaruh pada nilai

dari Regsiter TCCRn (Timer 0 dan Timer 2) atau TCCRnB (Timer 1 dan Timer 3). Lebih

tepatnya pada bit CSn2, CSn1, dan CSn0. Sedangkan Perbedaan pada tiap Mode Operasi

Timer akan berpengaruh pada Register TCCRn (Timer 0 dan Timer 2) atau TCCRnA dan

TCCRnB (Timer 1 dan Timer 3). Tepatnya pada bit WGMn0 dan WGMn1 untuk Timer 0

dan Timer 2. Sedangkan untuk Timer 1 dan Timer 3 pada bit WGMn0, WGMn1, WGMn2.

Apabila Mode Fast PWM dan Mode CTC diamati dalam hal keluaran karkteristik

gelombang keluarannya, maka :

Mode Fast PWM, Semakin bertambahnya nilai OCR, frekuensi PWM nya tetap. Namun

Duty Cycle dan Tegangan Ouput PWM berbanding lurus dengan nilai OCR sehingga

semakin besar juga.

Mode CTC, semakin bertambahnya nilai OCR, frekuensi PWM nya semakin turun.

Sedangkan Duty Cycle tetap pada nilai 50%. Begitu pula dengan tegangan output PWM

yang berkisar antara 2,5 V (Konstan).

CTC Fast PWM

OCR Meningkat

Frekuensi turun Frekuensi Tetap

Tegangan Output Tetap (2,5 V) Tegangan Output Meningkat

Duty Cycle Tetap (50%) Duty Cycle Meningkat

28