Senin, 02 Desember 2013

PWM dengan Adjustable Frekuensi dan Duty cycle (7 KHz sampai 300 KHz)



Pada percobaan kali ini gelombang yang akan dikeluarkan pada pin 9 adalah gelombang berbentuk kotak dengan duty cycle dan frekuensi yang dapat berubah-ubah. Perubahan frekuensi akan diatur oleh potensiometer yang terhubung pada pin A0. Perubahan duty cycle akan diatur oleh potensiometer yang terhubung pada pin A1. Program pada percobaan kali ini akan menggunakan konfigurasi register untuk mengeluarkan sinyal gelombang pada pin PWM.

Prosedur :

1.  Rangkailah rangkaian pada Gambar 7.3.
 


Gambar 7.3 Rangkaian Percobaan 7.3


2.      Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload program.
 

int setCycles; int setDuty;

void set(int cycles, float duty) { char oldSREG;

int dutyCycle = cycles * duty; if (dutyCycle < 6) {

dutyCycle = 6;

}

if (dutyCycle > 1015) { dutyCycle = 1015;


}

if (cycles < 50) { cycles = 50;

}

oldSREG = SREG; cli();

ICR1 = cycles; OCR1A = dutyCycle; SREG = oldSREG;

}

void setup() { TCCR1A = 0;

TCCR1B = _BV(WGM13);

TCCR1B &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12)); TCCR1B |= _BV(CS10);

DDRB |= _BV(PORTB1); TCCR1A |= _BV(COM1A1);

}

void loop() {

int temp_cycles = analogRead(A0); int temp_duty = analogRead(A1);

if (temp_cycles != setCycles || temp_duty != setDuty) { setCycles = temp_cycles;

setDuty = temp_duty; set(setCycles, setDuty / 1024.0);
}

}





2 komentar:

  1. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  2. tanya min,
    apakah di percobaan yg nyata, bisa merubah frekuensi keluaran, tanpa mengubah duty cycle nya ?

    BalasHapus