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