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
: 1 pcs
9. Transistor 2N2222
: 1 pcs
: 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
Prosedur :
1. Buatlah rangkaian seperti Gambar 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 !
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);
}
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.
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);
}
}