- Kontrol kecepatan Motor DC
- Kontrol Intesitas LED
- Kontrol katub (valve), pompa, hidrolik dan lain-lain.
- Anda harus punya datasheet ATMega 8 untuk referensi yang valid dalam penggunaan.
- Membaca datasheet tersebut.
Fast PWM lebih cocok untuk penghasil tegangan analog dikarenakan ripple-nya. Sedangkan PhaseCorrect PWM lebih cocok untuk mengatur kecepatan putaran motor DC karena sinyalnya simetris.
Berikut ini hal-hal penting dalam penggunaan PWM pada ATmega 8.
-------------PIN Keluaran PWM ATMega8 ada 3------------
1. OC1A pada PORTB 1 --> Aktif melalui Timer1
2. OC1B pada PORTB 2 --> Aktif melalui Timer1
3. OC2 pada PORTB 3 --> Aktif melalui Timer2
-------------Register Pengatur Duty Cycle PWM--------------
1. OC1A --> Diatur Oleh Register OCR1A
2. OC1B --> Diatur Oleh Register OCR1B
3. OC2 --> Diatur Oleh Register OCR2
/*------------------------Register TCCR1A-------------------------------------------*/
//COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10
/*------------------------Register TCCR1B-------------------------------------------*/
//ICNC1 ICES1 WGM13 WGM12 CS12 CS11 CS10
/*----------------------------------------------------------------------------------*/
//COM1A1/COM1B1 COM1A0/COM1B0 PIN OC1A/OC1B
/*----------------------------------------------------------------------------------*/
// 0 0 Normal(sbg input output)
// 0 1 Toggle
// 1 0 Non-inverting
// 1 1 Inverting
/*----------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------*/
//Mode WGM13-WGM10 Mode Timer TOP
/*----------------------------------------------------------------------------------*/
//0 0000 Normal, sbg overflow 0xFFFF
//1 0001 PhaseCorrect PWM 8-bit 0xFF
//2 0010 PhaseCorrect PWM 9-bit 0x1FF
//3 0011 PhaseCorrect PWM 10-bit 0x3FF
//4 0100 CTC OCR1A
//5 0101 Fast PWM 8-bit 0xFF
//6 0110 Fast PWM 9-bit 0x1FF
//7 0111 Fast PWM 10-bit 0x3FF
//8 1000 PhaseFrequencyCorrect PWM ICR1
//9 1001 PhaseFrequencyCorrect PWM OCR1A
//10 1010 PhaseCorrect PWM ICR1
//11 1011 PhaseCorrect PWM OCR1A
//12 1100 CTC ICR1
//13 1101 Tidak Digunakan -
//14 1110 Fast PWM ICR1
//15 1111 Fast PWM OCR1A
/*----------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------*/
//CS12-CS10 Frekuensi Counter
/*----------------------------------------------------------------------------------*/
//000 0 atau clock dihentikan
//001 F_CPU/1
//010 F_CPU/8
//011 F_CPU/64
//100 F_CPU/256
//101 F_CPU/1024
//110 Dari pin T1, aktif tepi turun
//111 Dari pin T1, aktif tepi naik
/*----------------------------------------------------------------------------------*/
Adapun perhitungan frekuensi PWM adalah sebagai berikut:
- PhaseCorrect PWM
fclk I/O = Frekuensi ATMega 8
N = variabel pembagi prescaler (1, 8, 64, 256, or 1024).
TOP = nilai maksimal tipe PWM yang dipilih
Adapun perhitungan duty cycle PWM adalah dapat diatur menggunakan register berikut:
1. OC1A --> Diatur Oleh Register OCR1A
2. OC1B --> Diatur Oleh Register OCR1B
3. OC2 --> Diatur Oleh Register OCR2
contoh: Fast PWM 8 bit nilai TOP = 0xFF = 255.
jika OCR1A diatur = 127.5 maka duty cycle = (127,5 / 255 ) x 100% = 50%.
Untuk lebih memahaminya, anda harus mencoba sendiri. Berikut ini video tutorialnya.
Tidak ada komentar:
Posting Komentar