Anda di halaman 1dari 11

PRAKTIKUM 7

TIMER SEBAGAI GENERATOR GELOMBANG

TUJUAN :
1. Mampu membuat program untuk memanfaatkan timer sebagai generator gelombang.
2. Mampu membuat program untun memanfaatkan timer sebagai generator gelombang
dengan adjustable duty cycle.
3. Mampu membuat program untun memanfaatkan timer sebagai generator gelombang
dengan adjustable frekuensi.

PERALATAN :
1. Komputer

: 1 set

2. Arduino Uno

: 1 pcs

3. Project board

: 1 pcs

4. Kabel jumper

: 1 set

5. LCD

: 1 pcs

6. Potensiometer 10K

: 3 pcs

7. LED

: 1 pcs

8. Resistor 330 Ohm

: 1 pcs

9. Transistor 2N2222

: 1 pcs

10. Resistor 2K2

: 1 pcs

PERCOBAAN :
7.1 Generator Gelombang dengan Adjustable Duty cycle
Pada percobaan kali ini akan dibuat program untuk mengeluarkan gelombang kotak
pada pada pin 9 (OC1A) . Gelombang yang akan dikeluarkan pada pin 9 adalah
gelombang berbentuk kotak dengan duty cycle dapat diatur lebarnya. Lebar duty cycle
akan diatur oleh potensiometer yang terhubung pada pin A0. Pada percobaan kali ini

akan digunakan fungsi analogWrite yang berfungsi untuk mengeluarkan sinyal


gelombang pada pin Pulse Width Modulation (PWM).

Prosedur :
1. Buatlah rangkaian seperti Gambar 7.1.

Gambar 7.1 Rangkaian Percobaan 7.1

2. Tuliskan sintaks program berikut ini pada Arduino IDE, kemudian lakukan kompilasi
dan upload program ke sistem minimum Arduino

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);
}
Tugas dan Pertanyaan :
1. Putarlah potensiometer R3 dari minimum sampai maksimum, kemudian amati
intensitas cahaya pada LED. Jika potensiometer diputar pada posisi minimum
bagaimana kondisi intensitas cahaya LED ? semakin terang atau semakin redup ?
Jelaskan kenapa !
Answer : Pada saat potensio diputar ke posisi minus maka menyebabkan duty
cycle menjadi LOW 0% dan akan membuat LED menyala redup, dan apabila
potensio diputar ke posisi maksimum maka duty cycle akan bernilai HIGH
(100%) dan lampu LED menjadi terang.
2. Jika potensiometer diputar pada posisi maksimum bagaimana kondisi intensitas
cahaya LED ? semakin terang atau semakin redup ? Jelaskan kenapa !
Answer : Pada saat potensio diputar ke posisi maksimum (100%) akan
membuat intensitas cahaya pada LED semakin terang, ini karena duty
cyclenya semakin besar oleh karena itu LED menjadi lebih terang.

3. Lakukan simulasi dengan aplikasi Proteus, kemudian amati bentuk gelombang pada
Test Point. Tampilkan gambar sinyal pada laporan !

Pada saat MIN (minimum)

Pada saat MAX (maximum)

4. Jelaskan sintaks program pada Percobaan 7.1 !


int val = 0;

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

//introduce variable val dan memberi nilai =


0

//untuk mengatur kecepatan baud rate transfer


sebesar 9600
//untuk mengatur pin 9 menjadi output

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

//untuk membaca nilai pada pin A0 , dan


memasukanya di variable val
//untuk mengatur pin 9 dengan nilai sebesar nilai
val/4
//untuk mengeprint PWM value = di serial
monitor
// untuk mengeprint nilai val dengan bentuk
decimal
// berhenti selama 0.5 second

7.2 Generator Gelombang dengan Adjustable Frekuensi


Pada percobaan kali ini gelombang yang akan dikeluarkan pada pin 9 adalah
gelombang berbentuk kotak dengan duty cycle yang besarnya tetap yaitu 50%, namun
besarnya frekuensi dapat berubah-ubah. Perubahan frekuensi akan diatur oleh
potensiometer yang terhubung pada pin A0. Program pada percobaan kali ini akan
menggunakan konfigurasi register untuk mengeluarkan sinyal gelombang pada pin
PWM.
Prosedur :
1. Buatlah rangkaian seperti pada Gambar 7.2.

Gambar 7.2 Rangkaian Percobaan 7.2


2. Tuliskan sintaks program berikut ini pada Arduino IDE, kemudian lakukan
kompilasi dan upload program ke sistem minimum Arduino.
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);

}
}
Tugas dan Pertanyaan :
1. Lakukan simulasi dengan aplikasi Proteus, kemudian amati bentuk gelombang dan
besarnya frekuensi pada Test Point. Jika potensiometer R3 diputar sampai posisi
minimum berapakah nilai frekuensi yang terukur ? Jika potensiometer diputar sampai
posisi maksimum berapakah nilai frekuensi yang terukur ?
Answer : Posisi MIN A0 = 166 KHz sedangkan Posisi MAX A0 = 8 KHz

2. Bagaimana dengan lebar pulsa (duty cycle), lebarnya berubah-ubah atau tetap ?
Answer : Tidak berubah lebar pulsanya, karena sudah diatur duty cyclenya 50%
jadi bagaimanapun apabila kita putar potensionya ga akan merubah lebar pulsa,
tetapi dapat merubah frekuensi pada sinyal output.

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 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 =
}
if (dutyCycle
1015) {
dutyCycle =
1015;

=
<
6;
>

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

Tugas dan Pertanyaan :


1. Lakukan simulasi dengan aplikasi Proteus, kemudian amati bentuk gelombang,
besarnya frekuensi, dan lebar pulsa pada Test Point. Jika potensiometer pada A0
diputar sampai posisi minimum berapakah nilai frekuensi yang terukur ? Jika
potensometer diputar sampai posisi maksimum berapakah nilai frekuensi yang
terukur ?
Answer : Posisi MIN A0 = 166 KHz sedangkan Posisi MAX A0 = 8 KHz
2. Jika potensiometer pada A1 diputar dari posisi minimum sampai posisi maksimum
apakah yang akan berubah ?
Answer : Yang berubah ketika potensio A1 diputar adalah duty cyclenya,
besar atau kecil duty cycle akan berubah.

Anda mungkin juga menyukai