Rabu, 04 Juli 2012

Membuat PWM Atmega dari Timer dengan CodeVisionAVR


Bismillah

Sebenarnya membuat PWM bisa dengan berbagai cara, tapi kali ini saya ingin membahas tentang PWM yang dibuat dengan Timer Atmega.

Jalankan Aplikasi CodeVisionAVR versi 1.xx.x, lalu buatlah project baru



 Klik OK

 Klik Yes


Pada kesempatan kali ini saya memakai Atmega32 dengan Clock 8 MHz, kemudian klik bagian Timers



Yang saya gunakan sebagai PWM adalah Timer0, seting parameter seperti gambar diatas!
Kemudian pilih menu file, pilih Generate, Save and Exit


Akan muncul jendela warning

 
 Klik yes

 Beri nama file “pwm” (bebas namanya) klik save

 Beri nama file “pwm” (bebas namanya) klik save

 Beri nama file “pwm” (bebas namanya) klik save



Jendela editor diatas berisikan code inisial awal untuk membuat PWM, seperti biasa hapus semua code diatas kemudian ganti dengan code berikut

#include <mega32.h>    
#include <delay.h>  

#define pwm OCR0        //OCR0 adalah output untuk PWM
                        //OCR0 diberi nilai dari 0-255
                        //karena PWM yang digunakan adalah 8 bit

// Declare your global variables here    
unsigned char i=0;

void main(void)
{
// Declare your local variables here

// setingan untuk OC0 sebagai output karena berada pada PINB.4
// posisi OC0 tidak bisa diubah, harus berada pada PINB.4, coba lihat datasheet atmega32

PORTB=0x00;
DDRB=0x08;

//setingan register untuk membangkitkan PWM dari Timer0
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
// Mode: Phase correct PWM top=FFh
// OC0 output: Non-Inverted PWM
TCCR0=0x61;
TCNT0=0x00;
OCR0=0x00;
 
while (1)
      {
      // Place your code here
      for(i=0;i<255;i++)// PWM akan dijalankan dengan variasi antara 0-255 dengan interval 100 ms
        {
        pwm=i;
        delay_ms(100);
        }
      };
}

Kemudian compile dengan menekan shift+F9 pada keyboard, hasil nya yaitu file *.hex saya simulasikan dengan proteus dengan rancangan seperti berikut


Dan hasil simulasinya adalah sebagai berikut


 
 Semoga Bermanfaat

16 komentar:

  1. aslkm. bos klo ngedit file code vision yg sudah di compile gimana?

    BalasHapus
    Balasan
    1. wa'alaykumussalam warahmatullah...

      file .hex nya kah? kalau file .hex nya saya belum pernah edit...

      Hapus
  2. Makasih banyak gan, sangat membantu. sukses selalu

    BalasHapus
  3. gan kalo kluaran pwmnya pengen 6 buah gmna caranya?? misal ane pake porb.0 sampe 5 . . d atmega 16??

    mohon bantuannya kakak yg baik hatii

    BalasHapus
    Balasan
    1. bisa... pake timer... tapi itung itung sendiri. yang penting ngerti konsep dasar PWM insya Allah bisa

      Hapus
  4. Terimakasih mas, sangat membantu.

    BalasHapus
  5. cara mengetahui frekuensi nya gmn ya???trus apa bisa frekuensinya diubah??

    BalasHapus
    Balasan
    1. untuk frekuensi di seting pada codeWizardAvr nya

      Hapus
  6. cara mengetahui frekuensi nya gmn ya???,tru apa bisa frekuensinya diubah??

    BalasHapus
  7. Sangat membantu sekali terimakasih.
    apakah saudara punya contoh program untuk mengatur kecepatan program pada motor BLDC?

    BalasHapus
    Balasan
    1. cara prgramnya mirip servo, pake pwm interrupt

      Hapus
  8. mas saya masih bingung dengan pwm ini, gimana ya caranya kalau mau ngeluarin pwmnya sebanyak 3 buah y padahal pin keluarannya cuma 2 kan mas?

    BalasHapus