Kamis, 05 Desember 2013

TIMER SEBAGAI GENERATOR GELOMBANG



TUJUAN :

1.      Mampu membuat program untuk memanfaatkan timer sebagai gen rator gelombang.

2.      Mampu membuat program untuk memanfaatkan timer sebagai generator gelombang dengan adjustable duty cycle.

3.      Mampu membuat program untuk memanfaatkan timer sebagai generator gelombang dengan adjustable frekuensi.


PERALATAN :

1.
Komputer
: 1 set
2.
Arduino Uno
: 1pcs
3.
Project board
: 1pcs
4.
Kabel jumper
: 1 set
5.
LCD
: 1pcs
6.
Potensiometer 10K
: 3pcs
7.
LED
: 1pcs
8.
Resistor 330 Ohm
: 1pcs
9.
Transistor 2N2222
: 1pcs
10.
Resistor 2K2
: 1pcs


PERCOBAAN :

7.1 Generator Gelombang dengan Adjustable Duty cycle

 Program ini berfungsi untuk merubah besarnya suatu duty cycle dari suatu frekuensi yang konstan .


Prosedur :

1.  Buatlah rangkaian seperti Gambar 7.1.


 2. Buatlah Program seperti berikut ini......


int val = 0;

void setup() { Serial.begin(9600); pinMode(9, OUTPUT);
}

void loop() {

val = analogRead(A0); analogWrite(9, val/4); Serial.print("PWM Value = "); Serial.println(val,DEC); delay(500);

}

3. Hasil percobaan akan tampak seperti ini



7.2  Generator Gelombang dengan Adjustable Frekuensi

Pada Percobaan ini duty cycle yang di berikan konstan sebesar 50% sedangkan besarnya frekuensi nya berubah ubah.


Prosedur :

1.  Buatlah rangkaian seperti pada Gambar 7.2.
 




2. Buatlah Program seperti berikut ini......


int setCycles;

void set(int cycles) {
char oldSREG;
int dutyCycle = cycles * 0.5;
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); if (temp_cycles != setCycles )
{
setCycles = temp_cycles; set(setCycles);
}
}

 


3. Hasil percobaan akan tampak seperti ini




7.3 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 d apat berubah-ubah.


Prosedur :

1.  Rangkailah rangkaian pada Gambar 7.3.




2. Buatlah Program seperti berikut ini......


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);
}

}



3. Hasil percobaan akan tampak seperti ini



Tidak ada komentar:

Posting Komentar