TUJUAN :
1. Mampu membuat program untuk memanfaatkan timer
sebagai generator 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 adjustable frekuensi.
PERALATAN :
1.
Komputer : 1set
2.
Arduino Uno : 1pcs
3.
Project Board : 1pcs
4.
Kabel Jumper : 1set
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
Pada percobaan kali ini akan dibuat program untuk
mengeluarkan gelombang kotak 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 :
Buatlah rangkain seperti Gambar 7.1.
Tuliskan sintaks program berikut ini pada
Arduino IDE, kemudian lakukan kompilasi dan upload program kesistem 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);
}
hasil akan tampak seperti ini:
duty cycle 100%
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
2. Tuliskan sintaks program berikut ini pada
Arduino IDE, kemudian lakukan kompilasi dan upload program kesistem 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);
}
}
0 komentar:
Posting Komentar