Alhamdulillah, pada kesempatan ini saya akan share ilmu kembali tentang bagaimana cara menseting Timer 1 menjadi penghasil PWM ( Pulse Width Modulation ) yang saya pakai di robot Line Follower Saya. Postingan ini sebenarnya jawaban dari temen temen yang bertanya di post Robot Line follower dengan alogaritma PID. Saya ucapkan terima kasih atas kunjungan temen temen, semoga ilmu yang saya dapat bermanfaat bagi teman teman. Ok, tidak usah terlalu panjang lebar . Kita langsung saja ke pokok permasalahan.
- Perlu diketahui terlebih dahulu, bahwa Timer 1 di uC AVR adalah timer 16 bit. Timer ini diseting melibatkan 2 buah register, yaitu register TCCR1A dan TCCR1B
- Untuk menseting Timer 1 di uC AVR, kita harus mengisi register TCCR1A dan TCCR1B.
- Bagaimana mengisinya? kita langsung saja mengisinya dengan perintah TCCR1A=0xA1;TCCR1B=0x0c; . Perintah di samping, adalah perintah menseting Timer 1 sebagai Mode Fast PWM 8 bit dengan TOP 255 dan menggunakan prescaler/pembagi 256.
Penjelasan :
Untuk melihat lebih jelas, click aja gambar di atas…!!
Gambar di atas adalah register TCCR1A, lebar datanya adalah 8 bit. Di dalam register tersebut ada bit-bit penseting seperti ( dari bit ke 0 sampai ke bit ke 7 ) WGM10,WGM11,FOC1B,FOC1A,COM1B0,COM1B1,COM1A0,Com1A1
Karena TCCR1A berisi nilai 0xA1 , maka kalau dilihat dalam biner akan menjadi seperti ini : 1010 0001 .
Berarti nilai WGM10, Com1A1,Com1B1 adalah ’1′ dan yang lain bernilai ’0′
Kemudian kita lihat tabel berikut :
Untuk melihat lebih jelas, click aja gambar di atas…!!
Pada tabel terlihat jelas, kalau bit Com1A1/Com1B1 = 1 dan Com1A0/Com1B0=0 maka, pola keluaran OC1A dan OC1B akan bernilai ’0′ setelah TCNT1 =OCR1A/OCR1B dan bernilai ’1′ setelah mencapai TOP.
Note_1 : Jadi, OC1A dan OC1B adalah kaki keluaran PWMnya, kalo di uC ya kaki 18 dan kaki 19.
Untuk melihat lebih jelas, click aja gambar di atas…!!
TCCR1B terdiri dari bit-bit : CS10,CS10,CS10,WGM12,WGM13,kosong,ICES1,ICNC1
TCCR1B tadi nilainya adalah ox0C , kalau dibenerkan menjadi 0b0000 1100
berarti, bit CS12 dan WGM12 bernilai ’1′. dan bit yang lain pastinya bernilai ’0′.
Mari lanjutkan analisa kita, Kita lihat tabel berikut :
Untuk melihat lebih jelas, click aja gambar di atas…!!
Jjika TCCR1A=0xA1, maka WGM10=1 dan WGM11=0. dan jika TCCR1B=0xoC , maka WGM12,WGM13=0. Berarti, jika dilihat dari tabel tadi mode yang dipakai adalah mode Fast PWM 8 bit dan dengan nilai TOP 0x00ff atau jika ditulis dalam desimal adalah 255.
Cukup Mudah bukan cara seting Timer 1 di uC AVr…!??? untuk menseting fitur fitur yang lain ( UART, SPI, Counter, Timer, dll )pada uC avr juga sama saja. yang kita butuhkan hanya data sheet microcontroller tersebut..!!
Menghitung Frekwensi PWmnya : karena modenya Fast PWM, maka dapat dihitung frekwensinya dengan rumus:
Fpwm=Fosc/N*(1+TOP)
Ket:
Fosc adalah cristal yang kita pakai.
N adalah faktor pembaginya
TOP adalah nilai tertinggi dari counting TCNT1
berarti, dari setingan kita tadi didapat: N=256 dan TOP=255 maka jika crystal yang kita pakai 8Mhz dapat dihitung frekwensinya yaitu:
Fpwm = 8000000/256*(1+255)
= 8000000/256*256
= 8000000/65536
= 122 Hz atau Periodenya adalah 8,1 ms
By: KoeRa



